KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > enterprise > tools > verifier > tests > web > FilterMapping


1 /*
2  * The contents of this file are subject to the terms
3  * of the Common Development and Distribution License
4  * (the License). You may not use this file except in
5  * compliance with the License.
6  *
7  * You can obtain a copy of the license at
8  * https://glassfish.dev.java.net/public/CDDLv1.0.html or
9  * glassfish/bootstrap/legal/CDDLv1.0.txt.
10  * See the License for the specific language governing
11  * permissions and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL
14  * Header Notice in each file and include the License file
15  * at glassfish/bootstrap/legal/CDDLv1.0.txt.
16  * If applicable, add the following below the CDDL Header,
17  * with the fields enclosed by brackets [] replaced by
18  * you own identifying information:
19  * "Portions Copyrighted [year] [name of copyright owner]"
20  *
21  * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
22  */

23 /*
24  * FilterMapping.java
25  *
26  * Created on November 29, 2000, 2:59 PM
27  */

28
29 package com.sun.enterprise.tools.verifier.tests.web;
30
31 import java.util.ArrayList JavaDoc;
32 import java.util.Enumeration JavaDoc;
33 import java.util.Iterator JavaDoc;
34 import java.util.List JavaDoc;
35 import java.util.Set JavaDoc;
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 /**
45  * Check that all the mappings for the declated filters are correct.
46  *
47  * @author Jerome Dochez
48  * @version 1.0
49  */

50 public class FilterMapping extends WebTest {
51     Result result;
52     ComponentNameConstructor compName;
53     /**
54      * Check that the mappings for all filters are correct
55      *
56      * @param descriptor the Web deployment descriptor
57      *
58      * @return <code>Result</code> the results for this assertion
59      */

60     public Result check(WebBundleDescriptor descriptor) {
61         result = getInitializedResult();
62         compName = getVerifierContext().getComponentNameConstructor();
63         Enumeration JavaDoc 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 JavaDoc filterName) {
80         Enumeration JavaDoc 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 JavaDoc filterMapping = filterMapper.getName();
87                 mappingFound = filterName.equals(filterMapping);
88             } while (!mappingFound && filtermapperEnum.hasMoreElements());
89
90             if (mappingFound) {
91                 List JavaDoc<String JavaDoc> urlPatterns = filterMapper.getURLPatterns();
92                 for(String JavaDoc 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 JavaDoc[] {filterName, url} ));
102                     }
103                 }
104                 List JavaDoc<String JavaDoc> servletsInFilter = filterMapper.getServletNames();
105                 List JavaDoc<String JavaDoc> servletsInWAR = new ArrayList JavaDoc<String JavaDoc>();
106
107                 if(servletsInFilter.size() > 0) {
108                     Set JavaDoc servletDescriptor = descriptor.getServletDescriptors();
109                     Iterator JavaDoc itr = servletDescriptor.iterator();
110                     // test the servlets in this .war
111
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 JavaDoc[] {filterName}));
121                     }
122                 }
123             }
124         }
125     }
126 }
127
Popular Tags