You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by ms...@apache.org on 2015/01/27 09:01:55 UTC
[11/19] portals-pluto git commit: worked on adding the PRP map info
to the URL
worked on adding the PRP map info to the URL
Project: http://git-wip-us.apache.org/repos/asf/portals-pluto/repo
Commit: http://git-wip-us.apache.org/repos/asf/portals-pluto/commit/b2c68875
Tree: http://git-wip-us.apache.org/repos/asf/portals-pluto/tree/b2c68875
Diff: http://git-wip-us.apache.org/repos/asf/portals-pluto/diff/b2c68875
Branch: refs/heads/PortletHub
Commit: b2c68875c915986645cc90f6ecb42cf6e0181af1
Parents: 6bf8a9d
Author: Scott Nicklous <ms...@apache.org>
Authored: Wed Jan 21 17:30:37 2015 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Wed Jan 21 17:30:37 2015 +0100
----------------------------------------------------------------------
.../container/PortletRequestContextImpl.java | 19 ++++-------
.../driver/url/impl/PortalURLParserImpl.java | 35 +++++++++++++++++++-
.../driver/url/impl/RelativePortalURLImpl.java | 27 ++++++++-------
.../portal/PublicRenderParameterMapper.java | 9 +++++
.../portal/PublicRenderParameterMapperImpl.java | 28 ++++++++++++++--
.../org/apache/pluto/driver/url/PortalURL.java | 21 +++++++++---
.../org/apache/pluto/driver/util/PageState.java | 13 +++++++-
7 files changed, 120 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/b2c68875/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 5c52a94..35bf3d8 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
@@ -44,8 +44,10 @@ 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.services.portal.PublicRenderParameterMapper;
import org.apache.pluto.driver.url.PortalURL;
import org.apache.pluto.driver.url.PortalURLParameter;
+import org.apache.pluto.driver.url.PortalURLPublicParameter;
/**
* @version $Id$
@@ -110,13 +112,6 @@ public class PortletRequestContextImpl implements PortletRequestContext {
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;
@@ -313,11 +308,11 @@ public class PortletRequestContextImpl implements PortletRequestContext {
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());
- }
+ PublicRenderParameterMapper mapper = url.getPublicRenderParameterMapper();
+ // get the active PRPs only
+ List<PortalURLPublicParameter> prps = mapper.getPRPsForWindow(window.getId().getStringId(), true);
+ for (PortalURLPublicParameter prp : prps) {
+ parameters.put(prp.getName(), prp.getValues().clone());
}
return parameters;
}
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/b2c68875/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLParserImpl.java
----------------------------------------------------------------------
diff --git a/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLParserImpl.java b/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLParserImpl.java
index d624335..e872b01 100644
--- a/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLParserImpl.java
+++ b/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLParserImpl.java
@@ -19,6 +19,8 @@ package org.apache.pluto.driver.url.impl;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Iterator;
import java.util.Map;
import java.util.StringTokenizer;
@@ -156,7 +158,7 @@ public class PortalURLParserImpl implements PortalURLParser {
} else {
// parameters, etc. remain to be processed
renderPath.append(pathInfo.substring(0, ind));
- pathInfo = pathInfo.substring(ind+1);
+ pathInfo = pathInfo.substring(ind);
}
portalURL.setRenderPath(renderPath.toString());
@@ -169,6 +171,29 @@ public class PortalURLParserImpl implements PortalURLParser {
PublicRenderParameterMapperImpl prpm = dc.getPublicRenderParameterService()
.getPRPMapper(renderPath.toString());
portalURL.setPublicRenderParameterMapper(prpm);
+ portalURL.setPortletIds(dc.getPageConfig(renderPath.toString()).getPortletIds());
+
+ // Tokenize the rest and process the tokens
+ ArrayList<String> portletIds = new ArrayList<String>();
+ String[] tokens = pathInfo.split("/" + PREFIX);
+ for (String t : tokens) {
+ String type, val;
+ if (t.length() < 3) {
+ LOG.warn("Token " + t + " is too short!! ");
+ continue;
+ } else {
+ type = t.substring(0, 2);
+ val = t.substring(2);
+ }
+
+ if (type.equals(PORTLET_ID)) {
+ String[] decoded = decodeControlParameter(PREFIX + PORTLET_ID + val);
+ portletIds.add(Integer.parseInt(decoded[1]), decoded[0]);
+ } else {
+ LOG.debug("Found " + portletIds.size() + " IDs: " + Arrays.toString(portletIds.toArray()));
+ break;
+ }
+ }
// Now parse the remaining portion of the URL, of any.
StringTokenizer st = new StringTokenizer(pathInfo, "/", false);
@@ -270,6 +295,14 @@ public class PortalURLParserImpl implements PortalURLParser {
if (portalURL.getRenderPath() != null) {
buffer.append(portalURL.getRenderPath());
}
+
+ // Add the portletIds with references
+ ArrayList<String> pids = new ArrayList<String>();
+ for (String pid : portalURL.getPortletIds()) {
+ pids.add(pid);
+ buffer.append("/").append(encodeControlParameter(PORTLET_ID, pid, String.valueOf(pids.indexOf(pid))));
+ }
+
//Append the resource window definition, if it exists.
if (portalURL.getResourceWindow() != null){
buffer.append("/");
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/b2c68875/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/RelativePortalURLImpl.java
----------------------------------------------------------------------
diff --git a/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/RelativePortalURLImpl.java b/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/RelativePortalURLImpl.java
index 67d77e3..0ef7a68 100644
--- a/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/RelativePortalURLImpl.java
+++ b/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/RelativePortalURLImpl.java
@@ -16,6 +16,7 @@
*/
package org.apache.pluto.driver.url.impl;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -61,6 +62,8 @@ public class RelativePortalURLImpl implements PortalURL {
// provides the defined public render parameters and their relationships to one another for the current page
private PublicRenderParameterMapper prpMapper = null;
+
+ private Collection<String> portletIds = new ArrayList<String>();
/**
* PortalURLParser used to construct the string
@@ -281,6 +284,7 @@ public class RelativePortalURLImpl implements PortalURL {
portalURL.urlParser = urlParser;
portalURL.resourceWindow = resourceWindow;
portalURL.prpMapper = (prpMapper == null) ? null : prpMapper.clone();
+ portalURL.portletIds = portletIds;
return portalURL;
}
//JSR-286 methods
@@ -351,18 +355,6 @@ public class RelativePortalURLImpl implements PortalURL {
addParameter(new PortalURLParameter(param.getWindowId(), param.getName(), param.getValues()));
}
}
-// Map<String, String[]> newPublicParameters = url.getNewPublicParameters();
-// for (Map.Entry<String, String[]> entry : newPublicParameters.entrySet())
-// {
-// if (entry.getValue()[0] == null)
-// {
-// publicParameterCurrent.remove(entry.getKey());
-// }
-// else
-// {
-// publicParameterCurrent.put(entry.getKey(), entry.getValue());
-// }
-// }
PublicRenderParameterMapper prpm = url.getPublicRenderParameterMapper();
List<Integer> activePrps = prpm.getActiveIndexes();
for (int ii = 0; ii < prpm.getNumberOfGroups(); ii++) {
@@ -399,4 +391,15 @@ public class RelativePortalURLImpl implements PortalURL {
public PublicRenderParameterMapper getPublicRenderParameterMapper() {
return prpMapper;
}
+
+ public void setPortletIds(Collection<String> portletIds) {
+ this.portletIds.addAll(portletIds);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Stored " + this.portletIds.size() + " IDs: " + Arrays.toString(this.portletIds.toArray()));
+ }
+ }
+
+ public Collection<String> getPortletIds() {
+ return this.portletIds;
+ }
}
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/b2c68875/pluto-portal-driver/src/main/java/org/apache/pluto/driver/services/portal/PublicRenderParameterMapper.java
----------------------------------------------------------------------
diff --git a/pluto-portal-driver/src/main/java/org/apache/pluto/driver/services/portal/PublicRenderParameterMapper.java b/pluto-portal-driver/src/main/java/org/apache/pluto/driver/services/portal/PublicRenderParameterMapper.java
index b2f6e36..1d82e6b 100644
--- a/pluto-portal-driver/src/main/java/org/apache/pluto/driver/services/portal/PublicRenderParameterMapper.java
+++ b/pluto-portal-driver/src/main/java/org/apache/pluto/driver/services/portal/PublicRenderParameterMapper.java
@@ -155,6 +155,15 @@ public interface PublicRenderParameterMapper {
public List<Integer> getActiveIndexes();
/**
+ * Returns an array containing the indexes of all indexes (= PRPs) defined for the given portlet window.
+ *
+ * @param wid window ID
+ * @param onlyActive if true, only the active ( = set) PRPs are returned
+ * @return a list of public render parameters for the window. If none are found, the list will be empty.
+ */
+ public List<PortalURLPublicParameter> getPRPsForWindow(String wid, boolean onlyActive);
+
+ /**
* Returns a clone of the mapper. All public render parameters contained in the mapper are cloned as well.
* @return
*/
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/b2c68875/pluto-portal-driver/src/main/java/org/apache/pluto/driver/services/portal/PublicRenderParameterMapperImpl.java
----------------------------------------------------------------------
diff --git a/pluto-portal-driver/src/main/java/org/apache/pluto/driver/services/portal/PublicRenderParameterMapperImpl.java b/pluto-portal-driver/src/main/java/org/apache/pluto/driver/services/portal/PublicRenderParameterMapperImpl.java
index 92b86bf..9e4afb3 100644
--- a/pluto-portal-driver/src/main/java/org/apache/pluto/driver/services/portal/PublicRenderParameterMapperImpl.java
+++ b/pluto-portal-driver/src/main/java/org/apache/pluto/driver/services/portal/PublicRenderParameterMapperImpl.java
@@ -20,7 +20,6 @@
package org.apache.pluto.driver.services.portal;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import java.util.Collection;
import java.util.HashMap;
@@ -56,6 +55,7 @@ public class PublicRenderParameterMapperImpl implements PublicRenderParameterMap
// Maps the PRP QName to a set of public render parameters
private final Map<QName, List<PortalURLPublicParameter>> qn2PRP =
new HashMap<QName, List<PortalURLPublicParameter>>();
+
private final ArrayList<QName> qnList = new ArrayList<QName>();
public PublicRenderParameterMapperImpl(PageConfig paco, PortletRegistryService pore) {
@@ -260,8 +260,32 @@ public class PublicRenderParameterMapperImpl implements PublicRenderParameterMap
dbgstr.append(prefix + prp.getWindowId());
prefix = ", ";
}
- LOGGER.debug(dbgstr.toString());
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(dbgstr.toString());
+ }
return prpm;
}
+ public List<PortalURLPublicParameter> getPRPsForWindow(String wid, boolean onlyActive) {
+ ArrayList<PortalURLPublicParameter> prps = new ArrayList<PortalURLPublicParameter>();
+ StringBuilder dbgstr = new StringBuilder("Names: ");
+ String prefix = "";
+ for (int ii = 0; ii < qnList.size(); ii++) {
+ for (PortalURLPublicParameter prp : qn2PRP.get(qnList.get(ii))) {
+ if (prp.getWindowId().equals(wid)) {
+ if ((onlyActive && !prp.isRemoved()) || !onlyActive) {
+ prps.add(prp);
+ dbgstr.append(prefix + prp.getName());
+ prefix = ", ";
+ }
+ break;
+ }
+ }
+ }
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("For window " + wid + " there are " + prps.size() + " parameters. " + dbgstr.toString());
+ }
+ return prps;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/b2c68875/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURL.java
----------------------------------------------------------------------
diff --git a/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURL.java b/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURL.java
index 367c36c..3c98c04 100644
--- a/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURL.java
+++ b/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURL.java
@@ -18,7 +18,6 @@ package org.apache.pluto.driver.url;
import java.util.Collection;
import java.util.Map;
-import java.util.Set;
import javax.portlet.PortletMode;
import javax.portlet.WindowState;
@@ -46,19 +45,33 @@ public interface PortalURL extends Cloneable {
*
* @param pup
*/
- void addPublicRenderParameter(PortalURLPublicParameter pup);
+ public void addPublicRenderParameter(PortalURLPublicParameter pup);
/**
* Add the PRP mapper for the page being processed
* @param prpm
*/
- void setPublicRenderParameterMapper(PublicRenderParameterMapper prpm);
+ public void setPublicRenderParameterMapper(PublicRenderParameterMapper prpm);
/**
* get the PRP mapper for the page being processed
* @return
*/
- PublicRenderParameterMapper getPublicRenderParameterMapper();
+ public PublicRenderParameterMapper getPublicRenderParameterMapper();
+
+ /**
+ * Stores the portlet window IDs for the portlets on the page
+ *
+ * @param portletIds
+ */
+ public void setPortletIds(Collection<String> portletIds);
+
+ /**
+ * Returns the portlet Ids for the portlets on the page
+ *
+ * @return
+ */
+ public Collection<String> getPortletIds();
Collection<PortalURLParameter> getParameters();
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/b2c68875/pluto-portal-driver/src/main/java/org/apache/pluto/driver/util/PageState.java
----------------------------------------------------------------------
diff --git a/pluto-portal-driver/src/main/java/org/apache/pluto/driver/util/PageState.java b/pluto-portal-driver/src/main/java/org/apache/pluto/driver/util/PageState.java
index 5854b23..81391d2 100644
--- a/pluto-portal-driver/src/main/java/org/apache/pluto/driver/util/PageState.java
+++ b/pluto-portal-driver/src/main/java/org/apache/pluto/driver/util/PageState.java
@@ -23,6 +23,7 @@ import static java.util.logging.Level.*;
import java.util.Collection;
import java.util.Enumeration;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -39,6 +40,7 @@ import org.apache.pluto.driver.AttributeKeys;
import org.apache.pluto.driver.config.DriverConfiguration;
import org.apache.pluto.driver.core.PortalRequestContext;
import org.apache.pluto.driver.services.portal.PageConfig;
+import org.apache.pluto.driver.services.portal.PublicRenderParameterMapper;
import org.apache.pluto.driver.url.PortalURL;
import org.apache.pluto.driver.url.PortalURLParameter;
@@ -89,7 +91,16 @@ public class PageState {
* @return
*/
public Map<String, String[]> getPublicParameters() {
- return portalUrl.getPublicParameters();
+ Map<String,String[]> tmp = new HashMap<String, String[]>();
+ PublicRenderParameterMapper prpMapper = portalUrl.getPublicRenderParameterMapper();
+ if (prpMapper != null) {
+ for (int ind : prpMapper.getActiveIndexes()) {
+ String name = prpMapper.getPublicParameterGroup(ind).get(0).getName();
+ String[] vals = prpMapper.getValues(ind);
+ tmp.put(name, vals);
+ }
+ }
+ return tmp;
}
/**