FileDocCategorySizeDatePackage
EntityBeanInterface.javaAPI DocGlassfish v2 API5565Fri May 04 22:33:36 BST 2007com.sun.enterprise.tools.verifier.tests.ejb.entity

EntityBeanInterface

public class EntityBeanInterface extends com.sun.enterprise.tools.verifier.tests.ejb.EjbTest implements com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck
Implements the EntityBean Interface test. All entity Beans must implement, directly or indirectly, the EntityBean interface.

Fields Summary
Constructors Summary
Methods Summary
public Resultcheck(com.sun.enterprise.deployment.EjbDescriptor descriptor)
Implements the EntityBeaan Interface test. All entity Beans must implement, directly or indirectly, the EntityBean interface.

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


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

	if (descriptor instanceof EjbEntityDescriptor) {
	    try {
		Class c = Class.forName(descriptor.getEjbClassName(), false, getVerifierContext().getClassLoader());

		boolean validBean = false;
		// walk up the class tree 
		do {
		    Class[] interfaces = c.getInterfaces();
    
		    for (int i = 0; i < interfaces.length; i++) {
			    logger.log(Level.FINE, getClass().getName() + ".debug1",
                        new Object[] {interfaces[i].getName()});

			if (interfaces[i].getName().equals("javax.ejb.EntityBean") &&
			    descriptor instanceof EjbEntityDescriptor) {
			    validBean = true;
			    result.addGoodDetails(smh.getLocalString
						  ("tests.componentNameConstructor",
						   "For [ {0} ]",
						   new Object[] {compName.toString()}));
			    result.passed(smh.getLocalString
					  (getClass().getName() + ".passed",
					   "[ {0} ] properly implements the EntityBean interface.",
					   new Object[] {descriptor.getEjbClassName()}));
			    break;
			}
		    }
		} while ((((c=c.getSuperclass()) != null) && (!validBean)));
          
		if (!validBean){
		    result.addErrorDetails(smh.getLocalString
					   ("tests.componentNameConstructor",
					    "For [ {0} ]",
					    new Object[] {compName.toString()}));
		    result.failed(smh.getLocalString
				  (getClass().getName() + ".failed",
				   "Error: [ {0} ] does not properly implement the EntityBean interface.  All entity beans must implement the EntityBean interface.  [ {1} ] is not a valid bean.",
				   new Object[] {descriptor.getEjbClassName(),descriptor.getEjbClassName()}));
		}
	    } catch (ClassNotFoundException e) {
		Verifier.debug(e);
		result.addErrorDetails(smh.getLocalString
				       ("tests.componentNameConstructor",
					"For [ {0} ]",
					new Object[] {compName.toString()}));
		result.failed(smh.getLocalString
			      (getClass().getName() + ".failedException",
			       "Error: [ {0} ] class not found.",
			       new Object[] {descriptor.getEjbClassName()}));
	    }  
	    return result;
 
	} else {
	    result.addNaDetails(smh.getLocalString
				("tests.componentNameConstructor",
				 "For [ {0} ]",
				 new Object[] {compName.toString()}));
	    result.notApplicable(smh.getLocalString
				 (getClass().getName() + ".notApplicable",
				  "[ {0} ] expected {1} bean, but called with {2} bean.",
				  new Object[] {getClass(),"Entity","Session"}));
	    return result;
	}