You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mf...@apache.org on 2013/05/08 19:35:47 UTC

svn commit: r1480373 - /myfaces/portlet-bridge/core/branches/refactored_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/wrapper/BridgeEventRequestWrapper.java

Author: mfreedman
Date: Wed May  8 17:35:47 2013
New Revision: 1480373

URL: http://svn.apache.org/r1480373
Log:
Added file I originally forgot/missed when I created the project.

Added:
    myfaces/portlet-bridge/core/branches/refactored_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/wrapper/BridgeEventRequestWrapper.java

Added: myfaces/portlet-bridge/core/branches/refactored_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/wrapper/BridgeEventRequestWrapper.java
URL: http://svn.apache.org/viewvc/myfaces/portlet-bridge/core/branches/refactored_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/wrapper/BridgeEventRequestWrapper.java?rev=1480373&view=auto
==============================================================================
--- myfaces/portlet-bridge/core/branches/refactored_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/wrapper/BridgeEventRequestWrapper.java (added)
+++ myfaces/portlet-bridge/core/branches/refactored_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/wrapper/BridgeEventRequestWrapper.java Wed May  8 17:35:47 2013
@@ -0,0 +1,200 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.myfaces.portlet.faces.bridge.wrapper;
+
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import javax.portlet.EventRequest;
+import javax.portlet.PortletRequest;
+import javax.portlet.RenderRequest;
+import javax.portlet.filter.EventRequestWrapper;
+import javax.portlet.filter.RenderRequestWrapper;
+
+public class BridgeEventRequestWrapper extends EventRequestWrapper
+{
+  private Map<String, String[]> mActionParams     = null;
+  private Map<String, String[]> mCombinedParamMap = null;
+  private boolean mCombineParams = true;
+
+  public BridgeEventRequestWrapper(EventRequest request, 
+                                    Map<String, String[]> actionParams)
+                                      throws IllegalArgumentException
+  {
+    this(request, actionParams, true);
+  }
+  
+  public BridgeEventRequestWrapper(EventRequest request, 
+                                    Map<String, String[]> actionParams,
+                                    boolean combineParams)
+                                      throws IllegalArgumentException
+  {
+    super(request);
+
+    mActionParams = actionParams;
+    mCombineParams = combineParams;
+  }
+
+  /**
+   * Returns the value of a request parameter as a <code>String</code>, or <code>null</code> if
+   * the parameter does not exist. Request parameters are extra information sent with the request.
+   * The returned parameter are "x-www-form-urlencoded" decoded.
+   * <p>
+   * Only parameters targeted to the current portlet are accessible.
+   * <p>
+   * This method should only be used if the parameter has only one value. If the parameter might
+   * have more than one value, use {@link #getParameterValues}.
+   * <p>
+   * If this method is used with a multivalued parameter, the value returned is equal to the first
+   * value in the array returned by <code>getParameterValues</code>.
+   * 
+   * 
+   * 
+   * @param name
+   *          a <code>String</code> specifying the name of the parameter
+   * 
+   * @return a <code>String</code> representing the single value of the parameter
+   * 
+   * @see #getParameterValues
+   * 
+   * @exception java.lang.IllegalArgumentException
+   *              if name is <code>null</code>.
+   * 
+   */
+  @Override
+  public String getParameter(String name)
+  {
+    String[] params = getParameterValues(name);
+    if (params != null && params.length > 0)
+    {
+      return params[0];
+    }
+    else
+    {
+      return null;
+    }
+  }
+
+  /**
+   * 
+   * Returns an <code>Enumeration</code> of <code>String</code> objects containing the names of
+   * the parameters contained in this request. If the request has no parameters, the method returns
+   * an empty <code>Enumeration</code>.
+   * <p>
+   * Only parameters targeted to the current portlet are returned.
+   * 
+   * 
+   * @return an <code>Enumeration</code> of <code>String</code> objects, each
+   *         <code>String</code> containing the name of a request parameter; or an empty
+   *         <code>Enumeration</code> if the request has no parameters.
+   */
+  @Override
+  public Enumeration<String> getParameterNames()
+  {
+    return Collections.enumeration(getParameterMap().keySet());
+  }
+
+  /**
+   * Returns an array of <code>String</code> objects containing all of the values the given
+   * request parameter has, or <code>null</code> if the parameter does not exist. The returned
+   * parameters are "x-www-form-urlencoded" decoded.
+   * <p>
+   * If the parameter has a single value, the array has a length of 1.
+   * 
+   * 
+   * @param name
+   *          a <code>String</code> containing the name of the parameter the value of which is
+   *          requested
+   * 
+   * @return an array of <code>String</code> objects containing the parameter values.
+   * 
+   * @see #getParameter
+   * 
+   * @exception java.lang.IllegalArgumentException
+   *              if name is <code>null</code>.
+   * 
+   */
+  @Override
+  public String[] getParameterValues(String name)
+  {
+    if (name == null)
+    {
+      throw new IllegalArgumentException();
+    }
+
+    return getParameterMap().get(name);
+
+  }
+
+  /**
+   * Returns a <code>Map</code> of the parameters of this request. Request parameters are extra
+   * information sent with the request. The returned parameters are "x-www-form-urlencoded" decoded.
+   * <p>
+   * The values in the returned <code>Map</code> are from type String array (<code>String[]</code>).
+   * <p>
+   * If no parameters exist this method returns an empty <code>Map</code>.
+   * 
+   * @return an immutable <code>Map</code> containing parameter names as keys and parameter values
+   *         as map values, or an empty <code>Map</code> if no parameters exist. The keys in the
+   *         parameter map are of type String. The values in the parameter map are of type String
+   *         array (<code>String[]</code>).
+   */
+  @SuppressWarnings("unchecked")
+  @Override
+  public Map<String, String[]> getParameterMap()
+  {
+    if (!mCombineParams)
+    {
+      return mActionParams;
+    }
+    else if (mActionParams == null || mActionParams.isEmpty())
+    {
+      return super.getParameterMap();
+    }
+    else if (mCombinedParamMap != null)
+    {
+      return mCombinedParamMap;
+    }
+    else 
+    {
+      // Combine the two Maps
+      mCombinedParamMap = new LinkedHashMap<String, String[]>(super.getParameterMap());
+
+      // now walk through the actionParams adding those that aren't
+      // already in the ParameterMap
+      for (Map.Entry<String, String[]> entry : mActionParams.entrySet())
+      {
+        String key = entry.getKey();
+        if (!mCombinedParamMap.containsKey(key))
+        {
+          mCombinedParamMap.put(key, entry.getValue());
+        }
+      }
+      
+      // now make this an immutable Map
+      mCombinedParamMap = Collections.unmodifiableMap(mCombinedParamMap);
+      
+      return mCombinedParamMap;
+    }
+  }
+
+}