use of com.sun.enterprise.tools.verifier.Result in project Payara by payara.
the class PortComponentLinkValidCheck method check.
/**
* @param descriptor the WebServices descriptor
* @return <code>Result</code> the results for this assertion
*/
public Result check(ServiceReferenceDescriptor descriptor) {
Result result = getInitializedResult();
compName = getVerifierContext().getComponentNameConstructor();
boolean pass = true;
Collection ports = descriptor.getPortsInfo();
for (Iterator it = ports.iterator(); it.hasNext(); ) {
ServiceRefPortInfo ref = (ServiceRefPortInfo) it.next();
// check if this test is applicable first
if (!ref.hasPortComponentLinkName()) {
// result.notapplicable, since port-comp-link does not exist in port-comp-ref
result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.notApplicable(smh.getLocalString(getClass().getName() + ".notapp", "Not applicable since port-comp-link does not exist in port-comp-ref [{0}].", new Object[] { ref.getName() }));
} else if (ref.getPortComponentLink() != null) {
pass = true;
} else if (!isLinkValid(ref)) {
// result.fail ref.getName(), ref.getPortComponentLinkName()
result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.failed(smh.getLocalString(getClass().getName() + ".failed", "Invalid port-component-link [{0}] in WebService client [{1}].", new Object[] { ref.getPortComponentLinkName(), compName.toString() }));
pass = false;
}
}
if (pass) {
// result.pass
result.addGoodDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.passed(smh.getLocalString(getClass().getName() + ".passed", "All port-component-link(s) in this service reference are valid."));
}
return result;
}
use of com.sun.enterprise.tools.verifier.Result in project Payara by payara.
the class CMPFieldExistence method check.
/**
* Any CMP entity bean should have at least one cmp field defined in the DDs
*
* @param descriptor the Enterprise Java Bean deployment descriptor
*
* @return <code>Result</code> the results for this assertion
*/
public Result check(EjbDescriptor descriptor) {
Result result = getInitializedResult();
if (descriptor instanceof EjbEntityDescriptor) {
String persistentType = ((EjbEntityDescriptor) descriptor).getPersistenceType();
if (EjbEntityDescriptor.CONTAINER_PERSISTENCE.equals(persistentType)) {
EjbCMPEntityDescriptor cmpDesc = (EjbCMPEntityDescriptor) descriptor;
PersistenceDescriptor persDesc = cmpDesc.getPersistenceDescriptor();
if (persDesc.getCMPFields().size() == 0) {
result.failed(smh.getLocalString(getClass().getName() + "failed", "For CMP entity bean [ {0} ], no cmp field are defined", new Object[] { descriptor.getName() }));
} else {
result.passed(smh.getLocalString(getClass().getName() + ".passed", "For CMP entity bean [ {0} ], some cmp fields are defined", new Object[] { descriptor.getName() }));
}
return result;
}
}
// everything else is NA
result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable", "The EJB [ {0} ] is not an CMP entity bean", new Object[] { descriptor.getName() }));
return result;
}
use of com.sun.enterprise.tools.verifier.Result in project Payara by payara.
the class EjbNameIsValidJavaIdentifier method check.
/**
* For an entity-bean the ejb-name must be a valid Java identifier.
* See ejb specification 2.1 section 10.3.13
* @param descriptor the Enterprise Java Bean deployment descriptor
* @return <code>Result</code> the results for this assertion
*/
public Result check(EjbDescriptor descriptor) {
Result result = getInitializedResult();
String ejbName = descriptor.getName();
ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
if (descriptor instanceof EjbEntityDescriptor) {
if (((EjbEntityDescriptor) descriptor).getPersistenceType().equals(EjbEntityDescriptor.CONTAINER_PERSISTENCE)) {
boolean isJavaIdentifier = true;
boolean startChar = Character.isJavaIdentifierStart(ejbName.charAt(0));
if (startChar) {
for (int i = 1; i < ejbName.length(); i++) if (!Character.isJavaIdentifierPart(ejbName.charAt(i))) {
isJavaIdentifier = false;
break;
}
} else {
isJavaIdentifier = false;
}
// valid JavaIdentifier
if (isJavaIdentifier) {
result.addGoodDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.passed(smh.getLocalString(getClass().getName() + ".passed", "ejb-name [ {0} ] within bean [ {1} ] is a valid java identifier", new Object[] { ejbName, descriptor.getName() }));
return result;
} else {
result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.failed(smh.getLocalString(getClass().getName() + ".failed", "ejb-name [ {0} ] within bean [ {1} ] is not a valid java identifier", new Object[] { ejbName, descriptor.getName() }));
return result;
}
}
}
result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable", "[ {0} ] expected {1} bean, with Container Managed Persistence.", new Object[] { getClass(), "Entity" }));
return result;
}
use of com.sun.enterprise.tools.verifier.Result in project Payara by payara.
the class EntityBeanExtendsSerializableClass method check.
/**
* The interfaces/classes that the entity bean implements must be
* serializable directly or indirectly.
* Ejb 2.1 says that "The bean class that uses the timer service must
* implement the javax.ejb.TimedObject interface."
* @param descriptor the Enterprise Java Bean deployment descriptor
* @return <code>Result</code> the results for this assertion
*/
public Result check(EjbDescriptor descriptor) {
Result result = getInitializedResult();
ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
if (descriptor instanceof EjbEntityDescriptor) {
try {
Class c = Class.forName(descriptor.getEjbClassName(), false, getVerifierContext().getClassLoader());
boolean validBean = true;
Class superClass = c.getSuperclass();
if (validBean == true) {
// walk up the class tree
if (!(superClass.getName()).equals("java.lang.Object")) {
if (!isValidSerializableType(superClass) && !isTimedObject(superClass)) {
validBean = false;
result.addWarningDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.addWarningDetails(smh.getLocalString(getClass().getName() + ".failed1", "[ {0} ] extends class [ {1} ] which is not serializable. ", new Object[] { descriptor.getEjbClassName(), superClass.getName() }));
result.setStatus(Result.WARNING);
return result;
} else {
result.addGoodDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.addGoodDetails(smh.getLocalString(getClass().getName() + ".passed1", "Bean [ {0} ] extends class [ {1} ] which is serializable. ", new Object[] { descriptor.getEjbClassName(), superClass.getName() }));
do {
Class[] interfaces = c.getInterfaces();
for (int i = 0; i < interfaces.length; i++) {
logger.log(Level.FINE, getClass().getName() + ".debug1", new Object[] { interfaces[i].getName() });
if (!isValidSerializableType(interfaces[i]) && !isTimedObject(interfaces[i])) {
validBean = false;
result.addWarningDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.addWarningDetails(smh.getLocalString(getClass().getName() + ".failed", "[ {0} ] implements interface [ {1} ] which is not serializable. ", new Object[] { descriptor.getEjbClassName(), interfaces[i].getName() }));
result.setStatus(Result.WARNING);
break;
}
}
} while ((((c = c.getSuperclass()) != null) && (validBean != false)));
}
}
if (validBean == true) {
result.addGoodDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.passed(smh.getLocalString(getClass().getName() + ".passed", "Bean [ {0} ] implements interfaces which are all serializable. ", new Object[] { descriptor.getEjbClassName() }));
result.setStatus(Result.PASSED);
}
}
} catch (ClassNotFoundException e) {
Verifier.debug(e);
result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.failed(smh.getLocalString(getClass().getName() + ".failedException", "Error: [ {0} ] class not found.", new Object[] { descriptor.getEjbClassName() }));
}
return result;
} else {
result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable", "[ {0} ] expected {1} bean, but called with {2} bean.", new Object[] { getClass(), "Entity", "Session" }));
return result;
}
}
use of com.sun.enterprise.tools.verifier.Result in project Payara by payara.
the class EntityBeanInterface method check.
/**
* Implements the EntityBeaan Interface test.
* All entity Beans must implement, directly or indirectly, the EntityBean
* interface.
*
* @param descriptor the Enterprise Java Bean deployment descriptor
*
* @return <code>Result</code> the results for this assertion
*/
public Result check(EjbDescriptor descriptor) {
Result result = getInitializedResult();
ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
if (descriptor instanceof EjbEntityDescriptor) {
try {
Class c = Class.forName(descriptor.getEjbClassName(), false, getVerifierContext().getClassLoader());
boolean validBean = false;
// walk up the class tree
do {
Class[] interfaces = c.getInterfaces();
for (int i = 0; i < interfaces.length; i++) {
logger.log(Level.FINE, getClass().getName() + ".debug1", new Object[] { interfaces[i].getName() });
if (interfaces[i].getName().equals("javax.ejb.EntityBean") && descriptor instanceof EjbEntityDescriptor) {
validBean = true;
result.addGoodDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.passed(smh.getLocalString(getClass().getName() + ".passed", "[ {0} ] properly implements the EntityBean interface.", new Object[] { descriptor.getEjbClassName() }));
break;
}
}
} while ((((c = c.getSuperclass()) != null) && (!validBean)));
if (!validBean) {
result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.failed(smh.getLocalString(getClass().getName() + ".failed", "Error: [ {0} ] does not properly implement the EntityBean interface. All entity beans must implement the EntityBean interface. [ {1} ] is not a valid bean.", new Object[] { descriptor.getEjbClassName(), descriptor.getEjbClassName() }));
}
} catch (ClassNotFoundException e) {
Verifier.debug(e);
result.addErrorDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.failed(smh.getLocalString(getClass().getName() + ".failedException", "Error: [ {0} ] class not found.", new Object[] { descriptor.getEjbClassName() }));
}
return result;
} else {
result.addNaDetails(smh.getLocalString("tests.componentNameConstructor", "For [ {0} ]", new Object[] { compName.toString() }));
result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable", "[ {0} ] expected {1} bean, but called with {2} bean.", new Object[] { getClass(), "Entity", "Session" }));
return result;
}
}
Aggregations