Re: [picocontainer-dev] Preferring Parameter names.....

Paul Hammant <[email protected]>
Newsgroups gmane.comp.java.picocontainer.devel
Message-ID <[email protected]>
Folks,

>
> You still have the problem that parameter names have no scope for  
> the component:
>
> class JDBCService {
> 	JDBCService(URL endpoint, String username, String password);
> }
>
> class SOAPService {
> 	SOAPService(URL endpoint, String username, String password);
> }
>

So Guice has 'binding annotations' for this.  It is very verbose.

See http://blog.decaresystems.ie/index.php/2007/06/14/juicy-code-with- 
google-guice-part-4/ - search in page for 'binding annotations will  
help us'.

I don't like it, but think we should do it too :-(

I do like the simplicity and terseness of the parameter-name way  
we're currently doing, but Jorg highlights a shortcoming that the  
binding-annotations route does not have.

More customizable parameter name use

What if we also allow the following syntax :-

     pico.addConfig("jdbc_username", "fred");
     pico.addConfig("soap_username", "wilma");
     // etc
     pico.as(USE_NAMES("jdbc_")).addComponent(JDBCService.class);
     pico.as(USE_NAMES("soap_")).addComponent(SOAPService.class);

That's about an hour's work on the current codebase.

An alternative using Parameter objects

     pico.addComponent(JDBCService.class);

or ..

     pico.with(new NamedParameter("jdbc_username"), new NamedParameter 
("jdbc_password")).addComponent(JDBCService.class);

... where with is also a varargs Parameter array thing and functions  
like 'as' ... on the next addComponent(..) only.


- Paul
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.