Search in sources :

Example 71 with Result

use of com.sun.enterprise.tools.verifier.Result in project Payara by payara.

the class InterfaceMethodTest method check.

/**
 * Run the verifier test against the local or remote interface, get all methods
 * and delegate actual testing for individual methods to the
 * runIndividualMethodTest
 *
 * @param descriptor the Enterprise Java Bean deployment descriptor
 *
 * @return <code>Result</code> the results for this assertion
 */
public Result check(EjbDescriptor descriptor) {
    Result result = getInitializedResult();
    ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
    if (!(descriptor instanceof EjbSessionDescriptor) && !(descriptor instanceof EjbEntityDescriptor)) {
        addNaDetails(result, compName);
        result.notApplicable(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.homeintf.HomeMethodTest.notApplicable1", "Test apply only to session or entity beans."));
        return result;
    }
    if (getInterfaceName(descriptor) == null || "".equals(getInterfaceName(descriptor))) {
        addNaDetails(result, compName);
        result.notApplicable(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.intf.InterfaceTest.notApplicable", "Not Applicable because, EJB [ {0} ] does not have {1} Interface.", new Object[] { descriptor.getEjbClassName(), getInterfaceType() }));
        return result;
    }
    try {
        Arrays.sort(EJBObjectMethods);
        // retrieve the local/remote interface methods
        ClassLoader jcl = getVerifierContext().getClassLoader();
        Class interfaceClass = Class.forName(getClassName(descriptor), false, jcl);
        if (studyInterface(descriptor, interfaceClass, result)) {
            result.setStatus(Result.PASSED);
        } else {
            result.setStatus(Result.FAILED);
        }
    } catch (ClassNotFoundException e) {
        Verifier.debug(e);
        addErrorDetails(result, compName);
        result.failed(smh.getLocalString(getClass().getName() + ".failedException", "Error: " + getInterfaceType() + "interface [ {0} ] does not " + "exist or is not loadable within bean [ {1} ]", new Object[] { getClassName(descriptor), descriptor.getName() }));
    }
    return result;
}
Also used : EjbEntityDescriptor(org.glassfish.ejb.deployment.descriptor.EjbEntityDescriptor) EjbSessionDescriptor(com.sun.enterprise.deployment.EjbSessionDescriptor) ComponentNameConstructor(com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor) Result(com.sun.enterprise.tools.verifier.Result)

Example 72 with Result

use of com.sun.enterprise.tools.verifier.Result in project Payara by payara.

the class RemoteInterfaceSuperInterface method check.

/**
 * Remote interface/business methods test.
 * Verify the following:
 *
 *   The remote interface is allowed to have superinterfaces. Use of interface
 *   inheritance is subject to the RMI-IIOP rules for the definition of remote
 *   interfaces.
 *
 * @param descriptor the Enterprise Java Bean deployment descriptor
 *
 * @return <code>Result</code> the results for this assertion
 */
public Result check(EjbDescriptor descriptor) {
    Result result = getInitializedResult();
    ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
    if (!(descriptor instanceof EjbSessionDescriptor) && !(descriptor instanceof EjbEntityDescriptor)) {
        addNaDetails(result, compName);
        result.notApplicable(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.homeintf.HomeMethodTest.notApplicable1", "Test apply only to session or entity beans."));
        return result;
    }
    if (descriptor.getRemoteClassName() == null || "".equals(descriptor.getRemoteClassName())) {
        addNaDetails(result, compName);
        result.notApplicable(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.intf.InterfaceTest.notApplicable", "Not Applicable because, EJB [ {0} ] does not have {1} Interface.", new Object[] { descriptor.getEjbClassName(), "Remote" }));
        return result;
    }
    boolean oneFailed = false;
    try {
        ClassLoader jcl = getVerifierContext().getClassLoader();
        Class c = Class.forName(descriptor.getRemoteClassName(), false, jcl);
        Class remote = c;
        boolean validRemoteInterface = false;
        boolean ok = false;
        // walk up the class tree
        do {
            Class[] interfaces = c.getInterfaces();
            if (interfaces.length == 0) {
                ok = true;
            }
            for (Class intf : interfaces) {
                logger.log(Level.FINE, getClass().getName() + ".debug1", new Object[] { intf.getName() });
                // requirement is met if one superinterface complies.
                if (!ok) {
                    ok = RmiIIOPUtils.isValidRmiIIOPInterface(intf);
                }
                // check the methods now.
                if (RmiIIOPUtils.isValidRmiIIOPInterfaceMethods(intf)) {
                    // this interface is valid, continue
                    if (intf.getName().equals("javax.ejb.EJBObject")) {
                        validRemoteInterface = true;
                        break;
                    }
                } else {
                    oneFailed = true;
                    addErrorDetails(result, compName);
                    result.addErrorDetails(smh.getLocalString(getClass().getName() + ".failed", "Error: [ {0} ] does not properly conform to " + "rules of RMI-IIOP for superinterfaces.  All " + "enterprise beans remote interfaces are allowed " + "to have superinterfaces that conform to the " + "rules of RMI-IIOP for superinterfaces .  [ {1} ]" + " is not a valid remote interface.", new Object[] { intf.getName(), descriptor.getRemoteClassName() }));
                }
            }
        } while ((((c = c.getSuperclass()) != null) && (!validRemoteInterface)));
        if (!ok) {
            // check that one superinterface met rmiiiop requirement
            oneFailed = true;
            addErrorDetails(result, compName);
            result.addErrorDetails(smh.getLocalString(getClass().getName() + ".failed", "Error: [ {0} ] does not properly conform to rules of " + "RMI-IIOP for superinterfaces.  All enterprise beans " + "remote interfaces are allowed to have superinterfaces " + "that conform to the rules of RMI-IIOP for superinterfaces. " + " [ {1} ] is not a valid remote interface.", new Object[] { remote.getName(), descriptor.getRemoteClassName() }));
        }
        if (validRemoteInterface) {
            addGoodDetails(result, compName);
            result.passed(smh.getLocalString(getClass().getName() + ".passed", "[ {0} ] properly conforms to rules of RMI-IIOP for superinterfaces.", new Object[] { descriptor.getRemoteClassName() }));
        }
    } catch (ClassNotFoundException e) {
        Verifier.debug(e);
        addGoodDetails(result, compName);
        result.failed(smh.getLocalString(getClass().getName() + ".failedException", "Error: Remote interface [ {0} ] does not exist or is not " + "loadable within bean [ {1} ]", new Object[] { descriptor.getRemoteClassName(), descriptor.getName() }));
        oneFailed = true;
    }
    if (oneFailed) {
        result.setStatus(Result.FAILED);
    } else {
        result.setStatus(Result.PASSED);
    }
    return result;
}
Also used : EjbEntityDescriptor(org.glassfish.ejb.deployment.descriptor.EjbEntityDescriptor) EjbSessionDescriptor(com.sun.enterprise.deployment.EjbSessionDescriptor) ComponentNameConstructor(com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor) Result(com.sun.enterprise.tools.verifier.Result)

Example 73 with Result

use of com.sun.enterprise.tools.verifier.Result in project Payara by payara.

the class EjbCreateModifiers method check.

/**
 * Run a verifier test against an individual declared message
 * drive bean component
 *
 * @param descriptor the Enterprise Java Bean deployment descriptor
 *
 * @return <code>Result</code> the results for this assertion
 */
public Result check(EjbMessageBeanDescriptor descriptor) {
    Result result = getInitializedResult();
    ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
    Class mbc = loadMessageBeanClass(descriptor, result);
    if (mbc != null) {
        Method m = getMethod(mbc, getMethodName(), null);
        if (m != null) {
            int modifiers = m.getModifiers();
            if (Modifier.isPublic(modifiers) && !Modifier.isStatic(modifiers) && !Modifier.isFinal(modifiers)) {
                result.addGoodDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                result.passed(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.messagebean.EjbCreateModifiers.passed", "Message-Drive bean [ {0} ] provide an {1} implementation declared public and not static or final", new Object[] { (descriptor).getEjbClassName(), getMethodName() }));
            } else {
                result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                result.failed(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.messagebean.EjbCreateModifiers.failed", "Error: Message-Drive bean [ {0} ] {1} implementation is either not public or is static or final", new Object[] { (descriptor).getEjbClassName(), getMethodName() }));
            }
        } else {
            result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
            result.failed(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.messagebean.EjbCreateExists.failed", "Error: Message-Drive bean [ {0} ] does not implement an {1} with no arguments", new Object[] { (descriptor).getEjbClassName(), getMethodName() }));
        }
    }
    return result;
}
Also used : Method(java.lang.reflect.Method) ComponentNameConstructor(com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor) Result(com.sun.enterprise.tools.verifier.Result)

Example 74 with Result

use of com.sun.enterprise.tools.verifier.Result in project Payara by payara.

the class EjbCreateExists method check.

/**
 * Run a verifier test against an individual declared message
 * drive bean component
 *
 * @param descriptor the Enterprise Java Bean deployment descriptor
 *
 * @return <code>Result</code> the results for this assertion
 */
public Result check(EjbMessageBeanDescriptor descriptor) {
    Result result = getInitializedResult();
    ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
    Class mbc = loadMessageBeanClass(descriptor, result);
    if (mbc != null) {
        Method m = getMethod(mbc, getMethodName(), null);
        if (m != null) {
            result.addGoodDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
            result.passed(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.messagebean.EjbCreateExists.passed", "Message-Drive bean [ {0} ] provide an {1} implementation with no argument", new Object[] { (descriptor).getEjbClassName(), getMethodName() }));
        } else {
            result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
            result.failed(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.messagebean.EjbCreateExists.failed", "Error: Message-Drive bean [ {0} ] does not implement an {1} with no arguments", new Object[] { (descriptor).getEjbClassName(), getMethodName() }));
        }
    }
    return result;
}
Also used : Method(java.lang.reflect.Method) ComponentNameConstructor(com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor) Result(com.sun.enterprise.tools.verifier.Result)

Example 75 with Result

use of com.sun.enterprise.tools.verifier.Result in project Payara by payara.

the class EjbCreateReturnType method check.

/**
 * Run a verifier test against an individual declared message
 * drive bean component
 *
 * @param descriptor the Enterprise Java Bean deployment descriptor
 *
 * @return <code>Result</code> the results for this assertion
 */
public Result check(EjbMessageBeanDescriptor descriptor) {
    Result result = getInitializedResult();
    ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
    Class mbc = loadMessageBeanClass(descriptor, result);
    if (mbc != null) {
        Method m = getMethod(mbc, getMethodName(), null);
        if (m != null) {
            String returnType = m.getReturnType().getName();
            if ("void".equalsIgnoreCase(returnType)) {
                result.addGoodDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                result.passed(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.messagebean.EjbCreateReturnType.passed", "Message-Drive bean [ {0} ] {1} implementation has a void return type", new Object[] { (descriptor).getEjbClassName(), m.getName() }));
            } else {
                result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
                result.failed(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.messagebean.EjbCreateReturnType.failed", "Error: Message-Drive bean [ {0} ] {1} return type is [ {1} ]", new Object[] { (descriptor).getEjbClassName(), returnType }));
            }
        } else {
            result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
            result.failed(smh.getLocalString("com.sun.enterprise.tools.verifier.tests.ejb.messagebean.EjbCreateExists.failed", "Error: Message-Drive bean [ {0} ] does not implement an {1} with no arguments", new Object[] { (descriptor).getEjbClassName(), getMethodName() }));
        }
    }
    return result;
}
Also used : Method(java.lang.reflect.Method) ComponentNameConstructor(com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor) Result(com.sun.enterprise.tools.verifier.Result)

Aggregations

Result (com.sun.enterprise.tools.verifier.Result)288 ComponentNameConstructor (com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor)212 EjbEntityDescriptor (org.glassfish.ejb.deployment.descriptor.EjbEntityDescriptor)88 VerifierTestContext (com.sun.enterprise.tools.verifier.VerifierTestContext)66 Method (java.lang.reflect.Method)66 Iterator (java.util.Iterator)50 EjbSessionDescriptor (org.glassfish.ejb.deployment.descriptor.EjbSessionDescriptor)28 Set (java.util.Set)26 EjbCMPEntityDescriptor (org.glassfish.ejb.deployment.descriptor.EjbCMPEntityDescriptor)17 Enumeration (java.util.Enumeration)15 EjbSessionDescriptor (com.sun.enterprise.deployment.EjbSessionDescriptor)14 EjbDescriptor (org.glassfish.ejb.deployment.descriptor.EjbDescriptor)14 Field (java.lang.reflect.Field)13 EnvironmentProperty (com.sun.enterprise.deployment.EnvironmentProperty)10 MethodDescriptor (com.sun.enterprise.deployment.MethodDescriptor)9 EjbBundleDescriptorImpl (org.glassfish.ejb.deployment.descriptor.EjbBundleDescriptorImpl)9 FieldDescriptor (org.glassfish.ejb.deployment.descriptor.FieldDescriptor)9 TagLibDescriptor (com.sun.enterprise.tools.verifier.TagLibDescriptor)7 ConnectionDefDescriptor (com.sun.enterprise.deployment.ConnectionDefDescriptor)6 EjbReferenceDescriptor (com.sun.enterprise.deployment.EjbReferenceDescriptor)6