FileDocCategorySizeDatePackage
PrimekeyFieldPersistentFields.javaAPI DocGlassfish v2 API9855Fri May 04 22:33:50 BST 2007com.sun.enterprise.tools.verifier.tests.ejb.entity.pksinglefield

PrimekeyFieldPersistentFields

public class PrimekeyFieldPersistentFields extends com.sun.enterprise.tools.verifier.tests.ejb.EjbTest implements com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck
The primkey-field must be one of the fields declared in the cmp-field elements.

Fields Summary
Constructors Summary
Methods Summary
public Resultcheck(EjbDescriptor descriptor)
The primkey-field must be one of the fields declared in the cmp-field elements.

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


	Result result = getInitializedResult();
	ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();

	// The primkey-field must be one of the fields declared in the 
	// cmp-field elements
	if (descriptor instanceof EjbEntityDescriptor) {
	    String persistence =
		((EjbEntityDescriptor)descriptor).getPersistenceType();

	    if (EjbEntityDescriptor.CONTAINER_PERSISTENCE.equals(persistence)) {
		try {
		    // do i need to use this to help determine single vs. multiple 
		    // object finders, etc.
		    String primkey =
			((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName();
                    if (primkey.equals("java.lang.String")) {
                        try {
  
		            FieldDescriptor primField =
			        ((EjbCMPEntityDescriptor)descriptor).getPrimaryKeyFieldDesc();
  
		            // primField must exist in order to be valid & pass test
		            Descriptor persistentField;
		            Field field;
		            Set persistentFields =
			        ((EjbCMPEntityDescriptor)descriptor).getPersistenceDescriptor().getCMPFields();
		            Iterator iterator = persistentFields.iterator();
		            boolean foundMatch = false;
		            while (iterator.hasNext()) {
			        persistentField = (Descriptor)iterator.next();
			        if (primField != null) {
			            if (primField.getName().equals(persistentField.getName())) {
			                foundMatch = true;
			                break;
			            } else {
			                continue;
			            }
		                } else {
                                    // should already be set, can't ever be in cmp 
                                    // fields if primField doesn't exist
			            foundMatch = false;
			            break;
		                }
		            }
		            if (foundMatch) {
			        result.addGoodDetails(smh.getLocalString
						      ("tests.componentNameConstructor",
						       "For [ {0} ]",
						       new Object[] {compName.toString()}));
				result.passed(smh.getLocalString
				              (getClass().getName() + ".passed",
				               "Primary key field [ {0} ] is defined within set of container managed fields for bean [ {1} ]",
				               new Object[] {primField.getName(),descriptor.getName()}));
		            } else {
			        if (primField != null) {
			            result.addErrorDetails(smh.getLocalString
							   ("tests.componentNameConstructor",
							    "For [ {0} ]",
							    new Object[] {compName.toString()}));
				    result.failed(smh.getLocalString
					          (getClass().getName() + ".failed",
					           "Primary key field [ {0} ] is not defined within set of container managed fields for bean [ {1} ]",
					           new Object[] {primField.getName(),descriptor.getName()}));
			        } else {
                                    // unless special case, where primary key class
                                    // is java.lang.Object, then test should be N/A
                                    // not failed
                                    try {
                                        if (((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName().equals("java.lang.Object")) {

					    result.addNaDetails(smh.getLocalString
								("tests.componentNameConstructor",
								 "For [ {0} ]",
								 new Object[] {compName.toString()}));
		                            result.notApplicable(smh.getLocalString
								 (getClass().getName() + ".notApplicable2",
								  "Primkey field not defined for [ {0} ] bean.",
								  new Object[] {descriptor.getName()}));
                                    
                                        } else {
			                    result.addErrorDetails(smh.getLocalString
								   ("tests.componentNameConstructor",
								    "For [ {0} ]",
								    new Object[] {compName.toString()}));
					    result.failed(smh.getLocalString
							  (getClass().getName() + ".failed1",
							   "Primary key field is not defined within set of container managed fields for bean [ {0} ]",
							   new Object[] {descriptor.getName()}));
			                }		       
		                    } catch (NullPointerException e) {
					result.addNaDetails(smh.getLocalString
							    ("tests.componentNameConstructor",
							     "For [ {0} ]",
							     new Object[] {compName.toString()}));
		                        result.notApplicable(smh.getLocalString
							     (getClass().getName() + ".notApplicable2",
							      "Primkey field not defined for [ {0} ] bean.",
							      new Object[] {descriptor.getName()}));
		                    }
			        }		       
		            }
                        } catch (NullPointerException e) {
                            result.addErrorDetails(smh.getLocalString
						("tests.componentNameConstructor",
						 "For [ {0} ]",
						 new Object[] {compName.toString()}));
			    result.failed
                                (smh.getLocalString
                                 (getClass().getName() + ".failed2",
                                  "Error: Primary Key Field must be defined for bean [ {0} ] with primary key class set to [ {1} ]",
                                  new Object[] {descriptor.getName(),primkey}));
                        }
                    } else {
			result.addNaDetails(smh.getLocalString
					    ("tests.componentNameConstructor",
					     "For [ {0} ]",
					     new Object[] {compName.toString()}));
                        result.notApplicable(smh.getLocalString
					     (getClass().getName() + ".notApplicable3",
					      "primkey [ {0} ] is not java.lang.String for bean [ {1} ]",
					      new Object[] {primkey,descriptor.getName()}));
                    }
		} catch (NullPointerException e) {
		    result.addNaDetails(smh.getLocalString
					("tests.componentNameConstructor",
					 "For [ {0} ]",
					 new Object[] {compName.toString()}));
		    result.notApplicable(smh.getLocalString
					 (getClass().getName() + ".notApplicable2",
					  "Primkey field not defined for [ {0} ] bean.",
					  new Object[] {descriptor.getName()}));
		}
	    } else {
		result.addNaDetails(smh.getLocalString
				    ("tests.componentNameConstructor",
				     "For [ {0} ]",
				     new Object[] {compName.toString()}));
		result.notApplicable(smh.getLocalString
				     (getClass().getName() + ".notApplicable1",
				      "Expected [ {0} ] managed persistence, but [ {1} ] bean has [ {2} ] managed persistence",
				      new Object[] {EjbEntityDescriptor.CONTAINER_PERSISTENCE,descriptor.getName(),persistence}));
	    }
	} else {
	    result.addNaDetails(smh.getLocalString
				("tests.componentNameConstructor",
				 "For [ {0} ]",
				 new Object[] {compName.toString()}));
	    result.notApplicable(smh.getLocalString
				 (getClass().getName() + ".notApplicable",
				  "{0} expected \n {1} bean, but called with {2} bean",
				  new Object[] {getClass(),"Entity","Session"}));
	}

	return result;