FileDocCategorySizeDatePackage
EjbClassImplementsComponentInterface.javaAPI DocGlassfish v2 API6457Fri May 04 22:34:06 BST 2007com.sun.enterprise.tools.verifier.tests.ejb.session

EjbClassImplementsComponentInterface

public class EjbClassImplementsComponentInterface extends com.sun.enterprise.tools.verifier.tests.ejb.EjbTest implements com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck
Optionally implements the enterprise Bean's remote interface test. The class may, but is not required to, implement the enterprise Bean's remote interface. It is recommended that the enterprise bean class not implement the remote interface to prevent inadvertent passing of this as a method argument or result. Note: Display warning to user in this instance.

Fields Summary
Result
result
ComponentNameConstructor
compName
Constructors Summary
Methods Summary
public Resultcheck(com.sun.enterprise.deployment.EjbDescriptor descriptor)
Optionally implements the enterprise Bean's remote interface test. The class may, but is not required to, implement the enterprise Bean's remote interface. It is recommended that the enterprise bean class not implement the remote interface to prevent inadvertent passing of this as a method argument or result. Note: Display warning to user in this instance.

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

                                                                                             
        
        result = getInitializedResult();
        compName = getVerifierContext().getComponentNameConstructor();
        if (descriptor instanceof EjbSessionDescriptor) {
            if(descriptor.getRemoteClassName() != null && !"".equals(descriptor.getRemoteClassName()))
                commonToBothInterfaces(descriptor.getRemoteClassName(),(EjbSessionDescriptor)descriptor);
            if(descriptor.getLocalClassName() != null && !"".equals(descriptor.getLocalClassName()))
                commonToBothInterfaces(descriptor.getLocalClassName(),(EjbSessionDescriptor)descriptor);
        }
        if(result.getStatus()!=Result.FAILED && result.getStatus()!=Result.WARNING) {
            addGoodDetails(result, compName);
            result.addGoodDetails(smh.getLocalString
                            (getClass().getName() + ".passed",
                            "Bean class does not implement the enterprise Bean's remote interface"));
        }
        return result;
    
private voidcommonToBothInterfaces(java.lang.String component, com.sun.enterprise.deployment.EjbSessionDescriptor descriptor)

        try {
            Class c = Class.forName(descriptor.getEjbClassName(), false, getVerifierContext().getClassLoader());
            Class rc = Class.forName(component, false, getVerifierContext().getClassLoader());
            // walk up the class tree
            do {
                for (Class interfaces : c.getInterfaces()) {
                    logger.log(Level.FINE, getClass().getName() + ".debug1",
                            new Object[] {interfaces.getName()});
                    if (interfaces.getName().equals(rc.getName())) {
                        // display warning to user
                        addWarningDetails(result, compName);
                        result.warning(smh.getLocalString
                                (getClass().getName() + ".warning",
                                 "Warning: [ {0} ] class implments the " +
                                "enterprise Bean's remote interface [ {1} ].  " +
                                "It is recommended that the enterprise bean class not" +
                                " implement the remote interface to prevent " +
                                "inadvertent passing of this as a method argument or result. ",
                                 new Object[] {descriptor.getEjbClassName(),rc.getName()}));
                        break;
                    }
                }
            } while ((c=c.getSuperclass()) != null);
        } catch (ClassNotFoundException e) {
            Verifier.debug(e);
            addErrorDetails(result, compName);
            result.failed(smh.getLocalString
                        (getClass().getName() + ".failedException",
                                "Error: [ {0} ] class not found.",
                                new Object[] {descriptor.getEjbClassName()}));
        }