On Tue, Oct 01, 2002 at 10:17:40AM +0200, Christian Haul wrote:
> On 01.Oct.2002 -- 01:31 AM, Jeff Turner wrote:
...
> > It is universally pluggable, only the plugin mechanism is inheritance,
> > not composition. The current model is:
> >
> > AbstractJXPathModule .
> > |---- RequestModule
> > |---- SessionModule
> > |---- XMLModule
> > +---- ....
> >
> > Where each subclass just chooses what Object to let JXPath use.
> >
> > If I've understood you, you're proposing to change from inheritance to
> > composition. Create a JXPathModule that takes as 'input', *any* other
> > module:
> >
> > <component-instance name="jxpath" class="...JXPathModule">
> > <input-module name="SessionModule"/>
> > </component-instance>
>
> Right.
>
> >
> > The JXPath module then provides XPath access to the input-module's....
> > what? This is my question above. A Module's public interface doesn't
> > allow access to the raw object model that JXPath needs. It's always
> > pre-digested, accessible through tokens that the Module defines. For
> > instance, how would the above XML snippet translate to code? How could
> > XMLModule functionality be achieved?
>
> The degree, to what they digest the data is not set to
> stone. SessionModule could, for instance, just return the session
> object.
Yes, it would have to, to accommodate the most general 'upstream' module,
JXPath. but then you've got such a loose contract between modules as to
be almost useless:
public interface InputModule {
Object getData();
}
At least with the current module (attributes and values), we can have
modules like DefaultsMetaModule which can default *any* 'upstream'
module's values.
> If we believe that jxpath is the one and only interface that the
> InputModules should expose, I'm fine with that. Then it would make
> perfectly sense to make all of them inherit from
> AbstractJXPathModule. Obviously, all complex ones do currently.
>
> But what about the others. How will they fit in e.g. DateMetaInput
> (parses a string and returns a java.util.Date)?
However it currently works. Putting the question the other way, what sort
of inter-module data model is sufficiently general to allow JXPath on one
hand, and DateMetaModule on the other?
> Granted, the simple
> ones like NullInput (always returns "null") won't need it.
>
> Another point may be that when switching to jxpath, would that impact
> the interface? Does getAttributeNames() still return a reasonable
> enumeration?
Hmm, probably not. It wouldn't make much sense to iterate through all
possible XPaths.
--Jeff
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]