RE: SOX

Graham Moore (graham.moore@dpsl.co.uk)
Thu, 1 Oct 1998 13:23:45 +0000


peter I agree that the mapping issue is of vital importance. In a similar
way to the SUN stuff I've developed a domBuilder that can take an XML file
which specifies the class mapping (example file below) , or can look in a
given package for classes that match element names and an XML file / stream
from which to build the structure.

I think there are two points to consider:

1) Possinbly we should be using XML to specify the binding.
2) Leaving scope in the biding spec to allow for the declaration of
delegation structures. Given that inheritance is a specialisation of
delegation perhaps this should happen anyway. In the same way that arbitrary
functional mapping is undesirable so is the arbitrary construction of
delegation structures.

The issue with using inheritance is that the mixin class must inherit from
the elementNode / generic data object class used in the domBuilder. Using
delegation and dynamic invocation this is not a problem.

consider

delObject.tell(objectRef, "method", args);

which could be wrapped further

system.tell(delObject, "tell", args); where are 0 is the method names and
1 - n are the real args.

Internally each member of the delegation structure would have to be aware
they were in one but this is generically handled by

public class delMemeber {
private Object outerSelf;

public void doit(){
String att val = (String)system.tell(outerSelf, "getAttribute", args);
}

}

So the delmember would not have to subclass any elementNode object, just
implement the delMember interface.

public interface delegationMember {
private Object outerSelf;
void setOuterSelf(Object os);
}

This means that domBuilder writers subscribe to acknowlege the contract of
intialising the classes appropriately and class writers can easily write and
bind objects.

This does require a bit of a mind set change for one thing there is no
compile time error generation. But perhaps this is a price worth paying for
a more dynamic, open and flexible system. It would be nice if java supported
delelgation and dynamic invocation as part of the langauge; writing it on
top seems a bit messy.

Example functional mixin file: This is very simplistic but illustrates what
we could do. I haven't considered the delegation structure in any real
depth.

<?xml version='1.0'?>
<mixins>
<mixinassoc elem="breakfast-menu" jclass="grove.menu"/>
<mixinassoc elem="food" jclass="grove.food"/>
</mixins>

What do people think?

graham.

gdm@dpsl.co.uk