1 23 24 package com.sun.enterprise.tools.verifier.tests.web.ias; 25 26 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 import com.sun.enterprise.deployment.ResourceReferenceDescriptor; 32 import com.sun.enterprise.deployment.WebBundleDescriptor; 33 import com.sun.enterprise.tools.verifier.tests.web.*; 34 import com.sun.enterprise.tools.common.dd.ResourceRef; 35 import com.sun.enterprise.tools.common.dd.webapp.*; 36 import com.sun.enterprise.tools.common.dd.DefaultResourcePrincipal; 37 38 41 43 44 public class ASResourceRefName extends WebTest implements WebCheck { 45 46 47 public Result check(WebBundleDescriptor descriptor) { 48 49 String resrefName; 50 Result result = getInitializedResult(); 51 WebComponentNameConstructor compName = new WebComponentNameConstructor(descriptor); 52 DefaultResourcePrincipal defPrincipal; 54 boolean oneWarning = false; 55 String jndiName; 57 boolean oneFailed = false; 58 boolean notApp = false; 59 ResourceRef[] resRefs = descriptor.getIasWebApp().getResourceRef(); 60 if (resRefs.length > 0) { 62 63 boolean isValidResRefName; 64 for (int rep=0; rep<resRefs.length; rep++ ) { 65 66 isValidResRefName=false; 67 resrefName = resRefs[rep].getResRefName(); 68 jndiName = resRefs[rep].getJndiName(); 69 defPrincipal = resRefs[rep].getDefaultResourcePrincipal(); 71 if (validResRefName(resrefName,descriptor)) { 74 isValidResRefName=true; 75 result.passed(smh.getLocalString 76 (getClass().getName() + ".passed", 77 "PASSED [AS-WEB sun-web-app] resource-ref name [ {0} ] properly defined in the war file.", 78 new Object [] {resrefName})); 79 } else { 80 if (!oneFailed) 81 oneFailed = true; 82 result.failed(smh.getLocalString 83 (getClass().getName() + ".failed", 84 "FAILED [AS-WEB sun-web-app] resource-ref name [ {0} ] is not valid, either empty or not defined in web.xml.", 85 new Object [] {resrefName})); 86 } 87 88 if (isValidResRefName && validJndiName(jndiName, resrefName,descriptor)){ 89 result.passed(smh.getLocalString 90 (getClass().getName() + ".passed1", 91 "PASSED [AS-WEB resource-ref] jndi-name [ {0} ] properly defined in the war file.", 92 new Object [] {jndiName})); 93 } else { 94 if (!oneFailed) 95 oneFailed = true; 96 result.failed(smh.getLocalString 97 (getClass().getName() + ".failed1", 98 "FAILED [AS-WEB resource-ref] jndi-name [ {0} ] is not valid, either empty or not starts according to its resource ref type entry defined in web.xml.", 99 new Object [] {jndiName})); 100 } 101 if(isValidResRefName){ 103 if(defPrincipal != null){ 104 String defaultname; 105 String defaultpassword; 106 boolean defResourcePrincipalValid = true; 107 defaultname = defPrincipal.getName(); 108 defaultpassword = defPrincipal.getPassword(); 109 if((defaultname == null)||(defaultname.length() == 0)){ 110 oneWarning = true; 111 defResourcePrincipalValid = false; 112 result.warning(smh.getLocalString 113 (getClass().getName() + ".warning1", 114 "WARNING [AS-WEB resource-ref] name field in DefaultResourcePrincipal of ResourceRef [ {0} ] is not specified or is an empty string.", 115 new Object [] {resrefName})); 116 } 117 if((defaultpassword == null)||(defaultpassword.length() == 0)){ 118 oneWarning = true; 119 defResourcePrincipalValid = false; 120 result.warning(smh.getLocalString 121 (getClass().getName() + ".warning2", 122 "WARNING [AS-WEB resource-ref] password field in DefaultResourcePrincipal of ResourceRef [ {0} ] is not specified or is an empty string.", 123 new Object [] {resrefName})); 124 } 125 if(defResourcePrincipalValid){ 126 result.passed(smh.getLocalString 127 (getClass().getName() + ".passed3", 128 "PASSED [AS-WEB resource-ref] DefaultResourcePrincipal of ResourceRef [ {0} ] properly defined", 129 new Object [] {resrefName})); 130 } 131 } 132 133 } 134 136 } 137 138 } else { 139 notApp = true; 141 result.notApplicable(smh.getLocalString 142 (getClass().getName() + ".notApplicable", 143 "NOT APPLICABLE [AS-WEB sun-web-app] resource-ref element not defined in the web archive [ {0} ].", 144 new Object [] {descriptor.getName()})); 145 } 146 if (oneFailed) { 147 result.setStatus(Result.FAILED); 148 } else if(oneWarning) { 150 result.setStatus(Result.WARNING); 151 } else if(notApp) { 153 result.setStatus(Result.NOT_APPLICABLE); 154 }else { 155 result.setStatus(Result.PASSED); 156 result.passed 157 (smh.getLocalString 158 (getClass().getName() + ".passed2", 159 "PASSED [AS-WEB sun-web-app] resource-ref element(s) are valid within the web archive [ {0} ] .", 160 new Object [] {descriptor.getName()} )); 161 } 162 return result; 163 } 164 165 boolean validResRefName(String name,WebBundleDescriptor descriptor){ 166 boolean valid =true; 167 if(name !=null && name.length()!=0) { 168 try{ 169 descriptor.getResourceReferenceByName(name); 170 } 171 catch(IllegalArgumentException e){ 172 valid=false; 173 } 174 } else{ 175 valid=false; 176 177 } 178 179 return valid; 180 } 181 182 boolean validJndiName(String refJndiName, String refName,WebBundleDescriptor descriptor){ 183 boolean valid =true; 184 ResourceReferenceDescriptor resDesc; 185 186 if(refJndiName !=null && refJndiName.length()!=0) { 187 resDesc = descriptor.getResourceReferenceByName(refName); 189 String type = resDesc.getType(); 190 if(type.indexOf("javax.jms")>-1) { 192 if(!refJndiName.startsWith("jms/")) 193 valid=false; 194 195 } 196 else if(type.indexOf("javax.sql")>-1) { 198 if(!refJndiName.startsWith("jdbc/")) 199 valid=false; 200 } 201 else if(type.indexOf("javax.net")>-1) { 203 if(!refJndiName.startsWith("http://")) valid=false; 205 } 206 else if(type.indexOf("javax.mail")>-1) { 208 if(!refJndiName.startsWith("mail/")) 209 valid=false; 210 } 211 else 212 valid=false; 213 } 214 else{ 215 valid=false; 216 } 217 218 return valid; 219 } 220 } 221 222 | Popular Tags |