Stephen,

good idea to have something concrete.

> I have checked into the [clazz] sandbox some classes. They represent the
> basic ideas of where I was headed.
> 
> They include a meta model
> MetaBean
> MetaProperty
> MetaOperation
> all extending MetaUnit

1. I do not like the name MetaBean, I would prefer Clazz or
MetaClass, because "Bean" implies that I have to have
getters and setters. I know that this is an important use
case, but sometimes I am only interested in the 
operations (interfaces etc.).
I do not like the name MetaProperty for the same reason.
I would prefer Field (Berin) or Attribute (UML).

The following is a list of differences to the model
I have in mind (already implemented for some stuff
i am working on):

2. In the method MetaBean#getMetaPropertyMap you 
return the map of properties, I am always afraid 
giving a way internal collections, because a client
can modify them directly. I always prefer having
adders and removers for elements, so the class
(MetaBean) can keep track of its elements and
do some bookkeeping. 
Or do you intend to always create a copy?

3. I still would like to be able to differentiaite
between properties/operations declared 
in/for the current MetaBean and 
properties/operations declared in super classes
and interfaces.

4. What about inner classes?

5. What about modifiers for MetaBean like
abstract and static?

6. Can a MetaBean represent an interface?
How do I differentiate? isInterface()?

7. What about having a getName() operation
in MetaUnit? (why "unit"? what about 
MetaModelElement? "unit" sounds wrong
for me, but I can not explain why).
In MetaBean this could return 
Package+ShortClassName

8. MetaOperation: modifiers?

9. Should it be possible to differentiate
between "normal" operations and constructors?
Then something like isConstructor() would be
helpful.

Victor


--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@;jakarta.apache.org>

Reply via email to