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 parameter.
29: * If the specified request parameter exists, its value is retrieved for later
30: * sitemap substitution.
31: *
32: * <p><b>Example:</b></p>
33: * <pre>
34: * <map:match type="request" pattern="dest">
35: * <map:redirect-to uri="{1}"/>
36: * </map:match>
37: * </pre>
38: *
39: * @author <a href="mailto:Marcus.Crafter@osa.de">Marcus Crafter</a>
40: * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
41: * @version CVS $Id: RequestParameterMatcher.java 433543 2006-08-22 06:22:54Z crossley $
42: */
43: public class RequestParameterMatcher implements Matcher, ThreadSafe {
44: /**
45: * Match method to see if the request parameter exists. If it does
46: * have a value the parameter is added to the array list for later
47: * sitemap substitution.
48: *
49: * @param pattern name of request parameter to find
50: * @param objectModel environment passed through via cocoon
51: * @return null or map containing value of request parameter 'pattern'
52: */
53: public Map match(String pattern, Map objectModel,
54: Parameters parameters) {
55: Request request = ObjectModelHelper.getRequest(objectModel);
56:
57: String parameter = request.getParameter(pattern);
58: if (parameter == null) {
59: return null; // no parameter defined
60: } else {
61: Map map = new HashMap();
62: map.put("1", parameter);
63: return map; // parameter defined, return map
64: }
65: }
66: }
|