01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17: package org.apache.cocoon.matching;
18:
19: import org.apache.avalon.framework.parameters.Parameters;
20: import org.apache.avalon.framework.thread.ThreadSafe;
21: import org.apache.cocoon.environment.ObjectModelHelper;
22: import org.apache.cocoon.environment.Request;
23:
24: import java.util.HashMap;
25: import java.util.Map;
26:
27: /**
28: * This class allows for matching based on a request header.
29: * If the specified request header parameter exists, its value is
30: * retrieved for later sitemap substitution.
31: *
32: * <p><b>Example:</b></p>
33: * <pre>
34: * <map:match type="header" pattern="referer">
35: * <map:redirect-to uri="{1}"/>
36: * </map:match>
37: * </pre>
38: *
39: * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
40: * @version CVS $Id: HeaderMatcher.java 433543 2006-08-22 06:22:54Z crossley $
41: */
42: public class HeaderMatcher implements Matcher, ThreadSafe {
43: /**
44: * Match method to see if the request header exists. If it does
45: * have a value the header added to the array list for later
46: * sitemap substitution.
47: *
48: * @param pattern name of request header to find
49: * @param objectModel environment passed through via cocoon
50: * @return null or map containing value of request header 'pattern'
51: */
52: public Map match(String pattern, Map objectModel,
53: Parameters parameters) {
54: Request request = ObjectModelHelper.getRequest(objectModel);
55:
56: String value = request.getHeader(pattern);
57: if (value == null) {
58: return null; // no request header defined
59: } else {
60: Map map = new HashMap();
61: map.put("1", value);
62: return map; // request header defined, return map
63: }
64: }
65: }
|