Without disagreeing with anything you have said, Don, I think the
confusion is caused in part by the fact that CoR is anticipated in
part for its pluggable nature.  In this respect, there is a real
connection in functionality between CoR and IoC that is not as
attenuated as the one between HashMap and a SQL database but more like
a properties file and a SQL database?  You think?

Jack


On Wed, 24 Nov 2004 10:44:30 -0800, Don Brown <[EMAIL PROTECTED]> wrote:
> Not you personally BaTien, I don't understand why some people seem to
> confuse Inversion of Control (IoC) and Chain of Responsibility (CoR),
> and worse, think they are somehow solving the same problem.  IoC helps
> us create components by managing their lifecycle and providing their
> dependencies.  CoR defines a process that let's us flexibly specify what
> code to execute in what order.
> 
> Sure, commons-chain does provide the default capability to create
> commands and configure them with simple properties, but that isn't its
> purpose and would certainly be replaced in any moderately complex usage,
> most likely by some sort of IoC.  It's like saying a HashMap conflicts
> with a SQL database as they both store data.  They are two very
> different things with very different problems they are trying to solve.
> 
> Don
> 
> 
> 
> BaTien Duong wrote:
> 
> > Craig McClanahan wrote:
> >
> >> On Tue, 23 Nov 2004 14:20:02 -0600, Joe Germuska <[EMAIL PROTECTED]>
> >> wrote:
> >>
> >>
> >>>
> >>>
> >>>> I need to have a hook into processValidate() on validation failure.
> >>>>
> >>>> Currently that can only be done by copy-and-pasting the
> >>>> processValidate()
> >>>> method from RequestProcessor into a subclass and sticking a hook
> >>>> into the
> >>>> middle of the code.
> >>>>
> >>>> When I asked about this on the dev list long ago, it was confirmed
> >>>> that
> >>>> there was no other way to do this, but that chain would eventually
> >>>> provide
> >>>> this flexibility.
> >>>>
> >>>> If the chain isn't configured at a fine-grain level, then it's not
> >>>> all that
> >>>> much more functional than the existing RequestProcessor.
> >>>>
> >>>
> >>> The chain is configured at as fine-grained a level as you like, in
> >>> XML.  Hubert is talking about configuring the chain programatically
> >>> as well, or at least in some way independent of the configuration of
> >>> the primary processing chain.
> >>>
> >>>
> >>
> >>
> >> Programmatic configuration is certainly feasible ... there's no
> >> requirement in [chain] that you use the XML format at all.  It's just
> >> one option.
> >>
> >>
> >>
> > Greetings and request expert advice:
> >
> > Commons-chain invented by Craig proves to be very flexible and work in
> > conjuction with other great technonologies. What i am trying to figure
> > out is a proper and practical places for using CoR and IoC (such as
> > Spring framework) in the construction and configuration of software
> > objects. I put out some of my preliminary thinking and hope some
> > experts care to add more arguments to enlighten us.
> >
> > 1) Both CoR and IoC (and also Jsf setter injection) enable the
> > configuration and linking objects via XML metadata. But IoC allows the
> > object configuration at a finer level of object attributes and take
> > care of the objects declared as singleton. In this sense, IoC is finer
> > grain than CoR in object creation, configuration and management.
> >
> > 2) CoR is very light weight and appropriate for programmatically
> > created processes. It does not not have the complexity and the depth
> > of plug-in features as Spring IoC.
> >
> > 3) CoR is finer grain than IoC in the construction and rounting of
> > services within and between software layers, while IoC is aprropriate
> > at the application level.
> >
> > 4) If we want to combine Jsf as view controller, Spring IoC and
> > commons-chain CoR, a practical infrastructure may be something like
> > followings:
> >    a) Jsf as a view controller takes care of objects directly related
> > to User Interface (UI)
> >    b) Spring IoC takes the responsibility of object creation,
> > especially singletons and fine grain configurations of objects not
> > directly related to UI. This is a proper choice of configuration if
> > other features of Spring framework such as application level event and
> > aop are used.
> >    c) CoR is used to construct Front Controller a la pattern of Struts
> > of each software module, the rounting of services among modules, and
> > action commands (or chain) of specialized services in each service
> > module. It programmatically links created components from IoC to a
> > finer grain at each software module, which holds the module Catalog of
> > commands.
> >    d) User session is a proper place for programmatically interactions
> > of Jsf, IoC and CoR objects. For example user generated events from
> > Jsf is linked through a CoR adapter to dispatch action command as a
> > request to appropriate software module (such as
> > authentication/authorization, portlet, service, etc) whose responses
> > are rendered through Jsf view controller.
> >
> > BaTien
> > DBGROUPS
> >
> >
> >
> >>> As long as you're willing to copy the base chain-config.xml file and
> >>> make a few modifications, then you could simply add your own command
> >>> which retrieves a value from the context under a well-known key and
> >>> inspects the value to see if validation passed or not.  This exact
> >>> logic is the first thing executed in the CreateAction's execute
> >>> method, which doesn't lookup or create an action unless the form
> >>> validated.
> >>>
> >>>
> >>
> >>
> >> There's actually quite a few different ways to approach this,
> >> including the "optionally invoke some other command at this point"
> >> mentioned earlier in the thread, so you don't even *have* to
> >> cut-n-paste the standard version of the chain.
> >>
> >>
> >>
> >>> You can start experimenting with commons-chain and struts-chain from
> >>> CVS Head if you want to see what's going on.  You don't have to wait
> >>> for Struts 1.3.
> >>>
> >>
> >>
> >> Indeed, Struts-Chain directly illustrates the fine-grained approach to
> >> defining the standard request processing chain that Joe describes.
> >> Nightly builds are available at:
> >>
> >> http://cvs.apache.org/builds/jakarta-struts/nightly/struts-chain/
> >>
> >>
> >>
> >>> Joe
> >>>
> >>>
> >>
> >>
> >> Craig
> >>
> >> ---------------------------------------------------------------------
> >> 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]
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


-- 


"You can't wake a person who is pretending to be asleep."

~Native Proverb~

"Each man is good in His sight. It is not necessary for eagles to be crows."

~Hunkesni (Sitting Bull), Hunkpapa Sioux~

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

Reply via email to