> Please check out the two attached classes: Clazz and Field. These are
What about Method?
> client
> APIs only. Nothing is said about where the metadata is coming from -
> that's
> to come later.
>
> Here are some notes on the design of these two classes:
>
> 1. Clazz is a metadescription of a generalized bean (JDK bean, "modern"
> bean, DynaBean, Map, EJB etc).
>
> 2. In some cases there is more than one Clazz that can describe a
> particular
> object. For example, the same object can be described as a standard bean
> as
> well as a "modern" bean. Therefore I have introduced the notion of a
> "model" identified by a URI. I am thinking the URI itself might map to a
> verbal description of the model.
>
> 3. Clazz has a newInstance() method that is responsible for object
> allocation.
>
> 4. You do not get a list of Field objects from a Clazz. Instead, you get
> a
> list of field names and then can acquire a Field object for an individual
> field. The reason is that allocation of Field objects may involve
> multiple
> plugins and therefore be costly. Also, in the case of a Map, we would
> effectively be recreating the map with the Field objects.
>
+1
> 5. Field hides the mechanisms of actual value extraction/manipulation.
> You
> don't get any "readMethods", "writeMethods" etc. You simply delegate the
> value manipulations to the Field object.
>
+1
> 6. Field is scalar, indexed and mapped at the same time and has all
> corresponding APIs. If you use the wrong APIs on a field, it will just
> throw an exception.
>
So we need some Methods like isIndexed(), isMapped(),
isListed()?
> 7. There are attributes associated with a Clazz and Field.
>
Can I distinguish declared Fields/Methods from inherited
ones?
How do I retrieve super classes and interfaces?
What if I have to use "mixed" plugins, i.e. for the clazz
at hand I have a XML specification, how do I find
the plugin for the super class (how do I find the XML
spec if there is one and how do I decide which
plugin to use if no XML spec can be found.)
Victor
--
To unsubscribe, e-mail: <mailto:commons-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>
|