1 23 package com.sun.enterprise.tools.verifier.tests.appclient.elements; 24 25 import com.sun.enterprise.tools.verifier.tests.appclient.AppClientTest; 26 import com.sun.enterprise.tools.verifier.tests.appclient.AppClientCheck; 27 import java.util.*; 28 import java.util.logging.Level ; 29 30 import com.sun.enterprise.deployment.*; 31 import com.sun.enterprise.tools.verifier.*; 32 import com.sun.enterprise.tools.verifier.tests.*; 33 34 39 public class AppClientEjbLinkOnlyOne extends AppClientTest implements AppClientCheck { 40 41 50 public Result check(ApplicationClientDescriptor descriptor) { 51 52 Result result = getInitializedResult(); 53 ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor(); 54 55 int resolved = 0; 56 boolean oneFailed = false; 57 int na = 0; 58 boolean pathPrefix = false; 59 String jar_name = ""; 60 75 77 if (!descriptor.getEjbReferenceDescriptors().isEmpty()) { 80 for (Iterator itr = descriptor.getEjbReferenceDescriptors().iterator(); 81 itr.hasNext();) { 82 EjbReferenceDescriptor nextEjbReference = (EjbReferenceDescriptor) itr.next(); 83 if (nextEjbReference.isLinked()) { 84 String ejb_link = nextEjbReference.getLinkName(); 85 if (ejb_link.indexOf("#") != -1) { 86 jar_name = ejb_link.substring(0,ejb_link.indexOf("#")); 87 ejb_link = ejb_link.substring(ejb_link.indexOf("#") + 1); 88 pathPrefix = true; 89 } 90 try { 92 Set ejbBundles = descriptor.getApplication().getEjbBundleDescriptors(); 94 Iterator ejbBundlesIterator = ejbBundles.iterator(); 95 EjbBundleDescriptor ejbBundle = null; 96 resolved = 0; 97 98 while (ejbBundlesIterator.hasNext()) { 99 ejbBundle = (EjbBundleDescriptor)ejbBundlesIterator.next(); 100 String ejbBundleName = ejbBundle.getModuleDescriptor().getArchiveUri(); 101 for (Iterator itr2 = ejbBundle.getEjbs().iterator(); itr2.hasNext();) { 106 EjbDescriptor ejbDescriptor = (EjbDescriptor) itr2.next(); 107 if (ejbDescriptor.getName().equals(ejb_link)) { 108 if ((pathPrefix == true && jar_name.equals(ejbBundleName)) || pathPrefix == false) { 109 resolved++; 110 logger.log(Level.FINE, getClass().getName() + ".debug", 111 new Object [] {ejb_link, ejbDescriptor.getName(), descriptor.getName()}); 112 } 113 } 114 if (resolved > 0) { 115 break; 116 } 117 118 } 119 if (resolved > 0) { 120 break; 121 } 122 } 123 }catch (Exception e) { 124 logger.log(Level.FINE, "com.sun.enterprise.tools.verifier.testsprint", 125 new Object [] {"[" + getClass() + "] Error: " + e.getMessage()}); 126 if (!oneFailed) { 127 oneFailed = true; 128 } 129 } 130 131 132 if (resolved == 0) { 135 if (!oneFailed) { 136 oneFailed = true; 137 } 138 result.addErrorDetails(smh.getLocalString 139 ("tests.componentNameConstructor", 140 "For [ {0} ]", 141 new Object [] {compName.toString()})); 142 result.addErrorDetails(smh.getLocalString 143 (getClass().getName() + ".failed", 144 "Error: Failed to resolve EJB reference [ {0} ] to a unique EJB in this application.", 145 new Object [] {nextEjbReference.getLinkName()})); 146 } else if (resolved == 1 || (pathPrefix == true && resolved > 0)) { 147 resolved=0; 149 result.addGoodDetails(smh.getLocalString 150 ("tests.componentNameConstructor", 151 "For [ {0} ]", 152 new Object [] {compName.toString()})); 153 result.addGoodDetails 154 (smh.getLocalString 155 (getClass().getName() + ".passed", 156 "EJB reference [ {0} ] is successfully resolved.", 157 new Object [] {nextEjbReference.getLinkName()})); 158 159 } else { 160 result.addNaDetails(smh.getLocalString 165 ("tests.componentNameConstructor", 166 "For [ {0} ]", 167 new Object [] {compName.toString()})); 168 result.addNaDetails 169 (smh.getLocalString 170 (getClass().getName() + ".notApplicable1", 171 "Warning: Cannot verify the existence of an ejb reference [ {0} ] to external bean within different .ear file.", 172 new Object [] {nextEjbReference.getName()})); 173 } 174 }else { 175 result.addNaDetails(smh.getLocalString 180 ("tests.componentNameConstructor", 181 "For [ {0} ]", 182 new Object [] {compName.toString()})); 183 result.addNaDetails 184 (smh.getLocalString 185 (getClass().getName() + ".notApplicable1", 186 "Not Applicable: Cannot verify the existence of an ejb reference [ {0} ] to external bean within different .ear file.", 187 new Object [] {nextEjbReference.getName()})); 188 na++; 189 } 190 } 191 192 if (oneFailed) { 193 result.setStatus(result.FAILED); 194 } else if (na == descriptor.getEjbReferenceDescriptors().size()) { 195 result.setStatus(result.NOT_APPLICABLE); 196 } else { 197 result.setStatus(result.PASSED); 198 } 199 return result; 203 204 } else { 205 result.addNaDetails(smh.getLocalString 206 ("tests.componentNameConstructor", 207 "For [ {0} ]", 208 new Object [] {compName.toString()})); 209 result.notApplicable(smh.getLocalString 210 (getClass().getName() + ".notApplicable", 211 "There are no ejb references to other beans within this application client [ {0} ]", 212 new Object [] {descriptor.getName()})); 213 } 214 215 return result; 216 } 217 } 218 | Popular Tags |