Posted by
adrianc on
URL: http://ofbiz.116.s1.nabble.com/svn-commit-r1522002-in-ofbiz-trunk-framework-widget-config-widget-properties-src-org-ofbiz-widget-sca-tp4643857.html
Author: adrianc
Date: Wed Sep 11 19:31:14 2013
New Revision: 1522002
URL:
http://svn.apache.org/r1522002Log:
Refactored MacroScreenViewHandler.java so it doesn't require empty "do nothing" templates.
https://issues.apache.org/jira/browse/OFBIZ-5310Modified:
ofbiz/trunk/framework/widget/config/widget.properties
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenViewHandler.java
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java
Modified: ofbiz/trunk/framework/widget/config/widget.properties
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/config/widget.properties?rev=1522002&r1=1522001&r2=1522002&view=diff==============================================================================
--- ofbiz/trunk/framework/widget/config/widget.properties (original)
+++ ofbiz/trunk/framework/widget/config/widget.properties Wed Sep 11 19:31:14 2013
@@ -73,7 +73,6 @@ screen.default.encoding=none
screentext.name=text
screentext.screenrenderer=component://widget/templates/textScreenMacroLibrary.ftl
screentext.formrenderer=component://widget/templates/textFormMacroLibrary.ftl
-screentext.menurenderer=component://widget/templates/textMenuMacroLibrary.ftl
screentext.treerenderer=component://widget/templates/textTreeMacroLibrary.ftl
screentext.default.contenttype=UTF-8
screentext.default.encoding=none
@@ -81,7 +80,6 @@ screentext.default.encoding=none
screenxml.name=xml
screenxml.screenrenderer=component://widget/templates/xmlScreenMacroLibrary.ftl
screenxml.formrenderer=component://widget/templates/xmlFormMacroLibrary.ftl
-screenxml.menurenderer=component://widget/templates/xmlMenuMacroLibrary.ftl
screenxml.treerenderer=component://widget/templates/xmlTreeMacroLibrary.ftl
screenxml.encoder=xml
screenxml.default.contenttype=UTF-8
@@ -90,7 +88,6 @@ screenxml.default.encoding=none
screenfop.name=xsl-fo
screenfop.screenrenderer=component://widget/templates/foScreenMacroLibrary.ftl
screenfop.formrenderer=component://widget/templates/foFormMacroLibrary.ftl
-screenfop.menurenderer=component://widget/templates/foMenuMacroLibrary.ftl
screenfop.treerenderer=component://widget/templates/foTreeMacroLibrary.ftl
screenfop.default.contenttype=application/pdf
screenfop.default.encoding=none
@@ -98,7 +95,6 @@ screenfop.default.encoding=none
screencsv.name=csv
screencsv.screenrenderer=component://widget/templates/csvScreenMacroLibrary.ftl
screencsv.formrenderer=component://widget/templates/csvFormMacroLibrary.ftl
-screencsv.menurenderer=component://widget/templates/csvMenuMacroLibrary.ftl
screencsv.treerenderer=component://widget/templates/csvTreeMacroLibrary.ftl
screencsv.default.contenttype=UTF-8
screencsv.default.encoding=none
Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenViewHandler.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenViewHandler.java?rev=1522002&r1=1522001&r2=1522002&view=diff==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenViewHandler.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenViewHandler.java Wed Sep 11 19:31:14 2013
@@ -88,17 +88,24 @@ public class MacroScreenViewHandler exte
// to speed up output.
writer = new StandardCompress().getWriter(writer, null);
}
-
ScreenStringRenderer screenStringRenderer = new MacroScreenRenderer(UtilProperties.getPropertyValue("widget", getName() + ".name"), UtilProperties.getPropertyValue("widget", getName() + ".screenrenderer"));
- FormStringRenderer formStringRenderer = new MacroFormRenderer(UtilProperties.getPropertyValue("widget", getName() + ".formrenderer"), request, response);
- TreeStringRenderer treeStringRenderer = new MacroTreeRenderer(UtilProperties.getPropertyValue("widget", getName() + ".treerenderer"), writer);
- MenuStringRenderer menuStringRenderer = new MacroMenuRenderer(UtilProperties.getPropertyValue("widget", getName() + ".menurenderer"), request, response);
-
ScreenRenderer screens = new ScreenRenderer(writer, null, screenStringRenderer);
screens.populateContextForRequest(request, response, servletContext);
- screens.getContext().put("formStringRenderer", formStringRenderer);
- screens.getContext().put("treeStringRenderer", treeStringRenderer);
- screens.getContext().put("menuStringRenderer", menuStringRenderer);
+ String macroLibraryPath = UtilProperties.getPropertyValue("widget", getName() + ".formrenderer");
+ if (UtilValidate.isNotEmpty(macroLibraryPath)) {
+ FormStringRenderer formStringRenderer = new MacroFormRenderer(macroLibraryPath, request, response);
+ screens.getContext().put("formStringRenderer", formStringRenderer);
+ }
+ macroLibraryPath = UtilProperties.getPropertyValue("widget", getName() + ".treerenderer");
+ if (UtilValidate.isNotEmpty(macroLibraryPath)) {
+ TreeStringRenderer treeStringRenderer = new MacroTreeRenderer(macroLibraryPath, writer);
+ screens.getContext().put("treeStringRenderer", treeStringRenderer);
+ }
+ macroLibraryPath = UtilProperties.getPropertyValue("widget", getName() + ".menurenderer");
+ if (UtilValidate.isNotEmpty(macroLibraryPath)) {
+ MenuStringRenderer menuStringRenderer = new MacroMenuRenderer(macroLibraryPath, request, response);
+ screens.getContext().put("menuStringRenderer", menuStringRenderer);
+ }
screens.getContext().put("simpleEncoder", StringUtil.getEncoder(UtilProperties.getPropertyValue("widget", getName() + ".encoder")));
screenStringRenderer.renderScreenBegin(writer, screens.getContext());
screens.render(page);
Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java?rev=1522002&r1=1522001&r2=1522002&view=diff==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java Wed Sep 11 19:31:14 2013
@@ -19,16 +19,14 @@
package org.ofbiz.widget.screen;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
import java.util.ListIterator;
+import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.ParserConfigurationException;
import javolution.util.FastList;
@@ -47,16 +45,15 @@ import org.ofbiz.base.util.string.Flexib
import org.ofbiz.entity.Delegator;
import org.ofbiz.entity.GenericEntityException;
import org.ofbiz.entity.GenericValue;
+import org.ofbiz.entity.condition.EntityCondition;
import org.ofbiz.widget.ModelWidget;
import org.ofbiz.widget.ModelWidgetAction;
+import org.ofbiz.widget.PortalPageWorker;
import org.ofbiz.widget.WidgetFactory;
import org.ofbiz.widget.WidgetWorker;
-import org.ofbiz.widget.PortalPageWorker;
import org.ofbiz.widget.form.FormFactory;
import org.ofbiz.widget.form.FormStringRenderer;
import org.ofbiz.widget.form.ModelForm;
-import org.ofbiz.widget.html.HtmlFormRenderer;
-import org.ofbiz.widget.html.HtmlMenuRenderer;
import org.ofbiz.widget.menu.MenuFactory;
import org.ofbiz.widget.menu.MenuStringRenderer;
import org.ofbiz.widget.menu.ModelMenu;
@@ -65,7 +62,6 @@ import org.ofbiz.widget.tree.TreeFactory
import org.ofbiz.widget.tree.TreeStringRenderer;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
-import org.ofbiz.entity.condition.*;
/**
@@ -811,6 +807,12 @@ public abstract class ModelScreenWidget
@Override
public void renderWidgetString(Appendable writer, Map<String, Object> context, ScreenStringRenderer screenStringRenderer) {
+ // Output format might not support forms, so make form rendering optional.
+ FormStringRenderer formStringRenderer = (FormStringRenderer) context.get("formStringRenderer");
+ if (formStringRenderer == null) {
+ Debug.logVerbose("FormStringRenderer instance not found in rendering context, form not rendered.", module);
+ return;
+ }
boolean protectScope = !shareScope(context);
if (protectScope) {
if (!(context instanceof MapStack<?>)) {
@@ -818,22 +820,6 @@ public abstract class ModelScreenWidget
}
UtilGenerics.<MapStack<String>>cast(context).push();
}
-
- // try finding the formStringRenderer by name in the context in case one was prepared and put there
- FormStringRenderer formStringRenderer = (FormStringRenderer) context.get("formStringRenderer");
- // if there was no formStringRenderer put in place, now try finding the request/response in the context and creating a new one
- if (formStringRenderer == null) {
- HttpServletRequest request = (HttpServletRequest) context.get("request");
- HttpServletResponse response = (HttpServletResponse) context.get("response");
- if (request != null && response != null) {
- formStringRenderer = new HtmlFormRenderer(request, response);
- }
- }
- // still null, throw an error
- if (formStringRenderer == null) {
- throw new IllegalArgumentException("Could not find a formStringRenderer in the context, and could not find HTTP request/response objects need to create one.");
- }
-
ModelForm modelForm = getModelForm(context);
//Debug.logInfo("before renderFormString, context:" + context, module);
try {
@@ -899,6 +885,12 @@ public abstract class ModelScreenWidget
@Override
public void renderWidgetString(Appendable writer, Map<String, Object> context, ScreenStringRenderer screenStringRenderer) throws GeneralException, IOException {
+ // Output format might not support trees, so make tree rendering optional.
+ TreeStringRenderer treeStringRenderer = (TreeStringRenderer) context.get("treeStringRenderer");
+ if (treeStringRenderer == null) {
+ Debug.logVerbose("TreeStringRenderer instance not found in rendering context, tree not rendered.", module);
+ return;
+ }
boolean protectScope = !shareScope(context);
if (protectScope) {
if (!(context instanceof MapStack<?>)) {
@@ -925,12 +917,6 @@ public abstract class ModelScreenWidget
Debug.logError(e, errMsg, module);
throw new RuntimeException(errMsg);
}
-
- TreeStringRenderer treeStringRenderer = (TreeStringRenderer) context.get("treeStringRenderer");
- if (treeStringRenderer == null) {
- throw new IllegalArgumentException("Could not find a treeStringRenderer in the context");
- }
-
StringBuffer renderBuffer = new StringBuffer();
modelTree.renderTreeString(renderBuffer, context, treeStringRenderer);
try {
@@ -1322,21 +1308,12 @@ public abstract class ModelScreenWidget
@Override
public void renderWidgetString(Appendable writer, Map<String, Object> context, ScreenStringRenderer screenStringRenderer) throws IOException {
- // try finding the menuStringRenderer by name in the context in case one was prepared and put there
+ // Output format might not support menus, so make menu rendering optional.
MenuStringRenderer menuStringRenderer = (MenuStringRenderer) context.get("menuStringRenderer");
- // if there was no menuStringRenderer put in place, now try finding the request/response in the context and creating a new one
- if (menuStringRenderer == null) {
- HttpServletRequest request = (HttpServletRequest) context.get("request");
- HttpServletResponse response = (HttpServletResponse) context.get("response");
- if (request != null && response != null) {
- menuStringRenderer = new HtmlMenuRenderer(request, response);
- }
- }
- // still null, throw an error
if (menuStringRenderer == null) {
- throw new IllegalArgumentException("Could not find a menuStringRenderer in the context, and could not find HTTP request/response objects need to create one.");
+ Debug.logVerbose("MenuStringRenderer instance not found in rendering context, menu not rendered.", module);
+ return;
}
-
ModelMenu modelMenu = getModelMenu(context);
modelMenu.renderMenuString(writer, context, menuStringRenderer);
}