1 package com.sun.enterprise.tools.verifier.tests.ejb.runtime; 2 3 25 26 import com.sun.enterprise.tools.verifier.tests.ejb.EjbTest; 27 import com.sun.enterprise.deployment.EjbDescriptor; 28 import com.sun.enterprise.tools.verifier.*; 29 import com.sun.enterprise.tools.verifier.tests.*; 30 31 import com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck; 32 33 import com.sun.enterprise.deployment.EjbMessageBeanDescriptor; 34 35 import com.sun.enterprise.deployment.runtime.IASEjbExtraDescriptors; 36 import com.sun.enterprise.deployment.runtime.MdbConnectionFactoryDescriptor; 37 import com.sun.enterprise.deployment.ResourcePrincipal; 38 39 50 public class ASEjbMDBConnFactory extends EjbTest implements EjbCheck { 51 52 public Result check(EjbDescriptor descriptor) 53 { 54 Result result = getInitializedResult(); 55 ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor(); 56 57 boolean oneFailed = false; 58 boolean oneWarn = false; 59 try{ 60 IASEjbExtraDescriptors iasEjbExtraDesc = descriptor.getIASEjbExtraDescriptors(); 61 MdbConnectionFactoryDescriptor mdbConnFacDesc = iasEjbExtraDesc.getMdbConnectionFactory(); 62 63 if(mdbConnFacDesc != null){ 64 String jndiName = mdbConnFacDesc.getJndiName(); 65 if(jndiName == null || jndiName.length()==0){ 66 oneFailed = true; 67 addErrorDetails(result, compName); 68 result.failed(smh.getLocalString(getClass().getName()+".failed", 69 "FAILED [AS-EJB mdb-connection-factory] : jndi-name cannot be an empty string")); 70 }else{ 71 if(jndiName.startsWith("jms/")){ 72 addGoodDetails(result, compName); 73 result.passed(smh.getLocalString(getClass().getName()+".passed", 74 "PASSED [AS-EJB mdb-connection-factory] : jndi-name is {0}",new Object []{jndiName})); 75 }else{ 76 oneWarn = true; 77 addWarningDetails(result, compName); 78 result.warning(smh.getLocalString(getClass().getName()+".warning", 79 "WARNING [AS-EJB mdb-connection-factory] : jndi-name {0} should start with jms/", 80 new Object []{jndiName})); 81 } 82 } 83 84 ResourcePrincipal defPrinci = mdbConnFacDesc.getDefaultResourcePrincipal(); 85 if(defPrinci != null){ 86 String name = defPrinci.getName(); 87 if(name == null || name.length()==0){ 88 oneFailed = true; 89 addErrorDetails(result, compName); 90 result.failed(smh.getLocalString(getClass().getName()+".failed1", 91 "FAILED [AS-EJB default-resource-principal] : name cannot be an empty string")); 92 }else{ 93 addGoodDetails(result, compName); 94 result.passed(smh.getLocalString(getClass().getName()+".passed1", 95 "PASSED [AS-EJB default-resource-principal] : name is {0}",new Object []{name})); 96 } 97 98 String password = defPrinci.getPassword(); 99 if(password == null || password.length()==0) 100 { 101 addWarningDetails(result, compName); 102 result.warning(smh.getLocalString(getClass().getName()+".warning2", 103 "WARNING [AS-EJB default-resource-principal] : password is an empty string")); 104 }else{ 105 addGoodDetails(result, compName); 106 result.passed(smh.getLocalString(getClass().getName()+".passed2", 107 "PASSED [AS-EJB default-resource-principal] : password is {0}",new Object []{password})); 108 } 109 }else{ 110 addNaDetails(result, compName); 111 result.notApplicable(smh.getLocalString(getClass().getName()+".notApplicable", 112 "NOT APPLICABLE [AS-EJB mdb-connection-factory] : default-resource-prncipal element is not defined")); 113 } 114 }else { 115 if(descriptor instanceof EjbMessageBeanDescriptor){ 116 boolean failed = false; 117 int count = getCountNodeSet("sun-ejb-jar/enterprise-beans/ejb[ejb-name=\""+descriptor.getName()+"\"]/mdb-resource-adapter"); 118 if (count > 0) { 119 String value = getXPathValue("sun-ejb-jar/enterprise-beans/ejb[ejb-name=\""+descriptor.getName()+"\"]/mdb-resource-adapter/resource-adapter-mid"); 120 if(value==null || value.length()==0){ 121 failed = true; 122 } 123 } 124 else { 125 failed = true; 126 } 127 if (failed) { 128 EjbMessageBeanDescriptor mdbDesc = (EjbMessageBeanDescriptor)descriptor; 129 if(mdbDesc.hasTopicDest() && mdbDesc.hasDurableSubscription()){ 130 oneFailed = true; 131 addErrorDetails(result, compName); 132 result.failed(smh.getLocalString(getClass().getName()+".failed2", 133 "FAILED [AS-EJB ejb] : mdb-connection-factory has to be defined for an MDB with destination-type " + 134 "as Topic and subscription-durability as Durable")); 135 } 136 143 } 144 }else{ 145 addNaDetails(result, compName); 146 result.notApplicable(smh.getLocalString(getClass().getName()+".notApplicable1", 147 "NOT APPLICABLE [AS-EJB ejb] : mdb-connection-factory element is not defined")); 148 } 149 } 150 if(oneFailed) 151 result.setStatus(Result.FAILED); 152 else if(oneWarn) 153 result.setStatus(Result.WARNING); 154 }catch(Exception ex){ 155 addErrorDetails(result, compName); 156 result.failed(smh.getLocalString(getClass().getName()+".notRun", 157 "NOT RUN [AS-EJB cmp] Could not create descriptor Object.")); 158 159 } 160 return result; 161 } 162 } 163 | Popular Tags |