Result result = getInitializedResult();
ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
boolean oneFailed = false;
try{
EjbMessageBeanDescriptor msgBeanDesc = (EjbMessageBeanDescriptor)descriptor;
String jmsDurableName = msgBeanDesc.getDurableSubscriptionName();
if(jmsDurableName != null){
if(jmsDurableName.length()==0)
{
addErrorDetails(result, compName);
result.failed(smh.getLocalString(getClass().getName()+".failed",
"FAILED [AS-EJB ejb] : jms-durable-subscription-name cannot be an empty string value"));
}else{
addGoodDetails(result, compName);
result.passed(smh.getLocalString(getClass().getName()+".passed",
"PASSED [AS-EJB ejb] : jms-durable-subscription-name is {0}", new Object[]{jmsDurableName}));
}
}else{
if(descriptor instanceof EjbMessageBeanDescriptor){
if(msgBeanDesc.hasTopicDest() && msgBeanDesc.hasDurableSubscription()){
boolean failed = false;
int count = getCountNodeSet("sun-ejb-jar/enterprise-beans/ejb[ejb-name=\""+descriptor.getName()+"\"]/mdb-resource-adapter");
if (count > 0) {
String value = getXPathValue("sun-ejb-jar/enterprise-beans/ejb[ejb-name=\""+descriptor.getName()+"\"]/mdb-resource-adapter/resource-adapter-mid");
if(value==null || value.length()==0){
failed = true;
}
}
else {
failed = true;
}
if (failed) {
addErrorDetails(result, compName);
result.failed(smh.getLocalString(getClass().getName()+".failed1",
"FAILED [AS-EJB ejb] : jms-durable-subscription-name should be defined for an MDB with"+
" destination type Topic and Durable subscription type"));
}
}else{
addNaDetails(result, compName);
result.notApplicable(smh.getLocalString(getClass().getName()+".notApplicable",
"NOT APPLICABLE [AS-EJB ejb] : jms-durable-subscription-name element is not defined"));
}
}else{
addNaDetails(result, compName);
result.notApplicable(smh.getLocalString(getClass().getName()+".notApplicable",
"NOT APPLICABLE [AS-EJB ejb] : jms-durable-subscription-name element is not defined"));
}
}
}catch(Exception ex){
addErrorDetails(result, compName);
result.addErrorDetails(smh.getLocalString
(getClass().getName() + ".notRun",
"NOT RUN [AS-EJB] : Could not create a descriptor object"));
}
return result;