Author: jonesde
Date: Thu Jul 17 11:52:57 2008 New Revision: 677683 URL: http://svn.apache.org/viewvc?rev=677683&view=rev Log: Fixed bug where links with jsessionid from a cms page had the link built out of order with the jsessionid in the middle Modified: ofbiz/trunk/applications/content/src/org/ofbiz/content/cms/CmsEvents.java ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentMapFacade.java ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentWorker.java Modified: ofbiz/trunk/applications/content/src/org/ofbiz/content/cms/CmsEvents.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/cms/CmsEvents.java?rev=677683&r1=677682&r2=677683&view=diff ============================================================================== --- ofbiz/trunk/applications/content/src/org/ofbiz/content/cms/CmsEvents.java (original) +++ ofbiz/trunk/applications/content/src/org/ofbiz/content/cms/CmsEvents.java Thu Jul 17 11:52:57 2008 @@ -19,17 +19,11 @@ package org.ofbiz.content.cms; -import org.ofbiz.base.util.*; -import org.ofbiz.base.util.collections.MapStack; -import org.ofbiz.content.content.ContentWorker; -import org.ofbiz.entity.GenericDelegator; -import org.ofbiz.entity.GenericEntityException; -import org.ofbiz.entity.GenericValue; -import org.ofbiz.entity.util.EntityUtil; -import org.ofbiz.webapp.control.RequestHandler; -import org.ofbiz.widget.screen.ScreenRenderer; -import org.ofbiz.widget.html.HtmlFormRenderer; -import org.ofbiz.service.LocalDispatcher; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.util.List; +import java.util.Locale; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; @@ -38,13 +32,24 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.sql.Timestamp; -import java.util.List; -import java.util.Locale; -import java.util.Iterator; + +import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.GeneralException; +import org.ofbiz.base.util.GeneralRuntimeException; +import org.ofbiz.base.util.UtilHttp; +import org.ofbiz.base.util.UtilJ2eeCompat; +import org.ofbiz.base.util.UtilMisc; +import org.ofbiz.base.util.UtilValidate; +import org.ofbiz.base.util.collections.MapStack; +import org.ofbiz.content.content.ContentWorker; +import org.ofbiz.entity.GenericDelegator; +import org.ofbiz.entity.GenericEntityException; +import org.ofbiz.entity.GenericValue; +import org.ofbiz.entity.util.EntityUtil; +import org.ofbiz.service.LocalDispatcher; +import org.ofbiz.webapp.control.RequestHandler; +import org.ofbiz.widget.html.HtmlFormRenderer; +import org.ofbiz.widget.screen.ScreenRenderer; /** @@ -98,7 +103,7 @@ // if path info is null; check for a default content if (pathInfo == null) { - List defaultContents = null; + List<GenericValue> defaultContents = null; try { defaultContents = delegator.findByAnd("WebSiteContent", UtilMisc.toMap("webSiteId", webSiteId, "webSiteContentTypeId", "DEFAULT_PAGE"), UtilMisc.toList("-fromDate")); @@ -159,10 +164,10 @@ // get the contentId/mapKey from URL if (contentId == null) { - Debug.log("Current PathInfo: " + pathInfo, module); + if (Debug.verboseOn()) Debug.logVerbose("Current PathInfo: " + pathInfo, module); if (pathInfo.indexOf("/") != -1) { String[] pathSplit = pathInfo.split("/"); - Debug.log("Split pathinfo: " + pathSplit.length, module); + if (Debug.verboseOn()) Debug.logVerbose("Split pathinfo: " + pathSplit.length, module); if (pathSplit != null && pathSplit.length > 0) { contentId = pathSplit[0]; if (pathSplit.length > 1) { @@ -185,15 +190,18 @@ if (websiteOk) { // create the template map - MapStack templateMap = MapStack.create(); + MapStack<String> templateMap = MapStack.create(); ScreenRenderer.populateContextForRequest(templateMap, null, request, response, servletContext); templateMap.put("formStringRenderer", new HtmlFormRenderer(request, response)); // make the link prefix ServletContext ctx = (ServletContext) request.getAttribute("servletContext"); RequestHandler rh = (RequestHandler) ctx.getAttribute("_REQUEST_HANDLER_"); - String contextLinkPrefix = rh.makeLink(request, response, "", true, false, true); - templateMap.put("_CONTEXT_LINK_PREFIX_", contextLinkPrefix); + templateMap.put("_REQUEST_HANDLER_", rh); + + // NOTE DEJ20080817: this is done in the ContentMapFacade class now to avoid problems with the jsessionid being in the middle of the URL and such + //String contextLinkPrefix = rh.makeLink(request, response, "", true, false, true); + //templateMap.put("_CONTEXT_LINK_PREFIX_", contextLinkPrefix); Writer writer; try { @@ -224,7 +232,7 @@ return "success"; } else { - Debug.log("No website [" + webSiteId + "] publish point found for contentId: " + contentId, module); + if (Debug.verboseOn()) Debug.logVerbose("No website [" + webSiteId + "] publish point found for contentId: " + contentId, module); } } @@ -236,7 +244,7 @@ protected static boolean verifyContentToWebSite(GenericDelegator delegator, String webSiteId, String contentId) throws GeneralException { // first check the top level publish point // get the root content id - List publishPoints = null; + List<GenericValue> publishPoints = null; try { publishPoints = delegator.findByAndCache("WebSiteContent", UtilMisc.toMap("webSiteId", webSiteId, "contentId", contentId, "webSiteContentTypeId", "PUBLISH_POINT"), @@ -247,21 +255,18 @@ publishPoints = EntityUtil.filterByDate(publishPoints); if (publishPoints == null || publishPoints.size() == 0) { - List topLevel = delegator.findByAndCache("WebSiteContent", - UtilMisc.toMap("webSiteId", webSiteId, "webSiteContentTypeId", "PUBLISH_POINT"), - UtilMisc.toList("-fromDate")); - topLevel = EntityUtil.filterByDate(topLevel); - if (topLevel != null) { - Iterator i = topLevel.iterator(); - while (i.hasNext()) { - GenericValue point = (GenericValue) i.next(); + List<GenericValue> topLevelContentValues = delegator.findByAndCache("WebSiteContent", + UtilMisc.toMap("webSiteId", webSiteId, "webSiteContentTypeId", "PUBLISH_POINT"), UtilMisc.toList("-fromDate")); + topLevelContentValues = EntityUtil.filterByDate(topLevelContentValues); + if (topLevelContentValues != null) { + for (GenericValue point: topLevelContentValues) { if (verifySubContent(delegator, contentId, point.getString("contentId"))) { return true; } } } } else { - Debug.log("Found publish points: " + publishPoints, module); + if (Debug.verboseOn()) Debug.logVerbose("Found publish points: " + publishPoints, module); return true; } @@ -269,22 +274,20 @@ } protected static boolean verifySubContent(GenericDelegator delegator, String contentId, String contentIdFrom) throws GeneralException { - List contentAssoc = delegator.findByAnd("ContentAssoc", UtilMisc.toMap("contentId", contentIdFrom, "contentIdTo", contentId)); + List<GenericValue> contentAssoc = delegator.findByAnd("ContentAssoc", UtilMisc.toMap("contentId", contentIdFrom, "contentIdTo", contentId)); contentAssoc = EntityUtil.filterByDate(contentAssoc); if (contentAssoc == null || contentAssoc.size() == 0) { - List assocs = delegator.findByAnd("ContentAssoc", UtilMisc.toMap("contentId", contentIdFrom)); + List<GenericValue> assocs = delegator.findByAnd("ContentAssoc", UtilMisc.toMap("contentId", contentIdFrom)); assocs = EntityUtil.filterByDate(assocs); if (assocs != null) { - Iterator i = assocs.iterator(); - while (i.hasNext()) { - GenericValue assoc = (GenericValue) i.next(); + for (GenericValue assoc: assocs) { if (verifySubContent(delegator, contentId, assoc.getString("contentIdTo"))) { return true; } } } } else { - Debug.log("Found assocs: " + contentAssoc, module); + if (Debug.verboseOn()) Debug.logVerbose("Found assocs: " + contentAssoc, module); return true; } Modified: ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentMapFacade.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentMapFacade.java?rev=677683&r1=677682&r2=677683&view=diff ============================================================================== --- ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentMapFacade.java (original) +++ ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentMapFacade.java Thu Jul 17 11:52:57 2008 @@ -24,6 +24,7 @@ import org.ofbiz.entity.GenericEntityException; import org.ofbiz.entity.util.EntityUtil; import org.ofbiz.service.LocalDispatcher; +import org.ofbiz.webapp.control.RequestHandler; import org.ofbiz.base.util.UtilMisc; import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.GeneralException; @@ -33,6 +34,9 @@ import java.util.*; import java.io.IOException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + import javolution.util.FastList; import javolution.util.FastMap; import javolution.util.FastSet; @@ -43,6 +47,19 @@ public class ContentMapFacade implements Map { public static final String module = ContentMapFacade.class.getName(); + + protected static final Set<String> mapKeySet = FastSet.newInstance(); + static { + mapKeySet.add("fields"); + mapKeySet.add("link"); + mapKeySet.add("data"); + mapKeySet.add("dataresource"); + mapKeySet.add("subcontent"); + mapKeySet.add("subcontent_all"); + mapKeySet.add("metadata"); + mapKeySet.add("content"); + mapKeySet.add("render"); + } protected final LocalDispatcher dispatcher; protected final GenericDelegator delegator; @@ -146,19 +163,9 @@ Debug.logWarning("This method [clear()] is not implemented in ContentMapFacade", module); } - public Set keySet() { - Debug.logWarning("This method [keySet()] is not completely implemented in ContentMapFacade", module); - Set keys = FastSet.newInstance(); - keys.add("fields"); - keys.add("link"); - keys.add("data"); - keys.add("dataresource"); - keys.add("subcontent"); - keys.add("subcontent_all"); - keys.add("metadata"); - keys.add("content"); - keys.add("render"); - return keys; + public Set<String> keySet() { + // Debug.logWarning("This method [keySet()] is not completely implemented in ContentMapFacade", module); + return mapKeySet; } public Collection values() { @@ -198,15 +205,15 @@ } else if ("link".equalsIgnoreCase(name)) { // link to this content // TODO: make more intelligent to use a link alias if exists - String contextLinkPrefix = (String) this.context.get("_CONTEXT_LINK_PREFIX_"); - if (UtilValidate.isNotEmpty(contextLinkPrefix)) { - StringBuffer linkBuf = new StringBuffer(); - linkBuf.append(contextLinkPrefix); - if (!contextLinkPrefix.endsWith("/")) { - linkBuf.append("/"); - } - linkBuf.append(this.contentId); - return linkBuf.toString(); + + RequestHandler rh = (RequestHandler) this.context.get("_REQUEST_HANDLER_"); + HttpServletRequest request = (HttpServletRequest) this.context.get("request"); + HttpServletResponse response = (HttpServletResponse) this.context.get("response"); + + if (rh != null && request != null && response != null) { + String contextLink = rh.makeLink(request, response, this.contentId, true, false, true); + // Debug.logInfo("Made link to content with ID [" + this.contentId + "]: " + contextLink, module); + return contextLink; } else { return this.contentId; } @@ -215,8 +222,8 @@ return dataResource; } else if ("subcontent_all".equalsIgnoreCase(name)) { // subcontent list of ordered subcontent - List subContent = FastList.newInstance(); - List subs = null; + List<ContentMapFacade> subContent = FastList.newInstance(); + List<GenericValue> subs = null; try { if (cache) { subs = delegator.findByAndCache("ContentAssoc", UtilMisc.toMap("contentId", contentId), UtilMisc.toList("-fromDate")); @@ -229,9 +236,7 @@ if (subs != null) { subs = EntityUtil.filterByDate(subs); - Iterator i = subs.iterator(); - while (i.hasNext()) { - GenericValue v = (GenericValue) i.next(); + for (GenericValue v: subs) { subContent.add(new ContentMapFacade(dispatcher, delegator, v.getString("contentIdTo"), context, locale, mimeType, cache)); } } Modified: ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentWorker.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentWorker.java?rev=677683&r1=677682&r2=677683&view=diff ============================================================================== --- ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentWorker.java (original) +++ ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentWorker.java Thu Jul 17 11:52:57 2008 @@ -134,7 +134,7 @@ // if the content is a PUBLISH_POINT and the data resource is not defined; get the related content if ("WEB_SITE_PUB_PT".equals(content.get("contentTypeId")) && content.get("dataResourceId") == null) { - List relContentIds = delegator.findByAnd("ContentAssocDataResourceViewTo", + List<GenericValue> relContentIds = delegator.findByAnd("ContentAssocDataResourceViewTo", UtilMisc.toMap("contentIdStart", content.get("contentId"),"statusId","CTNT_PUBLISHED", "caContentAssocTypeId", "PUBLISH_LINK"), UtilMisc.toList("caFromDate")); |
Free forum by Nabble | Edit this page |