all connector tests should implement this method. it run an individual
test against the resource adapter deployment descriptor.
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;