FileDocCategorySizeDatePackage
BusinessMethodRmiIIOPReturn.javaAPI DocGlassfish v2 API6679Fri May 04 22:33:34 BST 2007com.sun.enterprise.tools.verifier.tests.ejb.businessmethod

BusinessMethodRmiIIOPReturn

public class BusinessMethodRmiIIOPReturn 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 return value 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 return value 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.isValidRmiIIOPReturnType(method.getReturnType())) {
                        // The methods arguments types must be legal types for
                        // RMI-IIOP.  This means that their return values must
                        // be of valid 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 return type [ {1} ]. Business " +
                                "method return type must be a valid type for RMI-IIOP.",
                                new Object[] {method.getName(), method.getReturnType()}));
                    }
                }
            }
            
        } 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()}));
        }