FileDocCategorySizeDatePackage
InteractionSpecJavaBeansCompliance.javaAPI DocGlassfish v2 API7504Fri May 04 22:33:30 BST 2007com.sun.enterprise.tools.verifier.tests.connector.cci

InteractionSpecJavaBeansCompliance

public class InteractionSpecJavaBeansCompliance extends ConnectionFactoryTest implements com.sun.enterprise.tools.verifier.tests.connector.ConnectorCheck
author
Jerome Dochez
version

Fields Summary
Constructors Summary
Methods Summary
public Resultcheck(com.sun.enterprise.deployment.ConnectorDescriptor descriptor)

all connector tests should implement this method. it run an individual test against the resource adapter deployment descriptor.

paramm
descriptor deployment descriptor for the rar file
return
result object containing the result of the individual test performed

        
        boolean oneFailed=false;
        Result result = getInitializedResult();
	ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
        
        if (isCCIImplemented(descriptor, result)) {
            //File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());
//            File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
            Class mcf = findImplementorOf(descriptor, "javax.resource.cci.InteractionSpec");
            if (mcf != null) {
                try {
                    BeanInfo bi = Introspector.getBeanInfo(mcf, Object.class);
                    PropertyDescriptor[] properties = bi.getPropertyDescriptors();
                    for (int i=0; i<properties.length;i++) {
                        // each property should have a getter/setter
                        if (properties[i].getReadMethod()==null || 
                            properties[i].getWriteMethod()==null) {
                                // this is an error.
                                oneFailed=true;
                                result.addErrorDetails(smh.getLocalString
						       ("tests.componentNameConstructor",
							"For [ {0} ]",
							new Object[] {compName.toString()}));
				result.failed(smh.getLocalString
					      (getClass().getName() + ".failed",
					       "Error: The javax.resource.cci.InteractionSpec implementation [ {0} ] of the property [ {1} ] is not JavaBeans compliant",
					       new Object[] {mcf.getName(), properties[i].getName()} ));                                                                                
			}
                        if (!properties[i].isConstrained() && !properties[i].isBound()) {
                            oneFailed=true;
                            result.addErrorDetails(smh.getLocalString
						   ("tests.componentNameConstructor",
						    "For [ {0} ]",
						    new Object[] {compName.toString()}));
			    result.failed(smh.getLocalString
					  (getClass().getName() + ".failed2",
					   "Error: The property [ {0} ] of the javax.resource.cci.InteractionSpec implementation [ {1} ] is not bound or constrained",
					   new Object[] {properties[i].getName(), mcf.getName()} ));                                                                                
                        }
                    }
                } catch (IntrospectionException ie) {
		    result.addNaDetails(smh.getLocalString
					  ("tests.componentNameConstructor",
					   "For [ {0} ]",
					   new Object[] {compName.toString()}));
                    result.notApplicable(smh.getLocalString
    	                (getClass().getName() + ".failed",
                        "Error: The javax.resource.cci.InteractionSpec implementation [ {0} ] is not JavaBeans compliant",
                        new Object[] {mcf.getName()} ));                                                
                    return result;
                }
                // now iterates over the properties and look for descrepencies
            } else {
		result.addNaDetails(smh.getLocalString
					  ("tests.componentNameConstructor",
					   "For [ {0} ]",
					   new Object[] {compName.toString()}));
                result.notApplicable(smh.getLocalString
    	            (getClass().getName() + ".nonexist",
                    "Error: While the CCI interfaces are implemented, the javax.resource.cci.InteractionSpec is not"));         
                return result;
            }
                
        } else {
	    result.addNaDetails(smh.getLocalString
					  ("tests.componentNameConstructor",
					   "For [ {0} ]",
					   new Object[] {compName.toString()}));
	    result.notApplicable(smh.getLocalString
    	        ("com.sun.enterprise.tools.verifier.tests.connector.cci.InteractionExistence.notapp",
                 "NotApplicable : The CCI interfaces do not seem to be implemented by this resource adapter"));                    
            return result;            
        }                
        if (!oneFailed) {
            result.addGoodDetails(smh.getLocalString
					  ("tests.componentNameConstructor",
					   "For [ {0} ]",
					   new Object[] {compName.toString()}));	
		result.passed(smh.getLocalString
                (getClass().getName() + ".passed",
                "The javax.resource.cci.InteractionSpec implementation is JavaBeans compliant"));                     
        }
        return result;