This looks pretty darn good.  Just a few thoughts/observations:

1) Could we just merge ConstructorFactory into BuilderFactory, to provide both sets of 
options
(using constructors, then optionally setting properties).
2) Could we use
http://jakarta.apache.org/commons/beanutils/api/org/apache/commons/beanutils/ConstructorUtils.html
to access the constructor (this applies to elsewhere in the framework).  Method  
public static
Object invokeConstructor(Class klass, Object[] args) seems to do the trick, and I will 
be changing
other code to start using this.
3) The exception thrown on line 133 should be more descriptive, come from 
HiveMind.properties, and
include the correct Location.
4) Need an update to framework/xdoc/BuilderFactory.xml to describe new features (once 
merged into
BuilderFactory).
5) For the constructor arguments, would this look better:

  <construct ...>
    <string>foo</string>
    <service>service-id</service>
    <configuration>config-id</configuration>

??  Maybe, maybe not.
6) What if the constructor expects the Log, Messages or service id to be a parameter?  
Need <log/>
<messages/> <service-id/> elements.

--
Howard M. Lewis Ship
Creator, Tapestry: Java Web Components
http://jakarta.apache.org/tapestry
http://jakarta.apache.org/commons/sandbox/hivemind/
http://javatapestry.blogspot.com

> -----Original Message-----
> From: news [mailto:[EMAIL PROTECTED] On Behalf Of Knut Wannheden
> Sent: Wednesday, October 01, 2003 6:56 PM
> To: [EMAIL PROTECTED]
> Subject: Re: [HiveMind] extend BuildFactory to use static 
> fields/methods
> 
> 
> Howard,
> 
> I found it was easiest to develop the service as part of the 
> HiveMind project itself. That way I have all the classpaths 
> set up and could reuse the test harness, etc. Therefore I now 
> attach the additions and changes as a patch. If this isn't 
> convenient for you I will try to separate the code and send 
> it in a different form.
> 
> --knut
> 
> "Howard M. Lewis Ship" <[EMAIL PROTECTED]> wrote in message 
> news:[EMAIL PROTECTED]
> > I do like the idea of mixing the two models; write some tests and 
> > we'll
> see about integrating it
> > with hivemind.BuilderFactory.
> >
> > --
> > Howard M. Lewis Ship
> > Creator, Tapestry: Java Web Components 
> > http://jakarta.apache.org/tapestry
> > http://jakarta.apache.org/commons/sandbox/hivemind/
> > http://javatapestry.blogspot.com
> >
> > > -----Original Message-----
> > > From: news [mailto:[EMAIL PROTECTED] On Behalf Of Knut Wannheden
> > > Sent: Wednesday, October 01, 2003 4:57 PM
> > > To: [EMAIL PROTECTED]
> > > Subject: Re: [HiveMind] extend BuildFactory to use static 
> > > fields/methods
> > >
> > >
> > > I have written a service implementing this strategy, with a minor
> > > difference: I didn't add a nested <properties> as you proposed, 
> > > instead the <set-...> elements are immedeate child elements. This 
> > > way the service can be used everywhere hivemind.BuilderFactory is 
> > > used. E.g.
> > >
> > > <construct class="...">
> > >  <set-service service-id="..."/>
> > >  <set-boolean .../>
> > >  <int value="42"/>
> > >  <set-int .../>
> > >  <string value="foo"/>
> > > </construct>
> > >
> > > The constructor parameter elements and property elements can be 
> > > mixed freely, as long as the constructor parameter elements are 
> > > given in the same order as in the actual constructor. In 
> this case: 
> > > int, String.
> > >
> > > The service supports the following constructor parameter
> > > elements: <string>, <int>, <long>, <boolean>, <service>, 
> > > <configuration>, and <resource>.
> > >
> > > If anyone's interested I can supply the source. I just 
> thought I'd 
> > > write some more unit tests first...
> > >
> > > --knut
> > >
> > > "Christian Essl" <[EMAIL PROTECTED]> wrote in message 
> > > news:[EMAIL PROTECTED]
> > > > That would be realy helpful. Maybe we could add a 
> <properties> tag 
> > > > which would include the current BuilderFactory tags and set the 
> > > > properties after the service is constructed.
> > > >
> > > > <contruct class="...">
> > > >   <service service-id="..."/>
> > > >   <configuration configuration-id="..."/>
> > > >   <int value="..."/>
> > > >   (etc.)
> > > >   <properties>
> > > > <set-boolean .../>
> > > > (etc.)
> > > >   </properties>
> > > > </construct>
> > > >
> > > >
> > > > On Wed, 1 Oct 2003 10:22:52 -0400, Howard M. Lewis Ship 
> > > > <[EMAIL PROTECTED]> wrote:
> > > >
> > > > > Maybe "ConstructorFactory"?  Something like:
> > > > >
> > > > > <contruct class="...">
> > > > > <service service-id="..."/>
> > > > > <configuration configuration-id="..."/>
> > > > > <int value="..."/>
> > > > > (etc.)
> > > > > </construct>
> > > > >
> > > > > The elements inside the <construct> element are the 
> parameters 
> > > > > to the constructor.
> > > > >
> > > > > I'll be setting up a HiveMind:Contrib subproject shortly.  We 
> > > > > can start putting stuff in there and then migrate it up to 
> > > > > library or framework if it proves to be popular
> > > and
> > > > > essential.
> > > > >
> > > > > --
> > > > > Howard M. Lewis Ship
> > > > > Creator, Tapestry: Java Web Components 
> > > > > http://jakarta.apache.org/tapestry
> > > > > http://jakarta.apache.org/commons/sandbox/hivemind/
> > > > > http://javatapestry.blogspot.com
> > > > >
> > > > >> -----Original Message-----
> > > > >> From: news [mailto:[EMAIL PROTECTED] On Behalf Of Knut
> > > Wannheden
> > > > >> Sent: Wednesday, October 01, 2003 10:18 AM
> > > > >> To: [EMAIL PROTECTED]
> > > > >> Subject: Re: [HiveMind] extend BuildFactory to use static
> > > fields/methods
> > > > >>
> > > > >>
> > > > >> Then how about a new factory service which lets you 
> specify the 
> > > > >> constructor parameters? This is also a very common 
> IoC pattern 
> > > > >> AFAIK.
> > > > >>
> > > > >> --knut
> > > > >>
> > > > >> "Howard M. Lewis Ship" <[EMAIL PROTECTED]> wrote in message
> > > > > news:[EMAIL PROTECTED]
> > > > > Outside of Kurt's use case ... wrapping around 
> machine-generated 
> > > > > code, I feel that this talk of accessing static
> > > singletons is a step
> > > > > backwards.
> > > > >
> > > > > The point of HiveMind is to eliminate those static 
> variables and 
> > > > > static inits, do things thread-safe and just-in-time.
> > > > >
> > > > > --
> > > > > Howard M. Lewis Ship
> > > > > Creator, Tapestry: Java Web Components
> > > http://jakarta.apache.org/tapestry
> > > > > http://jakarta.apache.org/commons/sandbox/hivemind/
> > > > > http://javatapestry.blogspot.com
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > 
> --------------------------------------------------------------------
> > > > > -
> > > > > To unsubscribe, e-mail: 
> > > > > [EMAIL PROTECTED]
> > > > > For additional commands, e-mail:
> > > [EMAIL PROTECTED]
> > > > >
> > > > >
> > > > >
> > > 
> --------------------------------------------------------------------
> > > > > -
> > > > > To unsubscribe, e-mail: 
> > > > > [EMAIL PROTECTED]
> > > > > For additional commands, e-mail:
> > > [EMAIL PROTECTED]
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Using M2, Opera's revolutionary e-mail client:
> > http://www.opera.com/m2/
> >
> >
> >
> >
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to