FileDocCategorySizeDatePackage
StatelessCreateNoArgs.javaAPI DocGlassfish v2 API6455Fri May 04 22:34:08 BST 2007com.sun.enterprise.tools.verifier.tests.ejb.session.stateless

StatelessCreateNoArgs

public class StatelessCreateNoArgs extends com.sun.enterprise.tools.verifier.tests.ejb.EjbTest implements com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck
Stateless session are only allowed to have create methods with no arguments.

Fields Summary
Result
result
ComponentNameConstructor
compName
Constructors Summary
Methods Summary
public Resultcheck(com.sun.enterprise.deployment.EjbDescriptor descriptor)
Stateless session are only allowed to have create methods with no arguments.

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


                                           
        

        result = getInitializedResult();
        compName = getVerifierContext().getComponentNameConstructor();

        if (descriptor instanceof EjbSessionDescriptor) {
            String stateType = ((EjbSessionDescriptor)descriptor).getSessionType();
            if (EjbSessionDescriptor.STATELESS.equals(stateType)) {
                // RULE: Stateless session are only allowed to have create
                //       methods with no arguments.
                if(descriptor.getHomeClassName() != null && !"".equals(descriptor.getHomeClassName()))
                    commonToBothInterfaces(descriptor.getHomeClassName(),(EjbSessionDescriptor)descriptor);
                if(descriptor.getLocalHomeClassName() != null && !"".equals(descriptor.getLocalHomeClassName()))
                    commonToBothInterfaces(descriptor.getLocalHomeClassName(),(EjbSessionDescriptor)descriptor);
            }
        }
        if (result.getStatus()!=Result.FAILED) {
            addGoodDetails(result, compName);
            result.passed(smh.getLocalString
                    (getClass().getName() + ".passed",
                            "The bean's Home Interface properly defines one create Method with no args"));
        }
        return result;
    
private voidcommonToBothInterfaces(java.lang.String home, com.sun.enterprise.deployment.EjbSessionDescriptor descriptor)
This method is responsible for the logic of the test. It is called for both local and remote interfaces.

param
descriptor the Enterprise Java Bean deployment descriptor
param
home for the Home interface of the Ejb.

        try {

            Class c = Class.forName(home, false, getVerifierContext().getClassLoader());
            Method m = null;
            for(Method methods : c.getDeclaredMethods()) {
                if (methods.getName().equals("create")) {
                    m = methods;
                    break;
                }
            }
            //check if this method m does not have any paramenter
            if (m != null) {
                Class cc[] = m.getParameterTypes();
                if (cc.length > 0) {
                    addErrorDetails(result, compName);
                    result.failed(smh.getLocalString
                            (getClass().getName() + ".failed",
                            "Error: The create method has one or more parameters \n" +
                            "within bean [ {0} ].  Stateless session are only allowed \n" +
                            "to have create methods with no arguments.",
                             new Object[] {home}));
                }
            } else {
                // set status to FAILED, 'cause there is not even
                // a create method to begin with, regardless of its parameters
                addErrorDetails(result, compName);
                result.failed(smh.getLocalString
                        (getClass().getName() + ".failed1",
                                "Error: No Create method exists within bean [ {0} ]",
                                new Object[] {home}));
            }
        } catch (ClassNotFoundException e) {
            Verifier.debug(e);
            addErrorDetails(result, compName);
            result.failed(smh.getLocalString
                    (getClass().getName() + ".failedException",
                            "Error: Class [ {0} ] not found within bean [ {1} ]",
                            new Object[] {home, descriptor.getName()}));
        }