Update of
/var/cvs/contributions/CMSContainer/cmsc/portlets/src/java/com/finalist/cmsc/portlets
In directory
james.mmbase.org:/tmp/cvs-serv15176/cmsc/portlets/src/java/com/finalist/cmsc/portlets
Modified Files:
Tag: b1_4
RelatedContentPortlet.java
Log Message:
CMSC-959 - Added two new methods. The first: getElementIdFromContentURL uses a
regex to try and find a elementId in the request URL generated by a contentURL.
The second is just a convenience method: getElementId, that has protected
scope. This allows you to extend and override the portlet class and make your
own implementation to get an elementId.
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/portlets/src/java/com/finalist/cmsc/portlets
See also: http://www.mmbase.org/jira/browse/CMSC-959
Index: RelatedContentPortlet.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/portlets/src/java/com/finalist/cmsc/portlets/RelatedContentPortlet.java,v
retrieving revision 1.4.2.1
retrieving revision 1.4.2.2
diff -u -b -r1.4.2.1 -r1.4.2.2
--- RelatedContentPortlet.java 21 Apr 2008 10:11:28 -0000 1.4.2.1
+++ RelatedContentPortlet.java 12 Jun 2008 13:36:40 -0000 1.4.2.2
@@ -4,6 +4,8 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
@@ -12,7 +14,9 @@
import org.apache.pluto.core.impl.PortletRequestImpl;
-import com.finalist.cmsc.beans.om.*;
+import com.finalist.cmsc.beans.om.NavigationItem;
+import com.finalist.cmsc.beans.om.Page;
+import com.finalist.cmsc.beans.om.Portlet;
import com.finalist.cmsc.portalImpl.PortalConstants;
import com.finalist.cmsc.services.sitemanagement.SiteManagement;
@@ -20,12 +24,24 @@
public class RelatedContentPortlet extends AbstractContentPortlet {
+ /**
+ * This rexex pattern is uesd to match the elementId from a contentURL.
+ */
+ private static final String CONTENTURL_ELEMENTID_PATTERN =
"/content/([0-9]+)";
+
+ @Override
protected void doView(RenderRequest req, RenderResponse res) throws
PortletException, IOException {
String window = req.getPreferences().getValue(WINDOW, null);
if (!StringUtil.isEmpty(window)) {
String elementId = getElementIdFromRequestParameters(req, window);
if (StringUtil.isEmpty(elementId)) {
elementId = getElementIdFromScreen(req, window);
+ if (StringUtil.isEmpty(elementId)) {
+ elementId =
getElementIdFromContentURL(req);
+ if (StringUtil.isEmpty(elementId)) {
+ elementId = getElementId(req);
+ }
+ }
}
if (!StringUtil.isEmpty(elementId)) {
@@ -35,6 +51,19 @@
super.doView(req, res);
}
+ /**
+ * This method can be overridden to provide your own mechanism for
getting
+ * an elementId.
+ *
+ * @param req
+ * originating RenderRequest
+ * @return ElementId, defaults to null.
+ *
+ */
+ protected String getElementId(RenderRequest req) {
+ // Extension point
+ return null;
+ }
private String getElementIdFromScreen(RenderRequest req, String window) {
Integer pageId = getCurrentPageId(req);
@@ -50,18 +79,15 @@
return null;
}
-
private Integer getCurrentPageId(RenderRequest req) {
String pageId = (String)
req.getAttribute(PortalConstants.CMSC_OM_PAGE_ID);
return Integer.valueOf(pageId);
}
-
private HttpServletRequest getServletRequest(RenderRequest req) {
return (HttpServletRequest) ((PortletRequestImpl) req).getRequest();
}
-
private String getElementIdFromRequestParameters(RenderRequest req, String
window) {
String requestURL = getServletRequest(req).getRequestURL().toString();
String paramName = "/_rp_" + window + "_elementId/1_";
@@ -74,11 +100,9 @@
}
return elementId;
}
-
return null;
}
-
@Override
protected void doEditDefaults(RenderRequest req, RenderResponse res) throws
IOException, PortletException {
Integer pageid = getCurrentPageId(req);
@@ -90,9 +114,16 @@
Collections.sort(orderedPositions);
setAttribute(req, "pagepositions", new
ArrayList<String>(orderedPositions));
}
-
super.doEditDefaults(req, res);
-
}
+ private String getElementIdFromContentURL(RenderRequest req) {
+ String requestURL =
getServletRequest(req).getRequestURL().toString();
+ Pattern pattern = Pattern.compile(CONTENTURL_ELEMENTID_PATTERN);
+ Matcher matcher = pattern.matcher(requestURL);
+ if (matcher.find() && matcher.groupCount() >= 1) {
+ return matcher.group(1);
+ }
+ return null;
+ }
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs