The code has now been reworked and all the tests are running successfully, though right now that may not be saying too much. :-)
The AW5 Kernel is now fully extensible, without allowing Rolon to be subclassed. Rather, you define new Rolon Operations and configure Rolons using a RolonType and assigning properties. This is composition based on the java.util.Properties class.
Here's a sample operation which, when added to a Rolon, turns it into a Journal Entry:
class AddEval extends _Eval {
override def eval(
transactionContexts:TransactionContexts,
rolonContext:Rolon,
targetRolon:Rolon) {
val rolon = transactionContexts.createRolon("123","rolon")
val be = transactionContexts.get("123")
be.attributes.putInt("t0",-1,0)
}
}
And here are some properties which add this operation to RolonType addJE:
properties.put("role2.1.include","rolon")
properties.put("role2.2.type",classOf[_Eval].getName)
properties.put("role2.2.class",classOf[AddEval].getName)
Note that the first two lines define a base RolonType, rolon, and that addJE includes all the operations defined for RolonType rolon, which happens to be the empty set at the moment. Operations then can be inherited, indeed, multiple inheritance is supported. The Core Layer will add structural inheritance as well.
Bill