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.jetspeed.container.state.impl;
18:
19: import java.io.UnsupportedEncodingException;
20: import java.util.HashMap;
21: import java.util.Iterator;
22: import java.util.Map;
23:
24: import javax.portlet.PortletMode;
25: import javax.portlet.WindowState;
26:
27: import org.apache.jetspeed.cache.JetspeedContentCache;
28: import org.apache.pluto.om.window.PortletWindow;
29:
30: /**
31: * HybridNavigationalState
32: *
33: * Only encodes render parameters that start with a given prefix
34: *
35: * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
36: * @version $Id: AbstractNavigationalState.java 333093 2005-11-13 18:42:42Z taylor $
37: */
38: public class HybridNavigationalState extends SessionNavigationalState {
39: protected String prefix;
40:
41: public HybridNavigationalState(NavigationalStateCodec codec,
42: String prefix, JetspeedContentCache cache) {
43: super (codec, cache);
44: this .prefix = prefix;
45: }
46:
47: public String encode(PortletWindow window, Map parameters,
48: PortletMode mode, WindowState state, boolean action)
49: throws UnsupportedEncodingException {
50: Map subset = new HashMap();
51: Iterator params = parameters.keySet().iterator();
52: while (params.hasNext()) {
53: String key = (String) params.next();
54: if (key.startsWith(prefix)) {
55: // only encode params that start with prefix
56: subset.put(key, parameters.get(key));
57: }
58: }
59: return super .encode(window, subset, mode, state, action);
60: }
61:
62: public boolean isNavigationalParameterStateFull() {
63: return true;
64: }
65:
66: public boolean isRenderParameterStateFull() {
67: return false;
68: }
69:
70: }
|