FileDocCategorySizeDatePackage
CmrFieldTest.javaAPI DocGlassfish v2 API5876Fri May 04 22:33:40 BST 2007com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2

CmrFieldTest

public abstract class CmrFieldTest extends CMPTest
Container managed relationship fields tests superclass, iterates over all declated cmr fields and delegate actual tests to subclasses
author
Jerome Dochez
version

Fields Summary
Constructors Summary
Methods Summary
public com.sun.enterprise.tools.verifier.Resultcheck(EjbCMPEntityDescriptor descriptor)

param
descriptor the Enterprise Java Bean deployment descriptor
return
Result the results for this assertion


        Result result = getInitializedResult();
        addErrorDetails(result,
            getVerifierContext().getComponentNameConstructor());

	ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
        boolean oneFailed = false;
	boolean found = false;

        Class c = loadEjbClass(descriptor, result);

        if (c!=null) {
            Set cmrFields = ((EjbCMPEntityDescriptor)descriptor).getPersistenceDescriptor().getRelationships();
            Iterator cmrIterator = cmrFields.iterator();

	    if (cmrIterator.hasNext()) {
		while (cmrIterator.hasNext()) {
		    RelationshipDescriptor cmfDescriptor = (RelationshipDescriptor) cmrIterator.next();
            {
                // test if this bean is the source in this relationship
                RelationRoleDescriptor role = cmfDescriptor.getSource();
                if (role.getOwner().equals(descriptor) && role.getCMRField()!=null) {
                found = true;
                if (!runIndividualCmrTest(descriptor, role, c, result)) {
                    oneFailed = true;
                }
                }
            }
            // we need to test for both source and sink because of self references
            {
                // test if this bean is the sink in this relationship
                RelationRoleDescriptor role = cmfDescriptor.getSink();
                if (role.getOwner().equals(descriptor) && role.getCMRField()!=null) {
                found = true;
                if (!runIndividualCmrTest(descriptor, role, c, result)) {
                    oneFailed = true;
                }
                }
            }
		}
		if (oneFailed) 
		    result.setStatus(Result.FAILED);
		else if (found == false) {
		     result.addNaDetails(smh.getLocalString
				       ("tests.componentNameConstructor",
					"For [ {0} ]",
					new Object[] {compName.toString()}));
		    result.notApplicable(smh.getLocalString
				 ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.CmrFieldTest.notApplicable",
				  "Not Applicable : The EJB has no CMR fields declared",
				  new Object[] {})); 
		}
		else 
		    result.setStatus(Result.PASSED);
	    }
	    else { 
		 result.addNaDetails(smh.getLocalString
				       ("tests.componentNameConstructor",
					"For [ {0} ]",
					new Object[] {compName.toString()}));
		result.notApplicable(smh.getLocalString
				 ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.CmrFieldTest.notApplicable",
				  "Not Applicable : The EJB has no CMR fields declared",
				  new Object[] {})); 
	    } 
	}
        return result;
    
protected abstract booleanrunIndividualCmrTest(Descriptor entity, RelationRoleDescriptor rrd, java.lang.Class c, com.sun.enterprise.tools.verifier.Result r)
run an individual verifier test of a declated cmr field of the class

param
entity the descriptor for the entity bean containing the cmp-field
param
info the descriptor for the declared cmr field
param
c the class owning the cmp field
parma
r the result object to use to put the test results in
return
true if the test passed