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

BusinessMethodRmiIIOPArgs

public class BusinessMethodRmiIIOPArgs extends com.sun.enterprise.tools.verifier.tests.ejb.EjbTest implements com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck
Enterprise Bean's business(...) methods argument RMI IIOP test. Each enterprise Bean class must define zero or more business(...) methods. The method signatures must follow these rules: The methods arguments must be legal types for RMI-IIOP.

Fields Summary
Result
result
ComponentNameConstructor
compName
Constructors Summary
Methods Summary
public Resultcheck(EjbDescriptor descriptor)
Enterprise Bean's business(...) methods argument RMI IIOP test. Each enterprise Bean class must define zero or more business(...) methods. The method signatures must follow these rules: The methods arguments must be legal types for RMI-IIOP.

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

                                                                      
        
        
        result = getInitializedResult();
        compName = getVerifierContext().getComponentNameConstructor();
        
        if ((descriptor instanceof EjbSessionDescriptor)  ||
                (descriptor instanceof EjbEntityDescriptor)) {
            if(descriptor.getRemoteClassName() != null && !"".equals(descriptor.getRemoteClassName())) 
                commonToBothInterfaces(descriptor.getRemoteClassName(),descriptor);
            
            Set<String> remoteInterfaces = descriptor.getRemoteBusinessClassNames();
            for (String remoteIntf : remoteInterfaces) 
                commonToBothInterfaces(remoteIntf, descriptor);
        } 
        if(result.getStatus() != Result.FAILED) {
            addGoodDetails(result, compName);
            result.passed(smh.getLocalString
                    (getClass().getName() + ".passed",
                    "Proper declaration of business method(s) found."));
        }
        return result;
    
private voidcommonToBothInterfaces(java.lang.String intf, EjbDescriptor descriptor)

        try {
            Class intfClass = Class.forName(intf, 
                                            false, 
                                            getVerifierContext().getClassLoader());
            
            for (Method remoteMethod : intfClass.getMethods()) {
                // we don't test the EJB methods
                if (remoteMethod.getDeclaringClass().getName().equals("javax.ejb.EJBObject")) 
                    continue;
                
                Class beanClass = Class.forName(descriptor.getEjbClassName(), 
                                                false, 
                                                getVerifierContext().getClassLoader());
                for (Method method : beanClass.getMethods()) {
                    
                    if (method.getName().equals(remoteMethod.getName()) && 
                            !RmiIIOPUtils.isValidRmiIIOPParameters(method.getParameterTypes())) {
                    // The methods arguments types must be legal types for RMI-IIOP.
                        addErrorDetails(result, compName);
                        result.failed(smh.getLocalString
                                (getClass().getName() + ".failed",
                                "Error: business method [ {0} ] was found, but " +
                                "business method has invalid parameter values. " +
                                "Business method parameter types must be valid " +
                                "types for RMI-IIOP.",
                                new Object[] {method.getName()}));
                    }
                }
            }
            
        } catch (ClassNotFoundException e) {
            Verifier.debug(e);
            addErrorDetails(result, compName);
            result.failed(smh.getLocalString
                    (getClass().getName() + ".failedException",
                    "Error: Remote interface [ {0} ] or bean class [ {1} ] does " +
                    "not exist or is not loadable within bean [ {2} ].",
                    new Object[] {descriptor.getRemoteClassName(),
                                  descriptor.getEjbClassName(),
                                  descriptor.getName()}));
        }