FileDocCategorySizeDatePackage
HomeMethodNameMatch.javaAPI DocGlassfish v2 API5278Fri May 04 22:33:52 BST 2007com.sun.enterprise.tools.verifier.tests.ejb.homeintf

HomeMethodNameMatch

public abstract class HomeMethodNameMatch extends HomeMethodTest
For each method defined in the home interface, there must be a matching method in the enterprise Bean's class prefixed with ejbHome.
author
Jerome Dochez
version

Fields Summary
Constructors Summary
Methods Summary
private java.lang.StringgetClassName(com.sun.enterprise.deployment.EjbDescriptor descriptor)

	return getHomeInterfaceName(descriptor);
    
protected voidrunIndividualHomeMethodTest(java.lang.reflect.Method method, com.sun.enterprise.deployment.EjbDescriptor descriptor, com.sun.enterprise.tools.verifier.Result result)

run an individual home method test

param
method the home method to test
param
descriptor the deployment descriptor for the entity bean
param
result the result object

        
        Method m;
	ComponentNameConstructor compName = null;
	try {	  
	    compName = getVerifierContext().getComponentNameConstructor();
	    // retrieve the remote interface methods
	    ClassLoader jcl = getVerifierContext().getClassLoader();
	    Class ejbClass = Class.forName(descriptor.getEjbClassName(), false, jcl);
            // Bug: 4952890. first character of this name should be converted to UpperCase. 
            String methodName = method.getName().replaceFirst(method.getName().substring(0,1),
                                                              method.getName().substring(0,1).toUpperCase());
            String expectedMethodName = "ejbHome" + methodName;
            do {
                // retrieve the EJB Class Methods
                m = getMethod(ejbClass, expectedMethodName, method.getParameterTypes());                                    
            } while (((ejbClass = ejbClass.getSuperclass()) != null) && (m==null));

            if (m != null) {
                // now display the appropriate results for this particular business
                // method
                addGoodDetails(result, compName);
                result.passed(smh.getLocalString
                    (getClass().getName() + ".passed",
                    "For method [ {1} ] in Home Interface [ {0} ], a ejbHome<METHOD> name matching method was found",
                    new Object[] {method.getDeclaringClass().getName(), method.getName()})); 
            } else {
                addErrorDetails(result, compName);
                result.failed(smh.getLocalString
                    (getClass().getName() + ".failed",  
                    "Error : For method [ {1} ] defined in Home Interface [ {0} ], no ejbHome<METHOD> name matching method was found" ,
                    new Object[] {method.getDeclaringClass().getName(), method.getName()}));
	    }
	} catch (ClassNotFoundException e) {
	    Verifier.debug(e);
        addErrorDetails(result, compName);
	    result.failed(smh.getLocalString(
			   getClass().getName() + ".failedException",
			   "Error: Home interface [ {0} ] does not exist or is not loadable within bean [ {1} ]",
			   new Object[] {getClassName(descriptor),descriptor.getName()}));
	}