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 Cvs@lists.mmbase.org http://lists.mmbase.org/mailman/listinfo/cvs