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

FindMethodHasDescriptors

public class FindMethodHasDescriptors extends QueryMethodTest
Find Methods should have deployment descriptors associated with them
author
Jerome Dochez
version

Fields Summary
Constructors Summary
Methods Summary
protected booleanrunIndividualQueryTest(java.lang.reflect.Method method, EjbCMPEntityDescriptor descriptor, java.lang.Class targetClass, com.sun.enterprise.tools.verifier.Result result)

Run an individual test against a finder method (single or multi)

param
method is the finder method reference
param
descriptor is the entity bean descriptor
param
targetClass is the class to apply to tests to
param
result is where to place the result
return
true if the test passes

	ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
        if (method.getName().equals("findByPrimaryKey")) {
	    result.addGoodDetails(smh.getLocalString
				       ("tests.componentNameConstructor",
					"For [ {0} ]",
					new Object[] {compName.toString()}));
	    result.addGoodDetails(smh.getLocalString
				  ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.FindMethodHasDescriptors.passed1",
				   "Passed: Found method findByPrimaryKey",
				   new Object[] {})); 
            return true;
	}
        
        // We don't use getQueryFor to free ourselfves from classloader issues.
        Set set = descriptor.getPersistenceDescriptor().getQueriedMethods();
        Iterator iterator = set.iterator();
	if (iterator.hasNext()) {
	    while(iterator.hasNext()) {
		MethodDescriptor queryMethod = (MethodDescriptor) iterator.next();
		if (queryMethod.getName().equals(method.getName())) {
		    Class mParms[] = method.getParameterTypes();
		    String queryParms[] = queryMethod.getParameterClassNames();
            int queryParamsLen;
            if(queryParms == null)
              queryParamsLen = 0;
            else
              queryParamsLen = queryParms.length;
		    if (queryParamsLen == mParms.length) {
			boolean same = true;
            if(queryParamsLen > 0)
            {
			for (int i=0;i<mParms.length;i++) {
			    if (!mParms[i].getName().equals(queryParms[i]))
				same=false;                    
			}
            }
			if (same) {  
			    result.addGoodDetails(smh.getLocalString
				       ("tests.componentNameConstructor",
					"For [ {0} ]",
					new Object[] {compName.toString()}));
			    result.addGoodDetails(smh.getLocalString
				("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.FindMethodHasDescriptors.passed",
				 "[ {0} ] has a query element associated with it",
				 new Object[] {method}));       
			    return true;
			}
		    }
		}
	    }
	    result.addErrorDetails(smh.getLocalString
				       ("tests.componentNameConstructor",
					"For [ {0} ]",
					new Object[] {compName.toString()}));
	    result.addErrorDetails(smh.getLocalString
			    ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.FindMethodHasDescriptors.failed",
			     "Error : [ {0} ] seems to be a finder method but has no query element associated with it",
			     new Object[] {method}));       
	    return false;               
	}
	else {
	    result.addGoodDetails(smh.getLocalString
				       ("tests.componentNameConstructor",
					"For [ {0} ]",
					new Object[] {compName.toString()}));
	    result.addGoodDetails(smh.getLocalString
	    ("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.FindMethodHasDescriptors.notApplicable",
	     "NotApplicable : No Query methods found",
	     new Object[] {})); 
	    return true;
	}