So here's my question that I am struggling with. If Picocontainer determines component dependencies based on constructor parameters, how am I going to make my Actions depend on components? Actions need to be JavaBeans, which means a no-arg constructor. I really think it would be a bad idea to make Action instantiation use Picocontainer by default. This needs to be pluggable as an Interceptor and have no effect otherwise.
> -----Original Message----- > From: Ara Abrahamian [mailto:[EMAIL PROTECTED] > Sent: Wednesday, June 25, 2003 12:07 PM > To: [EMAIL PROTECTED] > Subject: RE: [OS-webwork] How do you define a component ? > > > Yeah I was also in favor of enabler interfaces, but now I > like pico's approach more. When you have a big app and a big > hierarchy and this hierarchy needs some components then you > realize with the old approach you just have to define lots of > enablers, you can't use a base enabler because of the way > it's defined in the xml file. So for example if you have a > hierarchy of Exporters (HtmlExporter, PdfExporter, etc) then > with xwork's current approach you can't say "implements > ExporterAware" and be done. That ExporterAware is only mapped > to one Exporter concrete instance in components.xml. With > pico it's just plain easy. Just pass the correct type to a > specific component in its constructor! > > But scopes are still an issue imho. I don't agree with Joe > that a components depending on narrower scoped component is a > design smell. So you have a GroceryStore component, it needs > a PersistenceManager component. In first thought you make > GroceryStore app scoped, but then realize it needs PM and PM > is request scoped because it needs to open and close > sessions/transactions. So basically to scope a component you > look at the dependencies of that component and use the > narrowest scope of its dependencies for the first component. > It's very easy to make mistakes and I'm not sure scope of > another component, an implementation detail of another > component, should dictate the way to choose scope for your > own component. On the other hand I understand that you can't > depend on narrower scoped components. That's very logical. > What I think we need is some help from the ComponentFactory > for deciding scopes. So if I set GroceryStore.scope=app and > it needs PM and PM.scope=request then probably > ComponentFactory should dynamically tweak the scope of > GroceryStore to request (?). Another possibility if a > diagramming tool like the one Joe showed me. It visiually > shows dependencies. I think we can tune it to show scope of a > dependency hierarchy. Thoughts? > > Ara. > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On > Behalf Of BOGAERT Mathias > Sent: Wednesday, June 25, 2003 5:54 PM > To: '[EMAIL PROTECTED]' > Subject: RE: [OS-webwork] How do you define a component ? > > Hi, > > This also demonstrates one of the reasons I would like to go > for picocontainer and type 3 IOC. When I started with IOC, I > wasn't fully convinced yet, and it was more like 'hey this is > cool'. More experimentation like. Now, after 2 weeks > converting most of my components to use IOC, I am beginning > to hate all those enabler interfaces since I know they can be > made redundant. > > I hope we migrate to pico soon. > > Cheers, > Mathias > -----Original Message----- > From: Jason Carreira [mailto:[EMAIL PROTECTED] > Sent: woensdag 25 juni 2003 16:19 > To: [EMAIL PROTECTED] > Subject: RE: [OS-webwork] How do you define a component ? > Think of them as services... your persistence manager might > be a good candidate. You could bind a Hibernate > implementation, for instance, into the persistence manager > spot in the registry. It could declare that it depends on a > ConnectionProvider (another component) so it would be > provided one when it is instantiated. You could also have a > ShoppingCart component / service which depends on the > PersistenceManager, etc... -----Original Message----- > From: Christian Meunier [mailto:[EMAIL PROTECTED] > Sent: Wednesday, June 25, 2003 7:37 AM > To: [EMAIL PROTECTED] > Subject: Re: [OS-webwork] How do you define a component ? > Refining a little bit my question, what does make a good > candidate for a component ? Obvious examples we see > everywhere is bridge component ( Trade component to query a > trade engine etc...) but beside this ? Many things can be > done with interceptors and you can always re use your > business layer or part of it in another applications, guess i > dont get it :) > > Chris > > ----- Original Message ----- > From: Christian Meunier > To: [EMAIL PROTECTED] > Sent: Wednesday, June 25, 2003 12:20 PM > Subject: [OS-webwork] How do you define a component ? > > Hi everyone, while reading the topic about nano/pico > container, few questions keep coming to my mind, what exactly > is a component, which purpose does it have ? How exactly is > it different from an aspect in AOP ? How do you choose to > code something as a component rather than as a 'module' in > your business logic ? > > Thanks in advance for any though you can share on this topic. > Christian Meunier > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: INetU > Attention Web Developers & Consultants: Become An INetU > Hosting Partner. Refer Dedicated Servers. We Manage Them. You > Get 10% Monthly Commission! INetU Dedicated Managed Hosting > http://www.inetu.net/partner/index.php > > _______________________________________________ > Opensymphony-webwork mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork > ------------------------------------------------------- This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET. http://aspnet.click-url.com/go/psa00100006ave/direct;at.asp_061203_01/01 _______________________________________________ Opensymphony-webwork mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork