|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.objectweb.jac.core.AspectComponent
org.objectweb.jac.aspects.integrity.IntegrityAC
This aspect handle different kinds of data integrity among objects sets.
Field Summary | |
static String |
CONSTRAINTS
|
static String |
DISABLE_ADD_TO_REPOSITORY
|
static String |
DISABLE_ROLE_UPDATES
|
Fields inherited from class org.objectweb.jac.core.AspectComponent |
application, blockKeywords, cr, currentConfigMethod, currentImports, firstCall, NOT_SHARED, SHARED, startWeavingCCount, startWeavingCount, startWeavingMethod, startWeavingType, systemListener, wrappers |
Fields inherited from interface org.objectweb.jac.core.BaseProgramListener |
FOUND_OBJECT |
Constructor Summary | |
IntegrityAC()
|
Method Summary | |
void |
addPostCondition(FieldItem field,
MethodItem constraint,
Object[] params,
String errorMsg)
Use this configuration method to add a postcondition on a object's field. |
void |
addPreCondition(FieldItem field,
MethodItem constraint,
Object[] params,
String errorMsg)
Use this configuration method to add a precondition on a object's field. |
void |
declareConstraint(FieldItem relation,
FieldItem target,
String constraint)
Declare a referential integrity contraint. |
void |
declareRepository(String repositoryName,
CollectionItem collection,
FieldItem field)
This method declares a repository collection. |
static void |
disableAddToRepository(CollectionItem collection)
Disables adding objects to a repository collection. |
static void |
disableRoleUpdates()
|
protected void |
doCheck()
Activates constraints checking. |
static void |
enableAddToRepository(CollectionItem collection)
Enables adding objects to a repository collection. |
static void |
enableRoleUpdates()
|
protected static List |
getDisabled()
Gets the list of disabled repository |
static boolean |
isAddToRepositoryEnabled(CollectionItem collection)
Tells wether adding objects to a repository collection is enabled or not. |
void |
updateAssociations()
Tells that the integrity aspect should maintain integrity between the roles of associations. |
void |
whenConfigured()
This method should be defined by the programmer when specific actions are needed once the aspect component has be configured. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public static final String CONSTRAINTS
public static final String DISABLE_ROLE_UPDATES
public static final String DISABLE_ADD_TO_REPOSITORY
Constructor Detail |
public IntegrityAC()
Method Detail |
public void declareRepository(String repositoryName, CollectionItem collection, FieldItem field)
IntegrityConf
When an object is added to a relation, it will be automatically added to the collection of the repository.
declareRepository
in interface IntegrityConf
repositoryName
- the JAC object's name of the repositorycollection
- the collection to add into (on the instance
given as the first parameter)field
- objects that are set or added to this field are
added to the repositorypublic void declareConstraint(FieldItem relation, FieldItem target, String constraint)
IntegrityConf
Declare a referential integrity contraint.
When an object is removed from the target collection, it will be checked wether it can be allowed.
Suppose you have Customer class and an Invoice class :
,-----------. 1 * ,----------. 1 * ,---------. | Customers |-------| Customer |-----------| Invoice | `-----------' `----------' `---------'
You do not want to allow the removal of a customer from the Customers repository if there are invoices for that customer. So you would add the following constraint:
declareConstraint Invoice.customer Customers.customers FORBIDDEN;
declareConstraint
in interface IntegrityConf
relation
- target
- the collection on which checking will occur on
remove, or the reference on which checking will occur when
setting another value.constraint
- the type of the constraint. It may be
"DELETE_CASCADE" (delete the object holding the reference on the
object to be deleted), "SET_NULL" (set the reference to null, or
remove the object from the collection), FORBIDDEN" (raise an
exception).public void addPostCondition(FieldItem field, MethodItem constraint, Object[] params, String errorMsg)
IntegrityConf
It means that the final value of the field will be tested with the added constraint and if it is not valid, it will be rejected.
Constraint methods must return a Boolean that is Boolean.TRUE
if the test has been validated (passed), Boolean.FALSE else. The
class org.objectweb.jac.aspects.integrity.GenericConditions
contains basic tests such as forbiddenValues
or
authorizedValues
.
addPostCondition
in interface IntegrityConf
field
- the field to constrainconstraint
- the constraint method used to check the
field's valueparams
- the parameters passed to the contraint methoderrorMsg
- the error message displayed if the checking has
not been passedIntegrityConf.addPreCondition(FieldItem,MethodItem,Object[],String)
public void addPreCondition(FieldItem field, MethodItem constraint, Object[] params, String errorMsg)
IntegrityConf
It means that the initial value of the field will be tested with the added constraint and if it is not valid, it will be rejected.
Constraint methods must return a Boolean that is Boolean.TRUE
if the test has been validated (passed), Boolean.FALSE else. The
class org.objectweb.jac.aspects.integrity.GenericConditions
contains basic tests such as forbiddenValues
or
authorizedValues
.
addPreCondition
in interface IntegrityConf
field
- the field to constrainconstraint
- the constraint method used to check the
field's valueparams
- the parameters passed to the contraint methoderrorMsg
- the error message displayed if the checking has
not been passedIntegrityConf.addPostCondition(FieldItem,MethodItem,Object[],String)
protected void doCheck()
This method must be called once after all calls to
addPreCondition
and addPostCondition
to effectively add pointcuts for these methods.
addPreCondition(FieldItem,MethodItem,Object[],String)
,
addPostCondition(FieldItem,MethodItem,Object[],String)
public void updateAssociations()
IntegrityConf
For instance, if you have a Customer class and an Order class:
,----------. 1 n ,-------. | Customer |--------| Order | `----------' `-------'
You can declare an association made of Cutomer.orders and Order.customer, so that setting the cutomer of an order will automatically add this order in the customer's list of orders. And vice-versa.
updateAssociations
in interface IntegrityConf
RttiAC.declareAssociation(FieldItem,FieldItem)
public void whenConfigured()
AspectComponent
whenConfigured
in class AspectComponent
public static boolean isAddToRepositoryEnabled(CollectionItem collection)
collection
- the repository collection to testpublic static void disableAddToRepository(CollectionItem collection)
collection
- the repository collection to disablepublic static void enableAddToRepository(CollectionItem collection)
collection
- the repository collection to enableprotected static List getDisabled()
public static void disableRoleUpdates()
public static void enableRoleUpdates()
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |