Mixees and Mixins

This section defines a number of "mixee" interfaces that define a contract for some framework-defined mixins.

See the user guide for a discussion of mixins.

java.lang.Object

The framework provides a number of mixins that contributes to java.lang.Object (in other words, to every domain object):

Dto

JAXB view models can optionally implement the Dto interface. Two mixins contribute to this interface:

These allow the view model/DTO to be seriailized, respectively, as XML and as the XSD schema for said XML.

Persistable

All JDO domain entities implement the DataNucleus Persistable role interface as a result of the enhancer process (the fully qualified class name is org.datanucleus.enhancement.Persistable).

Using this, the following mixins (actions and properties) are available for all JDO entities:

As a developer you do not need to write any code to obtain the mixins that contribute to this interface.

These mixin properties/actions are all associated with the "Metadata" fieldset.

Security

Domain objects that are created, updated or otherwise associated with a user can implement the HasUsername mixee interface.

A number of extension modules related to security, such as SecMan module, contribute to this interface.

System

Domain objects that are associated to an Interaction can express this relationship by implementing the HasInteractionId interface.

Mixins that contribute to this mixee interface include:

The closely related HasInteractionIdAndSequence (a subtype of HasInteractionId) can be implemented by any objects representing events that could occur multiple times within within the outer Interaction, most notably transactions..

The HasTarget is intended for domain objects representing commands, audit entries or executions (of action invocations/property edits). Extension modules that provide these capabilities can implement this domain object to allow the user to navigate between these different but related cross-cutting concerns.

Mixins that contribute to this mixee interface include:

Updates

The following interfaces define a contract for the framework to update:

Note that these are not quite the same thing as regular mixee interfaces, in that they do not expose getters to be leveraged by a mixin. Rather, these expose callback such that the framework can populate them at the appropriate juncture.