FileDocCategorySizeDatePackage
BusinessInterfaceException.javaAPI DocGlassfish v2 API5523Fri May 04 22:33:34 BST 2007com.sun.enterprise.tools.verifier.tests.ejb.ejb30

BusinessInterfaceException

public class BusinessInterfaceException extends com.sun.enterprise.tools.verifier.tests.ejb.EjbTest
The methods of the business interface may declare arbitrary application exceptions. However, the methods of the business interface should not throw the java.rmi.RemoteException, even if the interface is a remote business interface or the bean class is annotated WebService or the method as WebMethod. The methods of the business interface may only throw the java.rmi.RemoteException if the interface extends java.rmi.Remote.
author
Vikas Awasthi

Fields Summary
Constructors Summary
Methods Summary
public com.sun.enterprise.tools.verifier.Resultcheck(com.sun.enterprise.deployment.EjbDescriptor descriptor)

        Result result = getInitializedResult();
        ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
        
        Set<String> localAndRemoteClassNames = descriptor.getLocalBusinessClassNames();
        localAndRemoteClassNames.addAll(descriptor.getRemoteBusinessClassNames());
        
        for (String localOrRemoteClass : localAndRemoteClassNames) 
            checkForRemoteException(localOrRemoteClass,result,compName);

        if(result.getStatus() != Result.WARNING) {
            addGoodDetails(result, compName);
            result.passed(smh.getLocalString
                            (getClass().getName() + ".passed",
                            "Business interface(s) if any are valid."));
        }
        return result;
    
private voidcheckForRemoteException(java.lang.String className, com.sun.enterprise.tools.verifier.Result result, com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor compName)

        try {
            Class c = Class.forName(className, 
                                    false, 
                                    getVerifierContext().getClassLoader());
            // do not check further if the business interface extends java.rmi.Remote 
            if(java.rmi.Remote.class.isAssignableFrom(c))
                return;
            Method[] methods = c.getMethods();
            for (Method method : methods) {
                Class[] exceptions = method.getExceptionTypes();
                for (Class exception : exceptions) {
                    if(java.rmi.RemoteException.class.isAssignableFrom(exception)) {
                        result.getFaultLocation().setFaultyClassAndMethod(method);
                        addWarningDetails(result, compName);
                        result.warning(smh.getLocalString
                                        (getClass().getName() + ".warning",
                                        "java.rmi.RemoteException is thrown " +
                                        "in method [ {0} ] of business interface [ {1} ]",
                                        new Object[] {method.getName(), className}));
                    }
                }
            }
        } catch (ClassNotFoundException e) {
            Verifier.debug(e);
            addErrorDetails(result, compName);
            result.failed(smh.getLocalString
                            (getClass().getName() + ".failed1",
                            "[ {0} ] not found.",
                            new Object[] {className}));
        }