CmpFieldspublic class CmpFields extends CmpFieldTest Check that the field type for all declated cmp fields of the entity bean
are of an acceptable type :
- Java Primitive Type
- Java Serializable class
- Reference to a bean's home or bean's remote interface |
Methods Summary |
---|
private boolean | isValidInterface(java.lang.Class fieldType, java.util.Set entities, java.lang.String interfaceType, com.sun.enterprise.tools.verifier.Result result)
try {
if (entities==null)
return false;
Iterator iterator = entities.iterator();
if(interfaceType.equals(MethodDescriptor.EJB_REMOTE)) {
while (iterator.hasNext()) {
EjbAbstractDescriptor entity = (EjbAbstractDescriptor) iterator.next();
if (fieldType.getName().equals(entity.getHomeClassName()) ||
fieldType.getName().equals(entity.getRemoteClassName()))
return true;
}
}
if(interfaceType.equals(MethodDescriptor.EJB_LOCAL)) {
while (iterator.hasNext()) {
EjbAbstractDescriptor entity = (EjbAbstractDescriptor) iterator.next();
if (fieldType.getName().equals(entity.getLocalHomeClassName()) ||
fieldType.getName().equals(entity.getLocalClassName()))
return true;
}
}
return false;
}catch(Throwable t) {
result.addErrorDetails(smh.getLocalString
(getClass().getName() + ".failed",
"Error occured in accessing remote/local interface",
new Object[] {}));
return false;
}
| protected boolean | runIndividualCmpFieldTest(Descriptor entity, Descriptor persistentField, java.lang.Class c, com.sun.enterprise.tools.verifier.Result result)run an individual verifier test of a declated cmp field of the class
ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
String cmpFieldName = persistentField.getName();
String getMethodName = "get" + Character.toUpperCase(cmpFieldName.charAt(0)) + cmpFieldName.substring(1);
Method getMethod = getMethod(c, getMethodName, null);
Class fieldType;
if (getMethod != null) {
boolean run = false;
// get the return type for the setMethod
fieldType = getMethod.getReturnType();
EjbBundleDescriptor bundle = ((EjbDescriptor) entity).getEjbBundleDescriptor();
if (!RmiIIOPUtils.isValidRmiIDLPrimitiveType(fieldType) &&
!EjbUtils.isValidSerializableType(fieldType)) {
// it must be a reference to a bean's home or local interface
if (!isValidInterface(fieldType, bundle.getEjbs(),MethodDescriptor.EJB_REMOTE, result)) {
result.addErrorDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.addErrorDetails(smh.getLocalString
(getClass().getName() + ".failed",
"Error : Invalid type assigned for container managed field [ {0} ] in bean [ {1} ]",
new Object[] {((Descriptor)persistentField).getName(),entity.getName()}));
return false;
}
if (!isValidInterface(fieldType, bundle.getEjbs(),MethodDescriptor.EJB_LOCAL, result)) {
result.addErrorDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.addErrorDetails(smh.getLocalString
(getClass().getName() + ".failed",
"Error : Invalid type assigned for container managed field [ {0} ] in bean [ {1} ]",
new Object[] {((Descriptor)persistentField).getName(),entity.getName()}));
return false;
}
}
result.addGoodDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.addGoodDetails(smh.getLocalString
(getClass().getName() + ".passed",
"Valid type assigned for container managed field [ {0} ] in bean [ {1} ]",
new Object[] {((Descriptor)persistentField).getName(),entity.getName()}));
run = true;
return run;
} else {
result.addErrorDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.addErrorDetails(smh.getLocalString
("com.sun.enterprise.tools.verifier.tests.ejb.entity.cmp2.CMPTest.isAccessorDeclared.failed2",
"Error : Cannot find accessor [ {0} ] method for [ {1} ] field ",
new Object[] {getMethodName , persistentField.getName()}));
}
return false;
|
|