1 23 package com.sun.enterprise.tools.verifier.tests.ejb.elements; 24 25 import com.sun.enterprise.tools.verifier.tests.ejb.EjbTest; 26 import com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck; 27 import java.util.*; 28 import com.sun.enterprise.deployment.*; 29 import com.sun.enterprise.tools.verifier.*; 30 import com.sun.enterprise.tools.verifier.tests.*; 31 32 import com.sun.enterprise.tools.verifier.XpathPrefixResolver; 33 34 39 public class EjbRefTypeElement extends EjbTest implements EjbCheck { 40 41 51 public Result check(EjbDescriptor descriptor) { 52 53 Result result = getInitializedResult(); 54 ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor(); 55 boolean failed = false; 56 57 if (!descriptor.getEjbReferenceDescriptors().isEmpty()) { 61 for (Iterator itr = descriptor.getEjbReferenceDescriptors() 62 .iterator(); itr.hasNext();) { 63 EjbReferenceDescriptor nextEjbReference = 64 (EjbReferenceDescriptor) itr.next(); 65 66 String refStr = (nextEjbReference.isLocal()) ? 70 "ejb-local-ref" : "ejb-ref"; 71 String beanType = (descriptor.getType()).toLowerCase(); 72 String xpathQuery = null; 73 if (getVerifierContext().getDocument().getDoctype() != null) { 74 xpathQuery = "/ejb-jar/enterprise-beans/" + 75 beanType + "[ejb-name=\"" + descriptor.getName() 76 +"\"]/" + refStr + "[ejb-ref-name=\"" 77 + nextEjbReference.getName() + "\"]/ejb-ref-type"; 78 } 79 else { 80 String prefix = XpathPrefixResolver.fakeXPrefix; 81 xpathQuery = prefix + ":" + "ejb-jar/" + 82 prefix + ":" + "enterprise-beans/" + 83 prefix + ":" + beanType + 84 "[" + prefix + ":ejb-name=\"" + descriptor.getName() 85 +"\"]/" + 86 prefix + ":" + refStr + "[" + prefix + ":ejb-ref-name=\"" 87 + nextEjbReference.getName() + "\"]/" + 88 prefix + ":" + "ejb-ref-type"; 89 } 90 91 String ejbRefTypeStr = getXPathValueForNonRuntime(xpathQuery); 92 EjbDescriptor rdesc = nextEjbReference.getEjbDescriptor(); 93 94 98 99 if (ejbRefTypeStr == null) { 101 ejbRefTypeStr = nextEjbReference.getType(); 102 } 103 104 if (!((ejbRefTypeStr.equals(EjbSessionDescriptor.TYPE)) || 105 (ejbRefTypeStr.equals(EjbEntityDescriptor.TYPE)))) { 106 result.addErrorDetails(smh.getLocalString 107 ("tests.componentNameConstructor", 108 "For [ {0} ]", 109 new Object [] {compName.toString()})); 110 result.failed(smh.getLocalString 111 (getClass().getName() + ".failed", 112 "Error: ejb-ref-type [ {0} ] within \n bean [ {1} ] is not valid. \n Must be [ {2} ] or [ {3} ]", 113 new Object [] {ejbRefTypeStr,descriptor.getName(),EjbEntityDescriptor.TYPE,EjbSessionDescriptor.TYPE})); 114 failed = true; 115 } 116 else if (rdesc != null ) { 117 String actualRefType = rdesc.getType(); 118 if (!ejbRefTypeStr.equals(actualRefType)) { 119 result.addErrorDetails(smh.getLocalString 120 ("tests.componentNameConstructor", 121 "For [ {0} ]", 122 new Object [] {compName.toString()})); 123 result.failed(smh.getLocalString 124 (getClass().getName() + ".failed2", 125 "Error: ejb-ref-type [ {0} ] was specifed for ejb-ref [ {1} ], within bean [ {2} ], when it should have been [ {3} ].", 126 new Object [] {ejbRefTypeStr, 127 nextEjbReference.getName(), 128 descriptor.getName(), actualRefType})); 129 failed = true; 130 } 131 } 132 } 133 } else { 134 result.addNaDetails(smh.getLocalString 135 ("tests.componentNameConstructor", 136 "For [ {0} ]", 137 new Object [] {compName.toString()})); 138 result.notApplicable(smh.getLocalString 139 (getClass().getName() + ".notApplicable", 140 "There are no ejb references to other beans within this bean [ {0} ]", 141 new Object [] {descriptor.getName()})); 142 return result; 143 } 144 145 if (failed) 146 { 147 result.setStatus(Result.FAILED); 148 } else { 149 result.addGoodDetails(smh.getLocalString 150 ("tests.componentNameConstructor", 151 "For [ {0} ]", 152 new Object [] {compName.toString()})); 153 result.passed 154 (smh.getLocalString 155 (getClass().getName() + ".passed", 156 "All ejb-ref-type elements are valid. They are all [ {0} ] or [ {1} ] within this bean [ {2} ]", 157 new Object [] {EjbEntityDescriptor.TYPE,EjbSessionDescriptor.TYPE,descriptor.getName()})); 158 } 159 return result; 160 161 } 162 } 163 | Popular Tags |