You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by ms...@apache.org on 2015/11/27 13:38:10 UTC

[29/38] portals-pluto git commit: Integrated latest version of the portlet API 3.0. Made necessary minor adaptations the Pluto code and demo portlets to make the previously available funtionality work. For the partial action request, changed implementati

Integrated latest version of the portlet API 3.0. Made necessary minor
adaptations the Pluto code and demo portlets to make the previously
available funtionality work. For the partial action request, changed
implementation to pass the PageState as a resource request attribute rather
than through use of a method on ResourceRequest.


Project: http://git-wip-us.apache.org/repos/asf/portals-pluto/repo
Commit: http://git-wip-us.apache.org/repos/asf/portals-pluto/commit/7fb0624d
Tree: http://git-wip-us.apache.org/repos/asf/portals-pluto/tree/7fb0624d
Diff: http://git-wip-us.apache.org/repos/asf/portals-pluto/diff/7fb0624d

Branch: refs/heads/V3Prototype
Commit: 7fb0624d7bceacd2601e2217edc7ea9713cd20f7
Parents: 8fb2d08
Author: Scott Nicklous <ms...@apache.org>
Authored: Wed Nov 18 16:28:43 2015 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Wed Nov 18 16:28:43 2015 +0100

----------------------------------------------------------------------
 .../basic/portlet/PartialActionPortlet.java     |   7 +-
 .../main/java/basic/portlet/AuthSCPortlet.java  |  14 +-
 .../java/basic/portlet/ColorSelPortlet.java     |   1 +
 .../java/basic/portlet/ImageSelPortlet.java     |   1 +
 .../main/java/basic/portlet/LongPortlet.java    |  13 +-
 .../java/basic/portlet/MessageBoxPortlet.java   |   3 +-
 .../basic/portlet/PortletConfigPortlet.java     |   5 +-
 .../java/basic/portlet/ResourcePortlet.java     |   1 +
 .../java/basic/portlet/UrlAPTestPortlet.java    |  40 +-
 .../java/basic/portlet/UrlRPTestPortlet.java    |  47 +-
 .../main/java/basic/portlet/UrlTestPortlet.java |  14 +-
 .../src/main/webapp/WEB-INF/jsp/view-ascp.jsp   |   8 +-
 .../src/main/webapp/WEB-INF/jsp/view-long.jsp   |   6 +-
 .../src/main/webapp/WEB-INF/jsp/view-ptp.jsp    |   4 +-
 .../src/main/webapp/WEB-INF/jsp/view-uaptp.jsp  |  10 +-
 .../src/main/webapp/WEB-INF/jsp/view-urptp.jsp  |  10 +-
 .../src/main/webapp/WEB-INF/jsp/view-utp.jsp    |  10 +-
 .../pluto/container/driver/PortletServlet3.java |  10 +
 .../container/impl/ActionResponseImpl.java      | 205 ++---
 .../pluto/container/impl/ActionURLImpl.java     |   4 +-
 .../pluto/container/impl/BaseURLImpl.java       |  10 +-
 .../pluto/container/impl/MimeResponseImpl.java  |  10 +-
 .../pluto/container/impl/PortletURLImpl.java    |  34 +-
 .../pluto/container/impl/RenderURLImpl.java     |   4 +-
 .../container/impl/ResourceRequestImpl.java     |  12 -
 .../container/impl/ResourceResponseImpl.java    |  18 +-
 pom.xml                                         |   8 +-
 portlet-api/pom.xml                             | 157 ++--
 .../main/java/javax/portlet/ActionResponse.java |  67 +-
 .../javax/portlet/ConditionalDispatcher.java    | 157 ++++
 .../main/java/javax/portlet/HeaderPortlet.java  |  63 ++
 .../main/java/javax/portlet/HeaderRequest.java  |  30 +
 .../main/java/javax/portlet/HeaderResponse.java |  84 ++
 .../main/java/javax/portlet/MethodToken.java    |  68 ++
 .../main/java/javax/portlet/MimeResponse.java   |  40 +-
 .../src/main/java/javax/portlet/PortletURL.java |  17 +
 .../main/java/javax/portlet/RenderResponse.java |   1 +
 .../java/javax/portlet/ResourceRequest.java     |  46 +-
 .../java/javax/portlet/ResourceResponse.java    |   8 +-
 .../javax/portlet/annotations/ActionMethod.java |  89 ++
 .../javax/portlet/annotations/ActionParam.java  |  68 ++
 .../javax/portlet/annotations/BeanPortlet.java  |  47 ++
 .../annotations/ConditionalDispatchMethod.java  | 112 +++
 .../portlet/annotations/ContentTypeSupport.java |  87 ++
 .../javax/portlet/annotations/ContextPath.java  |  58 ++
 .../portlet/annotations/CustomPortletMode.java  |  76 ++
 .../portlet/annotations/CustomWindowState.java  |  64 ++
 .../javax/portlet/annotations/Dependency.java   |  65 ++
 .../portlet/annotations/DestroyMethod.java      |  76 ++
 .../portlet/annotations/EventDefinition.java    | 107 +++
 .../javax/portlet/annotations/EventMethod.java  | 119 +++
 .../javax/portlet/annotations/HeaderMethod.java | 137 +++
 .../javax/portlet/annotations/InitMethod.java   |  74 ++
 .../portlet/annotations/InitParameter.java      |  58 ++
 .../javax/portlet/annotations/LocaleString.java |  67 ++
 .../javax/portlet/annotations/Namespace.java    |  58 ++
 .../portlet/annotations/PortletApplication.java | 143 ++++
 .../annotations/PortletConfiguration.java       | 236 ++++++
 .../annotations/PortletConfigurations.java      |  51 ++
 .../javax/portlet/annotations/PortletQName.java |  92 ++
 .../annotations/PortletRequestFilter.java       | 129 +++
 .../portlet/annotations/PortletResources.java   | 153 ++++
 .../annotations/PortletSerializable.java        |  84 ++
 .../annotations/PortletSessionScoped.java       |  76 ++
 .../portlet/annotations/PortletStateScoped.java |  96 +++
 .../PortletURLGenerationListener.java           | 129 +++
 .../javax/portlet/annotations/Preference.java   |  73 ++
 .../annotations/PreferencesValidator.java       |  83 ++
 .../PublicRenderParameterDefinition.java        |  93 ++
 .../javax/portlet/annotations/RenderMethod.java | 143 ++++
 .../javax/portlet/annotations/RenderParam.java  |  68 ++
 .../portlet/annotations/ResourceParam.java      |  77 ++
 .../portlet/annotations/RuntimeOption.java      |  58 ++
 .../portlet/annotations/SecurityRoleRef.java    |  61 ++
 .../annotations/ServeResourceMethod.java        | 157 ++++
 .../javax/portlet/annotations/Supports.java     |  74 ++
 .../javax/portlet/annotations/URLFactory.java   | 197 +++++
 .../portlet/annotations/UserAttribute.java      |  61 ++
 .../javax/portlet/annotations/WindowId.java     |  57 ++
 .../javax/portlet/annotations/package-info.java | 316 +++++++
 .../portlet/filter/ActionRequestWrapper.java    | 245 ++----
 .../portlet/filter/ActionResponseWrapper.java   | 315 +++----
 .../filter/ClientDataRequestWrapper.java        | 125 +++
 .../portlet/filter/EventRequestWrapper.java     | 194 ++---
 .../portlet/filter/EventResponseWrapper.java    | 293 ++-----
 .../java/javax/portlet/filter/HeaderFilter.java | 113 +++
 .../javax/portlet/filter/HeaderFilterChain.java |  61 ++
 .../portlet/filter/HeaderRequestWrapper.java    |  80 ++
 .../portlet/filter/HeaderResponseWrapper.java   |  76 ++
 .../portlet/filter/MimeResponseWrapper.java     | 223 +++++
 .../portlet/filter/PortletRequestWrapper.java   | 844 +++++++++----------
 .../portlet/filter/PortletResponseWrapper.java  | 281 +++---
 .../portlet/filter/RenderRequestWrapper.java    | 178 ++--
 .../portlet/filter/RenderResponseWrapper.java   | 351 +++-----
 .../portlet/filter/ResourceRequestWrapper.java  | 322 +++----
 .../portlet/filter/ResourceResponseWrapper.java | 391 +++------
 .../filter/StateAwareResponseWrapper.java       | 168 ++++
 97 files changed, 7172 insertions(+), 2404 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletHubDemo/src/main/java/basic/portlet/PartialActionPortlet.java
----------------------------------------------------------------------
diff --git a/PortletHubDemo/src/main/java/basic/portlet/PartialActionPortlet.java b/PortletHubDemo/src/main/java/basic/portlet/PartialActionPortlet.java
index 50ef9a0..185daea 100644
--- a/PortletHubDemo/src/main/java/basic/portlet/PartialActionPortlet.java
+++ b/PortletHubDemo/src/main/java/basic/portlet/PartialActionPortlet.java
@@ -35,6 +35,9 @@ import javax.portlet.PortletRequestDispatcher;
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
 import javax.portlet.ResourceRequest;
+
+import static javax.portlet.ResourceRequest.*;
+
 import javax.portlet.ResourceResponse;
 
 /**
@@ -61,6 +64,7 @@ public class PartialActionPortlet extends GenericPortlet {
 
    }
 
+   @SuppressWarnings("deprecation")
    @Override
    public void processAction(ActionRequest req, ActionResponse resp)
          throws PortletException, IOException {
@@ -89,6 +93,7 @@ public class PartialActionPortlet extends GenericPortlet {
    /* (non-Javadoc)
     * @see javax.portlet.GenericPortlet#serveResource(javax.portlet.ResourceRequest, javax.portlet.ResourceResponse)
     */
+   @SuppressWarnings("deprecation")
    @Override
    public void serveResource(ResourceRequest req, ResourceResponse resp)
          throws PortletException, IOException {
@@ -99,7 +104,7 @@ public class PartialActionPortlet extends GenericPortlet {
       String num = req.getParameter(PARAM_NUM_ACTIONS);
       num = (num == null) ? "error" : num;
       
-      String pageState = req.getPageState();
+      String pageState = (String) req.getAttribute(PAGE_STATE);
       
       writer.write("<p>Partial Action has been executed " + num + " times.</p>\n");
       writer.write(";#delimiter#;");

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/java/basic/portlet/AuthSCPortlet.java
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/java/basic/portlet/AuthSCPortlet.java b/PortletV3Demo/src/main/java/basic/portlet/AuthSCPortlet.java
index 62b5fe0..71fe067 100644
--- a/PortletV3Demo/src/main/java/basic/portlet/AuthSCPortlet.java
+++ b/PortletV3Demo/src/main/java/basic/portlet/AuthSCPortlet.java
@@ -18,17 +18,11 @@
 
 package basic.portlet;
 
-import static basic.portlet.Constants.*;
+import static basic.portlet.Constants.PARAM_STATUSCODE;
 
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.TreeMap;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -36,15 +30,9 @@ import javax.portlet.ActionParameters;
 import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
 import javax.portlet.GenericPortlet;
-
-import static javax.portlet.MimeResponse.ParameterCopyOption.*;
-
-import javax.portlet.ActionURL;
-import javax.portlet.MutableActionParameters;
 import javax.portlet.MutableRenderParameters;
 import javax.portlet.PortletException;
 import javax.portlet.PortletRequestDispatcher;
-import javax.portlet.RenderParameters;
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
 import javax.portlet.ResourceRequest;

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/java/basic/portlet/ColorSelPortlet.java
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/java/basic/portlet/ColorSelPortlet.java b/PortletV3Demo/src/main/java/basic/portlet/ColorSelPortlet.java
index c6447dc..5f657bf 100644
--- a/PortletV3Demo/src/main/java/basic/portlet/ColorSelPortlet.java
+++ b/PortletV3Demo/src/main/java/basic/portlet/ColorSelPortlet.java
@@ -63,6 +63,7 @@ public class ColorSelPortlet extends GenericPortlet {
          throws PortletException, IOException {
    }
 
+   @SuppressWarnings("deprecation")
    public void processAction(ActionRequest req, ActionResponse resp)
          throws PortletException, IOException {
             

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/java/basic/portlet/ImageSelPortlet.java
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/java/basic/portlet/ImageSelPortlet.java b/PortletV3Demo/src/main/java/basic/portlet/ImageSelPortlet.java
index 4475ebb..24095f0 100644
--- a/PortletV3Demo/src/main/java/basic/portlet/ImageSelPortlet.java
+++ b/PortletV3Demo/src/main/java/basic/portlet/ImageSelPortlet.java
@@ -67,6 +67,7 @@ public class ImageSelPortlet extends GenericPortlet {
    /* (non-Javadoc)
     * @see javax.portlet.GenericPortlet#serveResource(javax.portlet.ResourceRequest, javax.portlet.ResourceResponse)
     */
+   @SuppressWarnings("deprecation")
    @Override
    public void serveResource(ResourceRequest req, ResourceResponse resp)
          throws PortletException, IOException {

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/java/basic/portlet/LongPortlet.java
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/java/basic/portlet/LongPortlet.java b/PortletV3Demo/src/main/java/basic/portlet/LongPortlet.java
index 529be1c..9f5f78c 100644
--- a/PortletV3Demo/src/main/java/basic/portlet/LongPortlet.java
+++ b/PortletV3Demo/src/main/java/basic/portlet/LongPortlet.java
@@ -18,16 +18,11 @@
 
 package basic.portlet;
 
-import static basic.portlet.Constants.*;
+import static basic.portlet.Constants.ATTRIB_LONGLINES;
 
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.TreeMap;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -35,15 +30,9 @@ import javax.portlet.ActionParameters;
 import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
 import javax.portlet.GenericPortlet;
-
-import static javax.portlet.MimeResponse.ParameterCopyOption.*;
-
-import javax.portlet.ActionURL;
-import javax.portlet.MutableActionParameters;
 import javax.portlet.MutableRenderParameters;
 import javax.portlet.PortletException;
 import javax.portlet.PortletRequestDispatcher;
-import javax.portlet.RenderParameters;
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
 import javax.portlet.ResourceRequest;

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/java/basic/portlet/MessageBoxPortlet.java
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/java/basic/portlet/MessageBoxPortlet.java b/PortletV3Demo/src/main/java/basic/portlet/MessageBoxPortlet.java
index f8363b0..f397886 100644
--- a/PortletV3Demo/src/main/java/basic/portlet/MessageBoxPortlet.java
+++ b/PortletV3Demo/src/main/java/basic/portlet/MessageBoxPortlet.java
@@ -62,6 +62,7 @@ public class MessageBoxPortlet extends GenericPortlet {
 
    }
 
+   @SuppressWarnings("deprecation")
    @Override
    public void processAction(ActionRequest req, ActionResponse resp)
          throws PortletException, IOException {
@@ -83,7 +84,7 @@ public class MessageBoxPortlet extends GenericPortlet {
       req.getPortletSession().setAttribute(ATTRIB_MSGS, msgs);
    }
    
-   @SuppressWarnings("unchecked")
+   @SuppressWarnings({ "unchecked", "deprecation" })
    @Override
    public void processEvent(EventRequest req, EventResponse resp) 
          throws PortletException ,IOException {

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/java/basic/portlet/PortletConfigPortlet.java
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/java/basic/portlet/PortletConfigPortlet.java b/PortletV3Demo/src/main/java/basic/portlet/PortletConfigPortlet.java
index af1c1dc..4aaf5cd 100644
--- a/PortletV3Demo/src/main/java/basic/portlet/PortletConfigPortlet.java
+++ b/PortletV3Demo/src/main/java/basic/portlet/PortletConfigPortlet.java
@@ -18,10 +18,11 @@
 
 package basic.portlet;
 
-import static basic.portlet.Constants.*;
+import static basic.portlet.Constants.ATTRIB_PMS;
+import static basic.portlet.Constants.ATTRIB_PRPS;
+import static basic.portlet.Constants.ATTRIB_WS;
 
 import java.io.IOException;
-import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Map;

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/java/basic/portlet/ResourcePortlet.java
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/java/basic/portlet/ResourcePortlet.java b/PortletV3Demo/src/main/java/basic/portlet/ResourcePortlet.java
index f8bbbdd..64829af 100644
--- a/PortletV3Demo/src/main/java/basic/portlet/ResourcePortlet.java
+++ b/PortletV3Demo/src/main/java/basic/portlet/ResourcePortlet.java
@@ -70,6 +70,7 @@ public class ResourcePortlet extends GenericPortlet {
    /* (non-Javadoc)
     * @see javax.portlet.GenericPortlet#serveResource(javax.portlet.ResourceRequest, javax.portlet.ResourceResponse)
     */
+   @SuppressWarnings("deprecation")
    @Override
    public void serveResource(ResourceRequest req, ResourceResponse resp)
          throws PortletException, IOException {

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/java/basic/portlet/UrlAPTestPortlet.java
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/java/basic/portlet/UrlAPTestPortlet.java b/PortletV3Demo/src/main/java/basic/portlet/UrlAPTestPortlet.java
index d05457f..bf5913c 100644
--- a/PortletV3Demo/src/main/java/basic/portlet/UrlAPTestPortlet.java
+++ b/PortletV3Demo/src/main/java/basic/portlet/UrlAPTestPortlet.java
@@ -35,7 +35,7 @@ import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
 import javax.portlet.GenericPortlet;
 
-import static javax.portlet.MimeResponse.ParameterCopyOption.*;
+import static javax.portlet.MimeResponse.Copy.*;
 
 import javax.portlet.ActionURL;
 import javax.portlet.MutableActionParameters;
@@ -148,36 +148,36 @@ public class UrlAPTestPortlet extends GenericPortlet {
       TreeMap<String, String> urls = new TreeMap<String, String>();
       MutableRenderParameters mrp = req.getRenderParameters().clone();
       
-      ActionURL aurl = resp.createActionURL(COPY_NO_PARAMETERS);
+      ActionURL aurl = resp.createActionURL(NONE);
       urls.put(" 1 No render parameters", aurl.toString());
 
-      aurl = resp.createActionURL(COPY_NO_PARAMETERS);
+      aurl = resp.createActionURL(NONE);
       aurl.getRenderParameters().set(mrp);
       urls.put(" 2 Copy with req clone", aurl.toString());
 
-      aurl = resp.createActionURL(COPY_NO_PARAMETERS);
+      aurl = resp.createActionURL(NONE);
       mrp.setValue(name1, val1);
       aurl.getRenderParameters().set(mrp);
       urls.put(" 3 Copy with req clone, 1 addl", aurl.toString());
       
-      aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+      aurl = resp.createActionURL(ALL);
       aurl.getRenderParameters().clearPrivate();
       urls.put(" 4 Clear private", aurl.toString());
       
-      aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+      aurl = resp.createActionURL(ALL);
       aurl.getRenderParameters().clearPublic();;
       urls.put(" 5 Clear public", aurl.toString());
       
-      aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+      aurl = resp.createActionURL(ALL);
       aurl.getRenderParameters().clear();
       urls.put(" 6 Clear all", aurl.toString());
       
-      aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+      aurl = resp.createActionURL(ALL);
       mrp = aurl.getRenderParameters().clone();
       logger.fine("MRP from request # entries: " + mrp.size());
       
       {
-         aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+         aurl = resp.createActionURL(ALL);
          MutableRenderParameters mrp2 = mrp.clone();
          mrp2.clearPrivate();
          logger.fine("MRP2 afer clearPrivate # entries: " + mrp2.size());
@@ -186,7 +186,7 @@ public class UrlAPTestPortlet extends GenericPortlet {
       }
       
       {
-         aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+         aurl = resp.createActionURL(ALL);
          MutableRenderParameters mrp2 = mrp.clone();
          mrp2.clearPublic();
          logger.fine("MRP2 afer clearPublic # entries: " + mrp2.size());
@@ -195,7 +195,7 @@ public class UrlAPTestPortlet extends GenericPortlet {
       }
       
       {
-         aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+         aurl = resp.createActionURL(ALL);
          MutableRenderParameters mrp2 = mrp.clone();
          mrp2.clear();
          logger.fine("MRP2 afer clear # entries: " + mrp2.size());
@@ -204,7 +204,7 @@ public class UrlAPTestPortlet extends GenericPortlet {
       }
       
       {
-         aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+         aurl = resp.createActionURL(ALL);
          MutableRenderParameters mrp2 = mrp.clone();
          mrp2.clear();
          mrp2.setValue(name1, val1);
@@ -214,7 +214,7 @@ public class UrlAPTestPortlet extends GenericPortlet {
       }
       
       {
-         aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+         aurl = resp.createActionURL(ALL);
          MutableRenderParameters mrp2 = mrp.clone();
          mrp2.clear();
          mrp2.setValue(name1, val1);
@@ -225,7 +225,7 @@ public class UrlAPTestPortlet extends GenericPortlet {
       }
       
       {
-         aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+         aurl = resp.createActionURL(ALL);
          MutableRenderParameters mrp2 = mrp.clone();
          mrp2.clear();
          mrp2.setValue(name1, val1);
@@ -244,23 +244,23 @@ public class UrlAPTestPortlet extends GenericPortlet {
       urls = new TreeMap<String, String>();
       mrp = req.getRenderParameters().clone();
       
-      aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+      aurl = resp.createActionURL(ALL);
       urls.put(" 1 No action parameters", aurl.toString());
       
-      aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+      aurl = resp.createActionURL(ALL);
       aurl.getActionParameters().setValue(name1, val1);
       aurl.getActionParameters().setValues(name2, new String[]{val2});
       aurl.getActionParameters().clear();
       urls.put(" 2 set & clear action params", aurl.toString());
       
-      aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+      aurl = resp.createActionURL(ALL);
       MutableActionParameters map = aurl.getActionParameters().clone();
       map.setValue(name3, val3);
       map.setValues(name1, new String[]{val1, val2});
       logger.fine("MAP from request # entries: " + map.size());
       
       {
-         aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+         aurl = resp.createActionURL(ALL);
          MutableActionParameters map2 = map.clone();
          map2.clear();
          logger.fine("MAP2 afer clear # entries: " + map2.size());
@@ -269,7 +269,7 @@ public class UrlAPTestPortlet extends GenericPortlet {
       }
       
       {
-         aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+         aurl = resp.createActionURL(ALL);
          MutableActionParameters map2 = map.clone();
          logger.fine("MAP2 afer adding 2: # entries: " + map2.size());
          aurl.getActionParameters().add(map2);
@@ -277,7 +277,7 @@ public class UrlAPTestPortlet extends GenericPortlet {
       }
       
       {
-         aurl = resp.createActionURL(COPY_RENDER_PARAMETERS);
+         aurl = resp.createActionURL(ALL);
          MutableActionParameters map2 = map.clone();
          map2.clear();
          map2.setValue(name1, val1);

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/java/basic/portlet/UrlRPTestPortlet.java
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/java/basic/portlet/UrlRPTestPortlet.java b/PortletV3Demo/src/main/java/basic/portlet/UrlRPTestPortlet.java
index 85e5e44..8985255 100644
--- a/PortletV3Demo/src/main/java/basic/portlet/UrlRPTestPortlet.java
+++ b/PortletV3Demo/src/main/java/basic/portlet/UrlRPTestPortlet.java
@@ -18,10 +18,21 @@
 
 package basic.portlet;
 
-import static basic.portlet.Constants.*;
+import static basic.portlet.Constants.ATTRIB_PARAMS;
+import static basic.portlet.Constants.ATTRIB_RENURLS;
+import static basic.portlet.Constants.PARAM_AURLCOPY;
+import static basic.portlet.Constants.PARAM_AURLCOPY_ALL;
+import static basic.portlet.Constants.PARAM_NAME;
+import static basic.portlet.Constants.PARAM_REMTYPE;
+import static basic.portlet.Constants.PARAM_REMTYPE_REM;
+import static basic.portlet.Constants.PARAM_REMTYPE_SET;
+import static basic.portlet.Constants.PARAM_SETTYPE;
+import static basic.portlet.Constants.PARAM_SETTYPE_VARRAY;
+import static basic.portlet.Constants.PARAM_VALUES;
+import static javax.portlet.MimeResponse.Copy.ALL;
+import static javax.portlet.MimeResponse.Copy.NONE;
 
 import java.io.IOException;
-import java.io.PrintWriter;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Enumeration;
@@ -35,9 +46,6 @@ import javax.portlet.ActionParameters;
 import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
 import javax.portlet.GenericPortlet;
-
-import static javax.portlet.MimeResponse.ParameterCopyOption.*;
-
 import javax.portlet.MutableRenderParameters;
 import javax.portlet.PortletException;
 import javax.portlet.PortletRequestDispatcher;
@@ -45,11 +53,8 @@ import javax.portlet.RenderParameters;
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
 import javax.portlet.RenderURL;
-import javax.portlet.ResourceParameters;
 import javax.portlet.ResourceRequest;
 import javax.portlet.ResourceResponse;
-import javax.portlet.ResourceURL;
-import static javax.portlet.ResourceURL.*;
 
 
 /**
@@ -151,36 +156,36 @@ public class UrlRPTestPortlet extends GenericPortlet {
       TreeMap<String, String> urls = new TreeMap<String, String>();
       MutableRenderParameters mrp = req.getRenderParameters().clone();
       
-      RenderURL rurl = resp.createRenderURL(COPY_NO_PARAMETERS);
+      RenderURL rurl = resp.createRenderURL(NONE);
       urls.put(" 1 No render parameters", rurl.toString());
 
-      rurl = resp.createRenderURL(COPY_NO_PARAMETERS);
+      rurl = resp.createRenderURL(NONE);
       rurl.getRenderParameters().set(mrp);
       urls.put(" 2 Copy with req clone", rurl.toString());
 
-      rurl = resp.createRenderURL(COPY_NO_PARAMETERS);
+      rurl = resp.createRenderURL(NONE);
       mrp.setValue(name1, val1);
       rurl.getRenderParameters().set(mrp);
       urls.put(" 3 Copy with req clone, 1 addl", rurl.toString());
       
-      rurl = resp.createRenderURL(COPY_RENDER_PARAMETERS);
+      rurl = resp.createRenderURL(ALL);
       rurl.getRenderParameters().clearPrivate();
       urls.put(" 4 Clear private", rurl.toString());
       
-      rurl = resp.createRenderURL(COPY_RENDER_PARAMETERS);
+      rurl = resp.createRenderURL(ALL);
       rurl.getRenderParameters().clearPublic();;
       urls.put(" 5 Clear public", rurl.toString());
       
-      rurl = resp.createRenderURL(COPY_RENDER_PARAMETERS);
+      rurl = resp.createRenderURL(ALL);
       rurl.getRenderParameters().clear();
       urls.put(" 6 Clear all", rurl.toString());
       
-      rurl = resp.createRenderURL(COPY_RENDER_PARAMETERS);
+      rurl = resp.createRenderURL(ALL);
       mrp = rurl.getRenderParameters().clone();
       logger.fine("MRP from request # entries: " + mrp.getNames().size());
       
       {
-         rurl = resp.createRenderURL(COPY_RENDER_PARAMETERS);
+         rurl = resp.createRenderURL(ALL);
          MutableRenderParameters mrp2 = mrp.clone();
          mrp2.clearPrivate();
          logger.fine("MRP2 afer clearPrivate # entries: " + mrp2.getNames().size());
@@ -189,7 +194,7 @@ public class UrlRPTestPortlet extends GenericPortlet {
       }
       
       {
-         rurl = resp.createRenderURL(COPY_RENDER_PARAMETERS);
+         rurl = resp.createRenderURL(ALL);
          MutableRenderParameters mrp2 = mrp.clone();
          mrp2.clearPublic();
          logger.fine("MRP2 afer clearPublic # entries: " + mrp2.getNames().size());
@@ -198,7 +203,7 @@ public class UrlRPTestPortlet extends GenericPortlet {
       }
       
       {
-         rurl = resp.createRenderURL(COPY_RENDER_PARAMETERS);
+         rurl = resp.createRenderURL(ALL);
          MutableRenderParameters mrp2 = mrp.clone();
          mrp2.clear();
          logger.fine("MRP2 afer clear # entries: " + mrp2.getNames().size());
@@ -207,7 +212,7 @@ public class UrlRPTestPortlet extends GenericPortlet {
       }
       
       {
-         rurl = resp.createRenderURL(COPY_RENDER_PARAMETERS);
+         rurl = resp.createRenderURL(ALL);
          MutableRenderParameters mrp2 = mrp.clone();
          mrp2.clear();
          mrp2.setValue(name1, val1);
@@ -217,7 +222,7 @@ public class UrlRPTestPortlet extends GenericPortlet {
       }
       
       {
-         rurl = resp.createRenderURL(COPY_RENDER_PARAMETERS);
+         rurl = resp.createRenderURL(ALL);
          MutableRenderParameters mrp2 = mrp.clone();
          mrp2.clear();
          mrp2.setValue(name1, val1);
@@ -228,7 +233,7 @@ public class UrlRPTestPortlet extends GenericPortlet {
       }
       
       {
-         rurl = resp.createRenderURL(COPY_RENDER_PARAMETERS);
+         rurl = resp.createRenderURL(ALL);
          MutableRenderParameters mrp2 = mrp.clone();
          mrp2.clear();
          mrp2.setValue(name1, val1);

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/java/basic/portlet/UrlTestPortlet.java
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/java/basic/portlet/UrlTestPortlet.java b/PortletV3Demo/src/main/java/basic/portlet/UrlTestPortlet.java
index 82e1b3e..8e62c51 100644
--- a/PortletV3Demo/src/main/java/basic/portlet/UrlTestPortlet.java
+++ b/PortletV3Demo/src/main/java/basic/portlet/UrlTestPortlet.java
@@ -36,7 +36,7 @@ import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
 import javax.portlet.GenericPortlet;
 
-import static javax.portlet.MimeResponse.ParameterCopyOption.*;
+import static javax.portlet.MimeResponse.Copy.*;
 
 import javax.portlet.MutableRenderParameters;
 import javax.portlet.PortletException;
@@ -144,26 +144,26 @@ public class UrlTestPortlet extends GenericPortlet {
       
       TreeMap<String, String> urls = new TreeMap<String, String>();
       
-      RenderURL rurl = resp.createRenderURL(COPY_NO_PARAMETERS);
+      RenderURL rurl = resp.createRenderURL(NONE);
       urls.put(" 1 Copy no params, 0 new", rurl.toString());
 
-      rurl = resp.createRenderURL(COPY_PUBLIC_RENDER_PARAMETERS);
+      rurl = resp.createRenderURL(PUBLIC);
       urls.put(" 2 Copy public params, 0 new", rurl.toString());
       
-      rurl = resp.createRenderURL(COPY_RENDER_PARAMETERS);
+      rurl = resp.createRenderURL(ALL);
       urls.put(" 3 Copy all params, 0 new", rurl.toString());
       
-      rurl = resp.createRenderURL(COPY_NO_PARAMETERS);
+      rurl = resp.createRenderURL(NONE);
       rurl.getRenderParameters().setValue(name1, val1);
       rurl.getRenderParameters().setValue(name2, val2);
       urls.put(" 4 Copy no params, 2 new", rurl.toString());
 
-      rurl = resp.createRenderURL(COPY_PUBLIC_RENDER_PARAMETERS);
+      rurl = resp.createRenderURL(PUBLIC);
       rurl.getRenderParameters().setValue(name1, val1);
       rurl.getRenderParameters().setValue(name2, val2);
       urls.put(" 5 Copy public params, 2 new", rurl.toString());
       
-      rurl = resp.createRenderURL(COPY_RENDER_PARAMETERS);
+      rurl = resp.createRenderURL(ALL);
       rurl.getRenderParameters().setValue(name1, val1);
       rurl.getRenderParameters().setValue(name2, val2);
       urls.put(" 6 Copy all params, 2 new", rurl.toString());

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-ascp.jsp
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-ascp.jsp b/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-ascp.jsp
index ba4c3af..8c2a458 100644
--- a/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-ascp.jsp
+++ b/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-ascp.jsp
@@ -20,8 +20,8 @@ limitations under the License.
 <%@ taglib uri="http://xmlns.jcp.org/portlet_3_0"  prefix="portlet" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ page import="java.io.*,java.util.*,javax.portlet.*" %>
-<%@ page import="javax.portlet.MimeResponse.ParameterCopyOption" %>
-<%@ page import="static javax.portlet.MimeResponse.ParameterCopyOption.*" %>
+<%@ page import="javax.portlet.MimeResponse.Copy" %>
+<%@ page import="static javax.portlet.MimeResponse.Copy.*" %>
 <%@ page import="static basic.portlet.Constants.*" %>
 
 <portlet:defineObjects />
@@ -56,7 +56,7 @@ and other URLs that are marked as authenticated.</p>
       out.println("'>Resource URL, status code = " + sc + "</a></p>");
    }
    
-   RenderURL renurl = renderResponse.createRenderURL(COPY_RENDER_PARAMETERS);
+   RenderURL renurl = renderResponse.createRenderURL(ALL);
    renurl.setAuthenticated(true);
    out.print("<p><a href='");
    out.print(renurl.toString());
@@ -68,7 +68,7 @@ and other URLs that are marked as authenticated.</p>
    out.print(resurl.toString());
    out.println("'>Resource URL with setAuthenticated(true)</a></p>");
    
-   ActionURL acturl = renderResponse.createActionURL(COPY_RENDER_PARAMETERS);
+   ActionURL acturl = renderResponse.createActionURL(ALL);
    acturl.setAuthenticated(true);
    StringBuilder txt = new StringBuilder();
    txt.append("<form  METHOD='POST' ACTION='").append(acturl.toString()).append("'>")

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-long.jsp
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-long.jsp b/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-long.jsp
index 18036fd..e12f0b2 100644
--- a/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-long.jsp
+++ b/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-long.jsp
@@ -20,8 +20,8 @@ limitations under the License.
 <%@ taglib uri="http://xmlns.jcp.org/portlet_3_0"  prefix="portlet" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ page import="java.io.*,java.util.*,javax.portlet.*" %>
-<%@ page import="javax.portlet.MimeResponse.ParameterCopyOption" %>
-<%@ page import="static javax.portlet.MimeResponse.ParameterCopyOption.*" %>
+<%@ page import="javax.portlet.MimeResponse.Copy" %>
+<%@ page import="static javax.portlet.MimeResponse.Copy.*" %>
 <%@ page import="static basic.portlet.Constants.*" %>
 
 <portlet:defineObjects />
@@ -56,7 +56,7 @@ limitations under the License.
       if (lineNum > lines.size()) {
          lineNum = lines.size();
       }
-      RenderURL rurl = renderResponse.createRenderURL(COPY_RENDER_PARAMETERS);
+      RenderURL rurl = renderResponse.createRenderURL(ALL);
       rurl.setFragmentIdentifier(frag);
       out.print("<p><a href='");
       out.print(rurl.toString());

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-ptp.jsp
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-ptp.jsp b/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-ptp.jsp
index 9c1ee22..43152f7 100644
--- a/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-ptp.jsp
+++ b/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-ptp.jsp
@@ -21,7 +21,7 @@ limitations under the License.
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ page import="java.io.*,java.util.*,javax.portlet.*" %>
 <%@ page import="static basic.portlet.Constants.*" %>
-<%@ page import="static javax.portlet.MimeResponse.ParameterCopyOption.*" %>
+<%@ page import="static javax.portlet.MimeResponse.Copy.*" %>
 
 <portlet:defineObjects />
 
@@ -52,7 +52,7 @@ Leaving the value field empty will set the parameter to an array containing a si
 <p><%=prpStr.toString() %></p>
 <p><hr/></p>
 <%
-   ActionURL aurl = renderResponse.createActionURL(COPY_RENDER_PARAMETERS);
+   ActionURL aurl = renderResponse.createActionURL(ALL);
 %>
 <FORM id='<portlet:namespace/>-setParams' METHOD='POST' ACTION='<%=aurl.toString() %>' enctype='application/x-www-form-urlencoded' accept-charset='UTF-8'>
    <table><tr><td align='left'>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-uaptp.jsp
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-uaptp.jsp b/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-uaptp.jsp
index 56a841b..ee621d1 100644
--- a/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-uaptp.jsp
+++ b/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-uaptp.jsp
@@ -20,8 +20,8 @@ limitations under the License.
 <%@ taglib uri="http://xmlns.jcp.org/portlet_3_0"  prefix="portlet" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ page import="java.io.*,java.util.*,javax.portlet.*" %>
-<%@ page import="javax.portlet.MimeResponse.ParameterCopyOption" %>
-<%@ page import="static javax.portlet.MimeResponse.ParameterCopyOption.*" %>
+<%@ page import="javax.portlet.MimeResponse.Copy" %>
+<%@ page import="static javax.portlet.MimeResponse.Copy.*" %>
 <%@ page import="static basic.portlet.Constants.*" %>
 
 <portlet:defineObjects />
@@ -35,13 +35,13 @@ limitations under the License.
 
    String aurlCopy = renderRequest.getRenderParameters().getValue(PARAM_AURLCOPY);
    aurlCopy = (aurlCopy == null) ? PARAM_AURLCOPY_ALL : aurlCopy;
-   ParameterCopyOption pco = COPY_NO_PARAMETERS;
+   Copy pco = NONE;
    String acText = "Copy no parameters";
    if (aurlCopy.equals(PARAM_AURLCOPY_ALL)) {
-      pco = COPY_RENDER_PARAMETERS;
+      pco = ALL;
       acText = "Copy render parameters";
    } else if (aurlCopy.equals(PARAM_AURLCOPY_PUBLIC)) {
-      pco = COPY_PUBLIC_RENDER_PARAMETERS;
+      pco = PUBLIC;
       acText = "Copy public parameters";
    }
    ActionURL aurl = renderResponse.createActionURL(pco);

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-urptp.jsp
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-urptp.jsp b/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-urptp.jsp
index 615c38d..a02ce0e 100644
--- a/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-urptp.jsp
+++ b/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-urptp.jsp
@@ -20,8 +20,8 @@ limitations under the License.
 <%@ taglib uri="http://xmlns.jcp.org/portlet_3_0"  prefix="portlet" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ page import="java.io.*,java.util.*,javax.portlet.*" %>
-<%@ page import="javax.portlet.MimeResponse.ParameterCopyOption" %>
-<%@ page import="static javax.portlet.MimeResponse.ParameterCopyOption.*" %>
+<%@ page import="javax.portlet.MimeResponse.Copy" %>
+<%@ page import="static javax.portlet.MimeResponse.Copy.*" %>
 <%@ page import="static basic.portlet.Constants.*" %>
 
 <portlet:defineObjects />
@@ -35,13 +35,13 @@ limitations under the License.
 
    String aurlCopy = renderRequest.getRenderParameters().getValue(PARAM_AURLCOPY);
    aurlCopy = (aurlCopy == null) ? PARAM_AURLCOPY_ALL : aurlCopy;
-   ParameterCopyOption pco = COPY_NO_PARAMETERS;
+   Copy pco = NONE;
    String acText = "Copy no parameters";
    if (aurlCopy.equals(PARAM_AURLCOPY_ALL)) {
-      pco = COPY_RENDER_PARAMETERS;
+      pco = ALL;
       acText = "Copy render parameters";
    } else if (aurlCopy.equals(PARAM_AURLCOPY_PUBLIC)) {
-      pco = COPY_PUBLIC_RENDER_PARAMETERS;
+      pco = PUBLIC;
       acText = "Copy public parameters";
    }
    ActionURL aurl = renderResponse.createActionURL(pco);

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-utp.jsp
----------------------------------------------------------------------
diff --git a/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-utp.jsp b/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-utp.jsp
index fa8865d..02fd60b 100644
--- a/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-utp.jsp
+++ b/PortletV3Demo/src/main/webapp/WEB-INF/jsp/view-utp.jsp
@@ -20,8 +20,8 @@ limitations under the License.
 <%@ taglib uri="http://xmlns.jcp.org/portlet_3_0"  prefix="portlet" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ page import="java.io.*,java.util.*,javax.portlet.*" %>
-<%@ page import="javax.portlet.MimeResponse.ParameterCopyOption" %>
-<%@ page import="static javax.portlet.MimeResponse.ParameterCopyOption.*" %>
+<%@ page import="javax.portlet.MimeResponse.Copy" %>
+<%@ page import="static javax.portlet.MimeResponse.Copy.*" %>
 <%@ page import="static basic.portlet.Constants.*" %>
 
 <portlet:defineObjects />
@@ -35,13 +35,13 @@ limitations under the License.
 
    String aurlCopy = renderRequest.getRenderParameters().getValue(PARAM_AURLCOPY);
    aurlCopy = (aurlCopy == null) ? PARAM_AURLCOPY_ALL : aurlCopy;
-   ParameterCopyOption pco = COPY_NO_PARAMETERS;
+   Copy pco = NONE;
    String acText = "Copy no parameters";
    if (aurlCopy.equals(PARAM_AURLCOPY_ALL)) {
-      pco = COPY_RENDER_PARAMETERS;
+      pco = ALL;
       acText = "Copy render parameters";
    } else if (aurlCopy.equals(PARAM_AURLCOPY_PUBLIC)) {
-      pco = COPY_PUBLIC_RENDER_PARAMETERS;
+      pco = PUBLIC;
       acText = "Copy public parameters";
    }
    ActionURL aurl = renderResponse.createActionURL(pco);

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/pluto-container-driver-api/src/main/java/org/apache/pluto/container/driver/PortletServlet3.java
----------------------------------------------------------------------
diff --git a/pluto-container-driver-api/src/main/java/org/apache/pluto/container/driver/PortletServlet3.java b/pluto-container-driver-api/src/main/java/org/apache/pluto/container/driver/PortletServlet3.java
index 5f1f013..804f316 100644
--- a/pluto-container-driver-api/src/main/java/org/apache/pluto/container/driver/PortletServlet3.java
+++ b/pluto-container-driver-api/src/main/java/org/apache/pluto/container/driver/PortletServlet3.java
@@ -47,6 +47,7 @@ import org.apache.pluto.container.FilterManager;
 import org.apache.pluto.container.PortletContainerException;
 import org.apache.pluto.container.PortletInvokerService;
 import org.apache.pluto.container.PortletRequestContext;
+import org.apache.pluto.container.PortletResourceRequestContext;
 import org.apache.pluto.container.PortletResponseContext;
 import org.apache.pluto.container.PortletWindow;
 import org.apache.pluto.container.om.portlet.PortletDefinition;
@@ -352,6 +353,15 @@ public class PortletServlet3 extends HttpServlet
             else if (methodId == PortletInvokerService.METHOD_RESOURCE)
             {
                 ResourceRequest resourceRequest = (ResourceRequest) portletRequest;
+
+                // if pageState != null, we're dealing with a Partial Action request, so
+                // store the page state string as a request attribute
+                PortletResourceRequestContext rc = (PortletResourceRequestContext) requestContext;
+                String ps = rc.getPageState();
+                if (ps != null) {
+                   resourceRequest.setAttribute(ResourceRequest.PAGE_STATE, ps);
+                }
+
                 ResourceResponse resourceResponse = (ResourceResponse) portletResponse;
                 filterManager.processFilter(resourceRequest, resourceResponse,
                         resourceServingPortlet, portletContext);

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/pluto-container/src/main/java/org/apache/pluto/container/impl/ActionResponseImpl.java
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/java/org/apache/pluto/container/impl/ActionResponseImpl.java b/pluto-container/src/main/java/org/apache/pluto/container/impl/ActionResponseImpl.java
index b8ad5ba..a43e309 100644
--- a/pluto-container/src/main/java/org/apache/pluto/container/impl/ActionResponseImpl.java
+++ b/pluto-container/src/main/java/org/apache/pluto/container/impl/ActionResponseImpl.java
@@ -1,98 +1,107 @@
-/*
- * 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.pluto.container.impl;
-
-import java.io.IOException;
-
-import javax.portlet.ActionResponse;
-
-import org.apache.pluto.container.PortletActionResponseContext;
-import org.apache.pluto.container.ResourceURLProvider;
-import org.apache.pluto.container.util.ArgumentUtility;
-
-public class ActionResponseImpl extends StateAwareResponseImpl implements ActionResponse
-{
-    private boolean stateChanged;
-    protected boolean redirected;
-    
-    public ActionResponseImpl(PortletActionResponseContext responseContext)
-    {
-        super(responseContext);
-    }
-
-    protected void checkSetRedirected()
-    {
-        if (stateChanged)
-        {
-            throw new IllegalStateException("sendRedirect no longer allowed after navigational state changes");
-        }
-        if (redirected)
-        {
-            throw new IllegalStateException("sendRedirect already called");
-        }
-        redirected = true;
-    }
-    
-    protected void checkSetStateChanged()
-    {
-        if (redirected)
-        {
-            throw new IllegalStateException("State change no longer allowed after a sendRedirect");
-        }
-        stateChanged = true;
-    }
-    
-    protected String getRedirectLocation(String location)
-    {
-        ArgumentUtility.validateNotEmpty("location", location);
-        ResourceURLProvider provider = getResponseContext().getResourceURLProvider();
-
-        if (location.indexOf("://") != -1)
-        {
-            provider.setAbsoluteURL(location);
-        } 
-        else 
-        {
-            provider.setFullPath(location);
-        }
-        location = getServletResponse().encodeRedirectURL(provider.toString());
-        if (location.indexOf("/") == -1)
-        {
-            throw new IllegalArgumentException("There is a relative path given, an IllegalArgumentException must be thrown.");
-        }
-        return location;
-    }
-    
-    public void sendRedirect(String location) throws IOException
-    {
-        location = getRedirectLocation(location);
-        checkSetRedirected();
-        ((PortletActionResponseContext)getResponseContext()).setRedirect(location);
-    }
-    
-	public void sendRedirect(String location, String renderUrlParamName) throws IOException 
-	{
-        ArgumentUtility.validateNotEmpty("renderUrlParamName", renderUrlParamName);
-        location = getRedirectLocation(location);
-        if (!redirected)
-        {
-            stateChanged = false;
-        }
-        checkSetRedirected();
-        ((PortletActionResponseContext)getResponseContext()).setRedirect(location, renderUrlParamName);
-	}
-}
+/*
+ * 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.pluto.container.impl;
+
+import java.io.IOException;
+
+import javax.portlet.ActionResponse;
+import javax.portlet.MimeResponse.Copy;
+import javax.portlet.RenderURL;
+
+import org.apache.pluto.container.PortletActionResponseContext;
+import org.apache.pluto.container.ResourceURLProvider;
+import org.apache.pluto.container.util.ArgumentUtility;
+
+public class ActionResponseImpl extends StateAwareResponseImpl implements ActionResponse
+{
+    private boolean stateChanged;
+    protected boolean redirected;
+    
+    public ActionResponseImpl(PortletActionResponseContext responseContext)
+    {
+        super(responseContext);
+    }
+
+    protected void checkSetRedirected()
+    {
+        if (stateChanged)
+        {
+            throw new IllegalStateException("sendRedirect no longer allowed after navigational state changes");
+        }
+        if (redirected)
+        {
+            throw new IllegalStateException("sendRedirect already called");
+        }
+        redirected = true;
+    }
+    
+    protected void checkSetStateChanged()
+    {
+        if (redirected)
+        {
+            throw new IllegalStateException("State change no longer allowed after a sendRedirect");
+        }
+        stateChanged = true;
+    }
+    
+    protected String getRedirectLocation(String location)
+    {
+        ArgumentUtility.validateNotEmpty("location", location);
+        ResourceURLProvider provider = getResponseContext().getResourceURLProvider();
+
+        if (location.indexOf("://") != -1)
+        {
+            provider.setAbsoluteURL(location);
+        } 
+        else 
+        {
+            provider.setFullPath(location);
+        }
+        location = getServletResponse().encodeRedirectURL(provider.toString());
+        if (location.indexOf("/") == -1)
+        {
+            throw new IllegalArgumentException("There is a relative path given, an IllegalArgumentException must be thrown.");
+        }
+        return location;
+    }
+    
+    public void sendRedirect(String location) throws IOException
+    {
+        location = getRedirectLocation(location);
+        checkSetRedirected();
+        ((PortletActionResponseContext)getResponseContext()).setRedirect(location);
+    }
+    
+	public void sendRedirect(String location, String renderUrlParamName) throws IOException 
+	{
+        ArgumentUtility.validateNotEmpty("renderUrlParamName", renderUrlParamName);
+        location = getRedirectLocation(location);
+        if (!redirected)
+        {
+            stateChanged = false;
+        }
+        checkSetRedirected();
+        ((PortletActionResponseContext)getResponseContext()).setRedirect(location, renderUrlParamName);
+	}
+
+   @Override
+   public RenderURL getRedirectURL(Copy option) throws IllegalStateException {
+      // TODO: implement
+      //return new RenderURLImpl(responseContext, option);
+      return null;
+   }
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/pluto-container/src/main/java/org/apache/pluto/container/impl/ActionURLImpl.java
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/java/org/apache/pluto/container/impl/ActionURLImpl.java b/pluto-container/src/main/java/org/apache/pluto/container/impl/ActionURLImpl.java
index 61923b5..6c9f6fd 100644
--- a/pluto-container/src/main/java/org/apache/pluto/container/impl/ActionURLImpl.java
+++ b/pluto-container/src/main/java/org/apache/pluto/container/impl/ActionURLImpl.java
@@ -1,7 +1,7 @@
 package org.apache.pluto.container.impl;
 
 import javax.portlet.ActionURL;
-import javax.portlet.MimeResponse.ParameterCopyOption;
+import javax.portlet.MimeResponse.Copy;
 import javax.portlet.MutableActionParameters;
 
 import org.apache.pluto.container.PortletMimeResponseContext;
@@ -35,7 +35,7 @@ public class ActionURLImpl extends PortletURLImpl implements ActionURL {
     * @param responseContext
     * @param urlProvider
     */
-   public ActionURLImpl(PortletMimeResponseContext responseContext, ParameterCopyOption copy) {
+   public ActionURLImpl(PortletMimeResponseContext responseContext, Copy copy) {
       super(responseContext, 
             responseContext.getPortletURLProvider(PortletURLProvider.TYPE.ACTION), copy);
    }

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/pluto-container/src/main/java/org/apache/pluto/container/impl/BaseURLImpl.java
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/java/org/apache/pluto/container/impl/BaseURLImpl.java b/pluto-container/src/main/java/org/apache/pluto/container/impl/BaseURLImpl.java
index a5496ef..b1e2b89 100644
--- a/pluto-container/src/main/java/org/apache/pluto/container/impl/BaseURLImpl.java
+++ b/pluto-container/src/main/java/org/apache/pluto/container/impl/BaseURLImpl.java
@@ -29,7 +29,7 @@ import java.util.Set;
 
 import javax.portlet.ActionURL;
 import javax.portlet.BaseURL;
-import javax.portlet.MimeResponse.ParameterCopyOption;
+import javax.portlet.MimeResponse.Copy;
 import javax.portlet.PortalContext;
 import javax.portlet.PortletMode;
 import javax.portlet.PortletSecurityException;
@@ -83,16 +83,16 @@ public abstract class BaseURLImpl implements BaseURL {
    }
 
    public BaseURLImpl(PortletMimeResponseContext responseContext,
-         PortletURLProvider portletURLProvider, ParameterCopyOption copy) {
+         PortletURLProvider portletURLProvider, Copy copy) {
       this(responseContext, portletURLProvider);
       
       switch (copy) {
-      case COPY_NO_PARAMETERS:
+      case NONE:
          urlProvider.clearParameters(windowId, PortletURLProvider.ParamType.PUBLIC);
-      case COPY_PUBLIC_RENDER_PARAMETERS:
+      case PUBLIC:
          urlProvider.clearParameters(windowId, PortletURLProvider.ParamType.RENDER);
          break;
-      case COPY_RENDER_PARAMETERS:
+      case ALL:
       }
    }
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/pluto-container/src/main/java/org/apache/pluto/container/impl/MimeResponseImpl.java
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/java/org/apache/pluto/container/impl/MimeResponseImpl.java b/pluto-container/src/main/java/org/apache/pluto/container/impl/MimeResponseImpl.java
index 1b688ac..8958cf9 100644
--- a/pluto-container/src/main/java/org/apache/pluto/container/impl/MimeResponseImpl.java
+++ b/pluto-container/src/main/java/org/apache/pluto/container/impl/MimeResponseImpl.java
@@ -26,7 +26,7 @@ import java.util.Locale;
 import javax.portlet.CacheControl;
 import javax.portlet.MimeResponse;
 
-import static javax.portlet.MimeResponse.ParameterCopyOption.*;
+import static javax.portlet.MimeResponse.Copy.*;
 
 import javax.portlet.RenderURL;
 import javax.portlet.ActionURL;
@@ -75,19 +75,19 @@ public class MimeResponseImpl extends PortletResponseImpl implements
 
    @SuppressWarnings("unchecked")
    public ActionURL createActionURL() {
-      return new ActionURLImpl(responseContext, COPY_PUBLIC_RENDER_PARAMETERS);
+      return new ActionURLImpl(responseContext, PUBLIC);
    }
 
    @SuppressWarnings("unchecked")
    public RenderURL createRenderURL() {
-      return new RenderURLImpl(responseContext, COPY_PUBLIC_RENDER_PARAMETERS);
+      return new RenderURLImpl(responseContext, PUBLIC);
    }
 
-   public ActionURL createActionURL(ParameterCopyOption option) {
+   public ActionURL createActionURL(Copy option) {
       return new ActionURLImpl(responseContext, option);
    }
 
-   public RenderURL createRenderURL(ParameterCopyOption option) {
+   public RenderURL createRenderURL(Copy option) {
       return new RenderURLImpl(responseContext, option);
    }
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletURLImpl.java
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletURLImpl.java b/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletURLImpl.java
index 5b5a25f..ed76761 100644
--- a/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletURLImpl.java
+++ b/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletURLImpl.java
@@ -21,13 +21,14 @@ import java.util.Enumeration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.portlet.MimeResponse.ParameterCopyOption;
+import javax.portlet.MimeResponse.Copy;
 import javax.portlet.MutableRenderParameters;
 import javax.portlet.PortletMode;
 import javax.portlet.PortletModeException;
 import javax.portlet.PortletURL;
 import javax.portlet.WindowState;
 import javax.portlet.WindowStateException;
+import javax.portlet.annotations.PortletSerializable;
 
 import org.apache.pluto.container.PortletMimeResponseContext;
 import org.apache.pluto.container.PortletResponseContext;
@@ -37,6 +38,7 @@ import org.apache.pluto.container.om.portlet.PortletDefinition;
 import org.apache.pluto.container.om.portlet.Supports;
 import org.apache.pluto.container.util.ArgumentUtility;
 
+
 /**
  * Refactoring to implement class hierarchy among various URL types
  * 
@@ -61,7 +63,7 @@ public abstract class PortletURLImpl extends BaseURLImpl implements PortletURL {
    }
 
    public PortletURLImpl(PortletMimeResponseContext responseContext,
-         PortletURLProvider portletURLProvider, ParameterCopyOption copy) {
+         PortletURLProvider portletURLProvider, Copy copy) {
       super(responseContext, portletURLProvider, copy);
    }
 
@@ -146,4 +148,32 @@ public abstract class PortletURLImpl extends BaseURLImpl implements PortletURL {
    public MutableRenderParameters getRenderParameters() {
       return new MutableRenderParametersImpl(urlProvider, windowId);
    }
+   
+   @SuppressWarnings("unused")
+   @Override
+   public void setBeanParameter(PortletSerializable bean) {
+      if (bean == null) {
+         StringBuilder txt = new StringBuilder(128);
+         txt.append("Required parameter is null.");
+         txt.append(", bean: ").append(bean);
+         LOGGER.info(txt.toString());
+         throw new IllegalArgumentException(txt.toString());
+      }
+      
+      // TODO: must be fixed when the bean implementation is integrated!!
+      String name = "Bob";
+      //String name = PortletStateScopedBeanHolder.getParameterName(bean.getClass());
+      
+      if (name == null) {
+         StringBuilder txt = new StringBuilder(128);
+         txt.append("Given bean is not @PortletStateScoped.");
+         txt.append(", bean: ").append(bean);
+         LOGGER.info(txt.toString());
+         throw new IllegalArgumentException(txt.toString());
+      }
+      
+      getRenderParameters().setValues(name, bean.serialize());
+      
+   }
+
 }

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/pluto-container/src/main/java/org/apache/pluto/container/impl/RenderURLImpl.java
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/java/org/apache/pluto/container/impl/RenderURLImpl.java b/pluto-container/src/main/java/org/apache/pluto/container/impl/RenderURLImpl.java
index 9ddd985..6f99cec 100644
--- a/pluto-container/src/main/java/org/apache/pluto/container/impl/RenderURLImpl.java
+++ b/pluto-container/src/main/java/org/apache/pluto/container/impl/RenderURLImpl.java
@@ -19,7 +19,7 @@
 
 package org.apache.pluto.container.impl;
 
-import javax.portlet.MimeResponse.ParameterCopyOption;
+import javax.portlet.MimeResponse.Copy;
 import javax.portlet.RenderURL;
 
 import org.apache.pluto.container.PortletMimeResponseContext;
@@ -37,7 +37,7 @@ public class RenderURLImpl extends PortletURLImpl implements RenderURL {
     * @param copy 
     * @param urlProvider
     */
-   public RenderURLImpl(PortletMimeResponseContext responseContext, ParameterCopyOption copy) {
+   public RenderURLImpl(PortletMimeResponseContext responseContext, Copy copy) {
       super(responseContext,
             responseContext.getPortletURLProvider(PortletURLProvider.TYPE.RENDER), copy);
    }

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java b/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java
index c75691b..e09ce3a 100644
--- a/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java
+++ b/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java
@@ -81,18 +81,6 @@ public class ResourceRequestImpl extends ClientDataRequestImpl implements Resour
     {
         return getServletRequest().getHeaders("accept");
     }
-
-   /* (non-Javadoc)
-    * @see javax.portlet.ResourceRequest#getPageState()
-    */
-   public String getPageState() {
-      // The page state is provided through the request context.
-      String ps = requestContext.getPageState();
-      if (LOG.isDebugEnabled()) {
-         LOG.debug("ResourceRequest#getPageState called.");
-      }
-      return ps;
-   }
    
    // Debug code - intercept getParameter call & dump all parameters to trace
    @Override

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceResponseImpl.java
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceResponseImpl.java b/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceResponseImpl.java
index ddc13d7..aba15c6 100644
--- a/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceResponseImpl.java
+++ b/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceResponseImpl.java
@@ -16,7 +16,7 @@
  */
 package org.apache.pluto.container.impl;
 
-import static javax.portlet.MimeResponse.ParameterCopyOption.COPY_PUBLIC_RENDER_PARAMETERS;
+import static javax.portlet.MimeResponse.Copy.PUBLIC;
 
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -28,8 +28,6 @@ import javax.portlet.ResourceResponse;
 import javax.portlet.ResourceURL;
 
 import org.apache.pluto.container.PortletResourceResponseContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class ResourceResponseImpl extends MimeResponseImpl implements ResourceResponse
 {
@@ -49,7 +47,7 @@ public class ResourceResponseImpl extends MimeResponseImpl implements ResourceRe
     }
 	
     @Override
-    public ActionURL createActionURL(ParameterCopyOption option) {
+    public ActionURL createActionURL(Copy option) {
        if (ResourceURL.PAGE.equals(requestCacheLevel)) {
           return new ActionURLImpl(responseContext, option);
        } else {
@@ -58,7 +56,7 @@ public class ResourceResponseImpl extends MimeResponseImpl implements ResourceRe
     }
 
     @Override
-    public RenderURL createRenderURL(ParameterCopyOption option) {
+    public RenderURL createRenderURL(Copy option) {
        if (ResourceURL.PAGE.equals(requestCacheLevel)) {
           return new RenderURLImpl(responseContext, option);
        } else {
@@ -66,22 +64,24 @@ public class ResourceResponseImpl extends MimeResponseImpl implements ResourceRe
        }
     }
    
-    @Override
+    @SuppressWarnings("unchecked")
+   @Override
     public ActionURL createActionURL()
     {
         if (ResourceURL.PAGE.equals(requestCacheLevel))
         {
-            return new ActionURLImpl(responseContext, COPY_PUBLIC_RENDER_PARAMETERS);
+            return new ActionURLImpl(responseContext, PUBLIC);
         }
         throw new IllegalStateException("Not allowed to create an ActionURL with current request cacheability level "+requestCacheLevel);
     }
     
-    @Override
+    @SuppressWarnings("unchecked")
+   @Override
     public RenderURL createRenderURL()
     {
         if (ResourceURL.PAGE.equals(requestCacheLevel))
         {
-            return new RenderURLImpl(responseContext, COPY_PUBLIC_RENDER_PARAMETERS);
+            return new RenderURLImpl(responseContext, PUBLIC);
         }
         throw new IllegalStateException("Not allowed to create a RenderURL with current request cacheability level "+requestCacheLevel);
     }

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index debae93..3b22b0e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -356,9 +356,14 @@ TODO: Check if we need all of them. -->
       
       <!-- CDI Library -->
       <dependency>
+         <groupId>javax.enterprise</groupId>
+         <artifactId>cdi-api</artifactId>
+         <version>1.2</version>
+      </dependency>
+      <dependency>
           <groupId>org.jboss.weld.servlet</groupId>
           <artifactId>weld-servlet</artifactId>
-          <version>${}</version>
+          <version>${cdi.version}</version>
       </dependency>      
 
       <!--  CCPP Libraries -->
@@ -543,6 +548,7 @@ TODO: Check if we need all of them. -->
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
+          <version>3.1</version>
           <configuration>
             <source>1.7</source>
             <target>1.7</target>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/portlet-api/pom.xml
----------------------------------------------------------------------
diff --git a/portlet-api/pom.xml b/portlet-api/pom.xml
index 647c050..ef6f28a 100644
--- a/portlet-api/pom.xml
+++ b/portlet-api/pom.xml
@@ -1,98 +1,91 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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
+<!-- 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. $Id: pom.xml 
+   774158 2009-05-13 00:42:04Z ate $ -->
 
-   http://www.apache.org/licenses/LICENSE-2.0
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
+>
 
-  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.
-  
-  $Id: pom.xml 774158 2009-05-13 00:42:04Z ate $
--->
+   <modelVersion>4.0.0</modelVersion>
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <parent>
+      <groupId>org.apache.portals.pluto</groupId>
+      <artifactId>pluto</artifactId>
+      <version>3.0-SNAPSHOT</version>
+   </parent>
 
-  <modelVersion>4.0.0</modelVersion>
+   <artifactId>portlet-api</artifactId>
+   <packaging>bundle</packaging>
+   <name>Java Portlet API V3.0</name>
+   <description>The Java Portlet API version 3.0 developed by the Java Community Process JSR-362 Expert Group.</description>
 
-  <parent>
-    <groupId>org.apache.portals.pluto</groupId>
-    <artifactId>pluto</artifactId>
-    <version>3.0-SNAPSHOT</version>
-  </parent>
+   <!-- temp values for URL & scm stuff. to be updated later -->
+   <url>http://msnicklous.github.io/portletspec3/apidocs/index.html</url>
 
-  <artifactId>portlet-api</artifactId>
-  <packaging>bundle</packaging>
-  <name>Java Portlet API V3.0</name>
-  <description>The Java Portlet API version 3.0 developed by the Java Community Process JSR-362 Expert Group.</description>
+   <dependencies>
+      <dependency>
+         <groupId>org.apache.tomcat</groupId>
+         <artifactId>tomcat-servlet-api</artifactId>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>javax.enterprise</groupId>
+         <artifactId>cdi-api</artifactId>
+      </dependency>
+   </dependencies>
 
-  <!-- temp values for URL & scm stuff. to be updated later -->
-  <url>http://msnicklous.github.io/portletspec3/apidocs/index.html</url>
+   <scm>
+      <connection>git://git.apache.org/pluto.git</connection>
+      <developerConnection>git://git.apache.org/pluto.git</developerConnection>
+      <url>http://msnicklous.github.io/portletspec3/apidocs/index.html</url>
+   </scm>
 
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.tomcat</groupId>
-      <artifactId>tomcat-servlet-api</artifactId>
-      <scope>provided</scope>
-    </dependency>
-  </dependencies>
+   <build>
+      <pluginManagement>
+         <plugins>
+            <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+               <artifactId>maven-compiler-plugin</artifactId>
+            </plugin>
+            <plugin>
+               <groupId>org.apache.felix</groupId>
+               <artifactId>maven-bundle-plugin</artifactId>
+               <version>2.0.0</version>
+               <extensions>true</extensions>
+               <configuration>
+                  <instructions>
+                     <Export-Package>javax.portlet.filter;version=2.0.0,
+                        javax.portlet;version=2.0.0
+                     </Export-Package>
+                     <Import-Package>
+                        javax.servlet.http;version=2.4,*
+                     </Import-Package>
+                     <Implementation-Title>${project.name}</Implementation-Title>
+                     <Implementation-Version>${project.version}</Implementation-Version>
+                     <Bundle-DocURL>${project.url}</Bundle-DocURL>
+                  </instructions>
+               </configuration>
+            </plugin>
+         </plugins>
+      </pluginManagement>
 
-  <scm>
-    <connection>git://git.apache.org/pluto.git</connection>
-    <developerConnection>git://git.apache.org/pluto.git</developerConnection>
-    <url>http://msnicklous.github.io/portletspec3/apidocs/index.html</url>
-  </scm>
-
-  <build>
-    <pluginManagement>
       <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-compiler-plugin</artifactId>
-          <configuration>
-            <source>1.5</source>
-            <target>1.5</target>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.felix</groupId>
-          <artifactId>maven-bundle-plugin</artifactId>
-          <version>2.0.0</version>
-          <extensions>true</extensions>
-          <configuration>
-            <instructions>
-              <Export-Package>javax.portlet.filter;version=2.0.0,
-                javax.portlet;version=2.0.0
-              </Export-Package>
-              <Import-Package>
-                javax.servlet.http;version=2.4,*
-              </Import-Package>
-              <Implementation-Title>${project.name}</Implementation-Title>
-              <Implementation-Version>${project.version}</Implementation-Version>
-              <Bundle-DocURL>${project.url}</Bundle-DocURL>
-            </instructions>
-          </configuration>
-        </plugin>
+         <plugin>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>maven-bundle-plugin</artifactId>
+         </plugin>
       </plugins>
-    </pluginManagement>
+   </build>
 
-    <plugins>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
-  
 </project>
 
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/portlet-api/src/main/java/javax/portlet/ActionResponse.java
----------------------------------------------------------------------
diff --git a/portlet-api/src/main/java/javax/portlet/ActionResponse.java b/portlet-api/src/main/java/javax/portlet/ActionResponse.java
index 3d617fb..31fb5f1 100644
--- a/portlet-api/src/main/java/javax/portlet/ActionResponse.java
+++ b/portlet-api/src/main/java/javax/portlet/ActionResponse.java
@@ -24,9 +24,12 @@
 
 package javax.portlet;
 
+import javax.portlet.MimeResponse.Copy;
+
 
 /**
- * The <CODE>ActionResponse</CODE> interface represents the portlet
+ * <span class="changed_modified_3_0">The</span> 
+ * <CODE>ActionResponse</CODE> interface represents the portlet
  * response to an action request.
  * It extends the <CODE>StateAwareResponse</CODE> interface to provide specific 
  * action response functionality to portlets.<br>
@@ -51,7 +54,7 @@ public interface ActionResponse extends StateAwareResponse
    * the portlet container may encode the given URL before the 
    * redirection is issued to the client.
    * <p>
-   * The sendRedirect method can not be invoked after any of the 
+    * The sendRedirect method cannot be invoked after any of the 
    * following methods of the ActionResponse interface has been called:
    * <ul>
    * <li>setPortletMode</li>
@@ -59,6 +62,7 @@ public interface ActionResponse extends StateAwareResponse
    * <li>setRenderParameter</li>
    * <li>setRenderParameters</li>
    * <li>removePublicRenderParamter</li>
+    * <li>getRenderParameters</li>
    * </ul>
    *
    * @param		location	the redirect location URL
@@ -98,6 +102,7 @@ public interface ActionResponse extends StateAwareResponse
    * <li>setWindowState
    * <li>setRenderParameter
    * <li>setRenderParameters
+    * <li>getRenderParameters</li>
    * </ul>
    * are only used for creating the render URL and not remembered after the redirect
    * is issued. 
@@ -116,6 +121,64 @@ public interface ActionResponse extends StateAwareResponse
 
   public void sendRedirect(String location, String renderUrlParamName)
     throws java.io.IOException; 
+  
+
+   /**
+    * <div class="changed_added_3_0">
+    * Returns a render URL containing render parameters according to the
+    * MimeResponse.Copy argument. The portlet may modify the returned render URL. The
+    * URL is intended to be used in the sendRedirect(String location) method to allow
+    * the portlet to force a redirect to the same page with modified portlet state.    * Creates a render URL targeting the current portlet. 
+    * <p>
+    * The getRedirectURL method cannot be invoked after any of the 
+    * following methods of the ActionResponse interface has been called:
+    * <ul>
+    * <li>setPortletMode</li>
+    * <li>setWindowState</li>
+    * <li>setRenderParameter</li>
+    * <li>setRenderParameters</li>
+    * <li>removePublicRenderParameter</li>
+    * <li>getRenderParameters</li>
+    * </ul>
+    * <p>
+    * 
+    * <p>
+    * The new render URL will contain render parameters from the
+    * current request as specified by the <code>option</code> parameter.
+    * <dl>
+    * <dt>NONE</dt>
+    * <dd>All public and private parameters are removed from the URL.</dd>
+    * <dt>ALL</dt>
+    * <dd>The public and private parameters governing the current 
+    * request are added to the URL.</dd>
+    * <dt>PUBLIC</dt>
+    * <dd>Only public parameters governing the current
+    * request are added to the URL.</dd>
+    * </dl>
+    * The URL can be further extended by adding render
+    * parameters, portlet mode, and window state.
+    * If no additional portlet mode, window
+    * state or security modifier is set on the URL, the values from the
+    * current render or resource request are preserved.
+    * <p>
+    * If a public render parameter value is set or removed on a render URL, then the public 
+    * render parameter will be set to the new value or removed when the URL is activated.
+    * </div>
+    * 
+    * @param option
+    *            Specifies how current parameters are to be copied to the URL
+    *
+    * @see Copy
+    * 
+    * @return a portlet render URL
+    *
+    * @exception java.lang.IllegalStateException
+    *                    if the method is invoked after any of above mentioned methods of 
+    *                    the ActionResponse interface has been called.
+    *     
+    * @since 3.0
+    */
+   public RenderURL getRedirectURL(Copy option)  throws IllegalStateException;
 }
 
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/7fb0624d/portlet-api/src/main/java/javax/portlet/ConditionalDispatcher.java
----------------------------------------------------------------------
diff --git a/portlet-api/src/main/java/javax/portlet/ConditionalDispatcher.java b/portlet-api/src/main/java/javax/portlet/ConditionalDispatcher.java
new file mode 100644
index 0000000..132ee12
--- /dev/null
+++ b/portlet-api/src/main/java/javax/portlet/ConditionalDispatcher.java
@@ -0,0 +1,157 @@
+/*  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 javax.portlet;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <div class="changed_added_3_0">
+ * This interface provides methods to be implemented in order to implement conditional 
+ * method dispatching.
+ * </div>
+ *
+ */
+public interface ConditionalDispatcher {
+
+   /**
+    * <div class="changed_added_3_0">
+    * Called by the portlet container when an {@literal @}RenderMethod annotated 
+    * method is to be dispatched.
+    * <p>
+    * The method should analyze the given <code>Set</code> of candidate methods using
+    * the annotations available from each <code>MethodToken</code> 
+    * based on the current request and
+    * create a list of method tokens representing the methods to be invoked. 
+    * The output list may be empty or <code>null</code>. 
+    * A given method token may appear in the output list more than once.  
+    * <p>
+    * If the method returns a non-<code>null</code> List object, the portlet container will
+    * invoke the methods in the order they appear in the list, and then 
+    * perform no further dispatching operation for the current request.
+    * <p>
+    * If the method returns <code>null</code>, the portlet container will dispatch the 
+    * method using its implementation-specific algorithm.
+    * <p>
+    * If the method throws an exception, it will be treated as an unhandled exception
+    * during render request processing. The portlet container will perform no 
+    * further dispatching.
+    * </div>
+    *  
+    * @param request    The render render request
+    * @param response   The render render response
+    * @param methods    A <code>Set</code> containing the 
+    *                   method tokens representing the candidate methods for this dispatch action.
+    * @return           A list of method tokens if the dispatch has been handled. The list may be empty.
+    *                   <code>null</code> if the portlet container is to continue with 
+    *                   dispatching.
+    * @throws IOException        If an I/O error occurs
+    * @throws PortletException   If an unexpected condition arises
+    * 
+    * @see  MethodToken
+    * @see  javax.portlet.annotations.RenderMethod
+    */
+   public List<MethodToken> dispatch(RenderRequest request, RenderResponse response, 
+                                     Set<MethodToken> methods) 
+                                     throws IOException, PortletException;
+
+   /**
+    * <div class="changed_added_3_0">
+    * Called by the portlet container when an {@literal @}HeaderMethod annotated 
+    * method is to be dispatched.
+    * <p>
+    * The method should analyze the given <code>Set</code> of candidate methods using
+    * the annotations available from each <code>MethodToken</code> 
+    * based on the current request and
+    * create a list of method tokens representing the methods to be invoked. 
+    * The output list may be empty or <code>null</code>. 
+    * A given method token may appear in the output list more than once.  
+    * <p>
+    * If the method returns a non-<code>null</code> List object, the portlet container will
+    * invoke the methods in the order they appear in the list, and then 
+    * perform no further dispatching operation for the current request.
+    * <p>
+    * If the method returns <code>null</code>, the portlet container will dispatch the 
+    * method using its implementation-specific algorithm.
+    * <p>
+    * If the method throws an exception, it will be treated as an unhandled exception
+    * during header request processing. The portlet container will perform no 
+    * further dispatching.
+    * </div>
+    *  
+    * @param request    The header request
+    * @param response   The header  response
+    * @param methods    A <code>Set</code> containing the 
+    *                   method tokens representing the candidate methods for this dispatch action.
+    * @return           A list of method tokens if the dispatch has been handled. The list may be empty.
+    *                   <code>null</code> if the portlet container is to continue with 
+    *                   dispatching.
+    * @throws IOException        If an I/O error occurs
+    * @throws PortletException   If an unexpected condition arises
+    * 
+    * @see  MethodToken
+    * @see  javax.portlet.annotations.HeaderMethod
+    */
+   public List<MethodToken> dispatch(HeaderRequest request,  HeaderResponse response, 
+                                     Set<MethodToken> methods)
+                                     throws IOException, PortletException;
+
+   /**
+    * <div class="changed_added_3_0">
+    * Called by the portlet container when an {@literal @}ServeResourceMethod annotated 
+    * method is to be dispatched.
+    * <p>
+    * The method should analyze the given <code>Set</code> of candidate methods using
+    * the annotations available from each <code>MethodToken</code> 
+    * based on the current request and
+    * create a list of method tokens representing the methods to be invoked. 
+    * The output list may be empty or <code>null</code>. 
+    * A given method token may appear in the output list more than once.  
+    * <p>
+    * If the method returns a non-<code>null</code> List object, the portlet container will
+    * invoke the methods in the order they appear in the list, and then 
+    * perform no further dispatching operation for the current request.
+    * <p>
+    * If the method returns <code>null</code>, the portlet container will dispatch the 
+    * method using its implementation-specific algorithm.
+    * <p>
+    * If the method throws an exception, it will be treated as an unhandled exception
+    * during resource request processing. The portlet container will perform no 
+    * further dispatching.
+    * </div>
+    *  
+    * @param request    The resource request
+    * @param response   The resource response
+    * @param methods    A <code>Set</code> containing the 
+    *                   method tokens representing the candidate methods for this dispatch action.
+    * @return           A list of method tokens if the dispatch has been handled. The list may be empty.
+    *                   <code>null</code> if the portlet container is to continue with 
+    *                   dispatching.
+    * @throws IOException        If an I/O error occurs
+    * @throws PortletException   If an unexpected condition arises
+    * 
+    * @see  MethodToken
+    * @see  javax.portlet.annotations.ServeResourceMethod
+    */
+   public List<MethodToken> dispatch(ResourceRequest request,  ResourceResponse response,
+                                     Set<MethodToken> methods) 
+                                     throws IOException, PortletException;
+}