1 23 28 29 package com.sun.enterprise.tools.verifier.tests.web; 30 31 import java.util.ArrayList ; 32 import java.util.Enumeration ; 33 import java.util.Iterator ; 34 import java.util.List ; 35 import java.util.Set ; 36 37 import com.sun.enterprise.deployment.ServletFilterDescriptor; 38 import com.sun.enterprise.deployment.ServletFilterMappingDescriptor; 39 import com.sun.enterprise.deployment.WebBundleDescriptor; 40 import com.sun.enterprise.deployment.WebComponentDescriptor; 41 import com.sun.enterprise.tools.verifier.Result; 42 import com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor; 43 44 50 public class FilterMapping extends WebTest { 51 Result result; 52 ComponentNameConstructor compName; 53 60 public Result check(WebBundleDescriptor descriptor) { 61 result = getInitializedResult(); 62 compName = getVerifierContext().getComponentNameConstructor(); 63 Enumeration filterEnum = descriptor.getServletFilterDescriptors().elements(); 64 if (filterEnum.hasMoreElements()) { 65 while (filterEnum.hasMoreElements()) { 66 ServletFilterDescriptor filter = (ServletFilterDescriptor) filterEnum.nextElement(); 67 hasValidMapping(descriptor, filter.getName()); 68 } 69 } 70 if (result.getStatus() != Result.FAILED) { 71 addGoodDetails(result, compName); 72 result.passed(smh.getLocalString 73 (getClass().getName() + ".passed", 74 "All filter mappings are correct")); 75 } 76 return result; 77 } 78 79 private void hasValidMapping(WebBundleDescriptor descriptor, String filterName) { 80 Enumeration filtermapperEnum = descriptor.getServletFilterMappingDescriptors().elements(); 81 if (filtermapperEnum.hasMoreElements()) { 82 ServletFilterMappingDescriptor filterMapper = null; 83 boolean mappingFound = false; 84 do { 85 filterMapper = (ServletFilterMappingDescriptor)filtermapperEnum.nextElement(); 86 String filterMapping = filterMapper.getName(); 87 mappingFound = filterName.equals(filterMapping); 88 } while (!mappingFound && filtermapperEnum.hasMoreElements()); 89 90 if (mappingFound) { 91 List <String > urlPatterns = filterMapper.getURLPatterns(); 92 for(String url : urlPatterns) { 93 if (!((url.startsWith("/")) || 94 ((url.startsWith("/")) && (url.endsWith("/*"))) || 95 (url.startsWith("*.")))) { 96 addErrorDetails(result, compName); 97 result.failed(smh.getLocalString 98 (getClass().getName() + ".failed", 99 "Filter Mapping for [ {0} ] has invalid " + 100 "url-mapping [ {1} ] ", 101 new Object [] {filterName, url} )); 102 } 103 } 104 List <String > servletsInFilter = filterMapper.getServletNames(); 105 List <String > servletsInWAR = new ArrayList <String >(); 106 107 if(servletsInFilter.size() > 0) { 108 Set servletDescriptor = descriptor.getServletDescriptors(); 109 Iterator itr = servletDescriptor.iterator(); 110 while (itr.hasNext()) { 112 WebComponentDescriptor servlet = (WebComponentDescriptor) itr.next(); 113 servletsInWAR.add(servlet.getCanonicalName()); 114 } 115 if (!(servletsInWAR != null && servletsInWAR.containsAll(servletsInFilter))) { 116 addErrorDetails(result, compName); 117 result.failed(smh.getLocalString 118 (getClass().getName() + ".failed1", 119 "Filter Mapping for [ {0} ] has invalid servlet-name", 120 new Object [] {filterName})); 121 } 122 } 123 } 124 } 125 } 126 } 127 | Popular Tags |