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 2014/12/03 16:01:26 UTC

[01/11] portals-pluto git commit: Added parameter checking to updatePageState method

Repository: portals-pluto
Updated Branches:
  refs/heads/PortletHub 71a19e10d -> 1c869b7cf


Added parameter checking to updatePageState method


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

Branch: refs/heads/PortletHub
Commit: 585eb3e4867c04f5e3916d552099cc264b796d16
Parents: a27e40d
Author: Scott Nicklous <ms...@apache.org>
Authored: Sun Nov 30 23:22:58 2014 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Sun Nov 30 23:22:58 2014 +0100

----------------------------------------------------------------------
 pluto-portal/src/main/webapp/portlet.js | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/585eb3e4/pluto-portal/src/main/webapp/portlet.js
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/portlet.js b/pluto-portal/src/main/webapp/portlet.js
index 98b898f..919e5cc 100644
--- a/pluto-portal/src/main/webapp/portlet.js
+++ b/pluto-portal/src/main/webapp/portlet.js
@@ -958,6 +958,10 @@ var portlet = portlet || {};
    setPageState = function (pid, ustr) {
       var pi;
 
+      // Perform some checks on the update string. allow null string.
+      if ((ustr === undefined) || ((ustr !== null) && (typeof ustr !== 'string'))) {
+         throwIllegalArgumentException("Invalid update string: " + ustr);
+      }
       // convert page state into an object.
       // update each affected portlet client. Makes use of a 
       // mockup-specific function for decoding. 


[09/11] portals-pluto git commit: Added additional debug output for part processing

Posted by ms...@apache.org.
Added additional debug output for part processing


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

Branch: refs/heads/PortletHub
Commit: 5eb2aa1c1e05dbaab518bdff255494827a9fdbbb
Parents: bd96a22
Author: Scott Nicklous <ms...@apache.org>
Authored: Wed Dec 3 10:37:46 2014 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Wed Dec 3 10:37:46 2014 +0100

----------------------------------------------------------------------
 .../container/PortletRequestContextImpl.java    | 34 ++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/5eb2aa1c/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java
----------------------------------------------------------------------
diff --git a/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java b/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java
index 25859d4..5c52a94 100644
--- a/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java
+++ b/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java
@@ -218,6 +218,19 @@ public class PortletRequestContextImpl implements PortletRequestContext {
             }
          }
       }
+      if (LOGGER.isLoggable(Level.FINE)) {
+         StringBuffer sb = new StringBuffer();
+         sb.append("Dump private Parameter Map:");
+         for (String k : parameters.keySet()) {
+            sb.append("\nName: " + k + ", Values: ");
+            String sep = "";
+            for (String v : parameters.get(k)) {
+               sb.append(sep + v);
+               sep = ", ";
+            }
+         }
+         LOGGER.fine(sb.toString());
+      }
       return parameters;
    }
 
@@ -225,10 +238,15 @@ public class PortletRequestContextImpl implements PortletRequestContext {
     * Looks for multipart form data on an action or serveResource request, and decodes
     * it into a parameter map if found. (doesn't handle file upload or anything like that) 
     * 
+    * NOTE!! : At the current time, this method really only outputs debug info, as it
+    * seems that the servlet container automatically interprets multipart form data
+    * in the same manner that it interprets URL encoded form data.
+    * 
     * @return A Map containing parameter values extracted from a multipart form
     */
    private Map<String, String[]> decodeMultipartForm() {
       Map<String, String[]> parms = new HashMap<String, String[]>();
+      Map<String, String[]> servletMap = servletRequest.getParameterMap();
       String ct = servletRequest.getContentType();
 
       if (LOGGER.isLoggable(Level.FINE)) {
@@ -243,15 +261,27 @@ public class PortletRequestContextImpl implements PortletRequestContext {
                LOGGER.fine("There are " + parts.size() + " parts to process.");
             }
             
+            StringBuilder sb = new StringBuilder();
             for (Part p : parts) {
                if (LOGGER.isLoggable(Level.FINE)) {
-                  StringBuilder sb = new StringBuilder();
                   sb.append("\nPart name: " + p.getName());
                   sb.append(", size: " + p.getSize());
                   sb.append(", type: " + p.getContentType());
-                  LOGGER.fine(sb.toString());
+                  sb.append(", in servletMap=" + servletMap.containsKey(p.getName()));
+                  Collection<String> hn = p.getHeaderNames();
+                  if (hn != null) {
+                     for (String h : hn) {
+                        sb.append(", hdr==" + h + "==");
+                     }
+                  } else {
+                     sb.append(", hdrNames=" + hn);
+                  }
+                  sb.append(", cdHdr==" + p.getHeader("content-disposition") + "==");
                }
             }
+            if (LOGGER.isLoggable(Level.FINE)) {
+               LOGGER.fine(sb.toString());
+            }
 
          } catch (Exception e) {
             LOGGER.logp(FINE, LOG_CLASS, "decodeMultipartForm",


[06/11] portals-pluto git commit: progress toward multipart form handling

Posted by ms...@apache.org.
progress toward multipart form handling


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

Branch: refs/heads/PortletHub
Commit: 43ae1d08de6e86670b0065335e71b3248da349fb
Parents: 14efad1
Author: Scott Nicklous <ms...@apache.org>
Authored: Tue Dec 2 22:43:49 2014 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Tue Dec 2 22:43:49 2014 +0100

----------------------------------------------------------------------
 .../container/PortletRequestContextImpl.java    | 597 ++++++++++---------
 pluto-portal/src/main/webapp/WEB-INF/web.xml    | 363 +++++------
 2 files changed, 495 insertions(+), 465 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/43ae1d08/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java
----------------------------------------------------------------------
diff --git a/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java b/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java
index 79ddd97..25859d4 100644
--- a/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java
+++ b/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java
@@ -1,287 +1,310 @@
-/*
- * 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.driver.services.container;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import javax.portlet.PortletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletRequest;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.pluto.container.PortletContainer;
-import org.apache.pluto.container.PortletRequestContext;
-import org.apache.pluto.container.PortletWindow;
-import org.apache.pluto.driver.core.PortalRequestContext;
-import org.apache.pluto.driver.url.PortalURL;
-import org.apache.pluto.driver.url.PortalURLParameter;
-
-/**
- * @version $Id$
- *
- */
-public class PortletRequestContextImpl implements PortletRequestContext
-{
-    private PortletContainer container;
-    private HttpServletRequest containerRequest;
-    private HttpServletResponse containerResponse;
-    private HttpServletRequest servletRequest;
-    private HttpServletResponse servletResponse;
-    private PortletWindow window;
-    private PortalURL url;
-    private PortletConfig portletConfig;
-    private ServletContext servletContext;
-    private Cookie cookies[];
-    private boolean useRequestParameters;
-    
-    public PortletRequestContextImpl(PortletContainer container, HttpServletRequest containerRequest,
-                                     HttpServletResponse containerResponse, PortletWindow window, boolean useRequestParameters)
-    {
-        this.container = container;
-        this.containerRequest = containerRequest;
-        this.containerResponse = containerResponse;
-        this.window = window;
-        this.useRequestParameters = useRequestParameters;
-        this.url = PortalRequestContext.getContext(containerRequest).createPortalURL();
-    }
-    
-    protected boolean isReservedAttributeName(String name)
-    {
-        return name.startsWith("javax.servlet.");
-    }
-    
-    protected String encodeAttributeName(String name)
-    {
-        if (isReservedAttributeName(name))
-        {
-            return name;
-        }
-        return container.getContainerServices().getNamespaceMapper().encode(window.getId(), name);
-    }
-    
-    protected String decodeAttributeName(String name)
-    {
-        if (isReservedAttributeName(name))
-        {
-            return name;
-        }
-        String result = container.getContainerServices().getNamespaceMapper().decode(window.getId(), name);
-        return result != null ? result : name;
-    }
-    
-    protected Map<String, String[]> getPrivateRenderParameterMap()
-    {
-        return Collections.emptyMap();
-    }
-
-    protected PortalURL getPortalURL()
-    {
-        return url;
-    }
-    
-    protected boolean isPublicRenderParameter(String name)
-    {
-        List<String> publicRenderParameterNames = window.getPortletDefinition().getSupportedPublicRenderParameters();
-        return publicRenderParameterNames.isEmpty() ? false : publicRenderParameterNames.contains(name);
-    }
-        
-    public void init(PortletConfig portletConfig, ServletContext servletContext, HttpServletRequest servletRequest, HttpServletResponse servletResponse)
-    {
-        this.portletConfig = portletConfig;
-        this.servletContext = servletContext;
-        this.servletRequest = servletRequest;
-        this.servletResponse = servletResponse;
-    }
-    
-    public Object getAttribute(String name)
-    {
-        Object value = servletRequest.getAttribute(encodeAttributeName(name));
-        return value != null ? value : servletRequest.getAttribute(name);
-    }
-    
-    public Object getAttribute(String name, ServletRequest servletRequest) {
-        return servletRequest.getAttribute(name);
-    }
-
-    @SuppressWarnings("unchecked")
-    public Enumeration<String> getAttributeNames()
-    {
-        ArrayList<String> names = new ArrayList<String>();
-        for (Enumeration<String> e = servletRequest.getAttributeNames(); e.hasMoreElements();)
-        {
-            names.add(decodeAttributeName(e.nextElement()));
-        }
-        return Collections.enumeration(names);
-    }
-
-    public void setAttribute(String name, Object value)
-    {
-        if (value == null)
-        {
-            servletRequest.removeAttribute(encodeAttributeName(name));
-        }
-        else
-        {
-            servletRequest.setAttribute(encodeAttributeName(name), value);
-        }
-    }
-    
-    public PortletContainer getContainer()
-    {
-        return container;
-    }
-
-    public Cookie[] getCookies()
-    {
-        if (cookies == null)
-        {
-            cookies = servletRequest.getCookies();
-            if (cookies == null)
-            {
-                cookies = new Cookie[0];
-            }
-        }
-        return cookies.length > 0 ? cookies.clone() : null;
-    }
-
-    public PortletConfig getPortletConfig()
-    {
-        return portletConfig;
-    }
-
-    public ServletContext getServletContext()
-    {
-        return servletContext;
-    }
-
-    public PortletWindow getPortletWindow()
-    {
-        return window;
-    }
-
-    public Locale getPreferredLocale()
-    {
-        return servletRequest.getLocale();
-    }       
-
-    @SuppressWarnings("unchecked")
-    public Map<String, String[]> getPrivateParameterMap()
-    {
-        HashMap<String, String[]> parameters = new HashMap<String, String[]>();
-        if (useRequestParameters)
-        {
-            parameters.putAll(servletRequest.getParameterMap());
-        }
-        for (Map.Entry<String, String[]> entry : getPrivateRenderParameterMap().entrySet())
-        {
-            String[] values = parameters.get(entry.getKey());
-            if (values == null)
-            {
-                parameters.put(entry.getKey(), entry.getValue());
-            }
-            else
-            {
-                String[] copy = new String[values.length+entry.getValue().length];
-                System.arraycopy(values, 0, copy, 0, values.length);
-                System.arraycopy(entry.getValue(), 0, copy, values.length, entry.getValue().length);
-                parameters.put(entry.getKey(), copy);
-            }
-        }        
-        String windowId = window.getId().getStringId();
-        for (PortalURLParameter parm : url.getParameters())
-        {
-            if (windowId.equals(parm.getWindowId()))
-            {
-                String[] values = parameters.get(parm.getName());
-                if (values == null)
-                {
-                    parameters.put(parm.getName(), parm.getValues());
-                }
-                else
-                {
-                    String[] copy = new String[values.length+parm.getValues().length];
-                    System.arraycopy(values, 0, copy, 0, values.length);
-                    System.arraycopy(parm.getValues(), 0, copy, values.length, parm.getValues().length);
-                    parameters.put(parm.getName(), copy);
-                }
-            }                            
-        }
-        return parameters;
-    }
-
-    @SuppressWarnings("unchecked")
-    public Map<String, String[]> getProperties()
-    {
-        HashMap<String, String[]> properties = new HashMap<String, String[]>();
-        for (Enumeration<String> names = servletRequest.getHeaderNames(); names.hasMoreElements(); )
-        {
-            String name = names.nextElement();
-            ArrayList<String> values = new ArrayList<String>();
-            for (Enumeration<String> headers = servletRequest.getHeaders(name); headers.hasMoreElements(); )
-            {
-                values.add(headers.nextElement());
-            }
-            int size = values.size();
-            if (size > 0)
-            {
-                properties.put(name, values.toArray(new String[size]));
-            }
-        }
-        return properties;
-    }
-
-    public Map<String, String[]> getPublicParameterMap()
-    {
-        HashMap<String, String[]> parameters = new HashMap<String, String[]>();
-        for (Map.Entry<String, String[]> entry : url.getPublicParameters().entrySet())
-        {
-            if (isPublicRenderParameter(entry.getKey()))
-            {
-                parameters.put(entry.getKey(), entry.getValue());
-            }                            
-        }
-        return parameters;
-    }
-
-    public HttpServletRequest getContainerRequest()
-    {
-        return containerRequest;
-    }
-
-    public HttpServletResponse getContainerResponse()
-    {
-        return containerResponse;
-    }
-
-    public HttpServletRequest getServletRequest()
-    {
-        return servletRequest;
-    }
-
-    public HttpServletResponse getServletResponse()
-    {
-        return servletResponse;
-    }
-}
+/*
+ * 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.driver.services.container;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import static java.util.logging.Level.*;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.portlet.PortletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.Part;
+
+import org.apache.pluto.container.PortletContainer;
+import org.apache.pluto.container.PortletRequestContext;
+import org.apache.pluto.container.PortletWindow;
+import org.apache.pluto.driver.core.PortalRequestContext;
+import org.apache.pluto.driver.url.PortalURL;
+import org.apache.pluto.driver.url.PortalURLParameter;
+
+/**
+ * @version $Id$
+ *
+ */
+public class PortletRequestContextImpl implements PortletRequestContext {
+   private static final String LOG_CLASS = PortletRequestContextImpl.class
+                                               .getName();
+   private final Logger        LOGGER    = Logger.getLogger(LOG_CLASS);
+
+   private PortletContainer    container;
+   private HttpServletRequest  containerRequest;
+   private HttpServletResponse containerResponse;
+   private HttpServletRequest  servletRequest;
+   private HttpServletResponse servletResponse;
+   private PortletWindow       window;
+   private PortalURL           url;
+   private PortletConfig       portletConfig;
+   private ServletContext      servletContext;
+   private Cookie              cookies[];
+   private boolean             useRequestParameters;
+
+   public PortletRequestContextImpl(PortletContainer container,
+         HttpServletRequest containerRequest,
+         HttpServletResponse containerResponse, PortletWindow window,
+         boolean useRequestParameters) {
+      this.container = container;
+      this.containerRequest = containerRequest;
+      this.containerResponse = containerResponse;
+      this.window = window;
+      this.useRequestParameters = useRequestParameters;
+      this.url = PortalRequestContext.getContext(containerRequest)
+            .createPortalURL();
+   }
+
+   protected boolean isReservedAttributeName(String name) {
+      return name.startsWith("javax.servlet.");
+   }
+
+   protected String encodeAttributeName(String name) {
+      if (isReservedAttributeName(name)) {
+         return name;
+      }
+      return container.getContainerServices().getNamespaceMapper()
+            .encode(window.getId(), name);
+   }
+
+   protected String decodeAttributeName(String name) {
+      if (isReservedAttributeName(name)) {
+         return name;
+      }
+      String result = container.getContainerServices().getNamespaceMapper()
+            .decode(window.getId(), name);
+      return result != null ? result : name;
+   }
+
+   protected Map<String, String[]> getPrivateRenderParameterMap() {
+      return Collections.emptyMap();
+   }
+
+   protected PortalURL getPortalURL() {
+      return url;
+   }
+
+   protected boolean isPublicRenderParameter(String name) {
+      List<String> publicRenderParameterNames = window.getPortletDefinition()
+            .getSupportedPublicRenderParameters();
+      return publicRenderParameterNames.isEmpty() ? false
+            : publicRenderParameterNames.contains(name);
+   }
+
+   public void init(PortletConfig portletConfig, ServletContext servletContext,
+         HttpServletRequest servletRequest, HttpServletResponse servletResponse) {
+      this.portletConfig = portletConfig;
+      this.servletContext = servletContext;
+      this.servletRequest = servletRequest;
+      this.servletResponse = servletResponse;
+   }
+
+   public Object getAttribute(String name) {
+      Object value = servletRequest.getAttribute(encodeAttributeName(name));
+      return value != null ? value : servletRequest.getAttribute(name);
+   }
+
+   public Object getAttribute(String name, ServletRequest servletRequest) {
+      return servletRequest.getAttribute(name);
+   }
+
+   @SuppressWarnings("unchecked")
+   public Enumeration<String> getAttributeNames() {
+      ArrayList<String> names = new ArrayList<String>();
+      for (Enumeration<String> e = servletRequest.getAttributeNames(); e
+            .hasMoreElements();) {
+         names.add(decodeAttributeName(e.nextElement()));
+      }
+      return Collections.enumeration(names);
+   }
+
+   public void setAttribute(String name, Object value) {
+      if (value == null) {
+         servletRequest.removeAttribute(encodeAttributeName(name));
+      } else {
+         servletRequest.setAttribute(encodeAttributeName(name), value);
+      }
+   }
+
+   public PortletContainer getContainer() {
+      return container;
+   }
+
+   public Cookie[] getCookies() {
+      if (cookies == null) {
+         cookies = servletRequest.getCookies();
+         if (cookies == null) {
+            cookies = new Cookie[0];
+         }
+      }
+      return cookies.length > 0 ? cookies.clone() : null;
+   }
+
+   public PortletConfig getPortletConfig() {
+      return portletConfig;
+   }
+
+   public ServletContext getServletContext() {
+      return servletContext;
+   }
+
+   public PortletWindow getPortletWindow() {
+      return window;
+   }
+
+   public Locale getPreferredLocale() {
+      return servletRequest.getLocale();
+   }
+
+   @SuppressWarnings("unchecked")
+   public Map<String, String[]> getPrivateParameterMap() {
+      HashMap<String, String[]> parameters = new HashMap<String, String[]>();
+      if (useRequestParameters) {
+         parameters.putAll(servletRequest.getParameterMap());
+         parameters.putAll(decodeMultipartForm());
+      }
+      for (Map.Entry<String, String[]> entry : getPrivateRenderParameterMap()
+            .entrySet()) {
+         String[] values = parameters.get(entry.getKey());
+         if (values == null) {
+            parameters.put(entry.getKey(), entry.getValue());
+         } else {
+            String[] copy = new String[values.length + entry.getValue().length];
+            System.arraycopy(values, 0, copy, 0, values.length);
+            System.arraycopy(entry.getValue(), 0, copy, values.length,
+                  entry.getValue().length);
+            parameters.put(entry.getKey(), copy);
+         }
+      }
+      String windowId = window.getId().getStringId();
+      for (PortalURLParameter parm : url.getParameters()) {
+         if (windowId.equals(parm.getWindowId())) {
+            String[] values = parameters.get(parm.getName());
+            if (values == null) {
+               parameters.put(parm.getName(), parm.getValues());
+            } else {
+               String[] copy = new String[values.length
+                     + parm.getValues().length];
+               System.arraycopy(values, 0, copy, 0, values.length);
+               System.arraycopy(parm.getValues(), 0, copy, values.length,
+                     parm.getValues().length);
+               parameters.put(parm.getName(), copy);
+            }
+         }
+      }
+      return parameters;
+   }
+
+   /**
+    * Looks for multipart form data on an action or serveResource request, and decodes
+    * it into a parameter map if found. (doesn't handle file upload or anything like that) 
+    * 
+    * @return A Map containing parameter values extracted from a multipart form
+    */
+   private Map<String, String[]> decodeMultipartForm() {
+      Map<String, String[]> parms = new HashMap<String, String[]>();
+      String ct = servletRequest.getContentType();
+
+      if (LOGGER.isLoggable(Level.FINE)) {
+         LOGGER.fine("Looking for multipart form data. Content Type = " + ct);
+      }
+
+      if ((ct != null) && ct.contains("multipart/form-data")) {
+         try {
+            Collection<Part> parts = servletRequest.getParts();
+
+            if (LOGGER.isLoggable(Level.FINE)) {
+               LOGGER.fine("There are " + parts.size() + " parts to process.");
+            }
+            
+            for (Part p : parts) {
+               if (LOGGER.isLoggable(Level.FINE)) {
+                  StringBuilder sb = new StringBuilder();
+                  sb.append("\nPart name: " + p.getName());
+                  sb.append(", size: " + p.getSize());
+                  sb.append(", type: " + p.getContentType());
+                  LOGGER.fine(sb.toString());
+               }
+            }
+
+         } catch (Exception e) {
+            LOGGER.logp(FINE, LOG_CLASS, "decodeMultipartForm",
+                  "Error reading form data", e);
+         }
+      }
+
+      return parms;
+   }
+
+   @SuppressWarnings("unchecked")
+   public Map<String, String[]> getProperties() {
+      HashMap<String, String[]> properties = new HashMap<String, String[]>();
+      for (Enumeration<String> names = servletRequest.getHeaderNames(); names
+            .hasMoreElements();) {
+         String name = names.nextElement();
+         ArrayList<String> values = new ArrayList<String>();
+         for (Enumeration<String> headers = servletRequest.getHeaders(name); headers
+               .hasMoreElements();) {
+            values.add(headers.nextElement());
+         }
+         int size = values.size();
+         if (size > 0) {
+            properties.put(name, values.toArray(new String[size]));
+         }
+      }
+      return properties;
+   }
+
+   public Map<String, String[]> getPublicParameterMap() {
+      HashMap<String, String[]> parameters = new HashMap<String, String[]>();
+      for (Map.Entry<String, String[]> entry : url.getPublicParameters()
+            .entrySet()) {
+         if (isPublicRenderParameter(entry.getKey())) {
+            parameters.put(entry.getKey(), entry.getValue());
+         }
+      }
+      return parameters;
+   }
+
+   public HttpServletRequest getContainerRequest() {
+      return containerRequest;
+   }
+
+   public HttpServletResponse getContainerResponse() {
+      return containerResponse;
+   }
+
+   public HttpServletRequest getServletRequest() {
+      return servletRequest;
+   }
+
+   public HttpServletResponse getServletResponse() {
+      return servletResponse;
+   }
+}

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/43ae1d08/pluto-portal/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/web.xml b/pluto-portal/src/main/webapp/WEB-INF/web.xml
index d4cbca0..aecfa28 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/web.xml
+++ b/pluto-portal/src/main/webapp/WEB-INF/web.xml
@@ -1,178 +1,185 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!DOCTYPE web-app PUBLIC
-        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-        "http://java.sun.com/dtd/web-app_2_3.dtd">
-<!-- 
-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.
--->
-
-<web-app>
-
-  <display-name>Apache Pluto Portal Driver</display-name>
-
-  <context-param>
-    <param-name>contextConfigLocation</param-name>
-    <param-value>/WEB-INF/pluto-portal-driver-services-config.xml</param-value>
-  </context-param>
-
-  <filter>
-    <filter-name>plutoPortalDriver</filter-name>
-    <filter-class>org.apache.pluto.driver.PortalDriverFilter</filter-class>
-  </filter>
-
-  <filter-mapping>
-    <filter-name>plutoPortalDriver</filter-name>
-    <url-pattern>/about.jsp</url-pattern>
-  </filter-mapping>
-
-  <filter-mapping>
-    <filter-name>plutoPortalDriver</filter-name>
-    <url-pattern>/about.jsp/*</url-pattern>
-  </filter-mapping>
-
-  <listener>
-    <listener-class>org.apache.pluto.driver.PortalStartupListener</listener-class>
-  </listener>
-
-  <servlet>
-    <servlet-name>plutoPortalDriver</servlet-name>
-    <display-name>Pluto Portal Driver</display-name>
-    <description>Pluto Portal Driver Controller</description>
-    <servlet-class>org.apache.pluto.driver.PortalDriverServlet</servlet-class>
-  </servlet>
-
-  <servlet>
-    <servlet-name>plutoPortalDriverLogout</servlet-name>
-    <display-name>Pluto Portal Driver</display-name>
-    <description>Pluto Portal Driver Logout</description>
-    <servlet-class>org.apache.pluto.driver.PortalDriverLogoutServlet</servlet-class>
-  </servlet>
-
-  <servlet>
-    <servlet-name>portletApplicationPublisher</servlet-name>
-    <display-name>Portlet Application Publisher</display-name>
-    <description>Portlet Application Publisher Service</description>
-    <servlet-class>org.apache.pluto.driver.PublishServlet</servlet-class>
-  </servlet>
-
-  <servlet>
-    <servlet-name>tckDriver</servlet-name>
-    <display-name>Pluto TCK Driver</display-name>
-    <description>Pluto TCK Driver Controller</description>
-    <servlet-class>org.apache.pluto.driver.TCKDriverServlet</servlet-class>
-  </servlet>
-
-  <servlet>
-    <servlet-name>AboutPortlet</servlet-name>
-    <servlet-class>org.apache.pluto.container.driver.PortletServlet</servlet-class>
-    <init-param>
-      <param-name>portlet-name</param-name>
-      <param-value>AboutPortlet</param-value>
-    </init-param>
-    <load-on-startup>1</load-on-startup>
-  </servlet>
-
-  <servlet>
-    <servlet-name>AdminPortlet</servlet-name>
-    <servlet-class>org.apache.pluto.container.driver.PortletServlet</servlet-class>
-    <init-param>
-      <param-name>portlet-name</param-name>
-      <param-value>AdminPortlet</param-value>
-    </init-param>
-    <load-on-startup>1</load-on-startup>
-  </servlet>
-
-  <servlet>
-    <servlet-name>PlutoPageAdmin</servlet-name>
-    <servlet-class>org.apache.pluto.container.driver.PortletServlet</servlet-class>
-    <init-param>
-      <param-name>portlet-name</param-name>
-      <param-value>PlutoPageAdmin</param-value>
-    </init-param>
-    <load-on-startup>1</load-on-startup>
-  </servlet>
-
-  <servlet-mapping>
-    <servlet-name>plutoPortalDriver</servlet-name>
-    <url-pattern>/portal/*</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>plutoPortalDriverLogout</servlet-name>
-    <url-pattern>/Logout</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>portletApplicationPublisher</servlet-name>
-    <url-pattern>/admin/Publish</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>tckDriver</servlet-name>
-    <url-pattern>/tck/*</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>AboutPortlet</servlet-name>
-    <url-pattern>/PlutoInvoker/AboutPortlet</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>AdminPortlet</servlet-name>
-    <url-pattern>/PlutoInvoker/AdminPortlet</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>PlutoPageAdmin</servlet-name>
-    <url-pattern>/PlutoInvoker/PlutoPageAdmin</url-pattern>
-  </servlet-mapping>
-
-  <taglib>
-    <taglib-uri>http://portals.apache.org/pluto</taglib-uri>
-    <taglib-location>/WEB-INF/tld/pluto.tld</taglib-location>
-  </taglib>
-
-  <security-constraint>
-    <web-resource-collection>
-      <web-resource-name>portal</web-resource-name>
-      <url-pattern>/portal</url-pattern>
-      <url-pattern>/portal/*</url-pattern>
-      <http-method>GET</http-method>
-      <http-method>POST</http-method>
-      <http-method>PUT</http-method>
-    </web-resource-collection>
-    <auth-constraint>
-      <role-name>pluto</role-name>
-    </auth-constraint>
-  </security-constraint>
-
-  <login-config>
-    <auth-method>FORM</auth-method>
-    <form-login-config>
-      <form-login-page>/login.jsp</form-login-page>
-      <form-error-page>/login.jsp?error=1</form-error-page>
-    </form-login-config>
-  </login-config>
-
-  <security-role>
-    <role-name>pluto</role-name>
-  </security-role>
-
-</web-app>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0"
+  xmlns="http://java.sun.com/xml/ns/javaee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
+  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+<!-- 
+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.
+-->
+
+
+  <display-name>Apache Pluto Portal Driver</display-name>
+
+  <context-param>
+    <param-name>contextConfigLocation</param-name>
+    <param-value>/WEB-INF/pluto-portal-driver-services-config.xml</param-value>
+  </context-param>
+
+  <filter>
+    <filter-name>plutoPortalDriver</filter-name>
+    <filter-class>org.apache.pluto.driver.PortalDriverFilter</filter-class>
+  </filter>
+
+  <filter-mapping>
+    <filter-name>plutoPortalDriver</filter-name>
+    <url-pattern>/about.jsp</url-pattern>
+  </filter-mapping>
+
+  <filter-mapping>
+    <filter-name>plutoPortalDriver</filter-name>
+    <url-pattern>/about.jsp/*</url-pattern>
+  </filter-mapping>
+
+  <listener>
+    <listener-class>org.apache.pluto.driver.PortalStartupListener</listener-class>
+  </listener>
+
+  <servlet>
+    <description>Pluto Portal Driver Controller</description>
+    <display-name>Pluto Portal Driver</display-name>
+    <servlet-name>plutoPortalDriver</servlet-name>
+    <servlet-class>org.apache.pluto.driver.PortalDriverServlet</servlet-class>
+    <multipart-config>
+        <max-file-size>10485760</max-file-size>
+        <max-request-size>20971520</max-request-size>
+        <file-size-threshold>5242880</file-size-threshold>
+    </multipart-config>
+  </servlet>
+
+  <servlet>
+    <description>Pluto Portal Driver Logout</description>
+    <display-name>Pluto Portal Driver</display-name>
+    <servlet-name>plutoPortalDriverLogout</servlet-name>
+    <servlet-class>org.apache.pluto.driver.PortalDriverLogoutServlet</servlet-class>
+  </servlet>
+
+  <servlet>
+    <description>Portlet Application Publisher Service</description>
+    <display-name>Portlet Application Publisher</display-name>
+    <servlet-name>portletApplicationPublisher</servlet-name>
+    <servlet-class>org.apache.pluto.driver.PublishServlet</servlet-class>
+  </servlet>
+
+  <servlet>
+    <description>Pluto TCK Driver Controller</description>
+    <display-name>Pluto TCK Driver</display-name>
+    <servlet-name>tckDriver</servlet-name>
+    <servlet-class>org.apache.pluto.driver.TCKDriverServlet</servlet-class>
+  </servlet>
+
+  <servlet>
+    <servlet-name>AboutPortlet</servlet-name>
+    <servlet-class>org.apache.pluto.container.driver.PortletServlet</servlet-class>
+    <init-param>
+      <param-name>portlet-name</param-name>
+      <param-value>AboutPortlet</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+  <servlet>
+    <servlet-name>AdminPortlet</servlet-name>
+    <servlet-class>org.apache.pluto.container.driver.PortletServlet</servlet-class>
+    <init-param>
+      <param-name>portlet-name</param-name>
+      <param-value>AdminPortlet</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+  <servlet>
+    <servlet-name>PlutoPageAdmin</servlet-name>
+    <servlet-class>org.apache.pluto.container.driver.PortletServlet</servlet-class>
+    <init-param>
+      <param-name>portlet-name</param-name>
+      <param-value>PlutoPageAdmin</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>plutoPortalDriver</servlet-name>
+    <url-pattern>/portal/*</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>plutoPortalDriverLogout</servlet-name>
+    <url-pattern>/Logout</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>portletApplicationPublisher</servlet-name>
+    <url-pattern>/admin/Publish</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>tckDriver</servlet-name>
+    <url-pattern>/tck/*</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>AboutPortlet</servlet-name>
+    <url-pattern>/PlutoInvoker/AboutPortlet</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>AdminPortlet</servlet-name>
+    <url-pattern>/PlutoInvoker/AdminPortlet</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>PlutoPageAdmin</servlet-name>
+    <url-pattern>/PlutoInvoker/PlutoPageAdmin</url-pattern>
+  </servlet-mapping>
+
+  <jsp-config>
+    <taglib>
+      <taglib-uri>http://portals.apache.org/pluto</taglib-uri>
+      <taglib-location>/WEB-INF/tld/pluto.tld</taglib-location>
+    </taglib>
+  </jsp-config>
+
+  <security-constraint>
+    <web-resource-collection>
+      <web-resource-name>portal</web-resource-name>
+      <url-pattern>/portal</url-pattern>
+      <url-pattern>/portal/*</url-pattern>
+      <http-method>GET</http-method>
+      <http-method>POST</http-method>
+      <http-method>PUT</http-method>
+    </web-resource-collection>
+    <auth-constraint>
+      <role-name>pluto</role-name>
+    </auth-constraint>
+  </security-constraint>
+
+  <login-config>
+    <auth-method>FORM</auth-method>
+    <form-login-config>
+      <form-login-page>/login.jsp</form-login-page>
+      <form-error-page>/login.jsp?error=1</form-error-page>
+    </form-login-config>
+  </login-config>
+
+  <security-role>
+    <role-name>pluto</role-name>
+  </security-role>
+
+</web-app>
+


[07/11] portals-pluto git commit: updated taglib URIs from ...sun.com/jstl... to ...sun.com/jsp/jstl... to make them work with servlet 3

Posted by ms...@apache.org.
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-testsuite/src/main/webapp/jsp/SessionTimeoutTest.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/SessionTimeoutTest.jsp b/pluto-testsuite/src/main/webapp/jsp/SessionTimeoutTest.jsp
index f8cdae4..455ddc2 100644
--- a/pluto-testsuite/src/main/webapp/jsp/SessionTimeoutTest.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/SessionTimeoutTest.jsp
@@ -1,73 +1,73 @@
-<%@ page import="javax.portlet.WindowState" %>
-<%--
-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.
---%>
-
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
-
-<portlet:defineObjects/>
-
-<c:choose>
-  <c:when test="${results.inQuestion}">
-    
-    <%-- Generate portlet render URL: Start =============================== --%>
-    <portlet:renderURL windowState="<%=WindowState.MAXIMIZED.toString()%>" secure='<%= renderRequest.isSecure() ? "True" : "False" %>'
-                       var="url">
-      <portlet:param name="maxInactiveIntervalSet" value="<%= Boolean.TRUE.toString() %>"/>
-      <portlet:param name="testId" value='<%= renderRequest.getParameter("testId") %>'/>
-    </portlet:renderURL>
-    <%-- Generate portlet action URL: End ================================= --%>
-  
-  
-  
-    <table>
-      <tr>
-        <th colspan="2" style="background-color:blue;color:white;">MANUAL TEST</th>
-      </tr>
-      <tr>
-        <th colspan="2">Session Timeout Test</th>
-      </tr>
-      <tr>
-        <td>
-          <p>
-            This test is to validate that portlet session will expire and be
-            invalidated by the portlet container after its max inactive interval
-            is passed.
-          </p>
-          <p>
-            This test requires manual intervention. Please wait for at least
-            5 seconds and click <a href="<c:out value="${url}"/>">here</a>.
-          </p>
-            <p>
-                NOTE: Clicking the url above will maximize this portlet.  This is required
-                to ensure that no other portlets on the current page recreate the session we
-                are trying to invalidate.
-            </p>
-        </td>
-      </tr>
-    </table>
-  </c:when>
-  <c:otherwise>
-    <%@ include file="test_results.inc" %>
-  </c:otherwise>
-</c:choose>
-
-<%@ include file="navigation.inc" %>
-
-
+<%@ page import="javax.portlet.WindowState" %>
+<%--
+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.
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
+
+<portlet:defineObjects/>
+
+<c:choose>
+  <c:when test="${results.inQuestion}">
+    
+    <%-- Generate portlet render URL: Start =============================== --%>
+    <portlet:renderURL windowState="<%=WindowState.MAXIMIZED.toString()%>" secure='<%= renderRequest.isSecure() ? "True" : "False" %>'
+                       var="url">
+      <portlet:param name="maxInactiveIntervalSet" value="<%= Boolean.TRUE.toString() %>"/>
+      <portlet:param name="testId" value='<%= renderRequest.getParameter("testId") %>'/>
+    </portlet:renderURL>
+    <%-- Generate portlet action URL: End ================================= --%>
+  
+  
+  
+    <table>
+      <tr>
+        <th colspan="2" style="background-color:blue;color:white;">MANUAL TEST</th>
+      </tr>
+      <tr>
+        <th colspan="2">Session Timeout Test</th>
+      </tr>
+      <tr>
+        <td>
+          <p>
+            This test is to validate that portlet session will expire and be
+            invalidated by the portlet container after its max inactive interval
+            is passed.
+          </p>
+          <p>
+            This test requires manual intervention. Please wait for at least
+            5 seconds and click <a href="<c:out value="${url}"/>">here</a>.
+          </p>
+            <p>
+                NOTE: Clicking the url above will maximize this portlet.  This is required
+                to ensure that no other portlets on the current page recreate the session we
+                are trying to invalidate.
+            </p>
+        </td>
+      </tr>
+    </table>
+  </c:when>
+  <c:otherwise>
+    <%@ include file="test_results.inc" %>
+  </c:otherwise>
+</c:choose>
+
+<%@ include file="navigation.inc" %>
+
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-testsuite/src/main/webapp/jsp/TestCompanionPortlet.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/TestCompanionPortlet.jsp b/pluto-testsuite/src/main/webapp/jsp/TestCompanionPortlet.jsp
index 10a46c2..0355328 100644
--- a/pluto-testsuite/src/main/webapp/jsp/TestCompanionPortlet.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/TestCompanionPortlet.jsp
@@ -1,47 +1,47 @@
-<%--
-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.
---%>
-
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
-
-<portlet:defineObjects/>
-
-<div class="portlet-section-body">
-<p>
-  This portlet is a companion portlet to the 286 Test Portlet.
-  It is designed to test interportlet coordination features of version 2.0 of the
-  Java Portlet API (JSR-286) which include public render parameters and eventing.  
-</p>
-
-<c:if test="${not empty param['public-render-param1']}">
-	<p>
-		<h4>Public Render Parameter Test Results:</h4>
-		<p>
-		checkPublicRenderParameter test: <b><c:out value="${param['public-render-param1']}"/></b>	
-		</p>
-	</p>
-</c:if>
-
-<c:if test="${not empty eventInfo}">
-	<p>
-		<h4>Information from last event:</h4>
-		<p><c:out value="${eventInfo}" /></p>
-	</p>
-</c:if>
+<%--
+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.
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
+
+<portlet:defineObjects/>
+
+<div class="portlet-section-body">
+<p>
+  This portlet is a companion portlet to the 286 Test Portlet.
+  It is designed to test interportlet coordination features of version 2.0 of the
+  Java Portlet API (JSR-286) which include public render parameters and eventing.  
+</p>
+
+<c:if test="${not empty param['public-render-param1']}">
+	<p>
+		<h4>Public Render Parameter Test Results:</h4>
+		<p>
+		checkPublicRenderParameter test: <b><c:out value="${param['public-render-param1']}"/></b>	
+		</p>
+	</p>
+</c:if>
+
+<c:if test="${not empty eventInfo}">
+	<p>
+		<h4>Information from last event:</h4>
+		<p><c:out value="${eventInfo}" /></p>
+	</p>
+</c:if>
 </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-testsuite/src/main/webapp/jsp/introduction.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/introduction.jsp b/pluto-testsuite/src/main/webapp/jsp/introduction.jsp
index 0389e89..b5874f2 100644
--- a/pluto-testsuite/src/main/webapp/jsp/introduction.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/introduction.jsp
@@ -1,76 +1,76 @@
-<%--
-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.
---%>
-
-<%@ page import="java.util.Map" %>
-<%@ page import="javax.servlet.jsp.jstl.core.LoopTagStatus" %>
-<%@ page import="org.apache.pluto.testsuite.TestConfig" %>
-
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
-
-<portlet:defineObjects/>
-
-<p>
-  This portlet is a portlet specification compatibility test portlet.
-  It provides several tests of verying complexities which will assist in
-  evaluating compliance with the portlet specification. It was originally
-  developed for testing Apache Pluto, however, it does not utilize any
-  proprietary APIs and should work with all compliant portlet containers.
-</p>
-
-<p>
-  Please select one of the following tests:
-  <table>
-    <c:forEach var="testConfig" items="${testConfigs}" varStatus="status">
-      <tr>
-        <td>
-          # <c:out value="${status.index}"/>.
-        </td>
-        <td>
-          <c:out value="${testConfig.name}"/>
-        </td>
-        
-        <%-- Generate portlet action URL: Start =========================== --%>
-        <portlet:actionURL secure='<%= renderRequest.isSecure() ? "True" : "False" %>' escapeXml="true"
-                           var="url">
-          <portlet:param name="testId"
-                         value='<%= ((LoopTagStatus) pageContext.getAttribute("status")).getIndex() + "" %>'/>
-          <c:forEach var="param" items="${testConfig.actionParameters}">
-            <%
-                TestConfig.Parameter parameter = (TestConfig.Parameter)
-                        pageContext.findAttribute("param");
-                String paramName = parameter.getName();
-                String paramValue = parameter.getValue();
-            %>
-            <portlet:param name="<%= paramName %>"
-                           value="<%= paramValue %>"/>
-          </c:forEach>
-        </portlet:actionURL>
-        <%-- Generate portlet action URL: End ============================= --%>
-        
-        <td>
-          <a href="<c:out value="${url}" escapeXml="false"/>">Test</a>
-        </td>
-      </tr>
-    </c:forEach>
-  </table>
-</p>
-
-
-
+<%--
+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.
+--%>
+
+<%@ page import="java.util.Map" %>
+<%@ page import="javax.servlet.jsp.jstl.core.LoopTagStatus" %>
+<%@ page import="org.apache.pluto.testsuite.TestConfig" %>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
+
+<portlet:defineObjects/>
+
+<p>
+  This portlet is a portlet specification compatibility test portlet.
+  It provides several tests of verying complexities which will assist in
+  evaluating compliance with the portlet specification. It was originally
+  developed for testing Apache Pluto, however, it does not utilize any
+  proprietary APIs and should work with all compliant portlet containers.
+</p>
+
+<p>
+  Please select one of the following tests:
+  <table>
+    <c:forEach var="testConfig" items="${testConfigs}" varStatus="status">
+      <tr>
+        <td>
+          # <c:out value="${status.index}"/>.
+        </td>
+        <td>
+          <c:out value="${testConfig.name}"/>
+        </td>
+        
+        <%-- Generate portlet action URL: Start =========================== --%>
+        <portlet:actionURL secure='<%= renderRequest.isSecure() ? "True" : "False" %>' escapeXml="true"
+                           var="url">
+          <portlet:param name="testId"
+                         value='<%= ((LoopTagStatus) pageContext.getAttribute("status")).getIndex() + "" %>'/>
+          <c:forEach var="param" items="${testConfig.actionParameters}">
+            <%
+                TestConfig.Parameter parameter = (TestConfig.Parameter)
+                        pageContext.findAttribute("param");
+                String paramName = parameter.getName();
+                String paramValue = parameter.getValue();
+            %>
+            <portlet:param name="<%= paramName %>"
+                           value="<%= paramValue %>"/>
+          </c:forEach>
+        </portlet:actionURL>
+        <%-- Generate portlet action URL: End ============================= --%>
+        
+        <td>
+          <a href="<c:out value="${url}" escapeXml="false"/>">Test</a>
+        </td>
+      </tr>
+    </c:forEach>
+  </table>
+</p>
+
+
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-testsuite/src/main/webapp/jsp/load_resource_test.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/load_resource_test.jsp b/pluto-testsuite/src/main/webapp/jsp/load_resource_test.jsp
index d8788d1..c262ee1 100644
--- a/pluto-testsuite/src/main/webapp/jsp/load_resource_test.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/load_resource_test.jsp
@@ -1,84 +1,84 @@
-<%--
-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.
---%>
-<%@taglib prefix="portlet" uri="http://java.sun.com/portlet_2_0" %>
-<%@taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
-<portlet:defineObjects />
-<TABLE style="font-size: -1">
-<TR><TH colspan="2" style="background-color:blue;color:white;">MANUAL TEST</TH></TR>
-<TR><TH></TH>
-    <TH><c:out value="${test.config.name}" /></TH></TR>
-<TR><TD colspan="2">
-		Output from this test will be loaded in a separate window using the
-		generated ResourceURL.  If the window does not open automatically,
-		<a id="<portlet:namespace />windowlink"
-				href="<portlet:resourceURL>
-						<portlet:param name='testId' value='<%= ((Integer) renderRequest.getAttribute("testId")).toString() %>' /><portlet:param name='nocache' value='<%= Long.toString(System.currentTimeMillis()) %>' />
-					</portlet:resourceURL>" target="_blank">
-			Click here to open the new window.
-		</a>
-	</TD>
-</TR>
-</TABLE>	
-	<script type="text/javascript">
-	<!--
-	(function() {
-		var $ = function(something) {
-			return document.getElementById(something);
-		}
-		var link = $('<portlet:namespace />windowlink'); 
-		var resourceURL = link.href;
-		link.onclick = function() {
-			window.open(resourceURL, '_blank', 'scrollbars=yes,resizable=yes,width=400,height=300');
-			return false;
-		}
-		link.onclick();
-<%--	
-	 Originally, I was going to use Ajax to load the resource URL, but I found that
-	 window.open is a little cleaner; keeping this around just in case though
-	
-		
-		
-		var getXHR = function() {
-			try { return new XMLHttpRequest(); } catch (e) {}
-			try{ return new ActiveXObject("MSXML3.XMLHTTP") }catch(e){}
-	        try{ return new ActiveXObject("MSXML2.XMLHTTP.3.0") }catch(e){}
-	        try{ return new ActiveXObject("Msxml2.XMLHTTP") }catch(e){}
-	        try{ return new ActiveXObject("Microsoft.XMLHTTP") }catch(e){}
-	        throw new Error("Could not find an XMLHttpRequest alternative.") 
-		}
-	
-		var xhr = getXHR();
-		xhr.onreadystatechange = function() {
-			if (xhr.readyState == 4 && xhr.status == 200) {
-				$('<portlet:namespace />contentArea').innerHTML = xhr.responseText;
-			} else if (xhr.readyState == 4) {
-				var win = window.open('', '_blank', 'scrollbars=yes,resizable=yes,width=400,height=300');
-				win.document.write(xhr.responseText);
-				win.document.close();
-			}
-		};
-		
-		xhr.open("get", resourceURL, true);
-		xhr.send();
-	--%>
-	})(); 
-	//-->
-	</script>
-
+<%--
+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.
+--%>
+<%@taglib prefix="portlet" uri="http://java.sun.com/portlet_2_0" %>
+<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<portlet:defineObjects />
+<TABLE style="font-size: -1">
+<TR><TH colspan="2" style="background-color:blue;color:white;">MANUAL TEST</TH></TR>
+<TR><TH></TH>
+    <TH><c:out value="${test.config.name}" /></TH></TR>
+<TR><TD colspan="2">
+		Output from this test will be loaded in a separate window using the
+		generated ResourceURL.  If the window does not open automatically,
+		<a id="<portlet:namespace />windowlink"
+				href="<portlet:resourceURL>
+						<portlet:param name='testId' value='<%= ((Integer) renderRequest.getAttribute("testId")).toString() %>' /><portlet:param name='nocache' value='<%= Long.toString(System.currentTimeMillis()) %>' />
+					</portlet:resourceURL>" target="_blank">
+			Click here to open the new window.
+		</a>
+	</TD>
+</TR>
+</TABLE>	
+	<script type="text/javascript">
+	<!--
+	(function() {
+		var $ = function(something) {
+			return document.getElementById(something);
+		}
+		var link = $('<portlet:namespace />windowlink'); 
+		var resourceURL = link.href;
+		link.onclick = function() {
+			window.open(resourceURL, '_blank', 'scrollbars=yes,resizable=yes,width=400,height=300');
+			return false;
+		}
+		link.onclick();
+<%--	
+	 Originally, I was going to use Ajax to load the resource URL, but I found that
+	 window.open is a little cleaner; keeping this around just in case though
+	
+		
+		
+		var getXHR = function() {
+			try { return new XMLHttpRequest(); } catch (e) {}
+			try{ return new ActiveXObject("MSXML3.XMLHTTP") }catch(e){}
+	        try{ return new ActiveXObject("MSXML2.XMLHTTP.3.0") }catch(e){}
+	        try{ return new ActiveXObject("Msxml2.XMLHTTP") }catch(e){}
+	        try{ return new ActiveXObject("Microsoft.XMLHTTP") }catch(e){}
+	        throw new Error("Could not find an XMLHttpRequest alternative.") 
+		}
+	
+		var xhr = getXHR();
+		xhr.onreadystatechange = function() {
+			if (xhr.readyState == 4 && xhr.status == 200) {
+				$('<portlet:namespace />contentArea').innerHTML = xhr.responseText;
+			} else if (xhr.readyState == 4) {
+				var win = window.open('', '_blank', 'scrollbars=yes,resizable=yes,width=400,height=300');
+				win.document.write(xhr.responseText);
+				win.document.close();
+			}
+		};
+		
+		xhr.open("get", resourceURL, true);
+		xhr.send();
+	--%>
+	})(); 
+	//-->
+	</script>
+
 <%@ include file="navigation.inc" %>	
\ No newline at end of file


[03/11] portals-pluto git commit: Added helper functions to PortletParameters & PortletState objects. Began adapting demo to use the helper functions.

Posted by ms...@apache.org.
Added helper functions to PortletParameters & PortletState objects. Began adapting demo to use the helper functions.


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

Branch: refs/heads/PortletHub
Commit: 30e5bbf7d94c6ae4e9a7819d457e506e613e94ca
Parents: 71a19e1
Author: Scott Nicklous <ms...@apache.org>
Authored: Mon Dec 1 16:48:50 2014 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Mon Dec 1 16:48:50 2014 +0100

----------------------------------------------------------------------
 .../src/main/webapp/WEB-INF/jsp/view-csp.jsp    |   2 +-
 .../src/main/webapp/WEB-INF/jsp/view-isp.jsp    |   6 +-
 pluto-portal/src/main/webapp/portlet.js         | 205 +++++++++++++++++--
 3 files changed, 189 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/30e5bbf7/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-csp.jsp
----------------------------------------------------------------------
diff --git a/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-csp.jsp b/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-csp.jsp
index 7ce9442..ecc389d 100644
--- a/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-csp.jsp
+++ b/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-csp.jsp
@@ -118,7 +118,7 @@ limitations under the License.
       if ((newColor === undefined) || (newColor === null) || !newColor.match("^#(?:[A-Fa-f0-9]{3}){1,2}$")) {
          document.getElementById(msgdiv).innerHTML = 'Bad color. Enter #xxxxxx or #xxx.';
       } else {
-         newState = portletInit.cloneState(currState);
+         newState = currState.clone();
          newState.parameters.color = [newColor];
          portletInit.setPortletState(newState);
       }

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/30e5bbf7/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-isp.jsp
----------------------------------------------------------------------
diff --git a/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-isp.jsp b/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-isp.jsp
index 92b4cd6..40bbfa6 100644
--- a/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-isp.jsp
+++ b/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-isp.jsp
@@ -59,7 +59,7 @@ limitations under the License.
       console.log("ISP: image selected (radio): " + this.value);
       
       if (currState.parameters.imgName !== this.value) {
-         var newState = portletInit.cloneState(currState);
+         var newState = currState.clone();
          newState.parameters.imgName = [this.value];
          portletInit.setPortletState(newState);
       }
@@ -70,7 +70,7 @@ limitations under the License.
       console.log("ISP: image selected (dropdown): " + this.value);
       
       if (currState.parameters.imgName !== this.value) {
-         var newState = portletInit.cloneState(currState);
+         var newState = currState.clone();
          newState.parameters.imgName = [this.value];
          portletInit.setPortletState(newState);
       }
@@ -134,7 +134,7 @@ limitations under the License.
    handleST = function () {
       console.log("ISP: select display type clicked: " + this.value);
       if (currState.parameters.selType !==  this.value) {
-         var newState = portletInit.cloneState(currState);
+         var newState = currState.clone();
          newState.parameters.selType = [this.value];
          portletInit.setPortletState(newState);
       }

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/30e5bbf7/pluto-portal/src/main/webapp/portlet.js
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/portlet.js b/pluto-portal/src/main/webapp/portlet.js
index 98b898f..5abdd2d 100644
--- a/pluto-portal/src/main/webapp/portlet.js
+++ b/pluto-portal/src/main/webapp/portlet.js
@@ -47,17 +47,56 @@
  * To represent the parameter having a <code>null</code> value, the
  * property value must equal [null].
  * <p>
- * @typedef    PortletParameter
+ * PortletParameters objects obtained from the Portlet Hub define some helper
+ * functions for accessing the parameter values.
+ * <p>
+ * @typedef    PortletParameters
  * @property   {string[]}  {string}   The parameters object may have
  *                                    multiple properties.
+ * @property   {function}   clone()          Returns a new copy of this object
+ * @property   {function}   setValue(n,v)    Sets a parameter with name n and value v.
+ *                                           The value v may be a string or an array.
+ * @property   {function}   setValues(n,v)   Sets a parameter with name n and value v.
+ *                                           The value v may be a string or an array.
+ * @property   {function}   getValue(n)      Gets the string parameter value for the name n.
+ *                                           If n designates a multi-valued parameter, this function returns the first value in the values array.
+ * @property   {function}   getValues(n)     Gets the string array parameter value for the name n.
+ * @property   {function}   remove(n)        Removes the parameter with name n.
  */
 
 /**
  * Represents the portlet state.
+ * <p>
+ * PortletState objects obtained from the Portlet Hub define some helper
+ * functions for accessing the parameter values.
+ * <p>
  * @typedef    PortletState
- * @property   {PortletParameter}   parameters     The portlet parameters
+ * @property   {PortletParameters}   parameters     The portlet parameters
+ * @property   {PortletParameters}   p              an alias for the 'parameters' property
  * @property   {string}             portletMode    The portlet mode
  * @property   {string}             windowState    The window state
+ * @property   {function}   clone()                Returns a new copy of this object
+ * @property   {function}   setPortletMode(pm)     Sets the portlet mode to the specified value. 
+ *               The strings defined by the {@link PortletConstants} object should be used to specify the portlet mode.
+ * @property   {function}   getPortletMode()       Returns the current portlet mode 
+ * @property   {function}   setWindowState(ws)     Sets the window state to the specified value
+ * @property   {function}   getWindowState()       Returns the current window state
+ *               The strings defined by the {@link PortletConstants} object should be used to specify the window state.
+ */
+
+/**
+ * Provides defined values for some commonly-used portlet constants
+ * <p>
+ * @typedef    PortletConstants
+ * @property   {string}       VIEW        Specifies portlet mode 'VIEW'    
+ * @property   {string}       EDIT        Specifies portlet mode 'EDIT'    
+ * @property   {string}       HELP        Specifies portlet mode 'HELP'    
+ * @property   {string}       NORMAL      Specifies window state 'NORMAL'
+ * @property   {string}       MINIMIZED   Specifies window state 'MINIMIZED'
+ * @property   {string}       MAXIMIZED   Specifies window state 'MAXIMIZED'
+ * @property   {string}       FULL        Specifies resource URL cacheability 'FULL'
+ * @property   {string}       PORTLET     Specifies resource URL cacheability 'PORTLET'
+ * @property   {string}       PAGE        Specifies resource URL cacheability 'PAGE'
  */
 
 /**
@@ -305,8 +344,94 @@ var portlet = portlet || {};
       return;
    }
 
+
+   // ~~~~~~~~~~~~~~~~ Helper classes for parameters & state ~~~~~~~~~~~~~~~~~~~
+   
+   function Parameters(p) {
+      var n;
+      if (p) {
+         for (n in p) {
+            if (p.hasOwnProperty(n) && Array.isArray(p[n])) {
+               this[n] = p[n].slice(0);
+            }
+         }
+      }
+   }
+   Parameters.prototype.clone = function () {
+      return new Parameters(this);
+   };
+   Parameters.prototype.setValue = function (name, value) {
+      var val = value;
+      if (!Array.isArray(value)) {
+         val = [value];
+      }
+      this[name] = val;
+   };
+   Parameters.prototype.setValues = Parameters.prototype.setValue;
+   Parameters.prototype.remove = function (name) {
+      if (this[name] !== undefined) {
+         delete this[name];
+      }
+   };
+   Parameters.prototype.getValue = function (name) {
+      var res = this[name];
+      if (res) {
+         res = res[0];
+      }
+      return res;
+   };
+   Parameters.prototype.getValues = function (name) {
+      return this[name];
+   };
+   
+   function State (s) {
+      if (s) {
+         this.portletMode = s.portletMode;
+         this.windowState = s.windowState;
+         this.parameters = new Parameters(s.parameters);
+      } else {
+         this.portletMode = 'VIEW';
+         this.windowState = 'NORMAL';
+         this.parameters = new Parameters();
+      }
+      this.p = this.parameters;
+   }
+   State.prototype.clone = function () {
+      return new State(this);
+   };
+   State.prototype.setPortletMode = function (pm) {
+      this.portletMode = pm;
+   };
+   State.prototype.getPortletMode = function () {
+      return this.portletMode;
+   };
+   State.prototype.setWindowState = function (ws) {
+      this.windowState = ws;
+   };
+   State.prototype.getWindowState = function () {
+      return this.windowState;
+   };
+   
+   var portletConstants = {
+      
+      // Portlet mode
+      "VIEW"      : "VIEW",
+      "EDIT"      : "EDIT",
+      "HELP"      : "HELP",
+      
+      // window state
+      "NORMAL"    : "NORMAL",
+      "MINIMIZED" : "MINIMIZED",
+      "MAXIMIZED" : "MAXIMIZED",
+      
+      // Resource URL cacheability
+      "FULL"      : "cacheLevelFull",
+      "PAGE"      : "cacheLevelPage",
+      "PORTLET"   : "cacheLevelPortlet"
+   },
+
    // variable declarations
-   var portletRegex = "^portlet[.].*",
+   portletRegex = "^portlet[.].*",
 
    /**
     * Portlet Hub Mockup internal structure defining the data held
@@ -623,7 +748,7 @@ var portlet = portlet || {};
 
                pi = _registeredPortlets[p];
 
-               state = _clone(pi.getState());
+               state = new State(pi.getState());
                data = pi.getRenderData();
                callback = oscListeners[p].callback;
 
@@ -809,7 +934,7 @@ var portlet = portlet || {};
     * To represent a <code>null</code> value, the property value must equal
     * [null].
     *
-    * @param      {PortletParameter} parms    The parameters to check
+    * @param      {PortletParameters} parms    The parameters to check
     * @private
     * @throws  {IllegalArgumentException}
     *             Thrown if the parameters are incorrect
@@ -958,6 +1083,10 @@ var portlet = portlet || {};
    setPageState = function (pid, ustr) {
       var pi;
 
+      // Perform some checks on the update string. allow null string.
+      if ((ustr === undefined) || ((ustr !== null) && (typeof ustr !== 'string'))) {
+         throwIllegalArgumentException("Invalid update string: " + ustr);
+      }
       // convert page state into an object.
       // update each affected portlet client. Makes use of a 
       // mockup-specific function for decoding. 
@@ -976,6 +1105,8 @@ var portlet = portlet || {};
 
    };
 
+   // ~~~~~~~~~~~~~~~~ Register function ~~~~~~~~~~~~~~~~~~~
+
    /**
     * Registers a portlet client with the portlet hub.
     * <p>
@@ -1249,15 +1380,6 @@ var portlet = portlet || {};
          
          
             /**
-             * Utility function to perform a deep copy of the state object.
-             *
-             * @param   {PortletState}    state    The state to be cloned
-             *
-             * @memberOf   PortletInit
-             */
-            cloneState : _clone,
-
-            /**
              * Returns a promise for a resource URL with parameters set appropriately
              * for the page state according to the  resource parameters
              * and cacehability option provided.
@@ -1272,7 +1394,7 @@ var portlet = portlet || {};
              * <p>
              * The resource parameters must be an object containing properties
              * representing parameter names whose values must be an array of string
-             * values, as described under {@link PortletParameter}.
+             * values, as described under {@link PortletParameters}.
              * All of the resource parameters will be attached to the URL.
              * Use of resource parameters is optional.
              * <p>
@@ -1315,7 +1437,8 @@ var portlet = portlet || {};
              *
              * @param   {PortletParameters}  resParams   Resource parameters to be
              *                                           added to the URL
-             * @param   {string}             cache       Cacheability option
+             * @param   {string}             cache       Cacheability option. The strings defined
+             *                under {@link PortletConstants} should be used to specifiy cacheability.
              *
              * @returns {Promise}   A Promise object. Returns a string representing the 
              *                      resource URL on successful resolution.
@@ -1400,7 +1523,7 @@ var portlet = portlet || {};
              * <p>
              * The action parameters must be an object containing properties
              * representing parameter names whose values must be an array of string
-             * values, as described under {@link PortletParameter}.
+             * values, as described under {@link PortletParameters}.
              * All of the action parameters will be attached to the URL.
              * Use of action parameters is optional.
              * <p>
@@ -1513,7 +1636,7 @@ var portlet = portlet || {};
              * <p>
              * The action parameters must be an object containing properties
              * representing parameter names whose values must be an array of string
-             * values, as described under {@link PortletParameter}.
+             * values, as described under {@link PortletParameters}.
              * All of the action parameters will be attached to the URL.
              * Use of action parameters is optional.
              * <p>
@@ -1689,10 +1812,52 @@ var portlet = portlet || {};
                }
          
                return cnt;
-            }
+            },
+            
+            /**
+             * Creates and returns a new PortletParameters object.
+             * <p>
+             * If no argument is provided, an empty PortletParameters object will be
+             * returned. If an existing PortletParameters object is provided as argument,
+             * a clone of the input object will be returned.
+             *
+             * @param   {PortletParameters}   p     An optional PortletParameters object to be copied
+             *
+             * @returns {PortletParameters}         The new parameters object
+             *
+             * @memberOf   PortletInit
+             */
+            newParameters : function (p) {
+               return new Parameters (p);
+            },
+            
+            /**
+             * Creates and returns a new PortletState object.
+             * <p>
+             * If no argument is provided, an empty PortletState object will be
+             * returned. If an existing PortletState object is provided as argument,
+             * a clone of the input object will be returned.
+             *
+             * @param   {PortletState}   s     An optional PortletState object to be copied
+             *
+             * @returns {PortletState}         The new PortletState object
+             *
+             * @memberOf   PortletInit
+             */
+            newState : function (s) {
+               return new State(s);
+            },
+            
+            /**
+             * The {@link PortletConstants} object that provides useful field definitions for 
+             * portlet mode, window state, and resource URL cacheability settings.
+             *
+             * @memberOf   PortletInit
+             */
+            constants : portletConstants
          
          };
       });
    };
 
-})();
+}());


[10/11] portals-pluto git commit: Changed servlet, jsp, and taglib dependencies to use the Apache versions of the artifacts. Moved to servlet version 3.0, JSP & EL version 2.2, which correspond to tomcat version 7.0.50. Moved to version 1.2.1 of the Apac

Posted by ms...@apache.org.
Changed servlet, jsp, and taglib dependencies to use the Apache versions of
the artifacts. Moved to servlet version 3.0, JSP & EL version 2.2,
which correspond to tomcat version 7.0.50. Moved to version 1.2.1 of the Apache
standard tag library.


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

Branch: refs/heads/PortletHub
Commit: f25b14a12eade4cae7bebdd1f9cb2370173d308a
Parents: 5eb2aa1
Author: Scott Nicklous <ms...@apache.org>
Authored: Wed Dec 3 15:53:05 2014 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Wed Dec 3 15:53:05 2014 +0100

----------------------------------------------------------------------
 PortletHubDemo/pom.xml             | 18 +++++++++-------
 pluto-container-api/pom.xml        |  4 ++--
 pluto-container-driver-api/pom.xml |  4 ++--
 pluto-container/pom.xml            |  4 ++--
 pluto-portal-driver-impl/pom.xml   | 12 +++++------
 pluto-portal-driver/pom.xml        | 21 ++++++++++++-------
 pluto-portal/pom.xml               | 32 ++++++++++++++--------------
 pluto-taglib/pom.xml               |  8 +++----
 pluto-testsuite/pom.xml            | 28 +++++++++++++++----------
 pom.xml                            | 37 +++++++++++++++++++++------------
 portlet-api_2.0_spec/pom.xml       |  4 ++--
 11 files changed, 98 insertions(+), 74 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/f25b14a1/PortletHubDemo/pom.xml
----------------------------------------------------------------------
diff --git a/PortletHubDemo/pom.xml b/PortletHubDemo/pom.xml
index 6249d99..267afa9 100644
--- a/PortletHubDemo/pom.xml
+++ b/PortletHubDemo/pom.xml
@@ -18,8 +18,8 @@
         <scope>provided</scope>
       </dependency>
       <dependency>
-         <groupId>javax.servlet</groupId>
-         <artifactId>javax.servlet-api</artifactId>
+         <groupId>org.apache.tomcat</groupId>
+         <artifactId>tomcat-servlet-api</artifactId>
          <scope>provided</scope>
       </dependency>
 
@@ -31,8 +31,8 @@
          <scope>provided</scope>
       </dependency>
       <dependency>
-         <groupId>javax.servlet</groupId>
-         <artifactId>jstl</artifactId>
+         <groupId>org.apache.taglibs</groupId>
+         <artifactId>taglibs-standard-spec</artifactId>
          <scope>provided</scope>
       </dependency>
       <dependency>
@@ -74,21 +74,23 @@
     
          <dependencies>
                 <dependency>
-                    <groupId>javax.servlet</groupId>
-                    <artifactId>jstl</artifactId>
+                    <groupId>org.apache.taglibs</groupId>
+                    <artifactId>taglibs-standard-spec</artifactId>
                     <scope>compile</scope>
                     <exclusions>
                         <exclusion>
-                            <groupId>javax.servlet</groupId>
-                            <artifactId>jsp-api</artifactId>
+                            <groupId>org.apache.tomcat</groupId>
+                            <artifactId>tomcat-jsp-api</artifactId>
                         </exclusion>
                     </exclusions>
                 </dependency>
+<!--                
                 <dependency>
                     <groupId>taglibs</groupId>
                     <artifactId>standard</artifactId>
                     <scope>compile</scope>
                 </dependency>
+-->                
          </dependencies>
          
          <build>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/f25b14a1/pluto-container-api/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-container-api/pom.xml b/pluto-container-api/pom.xml
index 9885f69..6f07bd9 100644
--- a/pluto-container-api/pom.xml
+++ b/pluto-container-api/pom.xml
@@ -40,8 +40,8 @@
     </dependency>
 
     <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>javax.servlet-api</artifactId>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-servlet-api</artifactId>
       <scope>provided</scope>
     </dependency>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/f25b14a1/pluto-container-driver-api/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-container-driver-api/pom.xml b/pluto-container-driver-api/pom.xml
index 0796116..849df09 100644
--- a/pluto-container-driver-api/pom.xml
+++ b/pluto-container-driver-api/pom.xml
@@ -40,8 +40,8 @@
     </dependency>
     
     <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>javax.servlet-api</artifactId>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-servlet-api</artifactId>
       <scope>provided</scope>
     </dependency>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/f25b14a1/pluto-container/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-container/pom.xml b/pluto-container/pom.xml
index ca5d8a0..fb01443 100644
--- a/pluto-container/pom.xml
+++ b/pluto-container/pom.xml
@@ -55,8 +55,8 @@
     </dependency>
 
     <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>javax.servlet-api</artifactId>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-servlet-api</artifactId>
       <scope>provided</scope>
     </dependency>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/f25b14a1/pluto-portal-driver-impl/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-portal-driver-impl/pom.xml b/pluto-portal-driver-impl/pom.xml
index 6191c83..8afd8bc 100644
--- a/pluto-portal-driver-impl/pom.xml
+++ b/pluto-portal-driver-impl/pom.xml
@@ -83,20 +83,20 @@
     </dependency>
 
     <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>javax.servlet-api</artifactId>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-servlet-api</artifactId>
       <scope>provided</scope>
     </dependency>
 
     <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>jstl</artifactId>
+      <groupId>org.apache.taglibs</groupId>
+      <artifactId>taglibs-standard-spec</artifactId>
       <scope>${dependency.scope}</scope>
     </dependency>
 
     <dependency>
-      <groupId>taglibs</groupId>
-      <artifactId>standard</artifactId>
+      <groupId>org.apache.taglibs</groupId>
+      <artifactId>taglibs-standard-impl</artifactId>
       <scope>${dependency.scope}</scope>
     </dependency>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/f25b14a1/pluto-portal-driver/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-portal-driver/pom.xml b/pluto-portal-driver/pom.xml
index 9595722..a5952dc 100644
--- a/pluto-portal-driver/pom.xml
+++ b/pluto-portal-driver/pom.xml
@@ -63,8 +63,8 @@
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>javax.servlet-api</artifactId>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-servlet-api</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
@@ -73,18 +73,23 @@
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>jsp-api</artifactId>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-jsp-api</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>jstl</artifactId>
+      <groupId>org.apache.taglibs</groupId>
+      <artifactId>taglibs-standard-spec</artifactId>
       <scope>${dependency.scope}</scope>
     </dependency>
     <dependency>
-      <groupId>taglibs</groupId>
-      <artifactId>standard</artifactId>
+      <groupId>org.apache.taglibs</groupId>
+      <artifactId>taglibs-standard-impl</artifactId>
+      <scope>${dependency.scope}</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.taglibs</groupId>
+      <artifactId>taglibs-standard-jstlel</artifactId>
       <scope>${dependency.scope}</scope>
     </dependency>
     <dependency>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/f25b14a1/pluto-portal/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-portal/pom.xml b/pluto-portal/pom.xml
index 721797c..7efc06e 100644
--- a/pluto-portal/pom.xml
+++ b/pluto-portal/pom.xml
@@ -41,12 +41,12 @@
           <artifactId>pluto-container-api</artifactId>
         </exclusion>
         <exclusion>
-          <groupId>javax.servlet</groupId>
-          <artifactId>jsp-api</artifactId>
+          <groupId>org.apache.tomcat</groupId>
+          <artifactId>tomcat-jsp-api</artifactId>
         </exclusion>
         <exclusion>
-          <groupId>javax.servlet</groupId>
-          <artifactId>servlet-api</artifactId>
+          <groupId>org.apache.tomcat</groupId>
+          <artifactId>tomcat-servlet-api</artifactId>
         </exclusion>
         <exclusion>
           <groupId>org.apache.portals</groupId>
@@ -66,12 +66,12 @@
       <scope>compile</scope>
       <exclusions>
         <exclusion>
-          <groupId>javax.servlet</groupId>
-          <artifactId>jsp-api</artifactId>
+          <groupId>org.apache.tomcat</groupId>
+          <artifactId>tomcat-jsp-api</artifactId>
         </exclusion>
         <exclusion>
-          <groupId>javax.servlet</groupId>
-          <artifactId>servlet-api</artifactId>
+          <groupId>org.apache.tomcat</groupId>
+          <artifactId>tomcat-servlet-api</artifactId>
         </exclusion>
         <exclusion>
           <groupId>xml-apis</groupId>
@@ -87,12 +87,12 @@
       <scope>compile</scope>
       <exclusions>
         <exclusion>
-          <groupId>javax.servlet</groupId>
-          <artifactId>jsp-api</artifactId>
+          <groupId>org.apache.tomcat</groupId>
+          <artifactId>tomcat-jsp-api</artifactId>
         </exclusion>
         <exclusion>
-          <groupId>javax.servlet</groupId>
-          <artifactId>servlet-api</artifactId>
+          <groupId>org.apache.tomcat</groupId>
+          <artifactId>tomcat-servlet-api</artifactId>
         </exclusion>
         <exclusion>
           <groupId>xml-apis</groupId>
@@ -102,13 +102,13 @@
     </dependency>
 
     <dependency>
-       <groupId>javax.servlet</groupId>
-	   <artifactId>jsp-api</artifactId>
+       <groupId>org.apache.tomcat</groupId>
+	   <artifactId>tomcat-jsp-api</artifactId>
 	   <scope>provided</scope>
 	 </dependency>
     <dependency>
-       <groupId>javax.servlet</groupId>
-       <artifactId>javax.servlet-api</artifactId>
+       <groupId>org.apache.tomcat</groupId>
+       <artifactId>tomcat-servlet-api</artifactId>
        <scope>provided</scope>
     </dependency>
     <dependency>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/f25b14a1/pluto-taglib/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-taglib/pom.xml b/pluto-taglib/pom.xml
index 0e34d0f..f24de0f 100644
--- a/pluto-taglib/pom.xml
+++ b/pluto-taglib/pom.xml
@@ -39,13 +39,13 @@
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>javax.servlet-api</artifactId>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-servlet-api</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>jsp-api</artifactId>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-jsp-api</artifactId>
       <scope>provided</scope>
     </dependency>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/f25b14a1/pluto-testsuite/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-testsuite/pom.xml b/pluto-testsuite/pom.xml
index 4eb285a..8ef5a4d 100644
--- a/pluto-testsuite/pom.xml
+++ b/pluto-testsuite/pom.xml
@@ -38,8 +38,8 @@
           <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
+            <groupId>org.apache.tomcat</groupId>
+            <artifactId>tomcat-servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -48,13 +48,24 @@
             <scope>${dependency.scope}</scope>
         </dependency>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>jstl</artifactId>
+            <groupId>org.apache.taglibs</groupId>
+            <artifactId>taglibs-standard-spec</artifactId>
             <scope>${dependency.scope}</scope>
             <exclusions>
                 <exclusion>
-                    <groupId>javax.servlet</groupId>
-                    <artifactId>jsp-api</artifactId>
+                    <groupId>org.apache.tomcat</groupId>
+                    <artifactId>tomcat-jsp-api</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.taglibs</groupId>
+            <artifactId>taglibs-standard-impl</artifactId>
+            <scope>${dependency.scope}</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.tomcat</groupId>
+                    <artifactId>tomcat-jsp-api</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
@@ -74,11 +85,6 @@
             <scope>compile</scope>
         </dependency>
         <dependency>
-            <groupId>taglibs</groupId>
-            <artifactId>standard</artifactId>
-            <scope>${dependency.scope}</scope>
-        </dependency>
-        <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/f25b14a1/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 8914183..37c554a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -257,10 +257,11 @@ generate mailto links. -->
     <javax.portlet.version.major>2</javax.portlet.version.major>
     <javax.portlet.version.minor>0</javax.portlet.version.minor>
     <portals.portlet2-api-spec.version>${project.version}</portals.portlet2-api-spec.version>
-    <servlet-api.version>3.0.1</servlet-api.version>
-    <jsp-api.version>2.0</jsp-api.version>
-    <jstl.version>1.1.2</jstl.version>
-    <taglibs.standard.version>1.1.2</taglibs.standard.version>
+    <servlet-api.version>7.0.50</servlet-api.version>
+    <jsp-api.version>7.0.50</jsp-api.version>
+    <jstl.version>7.0.50</jstl.version>
+    <el-api.version>7.0.50</el-api.version>
+    <taglibs.standard.version>1.2.1</taglibs.standard.version>
     <jaxb.version>2.1</jaxb.version>
     <jaxb-impl.version>2.1.9</jaxb-impl.version>
     <stax.impl.version>1.2.0</stax.impl.version>
@@ -323,8 +324,8 @@ TODO: Check if we need all of them. -->
         <version>${portals.portlet2-api-spec.version}</version>
       </dependency>
       <dependency>
-        <groupId>javax.servlet</groupId>
-        <artifactId>javax.servlet-api</artifactId>
+        <groupId>org.apache.tomcat</groupId>
+        <artifactId>tomcat-servlet-api</artifactId>
         <version>${servlet-api.version}</version>
       </dependency>
 
@@ -415,18 +416,28 @@ TODO: Check if we need all of them. -->
         <version>${maven.version}</version>
       </dependency>
       <dependency>
-        <groupId>javax.servlet</groupId>
-        <artifactId>jsp-api</artifactId>
+        <groupId>org.apache.tomcat</groupId>
+        <artifactId>tomcat-jsp-api</artifactId>
         <version>${jsp-api.version}</version>
       </dependency>
       <dependency>
-        <groupId>javax.servlet</groupId>
-        <artifactId>jstl</artifactId>
-        <version>${jstl.version}</version>
+        <groupId>org.apache.tomcat</groupId>
+        <artifactId>tomcat-el-api</artifactId>
+        <version>${el-api.version}</version>
       </dependency>
       <dependency>
-        <groupId>taglibs</groupId>
-        <artifactId>standard</artifactId>
+        <groupId>org.apache.taglibs</groupId>
+        <artifactId>taglibs-standard-spec</artifactId>
+        <version>${taglibs.standard.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.taglibs</groupId>
+        <artifactId>taglibs-standard-impl</artifactId>
+        <version>${taglibs.standard.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.taglibs</groupId>
+        <artifactId>taglibs-standard-jstlel</artifactId>
         <version>${taglibs.standard.version}</version>
       </dependency>
       <dependency>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/f25b14a1/portlet-api_2.0_spec/pom.xml
----------------------------------------------------------------------
diff --git a/portlet-api_2.0_spec/pom.xml b/portlet-api_2.0_spec/pom.xml
index 48fdcd9..ed5c84f 100644
--- a/portlet-api_2.0_spec/pom.xml
+++ b/portlet-api_2.0_spec/pom.xml
@@ -39,8 +39,8 @@
 
   <dependencies>
     <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>javax.servlet-api</artifactId>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-servlet-api</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>


[04/11] portals-pluto git commit: Merge branch 'PortletHub' of e:\git\pluto-git into PortletHub

Posted by ms...@apache.org.
Merge branch 'PortletHub' of e:\git\pluto-git into PortletHub


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

Branch: refs/heads/PortletHub
Commit: 9f9547e4ba5ad47c636a9d7922d7a5c680dd0d8c
Parents: 30e5bbf eb03ab5
Author: Scott Nicklous <ms...@apache.org>
Authored: Mon Dec 1 16:49:36 2014 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Mon Dec 1 16:49:36 2014 +0100

----------------------------------------------------------------------

----------------------------------------------------------------------



[05/11] portals-pluto git commit: Made a number of changes towards completion of portlet hub functionality:

Posted by ms...@apache.org.
Made a number of changes towards completion of portlet hub functionality:

1) Added accessor helper functions to the PortletParameters and PortletState
objects
2) Modified portlet JavaScript code to use the new accessors
3) Used jslint to improve the portletHubImpl.js code
4) Worked on implementation of the portlet hub action functionality through
use of a supplied form element. The JavaScript implementation uses the XHR2
FormData object.
5) Moved Pluto to a dependency on servlet API v3.0 in preparation for
implementation of multipart form support (needed to support the XHR2
FormData form submission)


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

Branch: refs/heads/PortletHub
Commit: 14efad10a8a5a04f5627d3e8361d957f288b9ff6
Parents: 9f9547e
Author: Scott Nicklous <ms...@apache.org>
Authored: Tue Dec 2 16:43:33 2014 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Tue Dec 2 16:43:33 2014 +0100

----------------------------------------------------------------------
 PortletHubDemo/pom.xml                          |   2 +-
 .../java/basic/portlet/ResourcePortlet.java     |  14 +-
 .../src/main/webapp/WEB-INF/jsp/view-csp.jsp    | 108 ++++---
 .../src/main/webapp/WEB-INF/jsp/view-isp.jsp    |  33 +-
 .../src/main/webapp/WEB-INF/jsp/view-ivp.jsp    |  29 +-
 .../src/main/webapp/WEB-INF/jsp/view-mbp.jsp    |  16 +-
 .../src/main/webapp/WEB-INF/jsp/view-pap.jsp    |  26 +-
 pluto-container-api/pom.xml                     |   2 +-
 pluto-container-driver-api/pom.xml              |   2 +-
 pluto-container/pom.xml                         |   2 +-
 pluto-portal-driver-impl/pom.xml                |   2 +-
 pluto-portal-driver/pom.xml                     |   2 +-
 pluto-portal/pom.xml                            |   2 +-
 pluto-portal/src/main/webapp/portlet.js         |  39 ++-
 pluto-portal/src/main/webapp/portletHubImpl.js  | 312 +++++++++----------
 pluto-taglib/pom.xml                            |   2 +-
 pluto-testsuite/pom.xml                         |   2 +-
 pom.xml                                         |   4 +-
 portlet-api_2.0_spec/pom.xml                    |   2 +-
 19 files changed, 313 insertions(+), 288 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/PortletHubDemo/pom.xml
----------------------------------------------------------------------
diff --git a/PortletHubDemo/pom.xml b/PortletHubDemo/pom.xml
index 8ab229d..6249d99 100644
--- a/PortletHubDemo/pom.xml
+++ b/PortletHubDemo/pom.xml
@@ -19,7 +19,7 @@
       </dependency>
       <dependency>
          <groupId>javax.servlet</groupId>
-         <artifactId>servlet-api</artifactId>
+         <artifactId>javax.servlet-api</artifactId>
          <scope>provided</scope>
       </dependency>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/PortletHubDemo/src/main/java/basic/portlet/ResourcePortlet.java
----------------------------------------------------------------------
diff --git a/PortletHubDemo/src/main/java/basic/portlet/ResourcePortlet.java b/PortletHubDemo/src/main/java/basic/portlet/ResourcePortlet.java
index ea0d918..7dac46f 100644
--- a/PortletHubDemo/src/main/java/basic/portlet/ResourcePortlet.java
+++ b/PortletHubDemo/src/main/java/basic/portlet/ResourcePortlet.java
@@ -34,6 +34,7 @@ import javax.portlet.ActionResponse;
 import javax.portlet.GenericPortlet;
 import javax.portlet.PortletException;
 import javax.portlet.PortletRequestDispatcher;
+import javax.portlet.PortletURL;
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
 import javax.portlet.ResourceRequest;
@@ -93,13 +94,24 @@ public class ResourcePortlet extends GenericPortlet {
       
       String clr = req.getParameter(PARAM_COLOR);
       clr = (clr == null) ? "#FFFFFF" : clr;
+      
+      // add action button if cacheability allows -
+      PortletURL aurl = null;
+      String bmu = "<p>Action URL could not be created.</p>";
+      try {
+         aurl = resp.createActionURL();
+      } catch (Exception e) {}
+      if (aurl != null) {
+         bmu = "<form  METHOD='POST' ACTION='" + aurl + "'><input id='<portlet:namespace/>-clear' type='submit' name='action' value='Action' /></form>";
+      }
 
       writer.write("<div style='background-color:" + clr + ";'>\n");
       writer.write("   <table style='background-color:" + clr + ";'>");
       writer.write("   <tr><td align='center' style='background-color:" + clr + ";'>");
       writer.write("   <img src='" + ctx + imgDir + "'" + imgStyle + ">\n");
       writer.write("   </td><td style='background-color:" + clr + ";'>");
-      writer.write("   Cacheability: " + ca);
+      writer.write("   <p>" + bmu + "</p>");
+      writer.write("   <p>Cacheability: " + ca + "</p>");
       writer.write("   </td></tr>");
       writer.write("   </table>");
       writer.write("</div>\n");

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-csp.jsp
----------------------------------------------------------------------
diff --git a/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-csp.jsp b/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-csp.jsp
index ecc389d..1e69cea 100644
--- a/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-csp.jsp
+++ b/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-csp.jsp
@@ -42,34 +42,43 @@ limitations under the License.
       }
 %>
 
-<FORM id='<portlet:namespace/>-setParams'  onsubmit='return false;'>
+<form onsubmit='return false;'>
+  <table><tr>
+     <td align='left'>Enter background color (public param):</td>
+     <td>
+        <input id='<portlet:namespace/>-color' name='<%=PARAM_COLOR%>' type='text' value='<%=clr%>' size='10' maxlength='10'>
+     </td>
+     <td><div id='<portlet:namespace/>-putMsgHere'></div></td>
+  </tr></table>
+</form>
+<hr/>
+<FORM id='<portlet:namespace/>-setParams' method='POST'>
    <table><tr><td align='left'>
-
-   Enter background color (public param):
-   </td><td colspan=3>
-   <input id='<portlet:namespace/>-color' name='" + PARAM_COLOR + "' type='text' value='<%=clr%>' size='10' maxlength='10'>
-   </td><td><div id='<portlet:namespace/>-putMsgHere'>
-   </div></td></tr><tr><td>
-
    Select active foreground colors:
    </td><td>
-   <input id='<portlet:namespace/>-red' name='" + PARAM_FG_COLOR + "' value='" + PARAM_FG_RED + "' type='checkbox' <%=r%>>
-   </td><td>Red
+   <input id='<portlet:namespace/>-red' name='<%=PARAM_FG_COLOR%>' value='<%=PARAM_FG_RED%>' type='checkbox' <%=r%>>
+   Red
    </td><td>
-   <input id='<portlet:namespace/>-green'  name='" + PARAM_FG_COLOR + "' value='" + PARAM_FG_GREEN + "' type='checkbox' <%=g%>>
-   </td><td>Green
+   <input id='<portlet:namespace/>-green'  name='<%=PARAM_FG_COLOR%>' value='<%=PARAM_FG_GREEN%>' type='checkbox' <%=g%>>
+   Green
    </td><td>
-   <input id='<portlet:namespace/>-blue'  name='" + PARAM_FG_COLOR + "' value='" + PARAM_FG_BLUE + "' type='checkbox' <%=b%>>
-   </td><td>Blue
+   <input id='<portlet:namespace/>-blue'  name='<%=PARAM_FG_COLOR%>' value='<%=PARAM_FG_BLUE%>' type='checkbox' <%=b%>>
+   Blue
 
    </td></tr><tr><td>
    Enter message:
-   </td><td colspan=6>
-   <input id='<portlet:namespace/>-msg' name='" + PARAM_MSG_INPUT + "' type='text' value='' size='50' maxlength='50'>
+   </td><td colspan=3>
+   <input id='<portlet:namespace/>-msg' name='<%=PARAM_MSG_INPUT%>' type='text' value='' size='50' maxlength='50'>
    </td><td>
 
    </td></tr><tr><td>
-   <INPUT id ='<portlet:namespace/>-send' VALUE='send' TYPE='button'>
+   Form submission:
+   </td><td>
+   <input id='<portlet:namespace/>sType-url' type='radio' name='sType' value='url' checked>URL
+   </td><td>
+   <input id='<portlet:namespace/>sType-form' type='radio' name='sType' value='form'>Form
+   </td><td>
+   <INPUT id ='<portlet:namespace/>-send' VALUE='send' TYPE='submit'>
    </td></tr></table>
 </FORM>
 <p><hr/></p>
@@ -86,16 +95,18 @@ limitations under the License.
        gid = '<portlet:namespace/>-green',
        bid = '<portlet:namespace/>-blue',
        mid = '<portlet:namespace/>-msg',
+       formid = '<portlet:namespace/>-setParams',
+       sidform = '<portlet:namespace/>sType-form',
        currState,
-       portletInit,
+       hub,
 
        
    // Handler for onStateChange event
    update = function (type, state) {
-      var oldColor = ((currState === undefined) || (currState.parameters.color === undefined)) ? '#FFFFFF' : currState.parameters.color[0],
-          newColor = (state.parameters.color === undefined) ? '#FFFFFF' : state.parameters.color[0];
+      var oldColor = currState.p.getValue('color'),
+          newColor = state.p.getValue('color', '#FFFFFF');
       console.log("CSP: state updated. Type=" + type + ", color=" + newColor);
-      if ((currState === undefined) || (newColor !== oldColor)) {
+      if (newColor !== oldColor) {
          document.getElementById(msgdiv).innerHTML = '';
          document.getElementById(colorEntry).value = newColor;
       }
@@ -106,8 +117,9 @@ limitations under the License.
    // Register portlet with Portlet Hub. Add listener for onStateChange event.
    portlet.register(pid).then(function (pi) {
       console.log("CSP Color Selection Portlet: registered: " + pid);
-      portletInit = pi;
-      portletInit.addEventListener("portlet.onStateChange", update);
+      hub = pi;
+      currState = hub.newState();
+      hub.addEventListener("portlet.onStateChange", update);
    });
    
 
@@ -119,32 +131,42 @@ limitations under the License.
          document.getElementById(msgdiv).innerHTML = 'Bad color. Enter #xxxxxx or #xxx.';
       } else {
          newState = currState.clone();
-         newState.parameters.color = [newColor];
-         portletInit.setPortletState(newState);
+         newState.p.setValue('color', newColor);
+         hub.setPortletState(newState);
       }
    };
    
 
    // Handler for 'send' button click. Perform partial action.
-   document.getElementById(sendbtn).onclick = function () {
-      var parms = {}, clrs = [];
-      console.log("CSP: sending message.");
-      parms.action = ['send'];
-      if (document.getElementById(rid).checked) {
-         clrs.push("red");
-      } 
-      if (document.getElementById(gid).checked) {
-         clrs.push("green");
-      } 
-      if (document.getElementById(bid).checked) {
-         clrs.push("blue");
-      } 
-      if (clrs.length > 0) {
-         parms.fgcolor = clrs;
+   document.getElementById(formid).addEventListener('submit', function (event) {
+      var parms, clrs = [], fel, submitForm = document.getElementById(sidform).checked;
+      
+      console.log("CSP: sending message. submitForm=" + submitForm);
+      
+      // decide how form is to be sent -
+      if (submitForm) {
+         fel = this;
+         hub.action(fel);
+      } else  {
+         parms = hub.newParameters();
+         parms.setValue('action', 'send');
+         if (document.getElementById(rid).checked) {
+            clrs.push("red");
+         } 
+         if (document.getElementById(gid).checked) {
+            clrs.push("green");
+         } 
+         if (document.getElementById(bid).checked) {
+            clrs.push("blue");
+         } 
+         if (clrs.length > 0) {
+            parms.setValue('fgcolor', clrs);
+         }
+         parms.setValue('imsg', document.getElementById(mid).value);
+         hub.action(parms);
       }
-      parms.imsg = [document.getElementById(mid).value];
-      portletInit.action(parms);
-   };
+      event.preventDefault();
+   });
       
 }());
 </script>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-isp.jsp
----------------------------------------------------------------------
diff --git a/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-isp.jsp b/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-isp.jsp
index 40bbfa6..5e60fd4 100644
--- a/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-isp.jsp
+++ b/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-isp.jsp
@@ -51,8 +51,8 @@ limitations under the License.
        st_dropdown = '<portlet:namespace/>-dropdown',
        selBox = '<portlet:namespace/>-selBox',
    
-       currState,
-       portletInit,
+       currState = {},
+       hub,
    
    // Set image name PRP if radio button clicked - 
    handleImgRadio = function () {
@@ -60,8 +60,8 @@ limitations under the License.
       
       if (currState.parameters.imgName !== this.value) {
          var newState = currState.clone();
-         newState.parameters.imgName = [this.value];
-         portletInit.setPortletState(newState);
+         newState.p.setValue('imgName', this.value);
+         hub.setPortletState(newState);
       }
    },
    
@@ -71,21 +71,21 @@ limitations under the License.
       
       if (currState.parameters.imgName !== this.value) {
          var newState = currState.clone();
-         newState.parameters.imgName = [this.value];
-         portletInit.setPortletState(newState);
+         newState.p.setValue('imgName', this.value);
+         hub.setPortletState(newState);
       }
    },
    
    // Handler for onStateChange event
    update = function (type, state) {
-      var oldST = ((currState === undefined) || (currState.parameters.selType === undefined)) ? undefined : currState.parameters.selType[0],
-          newST = (state.parameters.selType === undefined) ? undefined : state.parameters.selType[0],
-          newImg = (state.parameters.imgName === undefined) ? undefined : state.parameters.imgName[0];
+      var oldST = currState.p.getValue('selType'),
+          newST = state.p.getValue('selType', 'radio'),
+          newImg = state.p.getValue('imgName');
           
       console.log("ISP: state updated. type=" + type + ", selType=" + newST + ", imgName=" + newImg);
       
-      if ((currState === undefined) || (oldST !== newST)) {
-         portletInit.createResourceUrl({}).then(function (url) {
+      if (oldST !== newST) {
+         hub.createResourceUrl({}).then(function (url) {
             console.log("ISP: got url: " + url);
             var xhr = new XMLHttpRequest();
             xhr.onreadystatechange=function() {
@@ -94,7 +94,7 @@ limitations under the License.
 
                   // default is radio buttons
                   var ii, f = document.getElementById(fid);
-                  if ((newST === undefined) || (newST === 'radio')) {
+                  if (newST === 'radio') {
                      for (ii=0; ii < f.imgName.length; ii++) {
                         console.log("ISP: adding selection handler for: " + f.imgName[ii].value);
                         f.imgName[ii].onclick = handleImgRadio;
@@ -135,8 +135,8 @@ limitations under the License.
       console.log("ISP: select display type clicked: " + this.value);
       if (currState.parameters.selType !==  this.value) {
          var newState = currState.clone();
-         newState.parameters.selType = [this.value];
-         portletInit.setPortletState(newState);
+         newState.p.setValue('selType', this.value);
+         hub.setPortletState(newState);
       }
    };
    
@@ -147,8 +147,9 @@ limitations under the License.
    // Register with Portlet Hub, add listener for onStateChange event
    portlet.register(pid).then(function (pi) {
       console.log("ISP Image Selection Portlet: registered: " + pid);
-      portletInit = pi;
-      portletInit.addEventListener("portlet.onStateChange", update);
+      hub = pi;
+      currState = hub.newState();
+      hub.addEventListener("portlet.onStateChange", update);
    });
    
    

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-ivp.jsp
----------------------------------------------------------------------
diff --git a/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-ivp.jsp b/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-ivp.jsp
index 982a41e..e94462a 100644
--- a/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-ivp.jsp
+++ b/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-ivp.jsp
@@ -31,9 +31,9 @@ limitations under the License.
    <table><tr><td align='left'>
    Cacheability setting:
    </td><td>
-   <input id='<portlet:namespace/>-page' type='radio' name='cacheability' value='cacheLevelPage'>Page
-   <input id='<portlet:namespace/>-portlet' type='radio' name='cacheability' value='cacheLevelPortlet'>Portlet
-   <input id='<portlet:namespace/>-full' type='radio' name='cacheability' value='cacheLevelFull'>Full
+   <input id='<portlet:namespace/>-page' type='radio' name='cacheability' value='PAGE'>Page
+   <input id='<portlet:namespace/>-portlet' type='radio' name='cacheability' value='PORTLET'>Portlet
+   <input id='<portlet:namespace/>-full' type='radio' name='cacheability' value='FULL'>Full
    </td></tr><tr><td>
    Set border (resource parameter)
    </td><td>
@@ -58,14 +58,14 @@ limitations under the License.
        cntr = 1,
        
        resparms = {},
-       cacheability = 'cacheLevelPage',
-       portletInit,
+       cacheability,
+       hub,
    
    // Update function called by the Portlet Hub when an onStatechange event occurs. 
    update = function (type, state) {
       console.log("IVP: state updated. event type=" + type);
       
-      portletInit.createResourceUrl(resparms, cacheability).then(function (url) {
+      hub.createResourceUrl(resparms, cacheability).then(function (url) {
          var brdr = (resparms.border === undefined) ? undefined : resparms.border[0],
              xhr = new XMLHttpRequest();
          console.log("IVP: got url: " + url + ", res parm border=" + brdr);
@@ -81,9 +81,10 @@ limitations under the License.
    
    // Handler for cacheability radio buttons
    handleCA = function () {
-      console.log("IVP: cacheability button clicked: " + this.value);
-      if (cacheability !== this.value) {
-         cacheability = this.value;
+      var c = hub.constants[this.value];
+      console.log("IVP: cacheability button clicked: " + this.value + ", corresponding to constant value " + c);
+      if (cacheability !== c) {
+         cacheability = c;
          update();
       }
    };
@@ -98,9 +99,9 @@ limitations under the License.
    document.getElementById(border).onclick = function () {
       console.log("IVP: border checked: " + this.checked);
       if (this.checked) {
-         resparms.border = ['#00F'];
+         resparms.setValue('border', '#00F');;
       } else {
-         resparms = {};
+         resparms.remove('border');
       }
       update();
    };
@@ -109,8 +110,10 @@ limitations under the License.
    // the onStateChange event
    portlet.register(pid).then(function (pi) {
       console.log("IVP: registered: " + pid);
-      portletInit = pi;
-      portletInit.addEventListener("portlet.onStateChange", update);
+      hub = pi;
+      resparms = hub.newParameters();
+      cacheability = hub.constants.PAGE;
+      hub.addEventListener("portlet.onStateChange", update);
    });
    
    // Simple counter for demonstrating that page hasn't been refreshed.

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-mbp.jsp
----------------------------------------------------------------------
diff --git a/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-mbp.jsp b/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-mbp.jsp
index d204831..5e85af0 100644
--- a/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-mbp.jsp
+++ b/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-mbp.jsp
@@ -48,16 +48,16 @@ limitations under the License.
        clrButton = '<portlet:namespace/>-clear',
    
        state,
-       resparms = {},
-       cacheability = 'cacheLevelPage',
-       portletInit,
+       resparms,
+       cacheability,
+       hub,
    
    // Handler for onStateChange event
    update = function (type, s) {
       console.log("MBP: state updated. Event type = " + type);
       state = s;
       
-      portletInit.createResourceUrl(resparms, cacheability).then(function (url) {
+      hub.createResourceUrl(resparms, cacheability).then(function (url) {
          var xhr = new XMLHttpRequest();
          console.log("MBP: got url: " + url);
          xhr.onreadystatechange = function () {
@@ -73,14 +73,16 @@ limitations under the License.
    // Handler for "clear" button. execute an action which clears the stored messages
    document.getElementById(clrButton).onclick = function () {
       console.log("MBP: clear button clicked. ");
-      portletInit.action();
+      hub.action();
    };
    
    // Register portlet with Portlet Hub; add onStateChange listener 
    portlet.register(pid).then(function (pi) {
       console.log("MBP: Message Box portlet registered: " + pid);
-      portletInit = pi;
-      portletInit.addEventListener("portlet.onStateChange", update);
+      hub = pi;
+      resparms = hub.newParameters();
+      cacheability = hub.constants.PAGE;
+      hub.addEventListener("portlet.onStateChange", update);
    });
    
 }());

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-pap.jsp
----------------------------------------------------------------------
diff --git a/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-pap.jsp b/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-pap.jsp
index 3e96ad1..12153ab 100644
--- a/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-pap.jsp
+++ b/PortletHubDemo/src/main/webapp/WEB-INF/jsp/view-pap.jsp
@@ -44,33 +44,29 @@ limitations under the License.
        paButton = '<portlet:namespace/>-doPA',
    
        state,
-       actparms = {},
-       portletInit,
+       actparms,
+       hub,
    
    // Handler for onStateChange event
    update = function (type, s) {
       console.log("PAP: state updated. Event type = " + type);
       
-      if (state) {
-         // change background color for message box
-         if (state.parameters.color !== s.parameters.color) {
-            document.getElementById(resdiv).style.background = s.parameters.color;
-         }
+      // change background color for message box
+      if (state.p.getValue('color') !== s.p.getValue('color')) {
+         document.getElementById(resdiv).style.background = s.p.getValue('color');
       }
       state = s;
    };
    
    // Handler for "partial action" button. Perform partial action sequence.
    document.getElementById(paButton).onclick = function () {
-      var xhr = new XMLHttpRequest(), vals, pagestate = null, markup;
+      var xhr = new XMLHttpRequest(), vals, pagestate = null, markup; 
       console.log("PAP: Partial action button clicked.");
       
       // Add the render parameter counter as action parameter
-      if (state.parameters.numActions) {
-         actparms.numActions = state.parameters.numActions;
-      }
+      actparms.setValue('numActions', state.p.getValue('numActions'));
       
-      portletInit.startPartialAction(actparms).then(function (pai) {
+      hub.startPartialAction(actparms).then(function (pai) {
          
          console.log("PAP: got partial action init object. URL: " + pai.url);
          
@@ -101,8 +97,10 @@ limitations under the License.
    // Register portlet with Portlet Hub; add onStateChange listener 
    portlet.register(pid).then(function (pi) {
       console.log("PAP: registered: " + pid);
-      portletInit = pi;
-      portletInit.addEventListener("portlet.onStateChange", update);
+      hub = pi;
+      state = hub.newState();
+      actparms = hub.newParameters();
+      hub.addEventListener("portlet.onStateChange", update);
    });
    
 }());

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/pluto-container-api/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-container-api/pom.xml b/pluto-container-api/pom.xml
index f2a5e9b..9885f69 100644
--- a/pluto-container-api/pom.xml
+++ b/pluto-container-api/pom.xml
@@ -41,7 +41,7 @@
 
     <dependency>
       <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
+      <artifactId>javax.servlet-api</artifactId>
       <scope>provided</scope>
     </dependency>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/pluto-container-driver-api/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-container-driver-api/pom.xml b/pluto-container-driver-api/pom.xml
index ad12f24..0796116 100644
--- a/pluto-container-driver-api/pom.xml
+++ b/pluto-container-driver-api/pom.xml
@@ -41,7 +41,7 @@
     
     <dependency>
       <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
+      <artifactId>javax.servlet-api</artifactId>
       <scope>provided</scope>
     </dependency>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/pluto-container/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-container/pom.xml b/pluto-container/pom.xml
index 9697fff..ca5d8a0 100644
--- a/pluto-container/pom.xml
+++ b/pluto-container/pom.xml
@@ -56,7 +56,7 @@
 
     <dependency>
       <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
+      <artifactId>javax.servlet-api</artifactId>
       <scope>provided</scope>
     </dependency>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/pluto-portal-driver-impl/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-portal-driver-impl/pom.xml b/pluto-portal-driver-impl/pom.xml
index cbfde1a..6191c83 100644
--- a/pluto-portal-driver-impl/pom.xml
+++ b/pluto-portal-driver-impl/pom.xml
@@ -84,7 +84,7 @@
 
     <dependency>
       <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
+      <artifactId>javax.servlet-api</artifactId>
       <scope>provided</scope>
     </dependency>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/pluto-portal-driver/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-portal-driver/pom.xml b/pluto-portal-driver/pom.xml
index 2aa8eca..9595722 100644
--- a/pluto-portal-driver/pom.xml
+++ b/pluto-portal-driver/pom.xml
@@ -64,7 +64,7 @@
     </dependency>
     <dependency>
       <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
+      <artifactId>javax.servlet-api</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/pluto-portal/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-portal/pom.xml b/pluto-portal/pom.xml
index 4e3051d..721797c 100644
--- a/pluto-portal/pom.xml
+++ b/pluto-portal/pom.xml
@@ -108,7 +108,7 @@
 	 </dependency>
     <dependency>
        <groupId>javax.servlet</groupId>
-       <artifactId>servlet-api</artifactId>
+       <artifactId>javax.servlet-api</artifactId>
        <scope>provided</scope>
     </dependency>
     <dependency>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/pluto-portal/src/main/webapp/portlet.js
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/portlet.js b/pluto-portal/src/main/webapp/portlet.js
index 5abdd2d..bfffb69 100644
--- a/pluto-portal/src/main/webapp/portlet.js
+++ b/pluto-portal/src/main/webapp/portlet.js
@@ -51,16 +51,18 @@
  * functions for accessing the parameter values.
  * <p>
  * @typedef    PortletParameters
- * @property   {string[]}  {string}   The parameters object may have
- *                                    multiple properties.
+ * @property   {string[]}  {string}    The parameters object may have
+ *                                     multiple properties.
  * @property   {function}   clone()          Returns a new copy of this object
  * @property   {function}   setValue(n,v)    Sets a parameter with name n and value v.
  *                                           The value v may be a string or an array.
  * @property   {function}   setValues(n,v)   Sets a parameter with name n and value v.
  *                                           The value v may be a string or an array.
- * @property   {function}   getValue(n)      Gets the string parameter value for the name n.
+ * @property   {function}   getValue(n,d)    Gets the string parameter value for the name n.
  *                                           If n designates a multi-valued parameter, this function returns the first value in the values array.
- * @property   {function}   getValues(n)     Gets the string array parameter value for the name n.
+ *                                           If parameter n is undefined, the function returns the optional default value d.
+ * @property   {function}   getValues(n,d)   Gets the string array parameter value for the name n.
+ *                                           If parameter n is undefined, the function returns the optional default value array d.
  * @property   {function}   remove(n)        Removes the parameter with name n.
  */
 
@@ -373,15 +375,22 @@ var portlet = portlet || {};
          delete this[name];
       }
    };
-   Parameters.prototype.getValue = function (name) {
+   Parameters.prototype.getValue = function (name, def) {
       var res = this[name];
       if (res) {
          res = res[0];
       }
+      if (res === undefined) {
+         res = def;
+      }
       return res;
    };
-   Parameters.prototype.getValues = function (name) {
-      return this[name];
+   Parameters.prototype.getValues = function (name, def) {
+      var res = this[name]; 
+      if (res === undefined) {
+         res = def;
+      }
+      return res;
    };
    
    function State (s) {
@@ -816,9 +825,9 @@ var portlet = portlet || {};
       if (upids.length === 0) {
          busy = false;
       } else {
-         for (ii = 0; ii < upids.length; ii++) {
-            _updateStateForPortlet(upids[ii]);
-         }
+      for (ii = 0; ii < upids.length; ii++) {
+         _updateStateForPortlet(upids[ii]);
+      }
       }
 
    },
@@ -1087,13 +1096,14 @@ var portlet = portlet || {};
       if ((ustr === undefined) || ((ustr !== null) && (typeof ustr !== 'string'))) {
          throwIllegalArgumentException("Invalid update string: " + ustr);
       }
+
       // convert page state into an object.
       // update each affected portlet client. Makes use of a 
       // mockup-specific function for decoding. 
 
       pi = _registeredPortlets[pid];
       pi.decodeUpdateString(ustr).then(function (upids) {
-         updatePageState(upids);
+      updatePageState(upids);
       }, function (err) {
          busy = false;
          if (oeListeners[pid]) {
@@ -1377,8 +1387,8 @@ var portlet = portlet || {};
                updateState(portletId, state);
          
             },
-         
-         
+
+
             /**
              * Returns a promise for a resource URL with parameters set appropriately
              * for the page state according to the  resource parameters
@@ -1570,9 +1580,8 @@ var portlet = portlet || {};
              */
             action : function (actParams, element) {
                var ii, arg, type, parms = null, el = null;
-
+         
                console.log("Executing action for portlet: " + portletId);
-
                // check arguments. make sure there is a maximum of two
                // args and determine the types. Check values as possible.
                if (arguments.length > 2) {

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/pluto-portal/src/main/webapp/portletHubImpl.js
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/portletHubImpl.js b/pluto-portal/src/main/webapp/portletHubImpl.js
index 913184a..6e22a99 100644
--- a/pluto-portal/src/main/webapp/portletHubImpl.js
+++ b/pluto-portal/src/main/webapp/portletHubImpl.js
@@ -58,11 +58,10 @@ var portlet = portlet || {};
    isValidId = function (pid) {
       var id;
       for (id in pageState) {
-         if (!pageState.hasOwnProperty(id)) {
-            continue;
-         }
-         if (pid === id) {
-            return true;
+         if (pageState.hasOwnProperty(id)) {
+            if (pid === id) {
+               return true;
+            }
          }
       }
       return false;
@@ -87,17 +86,6 @@ var portlet = portlet || {};
    getParmVal = function (pid, name) {
       return pageState[pid].state.parameters[name];
    },
-   
-   /**
-    * gets parameter value
-    */
-   setParmVal = function (pid, name, val) {
-      if (val === undefined) {
-         delete pageState[pid].state.parameters[name];
-      } else {
-         pageState[pid].state.parameters[name] = val.slice(0);
-      }
-   },
 
    /**
     * Compares the values of two parameters and returns true if they are equal
@@ -151,7 +139,7 @@ var portlet = portlet || {};
       if (nstate.portletMode !== ostate.portletMode) {
          result = true;
       } else {
-         if (nstate.windowState != ostate.windowState) {
+         if (nstate.windowState !== ostate.windowState) {
             result = true;
          } else {
             
@@ -262,7 +250,9 @@ var portlet = portlet || {};
       }, key, oldParams = aState.parameters;
    
       for (key in oldParams) {
-         newParams[key] = oldParams[key].slice(0); 
+         if (oldParams.hasOwnProperty(key)) {
+            newParams[key] = oldParams[key].slice(0);
+         }
       }
    
       return newState;
@@ -360,31 +350,36 @@ var portlet = portlet || {};
          }
       });
    },
+
    
-   
-   /**
-    * Update page state passed in after partial action. The list of 
-    * ID's of updated portlets is passed back through a promise in order
-    * to decouple the layers.
-    * 
-    * @param   {string}    ustr     The 
-    * @param   {string}    pid      The portlet ID
-    * @private 
-    */
-   updatePageState = function (ustr, pid) {
+   // decodes the update strings. The update string is 
+   // a JSON object containing the entire page state. This decoder 
+   // returns an object containing the state for portlets whose 
+   // state has changed as compared to the current page state.
+   decodeUpdateString = function (ustr) {
+      var states = {}, ostate, nstate, pid, ps, npids = 0, cpids = 0;
+
+      ps = JSON.parse(ustr);
+      for (pid in ps) {
+         if (ps.hasOwnProperty(pid)) {
+            npids++;
+            nstate = ps[pid].state;
+            ostate = pageState[pid].state;
             
-      // Use Promise to allow for potential server communication - 
-      return new Promise(function (resolve, reject) {
-         var upids;
-               
-         try {
-            upids = updatePageStateFromString(ustr, pid);
-            resolve(upids);
-         } catch (e) {
-            reject(new Error("Partial Action Action decode status: " + e.message));
+            if (!nstate || !ostate) {
+               throw new Error ("Invalid update string. ostate=" + ostate + ", nstate=" + nstate);
+            }
+            
+            if (stateChanged(nstate, pid)) {
+               states[pid] = cloneState(nstate);
+               cpids++;
+            }
          }
-      });
-
+      }
+      
+      console.log("decoded state for " + npids + " portlets. # changed = " + cpids);
+      
+      return states;
    },
 
       
@@ -412,57 +407,29 @@ var portlet = portlet || {};
 
       return upids;
    },
-
-      
+   
+   
    /**
-    * performs the actual action.
+    * Update page state passed in after partial action. The list of 
+    * ID's of updated portlets is passed back through a promise in order
+    * to decouple the layers.
     * 
+    * @param   {string}    ustr     The 
     * @param   {string}    pid      The portlet ID
-    * @param   {PortletParameters}    parms      
-    *                Additional parameters. May be <code>null</code>
-    * @param   {HTMLFormElement}    Form to be submitted
-    *                               May be <code>null</code> 
     * @private 
     */
-   executeAction = function (pid, parms, element) {
-      var url;
-
-      console.log("impl: executing action. parms=" + parms + ", element=" + element)
-
-      // create & return promise to caller. 
-
-      return new Promise(function (resolve, reject) {
-
-         // get the ajax action URL. The Pluto impl creates the URL in JS
-         // therefore no error handling 
-         getUrl("ACTION", pid, parms).then(function (url) {
-            var xhr, upids;
-
-            console.log("ajax action URL: " + url);
-            
-            if (element) {
-
-            } else {
-               xhr = new XMLHttpRequest();
-               xhr.onreadystatechange = function () {
-                  if (xhr.readyState==4) {
-                     if (xhr.status==200) {
-                        try {
-                           upids = updatePageStateFromString(xhr.responseText, pid);
-                           resolve(upids);
-                        } catch (e) {
-                           reject(new Error("Ajax Action decode status: " + e.message));
-                        }
-                     } else {
-                        reject(new Error("Ajax Action xhr status: " + xhr.statusText));
-                     }
-                  }
-               };
-               xhr.open("POST", url, true);
-                     xhr.send();
-            }
-         });
+   updatePageState = function (ustr, pid) {
             
+      // Use Promise to allow for potential server communication - 
+      return new Promise(function (resolve, reject) {
+         var upids;
+               
+         try {
+            upids = updatePageStateFromString(ustr, pid);
+            resolve(upids);
+         } catch (e) {
+            reject(new Error("Partial Action Action decode status: " + e.message));
+         }
       });
 
    },
@@ -530,7 +497,7 @@ var portlet = portlet || {};
       // as opposed to namespace form -
       
       if (type === RENDER_PARAM) {
-         wid = plutoEncode(pageState[pid].urlpid)
+         wid = plutoEncode(pageState[pid].urlpid);
       }
       
       // If values are present, encode the multivalued parameter string
@@ -576,7 +543,7 @@ var portlet = portlet || {};
    getUrl = function (type, pid, parms, cache) {
    
       var url = portlet.impl.getUrlBase(), ca = 'cacheLevelPage', parm, isAction = false,
-          sep = "", name, names, val, vals, ii, jj, str, id, ids, tpid, prpstrings;
+          sep = "", name, names, vals, ii, str, id, ids, tpid, prpstrings;
 
       // First add the appropriate window identifier according to URL type.
       // Note that no special window ID is added to a RENDER URL. 
@@ -678,54 +645,65 @@ var portlet = portlet || {};
       }
 
       // Use Promise to allow for potential server communication - 
-      return new Promise(function (resolve, reject) {
+      return new Promise(function (resolve) {
          resolve(url);
       });
    },
-   
-   
+
+      
    /**
-    * Exception thrown when a portlet hub method is provided with an invalid argument.
-    * @typedef    IllegalArgumentException 
-    * @property   {string}    name     The exception name, equal to "IllegalArgumentException"
-    * @property   {string}    message  An optional message that provides more detail about the exception
+    * performs the actual action.
+    * 
+    * @param   {string}    pid      The portlet ID
+    * @param   {PortletParameters}    parms      
+    *                Additional parameters. May be <code>null</code>
+    * @param   {HTMLFormElement}    Form to be submitted
+    *                               May be <code>null</code> 
+    * @private 
     */
-   throwIllegalArgumentException = function (msg) {
-      throw {
-         name : "IllegalArgumentException",
-         message : msg
-      };
-   },
+   executeAction = function (pid, parms, element) {
 
-   
-   // decodes the update strings. The update string is 
-   // a JSON object containing the entire page state. This decoder 
-   // returns an object containing the state for portlets whose 
-   // state has changed as compared to the current page state.
-   decodeUpdateString = function (ustr) {
-      var states = {}, ostate, nstate, pid, ps, npids = 0, cpids = 0;
+      console.log("impl: executing action. parms=" + parms + ", element=" + element);
 
-      ps = JSON.parse(ustr);
-      for (pid in ps) {
-         if (ps.hasOwnProperty(pid)) {
-            npids++;
-            nstate = ps[pid].state;
-            ostate = pageState[pid].state;
+      // create & return promise to caller. 
+
+      return new Promise(function (resolve, reject) {
+
+         // get the ajax action URL. The Pluto impl creates the URL in JS
+         // therefore no error handling 
+         getUrl("ACTION", pid, parms).then(function (url) {
+            var xhr, upids, fd;
+
+            console.log("ajax action URL: " + url);
             
-            if (!nstate || !ostate) {
-               throw new Error ("Invalid update string. ostate=" + ostate + ", nstate=" + nstate);
+            xhr = new XMLHttpRequest();
+            xhr.onreadystatechange = function () {
+               if (xhr.readyState === 4) {
+                  if (xhr.status === 200) {
+                     try {
+                        upids = updatePageStateFromString(xhr.responseText, pid);
+                        resolve(upids);
+                     } catch (e) {
+                        reject(new Error("Ajax Action decode status: " + e.message));
+                     }
+                  } else {
+                     reject(new Error("Ajax Action xhr status: " + xhr.statusText));
+                  }
+               }
+            };
+            xhr.open("POST", url, true);
+            if (element) {
+               fd = new FormData(element);
+               console.log("ajax action: POST using FormData object: " + fd);
+               xhr.send(fd);
+            } else {
+               console.log("ajax action: POST using URL with parameters");
+               xhr.send();
             }
+         });
             
-            if (stateChanged(nstate, pid)) {
-               states[pid] = cloneState(nstate);
-               cpids++;
-            }
-         }
-      }
-      
-      console.log("decoded state for " + npids + " portlets. # changed = " + cpids);
-      
-      return states;
+      });
+
    };
 
    
@@ -755,47 +733,47 @@ var portlet = portlet || {};
       // stubs for accessing data for this portlet
       var stubs = {
    
-			/**
-			 * Get allowed window states for portlet
-			 */
-			getAllowedWS : function () {return getAllowedWS(pid);},
-   
-			/**
-			 * Get allowed portlet modes for portlet
-			 */
-			getAllowedPM : function () {return getAllowedPM(pid);},
-   
-			/**
-			 * Get render data for portlet, if any
-			 */
-			getRenderData : function () {return getRenderData(pid);},
-   
-			/**
-			 * Get current portlet state
-			 */
-			getState : function () {return getState(pid);},
-   
-			/**
-			 * Set new portlet state. Returns promise fullfilled with an array of
-			 * IDs of portlets whose state have been modified.
-			 */
-			setState : function (state) {return setState(pid, state);},
-   
-			/**
-			 * Perform the Ajax action request
-			 */
-			executeAction : function (parms, element) {return executeAction(pid, parms, element);},
-   
-			/**
-			 * Get a URL of the specified type - resource or partial action
-			 */
-			getUrl : function (type, parms, cache) {return getUrl(type, pid, parms, cache);},
-   
-			/**
-			 * Decode the update string returned by the partial action request.
-			 * Returns array of IDs of portlets to be updated.
-			 */
-			decodeUpdateString : function (ustr) {return updatePageState(ustr, pid);},
+         /**
+          * Get allowed window states for portlet
+          */
+         getAllowedWS : function () {return getAllowedWS(pid);},
+   
+         /**
+          * Get allowed portlet modes for portlet
+          */
+         getAllowedPM : function () {return getAllowedPM(pid);},
+   
+         /**
+          * Get render data for portlet, if any
+          */
+         getRenderData : function () {return getRenderData(pid);},
+   
+         /**
+          * Get current portlet state
+          */
+         getState : function () {return getState(pid);},
+   
+         /**
+          * Set new portlet state. Returns promise fullfilled with an array of
+          * IDs of portlets whose state have been modified.
+          */
+         setState : function (state) {return setState(pid, state);},
+   
+         /**
+          * Perform the Ajax action request
+          */
+         executeAction : function (parms, element) {return executeAction(pid, parms, element);},
+   
+         /**
+          * Get a URL of the specified type - resource or partial action
+          */
+         getUrl : function (type, parms, cache) {return getUrl(type, pid, parms, cache);},
+   
+         /**
+          * Decode the update string returned by the partial action request.
+          * Returns array of IDs of portlets to be updated.
+          */
+         decodeUpdateString : function (ustr) {return updatePageState(ustr, pid);}
    
       };            
       
@@ -829,4 +807,4 @@ var portlet = portlet || {};
       getIds : getIds
    }; 
    
-})();
+}());

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/pluto-taglib/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-taglib/pom.xml b/pluto-taglib/pom.xml
index 924c775..0e34d0f 100644
--- a/pluto-taglib/pom.xml
+++ b/pluto-taglib/pom.xml
@@ -40,7 +40,7 @@
     </dependency>
     <dependency>
       <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
+      <artifactId>javax.servlet-api</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/pluto-testsuite/pom.xml
----------------------------------------------------------------------
diff --git a/pluto-testsuite/pom.xml b/pluto-testsuite/pom.xml
index 9b3d892..4eb285a 100644
--- a/pluto-testsuite/pom.xml
+++ b/pluto-testsuite/pom.xml
@@ -39,7 +39,7 @@
         </dependency>
         <dependency>
             <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
+            <artifactId>javax.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 7cdafb4..8914183 100644
--- a/pom.xml
+++ b/pom.xml
@@ -257,7 +257,7 @@ generate mailto links. -->
     <javax.portlet.version.major>2</javax.portlet.version.major>
     <javax.portlet.version.minor>0</javax.portlet.version.minor>
     <portals.portlet2-api-spec.version>${project.version}</portals.portlet2-api-spec.version>
-    <servlet-api.version>2.4</servlet-api.version>
+    <servlet-api.version>3.0.1</servlet-api.version>
     <jsp-api.version>2.0</jsp-api.version>
     <jstl.version>1.1.2</jstl.version>
     <taglibs.standard.version>1.1.2</taglibs.standard.version>
@@ -324,7 +324,7 @@ TODO: Check if we need all of them. -->
       </dependency>
       <dependency>
         <groupId>javax.servlet</groupId>
-        <artifactId>servlet-api</artifactId>
+        <artifactId>javax.servlet-api</artifactId>
         <version>${servlet-api.version}</version>
       </dependency>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/14efad10/portlet-api_2.0_spec/pom.xml
----------------------------------------------------------------------
diff --git a/portlet-api_2.0_spec/pom.xml b/portlet-api_2.0_spec/pom.xml
index ed01ebf..48fdcd9 100644
--- a/portlet-api_2.0_spec/pom.xml
+++ b/portlet-api_2.0_spec/pom.xml
@@ -40,7 +40,7 @@
   <dependencies>
     <dependency>
       <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
+      <artifactId>javax.servlet-api</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>


[08/11] portals-pluto git commit: updated taglib URIs from ...sun.com/jstl... to ...sun.com/jsp/jstl... to make them work with servlet 3

Posted by ms...@apache.org.
updated taglib URIs from ...sun.com/jstl... to ...sun.com/jsp/jstl... to make them work with servlet 3


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

Branch: refs/heads/PortletHub
Commit: bd96a224b88bc5f55d5af01487c30baa7c580a2e
Parents: 43ae1d0
Author: Scott Nicklous <ms...@apache.org>
Authored: Wed Dec 3 02:31:34 2014 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Wed Dec 3 02:31:34 2014 +0100

----------------------------------------------------------------------
 .../webapp/WEB-INF/fragments/about/view.jsp     | 140 ++++----
 .../admin/page/TomcatDeploymentHelp.jsp         | 154 ++++-----
 .../WEB-INF/fragments/admin/page/help.jsp       | 276 ++++++++--------
 .../WEB-INF/fragments/admin/page/view.jsp       | 319 +++++++++----------
 .../webapp/WEB-INF/fragments/admin/view.jsp     | 106 +++---
 .../main/webapp/WEB-INF/themes/navigation.jsp   |  78 ++---
 .../WEB-INF/themes/pluto-default-theme.jsp      |   4 +-
 .../main/webapp/WEB-INF/themes/portlet-skin.jsp | 100 +++---
 pluto-portal/src/main/webapp/about.jsp          | 188 +++++------
 pluto-portal/src/main/webapp/login.jsp          | 148 ++++-----
 .../jsp/ExternalAppScopedAttributeTest.jsp      | 134 ++++----
 ...ExternalAppScopedAttributeTest_companion.jsp | 182 +++++------
 .../src/main/webapp/jsp/SessionTimeoutTest.jsp  | 146 ++++-----
 .../main/webapp/jsp/TestCompanionPortlet.jsp    |  92 +++---
 .../src/main/webapp/jsp/introduction.jsp        | 152 ++++-----
 .../src/main/webapp/jsp/load_resource_test.jsp  | 166 +++++-----
 16 files changed, 1192 insertions(+), 1193 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-portal/src/main/webapp/WEB-INF/fragments/about/view.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/fragments/about/view.jsp b/pluto-portal/src/main/webapp/WEB-INF/fragments/about/view.jsp
index 88df2d8..d4a1136 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/fragments/about/view.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/fragments/about/view.jsp
@@ -1,70 +1,70 @@
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-
-<%--
-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.
---%>
-
-<!-- Pluto about portlet fragment (displayed in VIEW mode). -->
-
-<table>
-  
-  <tr>
-    <td colspan="2"><h2>About Pluto Portal Driver</h2></td>
-  </tr>
-  
-  <tr>
-    <td>Portal Name:</td>
-    <td><c:out value="${driverConfig.portalName}"/></td>
-  </tr>
-  <tr>
-    <td>Portal Version:</td>
-    <td><c:out value="${driverConfig.portalVersion}"/></td>
-  </tr>
-  <tr>
-    <td>Servlet Container:</td>
-    <td><%= config.getServletContext().getServerInfo() %></td>
-  </tr>
-  <tr>
-    <td>Java Version:</td>
-    <td><%= System.getProperty("java.version") %>  (<%= System.getProperty("java.vm.vendor") %> - <%= System.getProperty("java.vm.name") %> build <%= System.getProperty("java.vm.version") %>)</td>
-  </tr>
-  <tr>
-    <td>Operating System:</td>
-    <td><%= System.getProperty("os.name") %>  (<%= System.getProperty("os.arch") %> version <%= System.getProperty("os.version") %>)</td>
-  </tr>
-  <tr>
-    <td>Pluto Website:</td>
-    <td>
-      <a href="http://portals.apache.org/pluto/" target="_blank">
-        http://portals.apache.org/pluto/
-      </a>
-    </td>
-  </tr>
-  
-  <tr>
-    <td colspan="2">
-      <i>Please use the <a href="http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10560" target="_blank">
-      Jira issue tracking site</a> to record any problems you are having with
-      the Pluto portal driver. When you report an issue, please include the data (version, os, etc.) collected in 
-      this portlet in addition to any relevant stack traces or log records and detailed steps on what you were doing when 
-      the problem arose.</i>
-    </td>
-  </tr>
-  
-</table>
-
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+
+<%--
+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.
+--%>
+
+<!-- Pluto about portlet fragment (displayed in VIEW mode). -->
+
+<table>
+  
+  <tr>
+    <td colspan="2"><h2>About Pluto Portal Driver</h2></td>
+  </tr>
+  
+  <tr>
+    <td>Portal Name:</td>
+    <td><c:out value="${driverConfig.portalName}"/></td>
+  </tr>
+  <tr>
+    <td>Portal Version:</td>
+    <td><c:out value="${driverConfig.portalVersion}"/></td>
+  </tr>
+  <tr>
+    <td>Servlet Container:</td>
+    <td><%= config.getServletContext().getServerInfo() %></td>
+  </tr>
+  <tr>
+    <td>Java Version:</td>
+    <td><%= System.getProperty("java.version") %>  (<%= System.getProperty("java.vm.vendor") %> - <%= System.getProperty("java.vm.name") %> build <%= System.getProperty("java.vm.version") %>)</td>
+  </tr>
+  <tr>
+    <td>Operating System:</td>
+    <td><%= System.getProperty("os.name") %>  (<%= System.getProperty("os.arch") %> version <%= System.getProperty("os.version") %>)</td>
+  </tr>
+  <tr>
+    <td>Pluto Website:</td>
+    <td>
+      <a href="http://portals.apache.org/pluto/" target="_blank">
+        http://portals.apache.org/pluto/
+      </a>
+    </td>
+  </tr>
+  
+  <tr>
+    <td colspan="2">
+      <i>Please use the <a href="http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10560" target="_blank">
+      Jira issue tracking site</a> to record any problems you are having with
+      the Pluto portal driver. When you report an issue, please include the data (version, os, etc.) collected in 
+      this portlet in addition to any relevant stack traces or log records and detailed steps on what you were doing when 
+      the problem arose.</i>
+    </td>
+  </tr>
+  
+</table>
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/TomcatDeploymentHelp.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/TomcatDeploymentHelp.jsp b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/TomcatDeploymentHelp.jsp
index c25fb26..53e8644 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/TomcatDeploymentHelp.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/TomcatDeploymentHelp.jsp
@@ -1,77 +1,77 @@
-<%--
-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.
---%>
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
-<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
-
-<div class="portlet-section-header">Deploying Portlet Applications in Tomcat</div>
-
-<div class="portlet-section-subheader">Adding New Portlets to a Portal Page</div>
-
-<p class="portlet-font">
-The Page Administrator Portlet works with deployed portlet applications. This deployment can be done via the Pluto 
-Maven plugin or Ant task. Alternately, you can deploy the war using the 'Upload and deploy portlet war' 
-link on the bottom of the Page Administrator Portlet that points to the app server's war deployer application. 
-Clicking on that link opens up a new browser window, so you should disable any popup blockers for this page.
-</p>
-
-<div class="portlet-section-subheader">Uploading and deploying using Tomcat's Manager Application</div>
-<p class="portlet-font">
-The binary distribution of Pluto is built on Tomcat. Tomcat'�s deployer application is the manager application. 
-Use that application to upload and deploy the war. A properly deployed portlet on Tomcat requires that the war 
-have a context.xml file in META-INF containing a Context element and the crossContext attribute set to true 
-like this:<br/>
-&lt;Context path="HelloWorldPortlet" docBase="HelloWorldPortlet" crossContext="true"&gt;
-</p>
-
-<p class="portlet-font">
-The logged in user also needs to have a manager role also, 
-which is configured in conf/tomcat-users.xml. In the binary distribution, the tomcat and pluto users have the manager 
-role already set.  
-</p>
-<p class="portlet-font">
-When the portlet application has been deployed, restart Pluto and use the Page Administrator Portlet to add the new portlet to a page. 
-If you want to put the portlet on a new page, you must do so by manually adding a page element as a child of the 
-render-config element in pluto-portal-driver-config.xml before you restart Pluto. See the Help mode for more details
-on doing this process.
-</p>
-
-<div class="portlet-section-subheader">Deployment in Another Application Server</div>
-<p class="portlet-font">
-	The 'Upload and deploy portlet war' link can be changed to an appropriate administrative page when Pluto
-	is deployed inside another (non-Tomcat) app server. This is done by changing the appserver.deployer.url property
-	inside AdminPortlet.properties located in the WEB-INF/classes directory to point to the URL of an appropriate administrative
-	page. The 'Help' link can also be changed to another help page using the appserver.deployer.help.page property. 
-	That help file needs to reside in this directory (WEB-INF/fragments/admin/page).
-</p>
-
-
-<fmt:bundle basename="AdminPortlet">
-	<fmt:message key="appserver.deployer.url" var="deployerURL"/>
-</fmt:bundle> 
-
-<p class="portlet-font">
-<a href='<c:out value="${deployerURL}"/>' target="_blank">Upload and deploy a new portlet war</a> 
-</p>
-<p class="portlet-font">
-<a href='<portlet:renderURL portletMode="view"/>'>Page Administrator Portlet</a> 
-</p>
-<p class="portlet-font">
-<a href='<portlet:renderURL portletMode="help"/>'>Page Administrator Portlet Help</a> 
-</p>
+<%--
+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.
+--%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
+
+<div class="portlet-section-header">Deploying Portlet Applications in Tomcat</div>
+
+<div class="portlet-section-subheader">Adding New Portlets to a Portal Page</div>
+
+<p class="portlet-font">
+The Page Administrator Portlet works with deployed portlet applications. This deployment can be done via the Pluto 
+Maven plugin or Ant task. Alternately, you can deploy the war using the 'Upload and deploy portlet war' 
+link on the bottom of the Page Administrator Portlet that points to the app server's war deployer application. 
+Clicking on that link opens up a new browser window, so you should disable any popup blockers for this page.
+</p>
+
+<div class="portlet-section-subheader">Uploading and deploying using Tomcat's Manager Application</div>
+<p class="portlet-font">
+The binary distribution of Pluto is built on Tomcat. Tomcat'�s deployer application is the manager application. 
+Use that application to upload and deploy the war. A properly deployed portlet on Tomcat requires that the war 
+have a context.xml file in META-INF containing a Context element and the crossContext attribute set to true 
+like this:<br/>
+&lt;Context path="HelloWorldPortlet" docBase="HelloWorldPortlet" crossContext="true"&gt;
+</p>
+
+<p class="portlet-font">
+The logged in user also needs to have a manager role also, 
+which is configured in conf/tomcat-users.xml. In the binary distribution, the tomcat and pluto users have the manager 
+role already set.  
+</p>
+<p class="portlet-font">
+When the portlet application has been deployed, restart Pluto and use the Page Administrator Portlet to add the new portlet to a page. 
+If you want to put the portlet on a new page, you must do so by manually adding a page element as a child of the 
+render-config element in pluto-portal-driver-config.xml before you restart Pluto. See the Help mode for more details
+on doing this process.
+</p>
+
+<div class="portlet-section-subheader">Deployment in Another Application Server</div>
+<p class="portlet-font">
+	The 'Upload and deploy portlet war' link can be changed to an appropriate administrative page when Pluto
+	is deployed inside another (non-Tomcat) app server. This is done by changing the appserver.deployer.url property
+	inside AdminPortlet.properties located in the WEB-INF/classes directory to point to the URL of an appropriate administrative
+	page. The 'Help' link can also be changed to another help page using the appserver.deployer.help.page property. 
+	That help file needs to reside in this directory (WEB-INF/fragments/admin/page).
+</p>
+
+
+<fmt:bundle basename="AdminPortlet">
+	<fmt:message key="appserver.deployer.url" var="deployerURL"/>
+</fmt:bundle> 
+
+<p class="portlet-font">
+<a href='<c:out value="${deployerURL}"/>' target="_blank">Upload and deploy a new portlet war</a> 
+</p>
+<p class="portlet-font">
+<a href='<portlet:renderURL portletMode="view"/>'>Page Administrator Portlet</a> 
+</p>
+<p class="portlet-font">
+<a href='<portlet:renderURL portletMode="help"/>'>Page Administrator Portlet Help</a> 
+</p>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/help.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/help.jsp b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/help.jsp
index b42d4b0..0bb46a5 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/help.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/help.jsp
@@ -1,138 +1,138 @@
-<%--
-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.
---%>
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
-<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
-
-<div class="portlet-section-header">Page Adminstrator Portlet Help</div>
-
-<p class="portlet-font">
-The Page Administrator Portlet is used to add and remove pages and portlets from portal pages. The portlet
-also persist these changes to pluto-portal-driver-config.xml in pluto's WEB-INF directory.
-</p>
-
-<div class="portlet-section-subheader"><a name="ConfiguringPortletApp">Configuring a Portlet Application</a></div>
-<p class="portlet-font">
-The portlet application needs to be bundled in a war file as per the Java Portlet Specification. 
-The war also needs to include proper PortletServlet servlet and servlet-mapping records in WEB-INF/web.xml.
-An assembly process has been developed to add these records to web.xml using Maven 2 (the
-pluto:assemble goal in maven-pluto-plugin) or Ant (AssembleTask). 
-See the testsuite web.xml file for an example how the servlet and servlet-mapping
-records should look like after assembly (other items the developer adds to web.xml should be 
-carried forward into the updated file). 
-</p>
-
-<p class="portlet-font">
-A custom portlet war deployed into the bundled distribution of Pluto also needs a Tomcat context descriptor 
-with the same name as the portlet app war name (a.k.a. context name). This context file needs to be 
-in the META-INF directory of the war file. Here's an example of one for a portlet bundled for a 
-HelloWorldPortlet context (file name is HelloWorldPortlet.xml): 
-<pre>
-&lt;Context path="/HelloWorldPortlet" 
-	docBase="HelloWorldPortlet" crossContext="true"/&gt; 
-</pre>  
-The crossContext attribute allows Pluto, which is deployed in its own Tomcat context, to work with this custom portlet. 
-</p>
-
-<div class="portlet-section-subheader">Deploying a Portlet Application</div>
-<p class="portlet-font">
-	The way to deploy a portlet application depends on the app server Pluto is running in. In the bundled distribution
-	Pluto is deployed in Tomcat. In this case, you can use the Tomcat manager app to deploy the portlet
-	war. There is a 'Upload and deploy portlet war' link at the bottom of the Page Administrator portlet that points to 
-	the manager app	in the bundled distribution (this link can be changed for other app servers -- see the 
-	adjacent Help link). Use of the manager application requires you to be logged into Pluto in a manager role (pluto or
-	tomcat user). 
-</p>
-	
-<p class="portlet-font">
-	In the bundled distribution of Pluto, you can also deploy a properly configured portlet application by simply dropping
-	the war file into the webapp directory (see <a href="#ConfiguringPortletApp">Configuring a Portlet Application</a> above).
-	You will need to restart Pluto in order for the Page Administrator Portlet to see the newly deployed portlet so it
-	can be added to a portal page.
-</p>
-
-<div class="portlet-section-subheader">Adding Portal Pages</div>
-<p class="portlet-font">
-Adding a new portal page using the Pluto Page Administrator portlet involves inputing the page name into the text box adjacent 
-to the Add Page button and clicking on the button. The new page is created with the default 'theme', which lays out the 
-portlets in two columns (see /WEB-INF/themes/pluto-default-theme.jsp in the pluto webapp for details). Once a page
-has been added, portlets will need to be added to the page (see <a href="#AddingPortlets">Adding Portlets to a Portal Page</a>).
-</p>
-
-<p class="portlet-font">
-Please note that adding a new Page with the name of an existing page will replace the existing page with the
-new page. This is equivalent to removing the page and adding it again with the same name.
-</p>
-
-<div class="portlet-section-subheader">Removing Portal Pages</div>
-<p class="portlet-font">
-Removing a portal page using the Pluto Page Administrator portlet involves selecting a page in the drop down above 
-the Remove Page button and clicking on the button. You are not allowed to remove the default page 
-(default attribute of the render-config element in pluto-portal-driver-config.xml) and the Pluto Admin page.
-</p>
-
-<div class="portlet-section-subheader"><a name="AddingPortlets">Adding Portlets to a Portal Page</a></div>
-<p class="portlet-font">
-Adding portlets to a portal page using the Pluto Page Administrator portlet involves first selecting a portal 
-page in the Portal Pages drop-down (above the Remove Page button) and then selecting a portlet application 
-using the Portlet Applications drop-down and finally a portlet in the adjacent drop down. When this is done, 
-click the Add Portlet button.
-</p>
-
-<div class="portlet-section-subheader">Removing Portlets from a Portal Page</div>
-<p class="portlet-font">
-Removing portlets from a portal page involves selecting a portal page on the Portal Pages drop-down 
-(above the Remove Page button), selecting the portlet in the adjacent list and then clicking on the 
-Remove Portlet button.
-</p>
-
-
-<div class="portlet-section-subheader">Manually Updating the Configuration File</div>
-<p class="portlet-font">
-The pluto-portal-driver-config.xml file holds changes made by the Page Administrator Portlet. You can manually 
-update this file to add pages or portlets. If this is done, please be careful of the structure of the 
-render-config child elements. 
-</p>
-
-<p class="portlet-font">
-You can also change the theme of portlets and the default page -- the portal's 
-home page after login -- in this config file. The theme will require a proper URI to a file containing
-the new theme. Use the default theme (/WEB-INF/themes/pluto-default-theme.jsp in the pluto webapp) for 
-an example theme elements.
-
-Again, be careful to not modify the XML structure of the 
-config file if you choose to change the theme or default 
-</p>
-
-
-<%-- Properties for link to app server deployer and help mode file --%>
-<fmt:bundle basename="AdminPortlet">
-	<fmt:message key="appserver.deployer.help.page" var="deployerHelp"/>
-</fmt:bundle> 
-<portlet:renderURL portletMode="help" var="deployerhelpURL">
-	<portlet-el:param name="helpPage" value="${deployerHelp}"/>
-</portlet:renderURL>
-
-<p class="portlet-font">
-<a href='<c:out value="${deployerhelpURL}"/>'>Upload and Deployment in App Server Help</a>
-</p>
-
-<p class="portlet-font">
-<a href='<portlet:renderURL portletMode="view"/>'>Page Administrator Portlet</a> 
-</p>
+<%--
+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.
+--%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
+
+<div class="portlet-section-header">Page Adminstrator Portlet Help</div>
+
+<p class="portlet-font">
+The Page Administrator Portlet is used to add and remove pages and portlets from portal pages. The portlet
+also persist these changes to pluto-portal-driver-config.xml in pluto's WEB-INF directory.
+</p>
+
+<div class="portlet-section-subheader"><a name="ConfiguringPortletApp">Configuring a Portlet Application</a></div>
+<p class="portlet-font">
+The portlet application needs to be bundled in a war file as per the Java Portlet Specification. 
+The war also needs to include proper PortletServlet servlet and servlet-mapping records in WEB-INF/web.xml.
+An assembly process has been developed to add these records to web.xml using Maven 2 (the
+pluto:assemble goal in maven-pluto-plugin) or Ant (AssembleTask). 
+See the testsuite web.xml file for an example how the servlet and servlet-mapping
+records should look like after assembly (other items the developer adds to web.xml should be 
+carried forward into the updated file). 
+</p>
+
+<p class="portlet-font">
+A custom portlet war deployed into the bundled distribution of Pluto also needs a Tomcat context descriptor 
+with the same name as the portlet app war name (a.k.a. context name). This context file needs to be 
+in the META-INF directory of the war file. Here's an example of one for a portlet bundled for a 
+HelloWorldPortlet context (file name is HelloWorldPortlet.xml): 
+<pre>
+&lt;Context path="/HelloWorldPortlet" 
+	docBase="HelloWorldPortlet" crossContext="true"/&gt; 
+</pre>  
+The crossContext attribute allows Pluto, which is deployed in its own Tomcat context, to work with this custom portlet. 
+</p>
+
+<div class="portlet-section-subheader">Deploying a Portlet Application</div>
+<p class="portlet-font">
+	The way to deploy a portlet application depends on the app server Pluto is running in. In the bundled distribution
+	Pluto is deployed in Tomcat. In this case, you can use the Tomcat manager app to deploy the portlet
+	war. There is a 'Upload and deploy portlet war' link at the bottom of the Page Administrator portlet that points to 
+	the manager app	in the bundled distribution (this link can be changed for other app servers -- see the 
+	adjacent Help link). Use of the manager application requires you to be logged into Pluto in a manager role (pluto or
+	tomcat user). 
+</p>
+	
+<p class="portlet-font">
+	In the bundled distribution of Pluto, you can also deploy a properly configured portlet application by simply dropping
+	the war file into the webapp directory (see <a href="#ConfiguringPortletApp">Configuring a Portlet Application</a> above).
+	You will need to restart Pluto in order for the Page Administrator Portlet to see the newly deployed portlet so it
+	can be added to a portal page.
+</p>
+
+<div class="portlet-section-subheader">Adding Portal Pages</div>
+<p class="portlet-font">
+Adding a new portal page using the Pluto Page Administrator portlet involves inputing the page name into the text box adjacent 
+to the Add Page button and clicking on the button. The new page is created with the default 'theme', which lays out the 
+portlets in two columns (see /WEB-INF/themes/pluto-default-theme.jsp in the pluto webapp for details). Once a page
+has been added, portlets will need to be added to the page (see <a href="#AddingPortlets">Adding Portlets to a Portal Page</a>).
+</p>
+
+<p class="portlet-font">
+Please note that adding a new Page with the name of an existing page will replace the existing page with the
+new page. This is equivalent to removing the page and adding it again with the same name.
+</p>
+
+<div class="portlet-section-subheader">Removing Portal Pages</div>
+<p class="portlet-font">
+Removing a portal page using the Pluto Page Administrator portlet involves selecting a page in the drop down above 
+the Remove Page button and clicking on the button. You are not allowed to remove the default page 
+(default attribute of the render-config element in pluto-portal-driver-config.xml) and the Pluto Admin page.
+</p>
+
+<div class="portlet-section-subheader"><a name="AddingPortlets">Adding Portlets to a Portal Page</a></div>
+<p class="portlet-font">
+Adding portlets to a portal page using the Pluto Page Administrator portlet involves first selecting a portal 
+page in the Portal Pages drop-down (above the Remove Page button) and then selecting a portlet application 
+using the Portlet Applications drop-down and finally a portlet in the adjacent drop down. When this is done, 
+click the Add Portlet button.
+</p>
+
+<div class="portlet-section-subheader">Removing Portlets from a Portal Page</div>
+<p class="portlet-font">
+Removing portlets from a portal page involves selecting a portal page on the Portal Pages drop-down 
+(above the Remove Page button), selecting the portlet in the adjacent list and then clicking on the 
+Remove Portlet button.
+</p>
+
+
+<div class="portlet-section-subheader">Manually Updating the Configuration File</div>
+<p class="portlet-font">
+The pluto-portal-driver-config.xml file holds changes made by the Page Administrator Portlet. You can manually 
+update this file to add pages or portlets. If this is done, please be careful of the structure of the 
+render-config child elements. 
+</p>
+
+<p class="portlet-font">
+You can also change the theme of portlets and the default page -- the portal's 
+home page after login -- in this config file. The theme will require a proper URI to a file containing
+the new theme. Use the default theme (/WEB-INF/themes/pluto-default-theme.jsp in the pluto webapp) for 
+an example theme elements.
+
+Again, be careful to not modify the XML structure of the 
+config file if you choose to change the theme or default 
+</p>
+
+
+<%-- Properties for link to app server deployer and help mode file --%>
+<fmt:bundle basename="AdminPortlet">
+	<fmt:message key="appserver.deployer.help.page" var="deployerHelp"/>
+</fmt:bundle> 
+<portlet:renderURL portletMode="help" var="deployerhelpURL">
+	<portlet-el:param name="helpPage" value="${deployerHelp}"/>
+</portlet:renderURL>
+
+<p class="portlet-font">
+<a href='<c:out value="${deployerhelpURL}"/>'>Upload and Deployment in App Server Help</a>
+</p>
+
+<p class="portlet-font">
+<a href='<portlet:renderURL portletMode="view"/>'>Page Administrator Portlet</a> 
+</p>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/view.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/view.jsp b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/view.jsp
index 1c1ffbe..c06ebaf 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/view.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/view.jsp
@@ -1,160 +1,159 @@
-<%--
-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.
---%>
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
-<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
-<%@ taglib uri="http://portals.apache.org/pluto/portlet-el" prefix="portlet-el" %>
-
-<portlet:defineObjects/>
-
-<portlet:actionURL var="formActionUrl"/>
-<form name="adminForm" action="<c:out value="${formActionUrl}"/>" method="POST">
-<script type="text/javascript">
-
-
-</script>
-
-<div>
-  <h2>Portal Pages</h2>
-  <p>
-      <script type="text/javascript">
-          var <portlet:namespace/>placedPortlets = new Array();
-          <c:forEach items="${availablePages}" var="page">
-              <portlet:namespace/>placedPortlets['<c:out value="${page.id}"/>'] = new Array();
-              <c:forEach items="${page.portlets}" var="portlet" varStatus="loopStatus">
-              	<portlet:namespace/>placedPortlets['<c:out value="${page.id}"/>'][<c:out value="${loopStatus.index}"/>] = new Array();
-              	<portlet:namespace/>placedPortlets['<c:out value="${page.id}"/>'][<c:out value="${loopStatus.index}"/>][0] = '<c:out value="${portlet.id}"/>';
-              	<portlet:namespace/>placedPortlets['<c:out value="${page.id}"/>'][<c:out value="${loopStatus.index}"/>][1] = '<c:out value="${portlet.portletName}"/>';
-              </c:forEach>
-          </c:forEach>
-
-          function <portlet:namespace/>doSwitchPage(select) {
-              var placePortletsSelect = document.forms['adminForm'].elements['placedPortlets'];
-              while (placePortletsSelect.options.length > 0) {
-                  placePortletsSelect.options[0] = null;
-              }
-
-              var disabled = select.value == 'Select. . .'
-        	  //disable 'Remove Page' button
-              document.forms['adminForm'].elements['command'][1].disabled = disabled;
-        	  //disable 'Remove Portlet' button
-              document.forms['adminForm'].elements['command'][2].disabled = disabled;
-
-              if(disabled) {
-                  return;
-              }
-
-              for(var i=0; i < <portlet:namespace/>placedPortlets[select.value].length;i++) {
-                  placePortletsSelect[i] = new Option(<portlet:namespace/>placedPortlets[select.value][i][1], <portlet:namespace/>placedPortlets[select.value][i][0]);
-              }
-
-          }
-      </script>
-
-	<p>
- 		<input type="text" name="newPage"></input>
-    	<input id="addPageButton" type="submit" name="command" value="Add Page"></input>
-	</p>
-
-    <select name="page" onChange="<portlet:namespace/>doSwitchPage(this)">
-      <option value="Select. . .">Select. . .</option>
-    <c:forEach items="${driverConfig.pages}" var="page">
-      <option value="<c:out value="${page.name}"/>"><c:out value="${page.name}"/></option>
-    </c:forEach>
-    </select>
-
-    <select name="placedPortlets" size="5">
-
-    </select>
-    <p>
-      <input id="removePageButton" type="submit" name="command" disabled="true" value="Remove Page"></input>
-      <input id="removeButton" type="submit" name="command" disabled="true" value="Remove Portlet"></input>
-    </p>
-  </p>
-</div>
-
-<div>
-  <h2>Portlet Applications</h2>
-  <p>
-
-    <script type="text/javascript">
-        var <portlet:namespace/>portlets = new Array();
-        <c:forEach items="${portletContainer.containerServices.portletContextService.portletContexts}" var="app">
-            <portlet:namespace/>portlets['<c:out value="${app.applicationName}"/>'] = new Array();
-            <portlet:namespace/>portlets['<c:out value="${app.applicationName}"/>'][0] = 'Select. . .';
-          <c:forEach items="${app.portletApplicationDefinition.portlets}" var="portlet" varStatus="loopStatus">
-            <portlet:namespace/>portlets['<c:out value="${app.applicationName}"/>'][<c:out value="${loopStatus.index + 1}"/>] = '<c:out value="${portlet.portletName}"/>';
-          </c:forEach>
-        </c:forEach>
-
-        function <portlet:namespace/>doSwitch(select) {
-            var portletsSelectBox = document.forms['adminForm'].elements['availablePortlets'];
-             while (portletsSelectBox.options.length > 0) {
-                portletsSelectBox.options[0] = null;
-            }
-            if (select.value == '-') {
-                document.forms['adminForm'].elements['availablePortlets'].disabled = true;
-            } else {
-                portletsSelectBox.disabled = false;
-                var pList = <portlet:namespace/>portlets[select.value];
-                for (i = 0; i < pList.length; i++) {
-                    portletsSelectBox.options[i] = new Option(pList[i], pList[i]);
-                }
-            }
-            <portlet:namespace/>doSwitchButton(portletsSelectBox);
-        }
-
-        function <portlet:namespace/>doSwitchButton(select) {
-        	//disable 'Add Portlet' button
-            document.forms['adminForm'].elements['command'][3].disabled = (select.value == 'Select. . .' || select.disabled);
-        }
-    </script>
-
-    <select name="applications" onChange="<portlet:namespace/>doSwitch(this)">
-      <option value='-'>Select. . .</option>
-      <c:forEach items="${portletContainer.containerServices.portletContextService.portletContexts}" var="app">
-      <option value="<c:out value="${app.applicationName}"/>"><c:out value="${app.applicationName}"/></option>
-      </c:forEach>
-    </select>
-
-    <select name="availablePortlets" disabled="true" onChange='<portlet:namespace/>doSwitchButton(this)'>
-
-    </select>
-
-    <p>
-        <input id="addButton" type="submit" name="command" disabled="true" value="Add Portlet"></input>
-    </p>
-  </p>
-</div>
-</form>
-<%-- Properties for link to app server deployer and help mode file --%>
-<fmt:bundle basename="AdminPortlet">
-	<fmt:message key="appserver.deployer.url" var="deployerURL"/>
-	<fmt:message key="appserver.deployer.help.page" var="deployerHelp"/>
-</fmt:bundle> 
-
-<portlet:renderURL portletMode="help" var="deployerhelpURL">
-	<%-- needed el taglib to be able to use fmt:message value above --%>
-	<portlet-el:param name="helpPage" value="${deployerHelp}"/>
-</portlet:renderURL>
-
-<div>
-<a href='<c:out value="${deployerURL}"/>' target="_blank">Upload and deploy a new portlet war</a> 
-<a href='<c:out value="${deployerhelpURL}"/>'>Help</a>
-</div>
+<%--
+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.
+--%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
+<%@ taglib uri="http://portals.apache.org/pluto/portlet-el" prefix="portlet-el" %>
+
+<portlet:defineObjects/>
+
+<portlet:actionURL var="formActionUrl"/>
+<form name="adminForm" action="<c:out value="${formActionUrl}"/>" method="POST">
+<script type="text/javascript">
+
+
+</script>
+
+<div>
+  <h2>Portal Pages</h2>
+  <p>
+      <script type="text/javascript">
+          var <portlet:namespace/>placedPortlets = new Array();
+          <c:forEach items="${availablePages}" var="page">
+              <portlet:namespace/>placedPortlets['<c:out value="${page.id}"/>'] = new Array();
+              <c:forEach items="${page.portlets}" var="portlet" varStatus="loopStatus">
+              	<portlet:namespace/>placedPortlets['<c:out value="${page.id}"/>'][<c:out value="${loopStatus.index}"/>] = new Array();
+              	<portlet:namespace/>placedPortlets['<c:out value="${page.id}"/>'][<c:out value="${loopStatus.index}"/>][0] = '<c:out value="${portlet.id}"/>';
+              	<portlet:namespace/>placedPortlets['<c:out value="${page.id}"/>'][<c:out value="${loopStatus.index}"/>][1] = '<c:out value="${portlet.portletName}"/>';
+              </c:forEach>
+          </c:forEach>
+
+          function <portlet:namespace/>doSwitchPage(select) {
+              var placePortletsSelect = document.forms['adminForm'].elements['placedPortlets'];
+              while (placePortletsSelect.options.length > 0) {
+                  placePortletsSelect.options[0] = null;
+              }
+
+              var disabled = select.value == 'Select. . .'
+        	  //disable 'Remove Page' button
+              document.forms['adminForm'].elements['command'][1].disabled = disabled;
+        	  //disable 'Remove Portlet' button
+              document.forms['adminForm'].elements['command'][2].disabled = disabled;
+
+              if(disabled) {
+                  return;
+              }
+
+              for(var i=0; i < <portlet:namespace/>placedPortlets[select.value].length;i++) {
+                  placePortletsSelect[i] = new Option(<portlet:namespace/>placedPortlets[select.value][i][1], <portlet:namespace/>placedPortlets[select.value][i][0]);
+              }
+
+          }
+      </script>
+
+	<p>
+ 		<input type="text" name="newPage"></input>
+    	<input id="addPageButton" type="submit" name="command" value="Add Page"></input>
+	</p>
+
+    <select name="page" onChange="<portlet:namespace/>doSwitchPage(this)">
+      <option value="Select. . .">Select. . .</option>
+    <c:forEach items="${driverConfig.pages}" var="page">
+      <option value="<c:out value="${page.name}"/>"><c:out value="${page.name}"/></option>
+    </c:forEach>
+    </select>
+
+    <select name="placedPortlets" size="5">
+
+    </select>
+    <p>
+      <input id="removePageButton" type="submit" name="command" disabled="true" value="Remove Page"></input>
+      <input id="removeButton" type="submit" name="command" disabled="true" value="Remove Portlet"></input>
+    </p>
+  </p>
+</div>
+
+<div>
+  <h2>Portlet Applications</h2>
+  <p>
+
+    <script type="text/javascript">
+        var <portlet:namespace/>portlets = new Array();
+        <c:forEach items="${portletContainer.containerServices.portletContextService.portletContexts}" var="app">
+            <portlet:namespace/>portlets['<c:out value="${app.applicationName}"/>'] = new Array();
+            <portlet:namespace/>portlets['<c:out value="${app.applicationName}"/>'][0] = 'Select. . .';
+          <c:forEach items="${app.portletApplicationDefinition.portlets}" var="portlet" varStatus="loopStatus">
+            <portlet:namespace/>portlets['<c:out value="${app.applicationName}"/>'][<c:out value="${loopStatus.index + 1}"/>] = '<c:out value="${portlet.portletName}"/>';
+          </c:forEach>
+        </c:forEach>
+
+        function <portlet:namespace/>doSwitch(select) {
+            var portletsSelectBox = document.forms['adminForm'].elements['availablePortlets'];
+             while (portletsSelectBox.options.length > 0) {
+                portletsSelectBox.options[0] = null;
+            }
+            if (select.value == '-') {
+                document.forms['adminForm'].elements['availablePortlets'].disabled = true;
+            } else {
+                portletsSelectBox.disabled = false;
+                var pList = <portlet:namespace/>portlets[select.value];
+                for (i = 0; i < pList.length; i++) {
+                    portletsSelectBox.options[i] = new Option(pList[i], pList[i]);
+                }
+            }
+            <portlet:namespace/>doSwitchButton(portletsSelectBox);
+        }
+
+        function <portlet:namespace/>doSwitchButton(select) {
+        	//disable 'Add Portlet' button
+            document.forms['adminForm'].elements['command'][3].disabled = (select.value == 'Select. . .' || select.disabled);
+        }
+    </script>
+
+    <select name="applications" onChange="<portlet:namespace/>doSwitch(this)">
+      <option value='-'>Select. . .</option>
+      <c:forEach items="${portletContainer.containerServices.portletContextService.portletContexts}" var="app">
+      <option value="<c:out value="${app.applicationName}"/>"><c:out value="${app.applicationName}"/></option>
+      </c:forEach>
+    </select>
+
+    <select name="availablePortlets" disabled="true" onChange='<portlet:namespace/>doSwitchButton(this)'>
+
+    </select>
+
+    <p>
+        <input id="addButton" type="submit" name="command" disabled="true" value="Add Portlet"></input>
+    </p>
+  </p>
+</div>
+</form>
+<%-- Properties for link to app server deployer and help mode file --%>
+<fmt:bundle basename="AdminPortlet">
+	<fmt:message key="appserver.deployer.url" var="deployerURL"/>
+	<fmt:message key="appserver.deployer.help.page" var="deployerHelp"/>
+</fmt:bundle> 
+
+<portlet:renderURL portletMode="help" var="deployerhelpURL">
+	<portlet:param name="helpPage" value="${deployerHelp}"/>
+</portlet:renderURL>
+
+<div>
+<a href='<c:out value="${deployerURL}"/>' target="_blank">Upload and deploy a new portlet war</a> 
+<a href='<c:out value="${deployerhelpURL}"/>'>Help</a>
+</div>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/view.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/view.jsp b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/view.jsp
index d96927d..3a5e065 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/view.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/view.jsp
@@ -1,53 +1,53 @@
-<%--
-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.
---%>
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-
-<div>
-  <h2>Portlet Applications</h2>
-  <p>
-    <ul>
-      <c:forEach items="${driverConfig.portletApplications}" var="app">
-        <li>
-          <c:out value="${app.contextPath}"/>
-          <ul>
-            <c:forEach items="${app.portlets}" var="portlet">
-              <c:out value="${portlet.portletName}"/>
-            </c:forEach>
-          </ul>
-        </li>
-      </c:forEach>
-    </ul>
-  </p>
-</div>
-
-<div>
-  <h2>Portal Pages</h2>
-  <p>
-    <ul>
-      <c:forEach items="${driverConfig.pages}" var="page">
-        <li>
-          <c:out value="${page.name}"/><br/>
-          &nbsp;&nbsp;<small><c:out value="${page.uri}"/></small>
-        </li>
-      </c:forEach>
-    </ul>
-  </p>
-</div>
-
-
+<%--
+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.
+--%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+
+<div>
+  <h2>Portlet Applications</h2>
+  <p>
+    <ul>
+      <c:forEach items="${driverConfig.portletApplications}" var="app">
+        <li>
+          <c:out value="${app.contextPath}"/>
+          <ul>
+            <c:forEach items="${app.portlets}" var="portlet">
+              <c:out value="${portlet.portletName}"/>
+            </c:forEach>
+          </ul>
+        </li>
+      </c:forEach>
+    </ul>
+  </p>
+</div>
+
+<div>
+  <h2>Portal Pages</h2>
+  <p>
+    <ul>
+      <c:forEach items="${driverConfig.pages}" var="page">
+        <li>
+          <c:out value="${page.name}"/><br/>
+          &nbsp;&nbsp;<small><c:out value="${page.uri}"/></small>
+        </li>
+      </c:forEach>
+    </ul>
+  </p>
+</div>
+
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-portal/src/main/webapp/WEB-INF/themes/navigation.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/themes/navigation.jsp b/pluto-portal/src/main/webapp/WEB-INF/themes/navigation.jsp
index f51bf19..5d12bae 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/themes/navigation.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/themes/navigation.jsp
@@ -1,39 +1,39 @@
-<%--
-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.
---%>
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-<%@ taglib uri="http://portals.apache.org/pluto" prefix="pluto" %>
-
-<div id="nav">
-    <ul id="navigation" >
-        <c:forEach var="page" items="${driverConfig.pages}">
-            <c:choose>
-                <c:when test="${page == currentPage}">
-                    <li class="selected">
-                        <a href='<c:out value="${pageContext.request.contextPath}"/>/portal/<c:out value="${page.name}"/>'><c:out value="${page.name}"/></a>
-                    </li>
-                </c:when>
-                <c:otherwise>
-                    <li>
-                        <a href='<c:out value="${pageContext.request.contextPath}"/>/portal/<c:out value="${page.name}"/>'><c:out value="${page.name}"/></a>
-                    </li>
-                </c:otherwise>
-            </c:choose>
-        </c:forEach>
-    </ul>
-</div>
+<%--
+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.
+--%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://portals.apache.org/pluto" prefix="pluto" %>
+
+<div id="nav">
+    <ul id="navigation" >
+        <c:forEach var="page" items="${driverConfig.pages}">
+            <c:choose>
+                <c:when test="${page == currentPage}">
+                    <li class="selected">
+                        <a href='<c:out value="${pageContext.request.contextPath}"/>/portal/<c:out value="${page.name}"/>'><c:out value="${page.name}"/></a>
+                    </li>
+                </c:when>
+                <c:otherwise>
+                    <li>
+                        <a href='<c:out value="${pageContext.request.contextPath}"/>/portal/<c:out value="${page.name}"/>'><c:out value="${page.name}"/></a>
+                    </li>
+                </c:otherwise>
+            </c:choose>
+        </c:forEach>
+    </ul>
+</div>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-portal/src/main/webapp/WEB-INF/themes/pluto-default-theme.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/themes/pluto-default-theme.jsp b/pluto-portal/src/main/webapp/WEB-INF/themes/pluto-default-theme.jsp
index 9be7243..4dc3503 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/themes/pluto-default-theme.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/themes/pluto-default-theme.jsp
@@ -17,8 +17,8 @@ See the License for the specific language governing permissions and
 limitations under the License.
 --%>
 <%@page import="org.apache.pluto.driver.core.PortalRequestContext"%>
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ taglib uri="http://portals.apache.org/pluto" prefix="pluto" %>
 <%@ page import="java.util.*,javax.portlet.*,org.apache.pluto.driver.url.*" %>
 <%@ page import="org.apache.pluto.driver.config.*,org.apache.pluto.driver.*" %>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-portal/src/main/webapp/WEB-INF/themes/portlet-skin.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/themes/portlet-skin.jsp b/pluto-portal/src/main/webapp/WEB-INF/themes/portlet-skin.jsp
index 082c6ea..d19dc57 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/themes/portlet-skin.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/themes/portlet-skin.jsp
@@ -1,50 +1,50 @@
-<%--
-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.
---%>
-<%@ taglib uri="http://portals.apache.org/pluto" prefix="pluto" %>
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-
-<!-- Use pluto portlet tag to render the portlet -->
-<pluto:portlet portletId="${portlet}">
-
-  <!-- Assemble the rendering result -->
-  <div class="portlet">
-    <table class="header" width="100%">
-    	<tr>
-    	<td class="header" align="left">
-	      <!-- Portlet Title -->
-	      <h2 class="title"><pluto:title/></h2>
-	</td>
-        <td class="header" align="right">
-	      <!-- Portlet Mode Controls -->
-	      <pluto:modeDropDown />
-	
-	      <!-- Window State Controls -->
-	      <pluto:windowStateAnchor windowState="minimized" icon='<%= request.getContextPath() + "/images/controls/min.png"%>' />
-	      <pluto:windowStateAnchor windowState="maximized" icon='<%= request.getContextPath() + "/images/controls/max.png"%>' />
-	      <pluto:windowStateAnchor windowState="normal" icon='<%= request.getContextPath() + "/images/controls/norm.png"%>' />
-    	</td>
-    	</tr>
-    </table>
-    <div class="body">
-      <pluto:render/>
-    </div>
-  </div>
-
-</pluto:portlet>
-
+<%--
+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.
+--%>
+<%@ taglib uri="http://portals.apache.org/pluto" prefix="pluto" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+
+<!-- Use pluto portlet tag to render the portlet -->
+<pluto:portlet portletId="${portlet}">
+
+  <!-- Assemble the rendering result -->
+  <div class="portlet">
+    <table class="header" width="100%">
+    	<tr>
+    	<td class="header" align="left">
+	      <!-- Portlet Title -->
+	      <h2 class="title"><pluto:title/></h2>
+	</td>
+        <td class="header" align="right">
+	      <!-- Portlet Mode Controls -->
+	      <pluto:modeDropDown />
+	
+	      <!-- Window State Controls -->
+	      <pluto:windowStateAnchor windowState="minimized" icon='<%= request.getContextPath() + "/images/controls/min.png"%>' />
+	      <pluto:windowStateAnchor windowState="maximized" icon='<%= request.getContextPath() + "/images/controls/max.png"%>' />
+	      <pluto:windowStateAnchor windowState="normal" icon='<%= request.getContextPath() + "/images/controls/norm.png"%>' />
+    	</td>
+    	</tr>
+    </table>
+    <div class="body">
+      <pluto:render/>
+    </div>
+  </div>
+
+</pluto:portlet>
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-portal/src/main/webapp/about.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/about.jsp b/pluto-portal/src/main/webapp/about.jsp
index eff5acb..558b9e2 100644
--- a/pluto-portal/src/main/webapp/about.jsp
+++ b/pluto-portal/src/main/webapp/about.jsp
@@ -1,94 +1,94 @@
-<%--
-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.
---%>
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-<%@ taglib uri="http://portals.apache.org/pluto" prefix="pluto" %>
-
-<html>
-<head>
-    <title>Pluto Portal</title>
-    <style type="text/css" title="currentStyle" media="screen">
-        @import "<c:out value="${pageContext.request.contextPath}"/>/pluto.css";
-        @import "<c:out value="${pageContext.request.contextPath}"/>/portlet-spec-1.0.css";
-    </style>
-    <script type="text/javascript" src="<c:out value="${pageContext.request.contextPath}"/>/pluto.js">
-    </script>
-</head>
-
-<body>
-
-<div id="portal">
-
-    <!-- Header block: the Apache Pluto banner image and description -->
-    <div id="header">
-        <h1>Apache Pluto</h1>
-
-        <p>An Apache Portals Project</p>
-    </div>
-
-    <!-- Logout link -->
-    <c:if test="${pageContext.request.remoteUser != null}">
-        <div id="logout">
-            <a href="<c:url value='/Logout'/>">Logout</a>
-        </div>
-    </c:if>
-
-    <!-- Navigation block: links to portal pages -->
-    <jsp:include page="/WEB-INF/themes/navigation.jsp"/>
-
-    <!-- Content block: portlets are divided into two columns/groups -->
-    <div id="content">
-        <pluto:isMaximized var="isMax"/>
-
-        <!-- Left column -->
-        <c:choose>
-            <c:when test="${isMax}">
-                <c:set var="portlet" value="/pluto.AboutPortlet!A" scope="request"/>
-                <jsp:include page="/WEB-INF/themes/portlet-skin.jsp"/>
-                <c:set var="portlet" value="/pluto.AboutPortlet!B" scope="request"/>
-                <jsp:include page="/WEB-INF/themes/portlet-skin.jsp"/>
-            </c:when>
-
-            <c:otherwise>
-                <div id="portlets-left-column">
-                    <c:set var="portlet" value="/pluto.AboutPortlet" scope="request"/>
-                    <jsp:include page="/WEB-INF/themes/portlet-skin.jsp"/>
-                </div>
-
-                <!-- Right column -->
-                <div id="portlets-right-column">
-                    <c:set var="portlet" value="/testsuite.TestPortlet1" scope="request"/>
-                    <jsp:include page="/WEB-INF/themes/portlet-skin.jsp"/>
-                </div>
-            </c:otherwise>
-        </c:choose>
-
-    </div>
-
-    <!-- Footer block: copyright -->
-    <div id="footer">
-        &copy; 2003-2005 Apache Software Foundation
-    </div>
-
-</div>
-
-</body>
-
-</html>
-
-
+<%--
+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.
+--%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://portals.apache.org/pluto" prefix="pluto" %>
+
+<html>
+<head>
+    <title>Pluto Portal</title>
+    <style type="text/css" title="currentStyle" media="screen">
+        @import "<c:out value="${pageContext.request.contextPath}"/>/pluto.css";
+        @import "<c:out value="${pageContext.request.contextPath}"/>/portlet-spec-1.0.css";
+    </style>
+    <script type="text/javascript" src="<c:out value="${pageContext.request.contextPath}"/>/pluto.js">
+    </script>
+</head>
+
+<body>
+
+<div id="portal">
+
+    <!-- Header block: the Apache Pluto banner image and description -->
+    <div id="header">
+        <h1>Apache Pluto</h1>
+
+        <p>An Apache Portals Project</p>
+    </div>
+
+    <!-- Logout link -->
+    <c:if test="${pageContext.request.remoteUser != null}">
+        <div id="logout">
+            <a href="<c:url value='/Logout'/>">Logout</a>
+        </div>
+    </c:if>
+
+    <!-- Navigation block: links to portal pages -->
+    <jsp:include page="/WEB-INF/themes/navigation.jsp"/>
+
+    <!-- Content block: portlets are divided into two columns/groups -->
+    <div id="content">
+        <pluto:isMaximized var="isMax"/>
+
+        <!-- Left column -->
+        <c:choose>
+            <c:when test="${isMax}">
+                <c:set var="portlet" value="/pluto.AboutPortlet!A" scope="request"/>
+                <jsp:include page="/WEB-INF/themes/portlet-skin.jsp"/>
+                <c:set var="portlet" value="/pluto.AboutPortlet!B" scope="request"/>
+                <jsp:include page="/WEB-INF/themes/portlet-skin.jsp"/>
+            </c:when>
+
+            <c:otherwise>
+                <div id="portlets-left-column">
+                    <c:set var="portlet" value="/pluto.AboutPortlet" scope="request"/>
+                    <jsp:include page="/WEB-INF/themes/portlet-skin.jsp"/>
+                </div>
+
+                <!-- Right column -->
+                <div id="portlets-right-column">
+                    <c:set var="portlet" value="/testsuite.TestPortlet1" scope="request"/>
+                    <jsp:include page="/WEB-INF/themes/portlet-skin.jsp"/>
+                </div>
+            </c:otherwise>
+        </c:choose>
+
+    </div>
+
+    <!-- Footer block: copyright -->
+    <div id="footer">
+        &copy; 2003-2005 Apache Software Foundation
+    </div>
+
+</div>
+
+</body>
+
+</html>
+
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-portal/src/main/webapp/login.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/login.jsp b/pluto-portal/src/main/webapp/login.jsp
index 6f3e703..cd568ea 100644
--- a/pluto-portal/src/main/webapp/login.jsp
+++ b/pluto-portal/src/main/webapp/login.jsp
@@ -1,74 +1,74 @@
-<%--
-  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.
---%>
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
-<% pageContext.setAttribute("now", new java.util.Date()); %>
-
-<html>
-  
-  <head>
-    <title>Pluto Portal</title>
-    <style type="text/css" title="currentStyle" media="screen">
-      @import "<c:out value="${pageContext.request.contextPath}"/>/pluto.css";
-    </style>
-    <script type="text/javascript"
-            src="<c:out value="${pageContext.request.contextPath}"/>/pluto.js">
-    </script>
-  </head>
-
-  <body>
-    <div id="portal" style="width: 600px;">
-      <div id="header">
-        <h1>Apache Pluto</h1>
-        <p>A Apache Portals Project</p>
-      </div>
-      <div id="content">
-        <c:if test='${param.error == "1"}'>
-          <p style="color:red;text-align:center">
-            Invalid credentials. Please try again
-          </p>
-        </c:if>
-        <form method="POST" action="j_security_check">
-          <fieldset>
-            <legend>Login to Pluto</legend>
-            <div>
-              <label for="j_username">User Name</label>
-              <input type="text" name="j_username" id="j_username"/>
-            </div>
-            <div>
-              <label for="j_password">Password</label>
-              <input type="password" name="j_password" id="j_password"/>
-            </div>
-            <div>
-              <label for="j_login"></label>
-              <input type="submit" value="Login" name="login" id="j_login"/>
-            </div>
-          </fieldset>
-        </form>
-      </div>
-      
-      <div id="footer">
-        &copy; 2003-<fmt:formatDate value="${now}" pattern="yyyy"/> Apache Software Foundation
-      </div>
-      
-    </div>
-  
-  </body>
-  
-</html>
-
-
+<%--
+  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.
+--%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
+<% pageContext.setAttribute("now", new java.util.Date()); %>
+
+<html>
+  
+  <head>
+    <title>Pluto Portal</title>
+    <style type="text/css" title="currentStyle" media="screen">
+      @import "<c:out value="${pageContext.request.contextPath}"/>/pluto.css";
+    </style>
+    <script type="text/javascript"
+            src="<c:out value="${pageContext.request.contextPath}"/>/pluto.js">
+    </script>
+  </head>
+
+  <body>
+    <div id="portal" style="width: 600px;">
+      <div id="header">
+        <h1>Apache Pluto</h1>
+        <p>A Apache Portals Project</p>
+      </div>
+      <div id="content">
+        <c:if test='${param.error == "1"}'>
+          <p style="color:red;text-align:center">
+            Invalid credentials. Please try again
+          </p>
+        </c:if>
+        <form method="POST" action="j_security_check">
+          <fieldset>
+            <legend>Login to Pluto</legend>
+            <div>
+              <label for="j_username">User Name</label>
+              <input type="text" name="j_username" id="j_username"/>
+            </div>
+            <div>
+              <label for="j_password">Password</label>
+              <input type="password" name="j_password" id="j_password"/>
+            </div>
+            <div>
+              <label for="j_login"></label>
+              <input type="submit" value="Login" name="login" id="j_login"/>
+            </div>
+          </fieldset>
+        </form>
+      </div>
+      
+      <div id="footer">
+        &copy; 2003-<fmt:formatDate value="${now}" pattern="yyyy"/> Apache Software Foundation
+      </div>
+      
+    </div>
+  
+  </body>
+  
+</html>
+
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest.jsp b/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest.jsp
index 52c6c86..87d6152 100644
--- a/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest.jsp
@@ -1,68 +1,68 @@
-<%--
-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.
---%>
-
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
-
-<portlet:defineObjects/>
-
-<script type="text/javascript">
-function openCompanionWindow() {
-	w = 500;
-	h = 400;
-	x = (screen.width - w) / 2;
-	y = (screen.height - h) / 2;
-	window.open('about:blank', 'companionWindow', 'resizable=yes,scrollbars=yes,status=yes,width=' + w + ',height=' + h + ',screenX=' + x + ',screenY=' + y + ',left=' + x + ',top=' + y);
-}
-</script>
-
-<c:choose>
-  <c:when test="${results.inQuestion}">
-    <table>
-      <tr>
-        <th colspan="2" style="background-color:blue;color:white;">MANUAL TEST</th>
-      </tr>
-      <tr>
-        <th colspan="2">Application Scoped Session Attributes Test</th>
-      </tr>
-      <tr>
-        <td>
-          <p>
-            This test is to validate that application scoped attributes can be
-            viewed by resources outside of the portlet. Additionally, it tests
-            to make sure that session attributes set by other resources may be
-            viewed by the portlet as an application scoped session attribute.
-          </p>
-          <p>
-            This test requires manual intervention. Click
-            <a href="<%= renderResponse.encodeURL(renderRequest.getContextPath() + "/test/ExternalAppScopedAttributeTest_Servlet?sessionId=" + request.getSession().getId()) %>"
-               target="companionWindow" onclick="openCompanionWindow()">
-              here
-            </a>
-          </p>
-        </td>
-      </tr>
-    </table>
-  </c:when>
-  <c:otherwise>
-    <%@ include file="test_results.inc" %>
-  </c:otherwise>
-</c:choose>
-
+<%--
+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.
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
+
+<portlet:defineObjects/>
+
+<script type="text/javascript">
+function openCompanionWindow() {
+	w = 500;
+	h = 400;
+	x = (screen.width - w) / 2;
+	y = (screen.height - h) / 2;
+	window.open('about:blank', 'companionWindow', 'resizable=yes,scrollbars=yes,status=yes,width=' + w + ',height=' + h + ',screenX=' + x + ',screenY=' + y + ',left=' + x + ',top=' + y);
+}
+</script>
+
+<c:choose>
+  <c:when test="${results.inQuestion}">
+    <table>
+      <tr>
+        <th colspan="2" style="background-color:blue;color:white;">MANUAL TEST</th>
+      </tr>
+      <tr>
+        <th colspan="2">Application Scoped Session Attributes Test</th>
+      </tr>
+      <tr>
+        <td>
+          <p>
+            This test is to validate that application scoped attributes can be
+            viewed by resources outside of the portlet. Additionally, it tests
+            to make sure that session attributes set by other resources may be
+            viewed by the portlet as an application scoped session attribute.
+          </p>
+          <p>
+            This test requires manual intervention. Click
+            <a href="<%= renderResponse.encodeURL(renderRequest.getContextPath() + "/test/ExternalAppScopedAttributeTest_Servlet?sessionId=" + request.getSession().getId()) %>"
+               target="companionWindow" onclick="openCompanionWindow()">
+              here
+            </a>
+          </p>
+        </td>
+      </tr>
+    </table>
+  </c:when>
+  <c:otherwise>
+    <%@ include file="test_results.inc" %>
+  </c:otherwise>
+</c:choose>
+
 <%@ include file="navigation.inc" %>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/bd96a224/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest_companion.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest_companion.jsp b/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest_companion.jsp
index 5abf618..8e3a250 100644
--- a/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest_companion.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest_companion.jsp
@@ -1,91 +1,91 @@
-<%--
-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.
---%>
-
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-
-
-<HTML>
-<HEAD>
-<STYLE>
-BODY, P, TH, TD {
-    font-family: arial, helvetica, sans-serif;
-    text-align: left;
-}
-
-.BODY, .P, .TD {
-    font-size: 12px;
-}
-
-TABLE {
-    width: 100%;
-    padding: 2px 3px;
-    border-collapse:collapse;
-    border-spacing: 3px 3px;
-}
-
-
-.banner, .banner TD, .banner A:link, .banner A:visited, .banner A:hover {
-    background-color: #DDDDDD;
-    color: #36a;
-}
-
-.nav, .nav TD, .nav A:link, .nav A:visited, .nav A:hover {
-    background-color: #DDDDDD;
-    color: #36a;
-}
-
-.small {
-    font-size: -1;
-}
-
-</STYLE>
-</HEAD>
-<TABLE style="font-size: -1" border="1">
-<c:choose>
-<c:when test="${passed}">
-<TR><TH colspan="2" style="background-color:green;color:white">PASSED</FONT>
-</c:when>
-<c:otherwise>
-<TR><TH colspan="2" style="background-color:red;color:white">FAILED</TH></TR>
-</c:otherwise>
-</c:choose>
-
-<TR><TD colspan="2">
-    <p>This resource has been requested outside of the portal framework.  It is
-    intended to test application scope attribute functions of the PortletSession.
-    If the PortletSession is functioning as designed the key set in the PortletSession
-    should be readable.  If it were, this test would have passed. This resource has
-    also added a key to it's HttpSession which should be viewable through the PortletSession
-    attribute.</p>
-
-    <p>Note that this test is not expected to pass on Tomcat 4.x or 5.0.x. On Tomcat 5.5.x
-    it requires <i>emptySessionPath="true"</i> to be added to the connector configuration
-    in server.xml. See
-    <a href="http://portals.apache.org/pluto/faq.html#tomcat5_5" target="_blank">the FAQ</a>
-    for details.</p>
-</TD></TR>
-<TR><TH colspan="2">Session Id Comparison</TH></TR>
-<TR><TD>This HttpSession Id</TD>
-    <TD><c:out value="${pageContext.request.session.id}"/></TD></TR>
-<TR><TD>Requesting Portlet's Session Id</TD>
-    <TD><%=request.getParameter("sessionId")%></TD></TR>
-    </TABLE>
-</BODY>
-</HTML>
-
+<%--
+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.
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+
+
+<HTML>
+<HEAD>
+<STYLE>
+BODY, P, TH, TD {
+    font-family: arial, helvetica, sans-serif;
+    text-align: left;
+}
+
+.BODY, .P, .TD {
+    font-size: 12px;
+}
+
+TABLE {
+    width: 100%;
+    padding: 2px 3px;
+    border-collapse:collapse;
+    border-spacing: 3px 3px;
+}
+
+
+.banner, .banner TD, .banner A:link, .banner A:visited, .banner A:hover {
+    background-color: #DDDDDD;
+    color: #36a;
+}
+
+.nav, .nav TD, .nav A:link, .nav A:visited, .nav A:hover {
+    background-color: #DDDDDD;
+    color: #36a;
+}
+
+.small {
+    font-size: -1;
+}
+
+</STYLE>
+</HEAD>
+<TABLE style="font-size: -1" border="1">
+<c:choose>
+<c:when test="${passed}">
+<TR><TH colspan="2" style="background-color:green;color:white">PASSED</FONT>
+</c:when>
+<c:otherwise>
+<TR><TH colspan="2" style="background-color:red;color:white">FAILED</TH></TR>
+</c:otherwise>
+</c:choose>
+
+<TR><TD colspan="2">
+    <p>This resource has been requested outside of the portal framework.  It is
+    intended to test application scope attribute functions of the PortletSession.
+    If the PortletSession is functioning as designed the key set in the PortletSession
+    should be readable.  If it were, this test would have passed. This resource has
+    also added a key to it's HttpSession which should be viewable through the PortletSession
+    attribute.</p>
+
+    <p>Note that this test is not expected to pass on Tomcat 4.x or 5.0.x. On Tomcat 5.5.x
+    it requires <i>emptySessionPath="true"</i> to be added to the connector configuration
+    in server.xml. See
+    <a href="http://portals.apache.org/pluto/faq.html#tomcat5_5" target="_blank">the FAQ</a>
+    for details.</p>
+</TD></TR>
+<TR><TH colspan="2">Session Id Comparison</TH></TR>
+<TR><TD>This HttpSession Id</TD>
+    <TD><c:out value="${pageContext.request.session.id}"/></TD></TR>
+<TR><TD>Requesting Portlet's Session Id</TD>
+    <TD><%=request.getParameter("sessionId")%></TD></TR>
+    </TABLE>
+</BODY>
+</HTML>
+


[02/11] portals-pluto git commit: Merge branch 'PortletHub' of j:\git\pluto-git into PortletHub

Posted by ms...@apache.org.
Merge branch 'PortletHub' of j:\git\pluto-git into PortletHub


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

Branch: refs/heads/PortletHub
Commit: eb03ab53454de1b5f786b18866f6ce8fd095cb92
Parents: 585eb3e 71a19e1
Author: Scott Nicklous <ms...@apache.org>
Authored: Sun Nov 30 23:23:34 2014 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Sun Nov 30 23:23:34 2014 +0100

----------------------------------------------------------------------

----------------------------------------------------------------------



[11/11] portals-pluto git commit: Adapted several JSPs to use updated URIs for the tag libraries.

Posted by ms...@apache.org.
Adapted several JSPs to use updated URIs for the tag libraries.


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

Branch: refs/heads/PortletHub
Commit: 1c869b7cfcc10ce79ef036377db3ea81ef238009
Parents: f25b14a
Author: Scott Nicklous <ms...@apache.org>
Authored: Wed Dec 3 15:55:32 2014 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Wed Dec 3 15:55:32 2014 +0100

----------------------------------------------------------------------
 .../webapp/WEB-INF/fragments/about/view.jsp     |   1 +
 .../admin/page/TomcatDeploymentHelp.jsp         |   1 +
 .../WEB-INF/fragments/admin/page/help.jsp       |   1 +
 .../WEB-INF/fragments/admin/page/view.jsp       |   4 +-
 .../webapp/WEB-INF/fragments/admin/view.jsp     |   1 +
 .../main/webapp/WEB-INF/themes/navigation.jsp   |   1 +
 .../WEB-INF/themes/pluto-default-theme.jsp      |   1 +
 .../main/webapp/WEB-INF/themes/portlet-skin.jsp |   1 +
 pluto-portal/src/main/webapp/about.jsp          |   1 +
 pluto-portal/src/main/webapp/login.jsp          |   1 +
 .../jsp/ExternalAppScopedAttributeTest.jsp      |   1 +
 ...ExternalAppScopedAttributeTest_companion.jsp |   1 +
 .../src/main/webapp/jsp/SessionTimeoutTest.jsp  |   1 +
 .../main/webapp/jsp/TestCompanionPortlet.jsp    |   1 +
 pluto-testsuite/src/main/webapp/jsp/help.jsp    |  59 ++--
 .../src/main/webapp/jsp/introduction.jsp        |   1 +
 .../src/main/webapp/jsp/load_resource_test.jsp  |   1 +
 .../src/main/webapp/jsp/navigation.inc          | 161 +++++------
 .../src/main/webapp/jsp/portlet_mode_test.jsp   | 117 ++++----
 pluto-testsuite/src/main/webapp/jsp/test4.jsp   | 169 +++++------
 .../src/main/webapp/jsp/test_results.inc        | 277 ++++++++++---------
 .../src/main/webapp/jsp/test_results.jsp        |  53 ++--
 .../src/main/webapp/jsp/window_state_test.jsp   | 117 ++++----
 23 files changed, 498 insertions(+), 474 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-portal/src/main/webapp/WEB-INF/fragments/about/view.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/fragments/about/view.jsp b/pluto-portal/src/main/webapp/WEB-INF/fragments/about/view.jsp
index d4a1136..0dcc41c 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/fragments/about/view.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/fragments/about/view.jsp
@@ -1,3 +1,4 @@
+<%@ page isELIgnored="false" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 
 <%--

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/TomcatDeploymentHelp.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/TomcatDeploymentHelp.jsp b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/TomcatDeploymentHelp.jsp
index 53e8644..20bf5fa 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/TomcatDeploymentHelp.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/TomcatDeploymentHelp.jsp
@@ -16,6 +16,7 @@ implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 --%>
+<%@ page isELIgnored="false" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/help.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/help.jsp b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/help.jsp
index 0bb46a5..385fc8c 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/help.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/help.jsp
@@ -16,6 +16,7 @@ implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 --%>
+<%@ page isELIgnored="false" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/view.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/view.jsp b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/view.jsp
index c06ebaf..481f245 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/view.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/page/view.jsp
@@ -16,6 +16,7 @@ implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 --%>
+<%@ page isELIgnored="false" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
@@ -150,9 +151,10 @@ limitations under the License.
 </fmt:bundle> 
 
 <portlet:renderURL portletMode="help" var="deployerhelpURL">
+   <%-- needed el taglib to be able to use fmt:message value above --%>
+   <%-- portlet-el:param name="helpPage" value="${deployerHelp}"/ --%>
 	<portlet:param name="helpPage" value="${deployerHelp}"/>
 </portlet:renderURL>
-
 <div>
 <a href='<c:out value="${deployerURL}"/>' target="_blank">Upload and deploy a new portlet war</a> 
 <a href='<c:out value="${deployerhelpURL}"/>'>Help</a>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/view.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/view.jsp b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/view.jsp
index 3a5e065..00f8858 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/view.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/fragments/admin/view.jsp
@@ -16,6 +16,7 @@ implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 --%>
+<%@ page isELIgnored="false" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 
 <div>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-portal/src/main/webapp/WEB-INF/themes/navigation.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/themes/navigation.jsp b/pluto-portal/src/main/webapp/WEB-INF/themes/navigation.jsp
index 5d12bae..b63d47e 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/themes/navigation.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/themes/navigation.jsp
@@ -16,6 +16,7 @@ implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 --%>
+<%@ page isELIgnored="false" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://portals.apache.org/pluto" prefix="pluto" %>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-portal/src/main/webapp/WEB-INF/themes/pluto-default-theme.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/themes/pluto-default-theme.jsp b/pluto-portal/src/main/webapp/WEB-INF/themes/pluto-default-theme.jsp
index 4dc3503..0c53aba 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/themes/pluto-default-theme.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/themes/pluto-default-theme.jsp
@@ -16,6 +16,7 @@ implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 --%>
+<%@ page isELIgnored="false" %>
 <%@page import="org.apache.pluto.driver.core.PortalRequestContext"%>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-portal/src/main/webapp/WEB-INF/themes/portlet-skin.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/WEB-INF/themes/portlet-skin.jsp b/pluto-portal/src/main/webapp/WEB-INF/themes/portlet-skin.jsp
index d19dc57..9425702 100644
--- a/pluto-portal/src/main/webapp/WEB-INF/themes/portlet-skin.jsp
+++ b/pluto-portal/src/main/webapp/WEB-INF/themes/portlet-skin.jsp
@@ -16,6 +16,7 @@ implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 --%>
+<%@ page isELIgnored="false" %>
 <%@ taglib uri="http://portals.apache.org/pluto" prefix="pluto" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-portal/src/main/webapp/about.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/about.jsp b/pluto-portal/src/main/webapp/about.jsp
index 558b9e2..472315d 100644
--- a/pluto-portal/src/main/webapp/about.jsp
+++ b/pluto-portal/src/main/webapp/about.jsp
@@ -16,6 +16,7 @@ implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 --%>
+<%@ page isELIgnored="false" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://portals.apache.org/pluto" prefix="pluto" %>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-portal/src/main/webapp/login.jsp
----------------------------------------------------------------------
diff --git a/pluto-portal/src/main/webapp/login.jsp b/pluto-portal/src/main/webapp/login.jsp
index cd568ea..6b9b532 100644
--- a/pluto-portal/src/main/webapp/login.jsp
+++ b/pluto-portal/src/main/webapp/login.jsp
@@ -14,6 +14,7 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 --%>
+<%@ page isELIgnored="false" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
 <% pageContext.setAttribute("now", new java.util.Date()); %>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest.jsp b/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest.jsp
index 87d6152..959157a 100644
--- a/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest.jsp
@@ -17,6 +17,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 --%>
 
+<%@ page isELIgnored="false" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest_companion.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest_companion.jsp b/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest_companion.jsp
index 8e3a250..82132ec 100644
--- a/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest_companion.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/ExternalAppScopedAttributeTest_companion.jsp
@@ -17,6 +17,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 --%>
 
+<%@ page isELIgnored="false" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-testsuite/src/main/webapp/jsp/SessionTimeoutTest.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/SessionTimeoutTest.jsp b/pluto-testsuite/src/main/webapp/jsp/SessionTimeoutTest.jsp
index 455ddc2..6319184 100644
--- a/pluto-testsuite/src/main/webapp/jsp/SessionTimeoutTest.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/SessionTimeoutTest.jsp
@@ -18,6 +18,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 --%>
 
+<%@ page isELIgnored="false" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-testsuite/src/main/webapp/jsp/TestCompanionPortlet.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/TestCompanionPortlet.jsp b/pluto-testsuite/src/main/webapp/jsp/TestCompanionPortlet.jsp
index 0355328..616258d 100644
--- a/pluto-testsuite/src/main/webapp/jsp/TestCompanionPortlet.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/TestCompanionPortlet.jsp
@@ -17,6 +17,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 --%>
 
+<%@ page isELIgnored="false" %>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
 

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-testsuite/src/main/webapp/jsp/help.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/help.jsp b/pluto-testsuite/src/main/webapp/jsp/help.jsp
index 0111e53..0762ad6 100644
--- a/pluto-testsuite/src/main/webapp/jsp/help.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/help.jsp
@@ -1,30 +1,31 @@
-<%--
-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.
---%>
-<TABLE style="border-colapse: false;padding: 4px 4px;border-spacing: 3px 4px;">
-<TR><TH colspan="2">Test Portlet Help Page</TH></TR>
-<TR><TD colspan="2">Color Code Key</TH></TR>
-<TR><TD width="20" style="background-color:green;">&nbsp;</TD>
-    <TD style="font-size: 12px">Test has passed!</TH></TR>
-<TR><TD width="20" style="background-color:blue;">&nbsp;</TD>
-    <TD style="font-size: 12px">Manual Judgment Required!</TH></TR>
-<TR><TD width="20" style="background-color:yellow;">&nbsp;</TD>
-    <TD style="font-size: 12px">Warning! Could not determine pass or fail due to an fixable condition.</TH></TR>
-<TR><TD width="20" style="background-color:red;">&nbsp;</TD>
-    <TD style="font-size: 12px">Test has failed!</TH></TR>
+<%--
+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.
+--%>
+<%@ page isELIgnored="false" %>
+<TABLE style="border-colapse: false;padding: 4px 4px;border-spacing: 3px 4px;">
+<TR><TH colspan="2">Test Portlet Help Page</TH></TR>
+<TR><TD colspan="2">Color Code Key</TH></TR>
+<TR><TD width="20" style="background-color:green;">&nbsp;</TD>
+    <TD style="font-size: 12px">Test has passed!</TH></TR>
+<TR><TD width="20" style="background-color:blue;">&nbsp;</TD>
+    <TD style="font-size: 12px">Manual Judgment Required!</TH></TR>
+<TR><TD width="20" style="background-color:yellow;">&nbsp;</TD>
+    <TD style="font-size: 12px">Warning! Could not determine pass or fail due to an fixable condition.</TH></TR>
+<TR><TD width="20" style="background-color:red;">&nbsp;</TD>
+    <TD style="font-size: 12px">Test has failed!</TH></TR>
 </TABLE>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-testsuite/src/main/webapp/jsp/introduction.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/introduction.jsp b/pluto-testsuite/src/main/webapp/jsp/introduction.jsp
index b5874f2..879d835 100644
--- a/pluto-testsuite/src/main/webapp/jsp/introduction.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/introduction.jsp
@@ -17,6 +17,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 --%>
 
+<%@ page isELIgnored="false" %>
 <%@ page import="java.util.Map" %>
 <%@ page import="javax.servlet.jsp.jstl.core.LoopTagStatus" %>
 <%@ page import="org.apache.pluto.testsuite.TestConfig" %>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-testsuite/src/main/webapp/jsp/load_resource_test.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/load_resource_test.jsp b/pluto-testsuite/src/main/webapp/jsp/load_resource_test.jsp
index c262ee1..241afcc 100644
--- a/pluto-testsuite/src/main/webapp/jsp/load_resource_test.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/load_resource_test.jsp
@@ -16,6 +16,7 @@ implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 --%>
+<%@ page isELIgnored="false" %>
 <%@taglib prefix="portlet" uri="http://java.sun.com/portlet_2_0" %>
 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <portlet:defineObjects />

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-testsuite/src/main/webapp/jsp/navigation.inc
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/navigation.inc b/pluto-testsuite/src/main/webapp/jsp/navigation.inc
index 8c4b000..51c76ae 100644
--- a/pluto-testsuite/src/main/webapp/jsp/navigation.inc
+++ b/pluto-testsuite/src/main/webapp/jsp/navigation.inc
@@ -1,80 +1,81 @@
-<%--
-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.
---%>
-
-<%@ page import="java.util.Map"%>
-<%@ page import="org.apache.pluto.testsuite.TestConfig"%>
-
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
-
-<portlet:defineObjects/>
-
-<% if (request instanceof javax.portlet.RenderRequest) {%>
-<center>
-  <table>
-    <tr>
-      <td align="center" nowrap="true">
-        
-        <%-- Run Previous Test ============================================ --%>
-        <portlet:actionURL secure='<%= request.isSecure() ? "True" : "False" %>' var="url">
-          <portlet:param name="nextTestId" value='<%= request.getParameter("testId") %>'/>
-          <c:forEach var="param" items="${prevTest.actionParameters}">
-            <%
-                TestConfig.Parameter parameter = (TestConfig.Parameter) pageContext.findAttribute("param");
-                String paramName = parameter.getName();
-                String paramValue = parameter.getValue();
-            %>
-            <portlet:param name="<%= paramName %>" value="<%= paramValue %>"/>
-          </c:forEach>
-        </portlet:actionURL>
-        <a href="<%= url %>">
-          <img src='<%= response.encodeURL(request.getContextPath() + "/images/previous.png") %>' border="0">
-        </a>
-        
-        <%-- Return to Introduction ======================================= --%>
-        <portlet:actionURL secure='<%= request.isSecure() ? "True" : "False" %>' var="url">
-          <portlet:param name="testId" value="<%= null %>"/>
-        </portlet:actionURL>
-        <a href="<%= url %>">
-          <img src='<%= response.encodeURL(request.getContextPath() + "/images/return_index.png") %>' border="0">
-        </a>
-        
-        <%-- Run Next Test ================================================ --%>
-        <portlet:actionURL secure='<%= request.isSecure() ? "True" : "False" %>' var="url">
-          <portlet:param name="previousTestId" value='<%= request.getParameter("testId") %>'/>
-          <c:forEach var="param" items="${nextTest.actionParameters}">
-            <%
-                TestConfig.Parameter parameter = (TestConfig.Parameter) pageContext.findAttribute("param");
-                String paramName = parameter.getName();
-                String paramValue = parameter.getValue();
-            %>
-            <portlet:param name="<%= paramName %>" value="<%= paramValue %>"/>
-          </c:forEach>
-        </portlet:actionURL>
-        <a href="<%= url %>">
-          <img src='<%= response.encodeURL(request.getContextPath() + "/images/next.png") %>' border="0">
-        </a>
-        
-      </td>
-    </tr>
-  </table>
-</center>
-
-<% } %>
-
+<%--
+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.
+--%>
+
+<%@ page isELIgnored="false" %>
+<%@ page import="java.util.Map"%>
+<%@ page import="org.apache.pluto.testsuite.TestConfig"%>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
+
+<portlet:defineObjects/>
+
+<% if (request instanceof javax.portlet.RenderRequest) {%>
+<center>
+  <table>
+    <tr>
+      <td align="center" nowrap="true">
+        
+        <%-- Run Previous Test ============================================ --%>
+        <portlet:actionURL secure='<%= request.isSecure() ? "True" : "False" %>' var="url">
+          <portlet:param name="nextTestId" value='<%= request.getParameter("testId") %>'/>
+          <c:forEach var="param" items="${prevTest.actionParameters}">
+            <%
+                TestConfig.Parameter parameter = (TestConfig.Parameter) pageContext.findAttribute("param");
+                String paramName = parameter.getName();
+                String paramValue = parameter.getValue();
+            %>
+            <portlet:param name="<%= paramName %>" value="<%= paramValue %>"/>
+          </c:forEach>
+        </portlet:actionURL>
+        <a href="<%= url %>">
+          <img src='<%= response.encodeURL(request.getContextPath() + "/images/previous.png") %>' border="0">
+        </a>
+        
+        <%-- Return to Introduction ======================================= --%>
+        <portlet:actionURL secure='<%= request.isSecure() ? "True" : "False" %>' var="url">
+          <portlet:param name="testId" value="<%= null %>"/>
+        </portlet:actionURL>
+        <a href="<%= url %>">
+          <img src='<%= response.encodeURL(request.getContextPath() + "/images/return_index.png") %>' border="0">
+        </a>
+        
+        <%-- Run Next Test ================================================ --%>
+        <portlet:actionURL secure='<%= request.isSecure() ? "True" : "False" %>' var="url">
+          <portlet:param name="previousTestId" value='<%= request.getParameter("testId") %>'/>
+          <c:forEach var="param" items="${nextTest.actionParameters}">
+            <%
+                TestConfig.Parameter parameter = (TestConfig.Parameter) pageContext.findAttribute("param");
+                String paramName = parameter.getName();
+                String paramValue = parameter.getValue();
+            %>
+            <portlet:param name="<%= paramName %>" value="<%= paramValue %>"/>
+          </c:forEach>
+        </portlet:actionURL>
+        <a href="<%= url %>">
+          <img src='<%= response.encodeURL(request.getContextPath() + "/images/next.png") %>' border="0">
+        </a>
+        
+      </td>
+    </tr>
+  </table>
+</center>
+
+<% } %>
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-testsuite/src/main/webapp/jsp/portlet_mode_test.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/portlet_mode_test.jsp b/pluto-testsuite/src/main/webapp/jsp/portlet_mode_test.jsp
index 8327485..43f88fa 100644
--- a/pluto-testsuite/src/main/webapp/jsp/portlet_mode_test.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/portlet_mode_test.jsp
@@ -1,58 +1,59 @@
-<%--
-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.
---%>
-<%@ page import="javax.portlet.PortletMode"%>
-<%@ taglib uri='http://java.sun.com/portlet_2_0' prefix='portlet'%>
-
-<portlet:defineObjects/>
-
-<TABLE style="font-size: -1">
-<TR><TH colspan="2" style="background-color:blue;color:white;">MANUAL TEST</TH></TR>
-<TR><TH></TH>
-    <TH>Portlet Mode Test</TH></TR>
-<TR><TD colspan="2">This test requires manual intervention
-        to ensure that it passes.  Click on the links below
-        and make sure that the specified mode is displayed.</TD></TR>
-
-<portlet:actionURL portletMode="<%=PortletMode.HELP.toString()%>" secure='<%=renderRequest.isSecure()?"True":"False"%>' var="url">
-	<portlet:param name="testId" value='<%=renderRequest.getParameter("testId")%>'/>
-</portlet:actionURL>
-
-<TR><TD style="font-size: 12px" valign="top"><A href="<%=url%>">Help</A></TD>
-    <TD style="font-size: 10px;">The help mode provides help info.  Click to ensure that help info is
-        displayed.</TD></TR>
-
-<portlet:actionURL portletMode="<%=PortletMode.EDIT.toString()%>" secure='<%=renderRequest.isSecure()?"True":"False"%>' var="url">
-	<portlet:param name="testId" value='<%=renderRequest.getParameter("testId")%>'/>
-</portlet:actionURL>
-
-<TR><TD style="font-size: 12px" valign="top"><A href="<%=url%>">Edit</A></TD>
-    <TD style="font-size: 10px;">The edit mode allows you to edit preferences. Click to view all preferences
-    currently stored in this portlet.</TD></TR>
-
-<portlet:actionURL portletMode="<%=PortletMode.VIEW.toString()%>" secure='<%=renderRequest.isSecure()?"True":"False"%>' var="url">
-	<portlet:param name="testId" value='<%=renderRequest.getParameter("testId")%>'/>
-</portlet:actionURL>
-
-<TR><TD style="font-size: 12px"><A href="<%=url%>">View</A></TD>
-    <TD style="font-size: 10px;" valign="top">You are currently looking at the view.  Verify that clicking on this link
-    simply refreshes this page.</TD></TR>
-
-</TABLE>
-
-<%@ include file="navigation.inc" %>
+<%--
+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.
+--%>
+<%@ page isELIgnored="false" %>
+<%@ page import="javax.portlet.PortletMode"%>
+<%@ taglib uri='http://java.sun.com/portlet_2_0' prefix='portlet'%>
+
+<portlet:defineObjects/>
+
+<TABLE style="font-size: -1">
+<TR><TH colspan="2" style="background-color:blue;color:white;">MANUAL TEST</TH></TR>
+<TR><TH></TH>
+    <TH>Portlet Mode Test</TH></TR>
+<TR><TD colspan="2">This test requires manual intervention
+        to ensure that it passes.  Click on the links below
+        and make sure that the specified mode is displayed.</TD></TR>
+
+<portlet:actionURL portletMode="<%=PortletMode.HELP.toString()%>" secure='<%=renderRequest.isSecure()?"True":"False"%>' var="url">
+	<portlet:param name="testId" value='<%=renderRequest.getParameter("testId")%>'/>
+</portlet:actionURL>
+
+<TR><TD style="font-size: 12px" valign="top"><A href="<%=url%>">Help</A></TD>
+    <TD style="font-size: 10px;">The help mode provides help info.  Click to ensure that help info is
+        displayed.</TD></TR>
+
+<portlet:actionURL portletMode="<%=PortletMode.EDIT.toString()%>" secure='<%=renderRequest.isSecure()?"True":"False"%>' var="url">
+	<portlet:param name="testId" value='<%=renderRequest.getParameter("testId")%>'/>
+</portlet:actionURL>
+
+<TR><TD style="font-size: 12px" valign="top"><A href="<%=url%>">Edit</A></TD>
+    <TD style="font-size: 10px;">The edit mode allows you to edit preferences. Click to view all preferences
+    currently stored in this portlet.</TD></TR>
+
+<portlet:actionURL portletMode="<%=PortletMode.VIEW.toString()%>" secure='<%=renderRequest.isSecure()?"True":"False"%>' var="url">
+	<portlet:param name="testId" value='<%=renderRequest.getParameter("testId")%>'/>
+</portlet:actionURL>
+
+<TR><TD style="font-size: 12px"><A href="<%=url%>">View</A></TD>
+    <TD style="font-size: 10px;" valign="top">You are currently looking at the view.  Verify that clicking on this link
+    simply refreshes this page.</TD></TR>
+
+</TABLE>
+
+<%@ include file="navigation.inc" %>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-testsuite/src/main/webapp/jsp/test4.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/test4.jsp b/pluto-testsuite/src/main/webapp/jsp/test4.jsp
index 5d9f913..77e65bb 100644
--- a/pluto-testsuite/src/main/webapp/jsp/test4.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/test4.jsp
@@ -1,84 +1,85 @@
-<!-- 
-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.
--->
-<%@ page session="false" %>
-<%@ taglib uri='http://java.sun.com/portlet_2_0' prefix='portlet'%>
-<%@ page import="javax.portlet.*"%>
-<%@ page import="java.util.*"%>
-<portlet:defineObjects/>
-<%
-String baseNS = renderResponse.getNamespace();
-PortletSession ps = renderRequest.getPortletSession();
-%>
-
-<I>This portlet is testing basic functions...</I>
-<P>
-<FONT SIZE="-1">
-<B>Testing Portlet Actions...</B><BR>
-<%
-PortletURL url = renderResponse.createActionURL();
-url.setParameter("checkAction","action1");
-url.setSecure(renderRequest.isSecure());
-%>
-click <A HREF="<%=url.toString()%>">here</A> to invoke the first portlet action.<BR>
-<%
-if ("action1".equals(ps.getAttribute("checkAction", PortletSession.PORTLET_SCOPE)))
-{
-    out.print("Result: ");
-    out.print("<b>passed</b>");
-}
-%>
-<P>
-<B>Testing RenderParameters with Portlet Actions...</B><BR>
-<%
-PortletURL url1 = renderResponse.createActionURL();
-url1.setParameter("checkActionRender","step1");
-url1.setParameter("jspNameTransfer","test4.jsp");
-url.setSecure(renderRequest.isSecure());
-%>
-click <A HREF="<%=url1.toString()%>">here</A> for step 1.<BR>
-<%
-if ("step2".equals(renderRequest.getParameter("checkActionRender2")))
-{
-    PortletURL url2 = renderResponse.createRenderURL();
-    url2.setParameter("checkActionRender2","step2");
-    url2.setParameter("checkActionRender3","step3");
-    url2.setParameter("jspName","test4.jsp");
-    url2.setSecure(renderRequest.isSecure());
-%>
-click <A HREF="<%=url2.toString()%>">here</A> for step 2.<BR>
-<%
-}
-if (("step3".equals(renderRequest.getParameter("checkActionRender3"))) &&
-    ("step2".equals(renderRequest.getParameter("checkActionRender2"))))
-{
-    out.print("Result: ");
-    out.print("<b>passed</b>");
-}
-%>
-
-<%
-url = renderResponse.createRenderURL();
-url.setParameter("jspName","test5.jsp");
-url.setSecure(renderRequest.isSecure());
-%>
-<FORM METHOD="POST" ACTION="<%=url.toString()%>">
-<INPUT value="Next >>" TYPE="submit">
-</FORM>
-</FONT>
-
+<!-- 
+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.
+-->
+<%@ page isELIgnored="false" %>
+<%@ page session="false" %>
+<%@ taglib uri='http://java.sun.com/portlet_2_0' prefix='portlet'%>
+<%@ page import="javax.portlet.*"%>
+<%@ page import="java.util.*"%>
+<portlet:defineObjects/>
+<%
+String baseNS = renderResponse.getNamespace();
+PortletSession ps = renderRequest.getPortletSession();
+%>
+
+<I>This portlet is testing basic functions...</I>
+<P>
+<FONT SIZE="-1">
+<B>Testing Portlet Actions...</B><BR>
+<%
+PortletURL url = renderResponse.createActionURL();
+url.setParameter("checkAction","action1");
+url.setSecure(renderRequest.isSecure());
+%>
+click <A HREF="<%=url.toString()%>">here</A> to invoke the first portlet action.<BR>
+<%
+if ("action1".equals(ps.getAttribute("checkAction", PortletSession.PORTLET_SCOPE)))
+{
+    out.print("Result: ");
+    out.print("<b>passed</b>");
+}
+%>
+<P>
+<B>Testing RenderParameters with Portlet Actions...</B><BR>
+<%
+PortletURL url1 = renderResponse.createActionURL();
+url1.setParameter("checkActionRender","step1");
+url1.setParameter("jspNameTransfer","test4.jsp");
+url.setSecure(renderRequest.isSecure());
+%>
+click <A HREF="<%=url1.toString()%>">here</A> for step 1.<BR>
+<%
+if ("step2".equals(renderRequest.getParameter("checkActionRender2")))
+{
+    PortletURL url2 = renderResponse.createRenderURL();
+    url2.setParameter("checkActionRender2","step2");
+    url2.setParameter("checkActionRender3","step3");
+    url2.setParameter("jspName","test4.jsp");
+    url2.setSecure(renderRequest.isSecure());
+%>
+click <A HREF="<%=url2.toString()%>">here</A> for step 2.<BR>
+<%
+}
+if (("step3".equals(renderRequest.getParameter("checkActionRender3"))) &&
+    ("step2".equals(renderRequest.getParameter("checkActionRender2"))))
+{
+    out.print("Result: ");
+    out.print("<b>passed</b>");
+}
+%>
+
+<%
+url = renderResponse.createRenderURL();
+url.setParameter("jspName","test5.jsp");
+url.setSecure(renderRequest.isSecure());
+%>
+<FORM METHOD="POST" ACTION="<%=url.toString()%>">
+<INPUT value="Next >>" TYPE="submit">
+</FORM>
+</FONT>
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-testsuite/src/main/webapp/jsp/test_results.inc
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/test_results.inc b/pluto-testsuite/src/main/webapp/jsp/test_results.inc
index cf697c0..ee32982 100644
--- a/pluto-testsuite/src/main/webapp/jsp/test_results.inc
+++ b/pluto-testsuite/src/main/webapp/jsp/test_results.inc
@@ -1,138 +1,139 @@
-<%--
-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.
---%>
-
-<%@ page import="org.apache.pluto.testsuite.TestResult" %>
-
-<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
-<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
-
-<%
-    pageContext.setAttribute("PASSED_CODE", new Integer(TestResult.PASSED));
-    pageContext.setAttribute("FAILED_CODE", new Integer(TestResult.FAILED));
-    pageContext.setAttribute("WARNING_CODE", new Integer(TestResult.WARNING));
-%>
-
-<portlet:defineObjects/>
-
-<table>
-  <c:choose>
-    <c:when test="${results == null}">
-      <tr>
-        <th colspan="2" style="background-color:red; color:white;">
-          TEST RESULT NOT FOUND
-        </th>
-      </tr>
-      <tr>
-        <td valign="top">
-          <img src="<%= response.encodeURL(request.getContextPath() + "/images/question.gif") %>"
-               border="0" />
-        </td>
-        <td>
-          <p>
-            The test results could not be found in the request scope. If this
-            is an ActionTest (test logic resides in the processAction() method),
-            one possible reason may be that the original portlet session where
-            the test results reside was invalidated by another portlet.
-          </p>
-          <p>
-            Please return to the introduction page and retry.
-          </p>
-        </td>
-      </tr>
-    </c:when>
-    <c:when test="${results.failed}">
-      <tr>
-        <th colspan="2" style="background-color:red; color:white;">
-          TEST FAILED
-        </th>
-      </tr>
-    </c:when>
-    <c:when test="${results.inQuestion}">
-      <tr>
-        <th colspan="2" style="background-color:yellow;">
-          WARNING
-        </th>
-      </tr>
-    </c:when>
-    <c:otherwise>
-      <tr>
-        <th colspan="2" style="background-color:green; color:white;">
-          TEST PASSED
-        </th>
-      </tr>
-    </c:otherwise>
-  </c:choose>
-  
-  <tr>
-    <th />
-    <th><c:out value="${results.name}"/></th>
-  </tr>
-  
-  <c:forEach var="result" varStatus="status" items="${results.collection}">
-    <tr>
-      
-      <!-- Result Icon ===================================================== -->
-      <td valign="top">
-        <c:choose>
-          <c:when test="${result.returnCode == PASSED_CODE}">
-            <img src="<%= response.encodeURL(request.getContextPath() + "/images/yes.gif") %>"
-                 border="0" />
-          </c:when>
-          <c:when test="${result.returnCode == FAILED_CODE}">
-            <img src="<%= response.encodeURL(request.getContextPath() + "/images/no.gif") %>"
-                 border="0" />
-          </c:when>
-          <c:otherwise>
-            <img src="<%= response.encodeURL(request.getContextPath() + "/images/question.gif") %>"
-                 border="0" />
-          </c:otherwise>
-        </c:choose>
-      </td>
-      
-      <td style="white-space:nowrap;">
-        PLT <c:out value="${result.specPLT}"/> - <c:out value="${result.name}"/>
-      </td>
-    </tr>
-    
-    <c:choose>
-      <c:when test="${result.returnCode == PASSED_CODE}">
-        <tr>
-          <td />
-          <td style="font-size:smaller;">
-            <c:out value="${result.description}"/>
-          </td>
-        </tr>
-      </c:when>
-      <c:otherwise>
-        <tr>
-          <td />
-          <td style="font-size:smaller;">
-            <c:out value="${result.description}"/>
-            <br/>
-            <span style="color:#FF0000;">
-              <c:out value="${result.resultMessage}"/>
-            </span>
-          </td>
-        </tr>
-      </c:otherwise>
-    </c:choose>
-  </c:forEach>
-  
-</table>
-
+<%--
+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.
+--%>
+
+<%@ page isELIgnored="false" %>
+<%@ page import="org.apache.pluto.testsuite.TestResult" %>
+
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
+
+<%
+    pageContext.setAttribute("PASSED_CODE", new Integer(TestResult.PASSED));
+    pageContext.setAttribute("FAILED_CODE", new Integer(TestResult.FAILED));
+    pageContext.setAttribute("WARNING_CODE", new Integer(TestResult.WARNING));
+%>
+
+<portlet:defineObjects/>
+
+<table>
+  <c:choose>
+    <c:when test="${results == null}">
+      <tr>
+        <th colspan="2" style="background-color:red; color:white;">
+          TEST RESULT NOT FOUND
+        </th>
+      </tr>
+      <tr>
+        <td valign="top">
+          <img src="<%= response.encodeURL(request.getContextPath() + "/images/question.gif") %>"
+               border="0" />
+        </td>
+        <td>
+          <p>
+            The test results could not be found in the request scope. If this
+            is an ActionTest (test logic resides in the processAction() method),
+            one possible reason may be that the original portlet session where
+            the test results reside was invalidated by another portlet.
+          </p>
+          <p>
+            Please return to the introduction page and retry.
+          </p>
+        </td>
+      </tr>
+    </c:when>
+    <c:when test="${results.failed}">
+      <tr>
+        <th colspan="2" style="background-color:red; color:white;">
+          TEST FAILED
+        </th>
+      </tr>
+    </c:when>
+    <c:when test="${results.inQuestion}">
+      <tr>
+        <th colspan="2" style="background-color:yellow;">
+          WARNING
+        </th>
+      </tr>
+    </c:when>
+    <c:otherwise>
+      <tr>
+        <th colspan="2" style="background-color:green; color:white;">
+          TEST PASSED
+        </th>
+      </tr>
+    </c:otherwise>
+  </c:choose>
+  
+  <tr>
+    <th />
+    <th><c:out value="${results.name}"/></th>
+  </tr>
+  
+  <c:forEach var="result" varStatus="status" items="${results.collection}">
+    <tr>
+      
+      <!-- Result Icon ===================================================== -->
+      <td valign="top">
+        <c:choose>
+          <c:when test="${result.returnCode == PASSED_CODE}">
+            <img src="<%= response.encodeURL(request.getContextPath() + "/images/yes.gif") %>"
+                 border="0" />
+          </c:when>
+          <c:when test="${result.returnCode == FAILED_CODE}">
+            <img src="<%= response.encodeURL(request.getContextPath() + "/images/no.gif") %>"
+                 border="0" />
+          </c:when>
+          <c:otherwise>
+            <img src="<%= response.encodeURL(request.getContextPath() + "/images/question.gif") %>"
+                 border="0" />
+          </c:otherwise>
+        </c:choose>
+      </td>
+      
+      <td style="white-space:nowrap;">
+        PLT <c:out value="${result.specPLT}"/> - <c:out value="${result.name}"/>
+      </td>
+    </tr>
+    
+    <c:choose>
+      <c:when test="${result.returnCode == PASSED_CODE}">
+        <tr>
+          <td />
+          <td style="font-size:smaller;">
+            <c:out value="${result.description}"/>
+          </td>
+        </tr>
+      </c:when>
+      <c:otherwise>
+        <tr>
+          <td />
+          <td style="font-size:smaller;">
+            <c:out value="${result.description}"/>
+            <br/>
+            <span style="color:#FF0000;">
+              <c:out value="${result.resultMessage}"/>
+            </span>
+          </td>
+        </tr>
+      </c:otherwise>
+    </c:choose>
+  </c:forEach>
+  
+</table>
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-testsuite/src/main/webapp/jsp/test_results.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/test_results.jsp b/pluto-testsuite/src/main/webapp/jsp/test_results.jsp
index c3ed1eb..26add41 100644
--- a/pluto-testsuite/src/main/webapp/jsp/test_results.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/test_results.jsp
@@ -1,26 +1,27 @@
-<%--
-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.
---%>
-
-<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
-
-<portlet:defineObjects/>
-
-<%@ include file="test_results.inc" %>
-<%@ include file="navigation.inc" %>
-
+<%--
+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.
+--%>
+
+<%@ page isELIgnored="false" %>
+<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
+
+<portlet:defineObjects/>
+
+<%@ include file="test_results.inc" %>
+<%@ include file="navigation.inc" %>
+

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/1c869b7c/pluto-testsuite/src/main/webapp/jsp/window_state_test.jsp
----------------------------------------------------------------------
diff --git a/pluto-testsuite/src/main/webapp/jsp/window_state_test.jsp b/pluto-testsuite/src/main/webapp/jsp/window_state_test.jsp
index 9761993..b68a118 100644
--- a/pluto-testsuite/src/main/webapp/jsp/window_state_test.jsp
+++ b/pluto-testsuite/src/main/webapp/jsp/window_state_test.jsp
@@ -1,58 +1,59 @@
-<%--
-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.
---%>
-<%@ page import="javax.portlet.WindowState"%>
-<%@ taglib uri='http://java.sun.com/portlet_2_0' prefix='portlet'%>
-
-<portlet:defineObjects/>
-
-<TABLE style="font-size: -1">
-<TR><TH colspan="2" style="background-color:blue;color:white;">MANUAL TEST</TH></TR>
-<TR><TH></TH>
-    <TH>Window State Test</TH></TR>
-<TR><TD colspan="2">This test requires manual intervention
-        to ensure that it passes.  Click on the links below
-        and make sure that the specified state is displayed.</TD></TR>
-
-<portlet:actionURL windowState="<%=WindowState.MAXIMIZED.toString()%>" secure='<%=renderRequest.isSecure()?"True":"False"%>' var="url">
-	<portlet:param name="testId" value='<%=renderRequest.getParameter("testId")%>'/>
-</portlet:actionURL>
-
-<TR><TD style="font-size: 12px" valign="top"><A href="<%=url%>">Max</A></TD>
-    <TD style="font-size: 10px;">The help mode provides help info.  Click to ensure that help info is
-        displayed.</TD></TR>
-
-<portlet:actionURL windowState="<%=WindowState.MINIMIZED.toString()%>" secure='<%=renderRequest.isSecure()?"True":"False"%>' var="url">
-	<portlet:param name="testId" value='<%=renderRequest.getParameter("testId")%>'/>
-</portlet:actionURL>
-
-<TR><TD style="font-size: 12px" valign="top"><A href="<%=url%>">Min</A></TD>
-    <TD style="font-size: 10px;">The edit mode allows you to edit preferences. Click to view all preferences
-    currently stored in this portlet.</TD></TR>
-
-<portlet:actionURL windowState="<%=WindowState.NORMAL.toString()%>" secure='<%=renderRequest.isSecure()?"True":"False"%>' var="url">
-	<portlet:param name="testId" value='<%=renderRequest.getParameter("testId")%>'/>
-</portlet:actionURL>
-
-<TR><TD style="font-size: 12px" valign="top"><A href="<%=url%>">Nor</A></TD>
-    <TD style="font-size: 10px;">You are currently looking at the view.  Verify that clicking on this link
-    simply refreshes this page.</TD></TR>
-
-</TABLE>
-
-<%@ include file="navigation.inc" %>
+<%--
+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.
+--%>
+<%@ page isELIgnored="false" %>
+<%@ page import="javax.portlet.WindowState"%>
+<%@ taglib uri='http://java.sun.com/portlet_2_0' prefix='portlet'%>
+
+<portlet:defineObjects/>
+
+<TABLE style="font-size: -1">
+<TR><TH colspan="2" style="background-color:blue;color:white;">MANUAL TEST</TH></TR>
+<TR><TH></TH>
+    <TH>Window State Test</TH></TR>
+<TR><TD colspan="2">This test requires manual intervention
+        to ensure that it passes.  Click on the links below
+        and make sure that the specified state is displayed.</TD></TR>
+
+<portlet:actionURL windowState="<%=WindowState.MAXIMIZED.toString()%>" secure='<%=renderRequest.isSecure()?"True":"False"%>' var="url">
+	<portlet:param name="testId" value='<%=renderRequest.getParameter("testId")%>'/>
+</portlet:actionURL>
+
+<TR><TD style="font-size: 12px" valign="top"><A href="<%=url%>">Max</A></TD>
+    <TD style="font-size: 10px;">The help mode provides help info.  Click to ensure that help info is
+        displayed.</TD></TR>
+
+<portlet:actionURL windowState="<%=WindowState.MINIMIZED.toString()%>" secure='<%=renderRequest.isSecure()?"True":"False"%>' var="url">
+	<portlet:param name="testId" value='<%=renderRequest.getParameter("testId")%>'/>
+</portlet:actionURL>
+
+<TR><TD style="font-size: 12px" valign="top"><A href="<%=url%>">Min</A></TD>
+    <TD style="font-size: 10px;">The edit mode allows you to edit preferences. Click to view all preferences
+    currently stored in this portlet.</TD></TR>
+
+<portlet:actionURL windowState="<%=WindowState.NORMAL.toString()%>" secure='<%=renderRequest.isSecure()?"True":"False"%>' var="url">
+	<portlet:param name="testId" value='<%=renderRequest.getParameter("testId")%>'/>
+</portlet:actionURL>
+
+<TR><TD style="font-size: 12px" valign="top"><A href="<%=url%>">Nor</A></TD>
+    <TD style="font-size: 10px;">You are currently looking at the view.  Verify that clicking on this link
+    simply refreshes this page.</TD></TR>
+
+</TABLE>
+
+<%@ include file="navigation.inc" %>