FileDocCategorySizeDatePackage
JarFileContainsProperEJBClasses.javaAPI DocGlassfish v2 API6528Fri May 04 22:33:32 BST 2007com.sun.enterprise.tools.verifier.tests.ejb

JarFileContainsProperEJBClasses

public class JarFileContainsProperEJBClasses extends com.sun.enterprise.tools.verifier.tests.ejb.EjbTest implements EjbCheck
ejb-jar file must contain the java class file of the enterprise bean implementation class, and any of the classes that it depends on.

Fields Summary
Constructors Summary
Methods Summary
public Resultcheck(EjbDescriptor descriptor)
ejb-jar file must contain the java class file of the enterprise bean implementation class, and any of the classes that it depends on.

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


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

	try {
	    Context context = getVerifierContext();
        Class c = Class.forName(descriptor.getEjbClassName(), false,
                             getVerifierContext().getClassLoader());
            // if we are dealing with a CMP2 entity bean, the class is abstract..
            if (descriptor instanceof EjbEntityDescriptor) {
	        String persistentType =
		    ((EjbEntityDescriptor)descriptor).getPersistenceType();
	        if (EjbEntityDescriptor.CONTAINER_PERSISTENCE.equals(persistentType)) {
                    if (EjbCMPEntityDescriptor.CMP_1_1!=((EjbCMPEntityDescriptor) descriptor).getCMPVersion()) {
			result.addGoodDetails(smh.getLocalString
					      ("tests.componentNameConstructor",
					       "For [ {0} ]",
					       new Object[] {compName.toString()}));

		        result.passed(smh.getLocalString
				      (getClass().getName() + ".passed",
				       "Bean class [ {0} ] exists and it's supporting classes exist.",
				       new Object[] {descriptor.getEjbClassName()}));
        	        return result;
                    }
                }
            }

            try {
		c.newInstance();
		result.addGoodDetails(smh.getLocalString
				      ("tests.componentNameConstructor",
				       "For [ {0} ]",
				       new Object[] {compName.toString()}));

		result.passed(smh.getLocalString
			      (getClass().getName() + ".passed",
			       "Bean class [ {0} ] exists and it's supporting classes exist.",
			       new Object[] {descriptor.getEjbClassName()}));
	    } catch (InstantiationException e) {
		Verifier.debug(e);
		result.addErrorDetails(smh.getLocalString
				       ("tests.componentNameConstructor",
					"For [ {0} ]",
					new Object[] {compName.toString()}));

		result.failed(smh.getLocalString
			      (getClass().getName() + ".failedException",
			       "Error: Could not instantiate [ {0} ] within bean [ {1} ]",
			       new Object[] {descriptor.getEjbClassName(),descriptor.getName()}));
	    } catch (IllegalAccessException e) {
		Verifier.debug(e);
		result.addErrorDetails(smh.getLocalString
				       ("tests.componentNameConstructor",
					"For [ {0} ]",
					new Object[] {compName.toString()}));

		result.failed(smh.getLocalString
			      (getClass().getName() + ".failedException1",
			       "Error: Illegal Access while trying to instantiate [ {0} ] within bean [ {1} ]",
			       new Object[] {descriptor.getEjbClassName(),descriptor.getName()}));
	    }
	} catch (ClassNotFoundException e) {
	    Verifier.debug(e);
	    result.addErrorDetails(smh.getLocalString
				   ("tests.componentNameConstructor",
				    "For [ {0} ]",
				    new Object[] {compName.toString()}));
	    
	    result.failed(smh.getLocalString
			  (getClass().getName() + ".failedException2",
			   "Error: Can't find class [ {0} ] within bean [ {1} ]",
			   new Object[] {descriptor.getEjbClassName(),descriptor.getName()}));
        } catch (Throwable t) {
	    Verifier.debug(t);
	    result.addNaDetails(smh.getLocalString
				("tests.componentNameConstructor",
				 "For [ {0} ]",
				 new Object[] {compName.toString()}));
	    
            result.notApplicable(smh.getLocalString
				 (getClass().getName() + ".notApplicable",
				  "Not Applicable: [ {0} ] class encountered [ {1} ]. Cannot create instance of class [ {2} ] becuase [ {3} ] is not accessible within [ {4} ].",
				  new Object[] {(descriptor).getEjbClassName(),t.toString(), descriptor.getEjbClassName(), t.getMessage(), descriptor.getEjbBundleDescriptor().getModuleDescriptor().getArchiveUri()}));
	}
	return result;