[PEAK] peak.naming question
Andy Gross
andy at andygross.org
Tue Dec 21 23:24:05 EST 2004
I'm really liking peak.naming so far. I've been subclassing from
GenericPathURL and registering in peak.naming.schemes, which has
allowed me to toss out a bunch of bug-ridden legacy config parsing
code.
I'm at a point where I can get rid of a bunch of subclasses that only
differ in their getObjectInstance implementation. Each naming scheme
allows for abbreviations in the "host" portion of the URL. In the
example URL "someproto://foo", "foo" references a set of configuration
properties protocols.someproto.servers, and getObjectInstance (by
default) should return a random choice out of that set. I've pasted
some example code below to illustrate.
I'd like to implement the server-picking functionality in some place
other than the actual object who's class implements getObjectInstance -
I'm just not sure if it should be done in the URL subclass, or if I
should need to make a context subclass for the resolution process. I
suppose there are a number of ways to implement this, but I'm curious
as to the idiomatic/proper way to do it.
Superclass:
@classmethod
def getObjectInstance(klass, context, refInfo, name, attrs=None):
self = klass(context.getParentComponent(),
protoname=name.scheme,
nickname=name.user,
password=name.passwd,
port=name.port,
server=name.host)
return self
Subclasses (which I'm trying to eliminate):
@classmethod
def getObjectInstance(klass, context, refInfo, name, attrs=None):
self = super(IRCPresence, klass).getObjectInstance(context,
refInfo, name, attrs)
self.server = random.choice(self.servers[name.host])
return self
Thanks,
/arg
More information about the PEAK
mailing list