Hi Iain,
It's not terribly clear to me what your actual domain classes are -
meaning, the classes that you'd want to have available (and interact
with) using Isis.
I can see some "application domain"-like properties in
AnidirectoryPackage, e.g.:
public EReference getAdaptationCharacter_BelongingTo()
and
public EAttribute getAdaptationCharacter_Surname()
The references in the comments:
@see dom.anidirectory.AdaptationCharacter#getBelongingTo()
seems a more likely "domain" property, to me...
Sorry if I'm asking you to repeat yourself, but:
I suppose, to take a few steps back, what is your actual application
domain, i.e. an outline of one or two of the classes that you *want* to
appear in the Isis viewers, and the kind of actions you want to expose?
And where does Emfatic fit in? In my mind, I'm imagining something
like a UML tool, where you use a GUI to draw classes and their
properties, then a code-generator produces the actual Java classes.
Now you want to use Isis to manage (create) and render these classes
onto a UI?
And, to go one step more philosophical, what are actually trying to
achieve with Isis?
Regards,
Kevin
On 9 Jul 2011 at 1:37, Iain Flynn wrote:
> Hi Dan,
>
> An example of a generated class (and some automatically generated methods) is
>
> public abstract class Adaptation extends Ancestor {
>
> @Override
> public NotificationChain eInverseAdd(InternalEObject otherEnd, int
> featureID, NotificationChain msgs) {
> switch (featureID) {
> case AnidirectoryPackage.ADAPTATION__ADAPTATION_OF:
> if (adaptationOf != null)
> msgs =
> ((InternalEObject)adaptationOf).eInverseRemove(this,
> AnidirectoryPackage.IP__ADAPTATIONS, IP.class, msgs);
> return basicSetAdaptationOf((IP)otherEnd, msgs);
> }
> return super.eInverseAdd(otherEnd, featureID, msgs);
> }
>
> @Override
> public NotificationChain eInverseRemove(InternalEObject otherEnd, int
> featureID, NotificationChain msgs) {
> switch (featureID) {
> case AnidirectoryPackage.ADAPTATION__ADAPTATION_OF:
> return basicSetAdaptationOf(null, msgs);
> }
> return super.eInverseRemove(otherEnd, featureID, msgs);
> }
> }
>
> As you can see, this has some references to AnidirectoryPackage.
>
> public class AnidirectoryPackage extends EPackageImpl {
> /**
> * Returns the meta object for the reference '{@link
> dom.anidirectory.AdaptationCharacter#getBelongingTo <em>Belonging To</em>}'.
> * <!-- begin-user-doc -->
> * <!-- end-user-doc -->
> * @return the meta object for the reference '<em>Belonging To</em>'.
> * @see dom.anidirectory.AdaptationCharacter#getBelongingTo()
> * @see #getAdaptationCharacter()
> * @generated
> */
> public EReference getAdaptationCharacter_BelongingTo() {
> return
> (EReference)adaptationCharacterEClass.getEStructuralFeatures().get(0);
> }
>
> /**
> * Returns the meta object for the attribute '{@link
> dom.anidirectory.AdaptationCharacter#getSurname <em>Surname</em>}'.
> * <!-- begin-user-doc -->
> * <!-- end-user-doc -->
> * @return the meta object for the attribute '<em>Surname</em>'.
> * @see dom.anidirectory.AdaptationCharacter#getSurname()
> * @see #getAdaptationCharacter()
> * @generated
> */
> public EAttribute getAdaptationCharacter_Surname() {
> return
> (EAttribute)adaptationCharacterEClass.getEStructuralFeatures().get(1);
> }
> }
>
> If that doesn't help, just say so.
>
> Thanks again,
>
> - Iain
>
> On 8 Jul 2011, at 22:10, Dan Haywood wrote:
>
> > Thanks for all the detail, but I can't quite visualise it. Can you paste
> > some source files with all the different bits (ie a small test case that
> > exhibits the problem)?
> >
> > Thx
> > Dan
> >
> > Sent from my iPhone
> >
> > On 8 Jul 2011, at 21:02, Iain Flynn <[email protected]> wrote:
> >
> >> Hi Kevin,
> >>
> >> The wrapper is a class containing Isis methods that has an empty subclass
> >> of AbstractDomainObject has an inner class, an instance of which it has as
> >> an attribute. The wrapper has the ADO methods and calls the inner object
> >> to take care of them.
> >>