Author: erwan
Date: Fri Mar 30 20:53:28 2012 New Revision: 1307606 URL: http://svn.apache.org/viewvc?rev=1307606&view=rev Log: OFBIZ-4688 patch needed to make everything work Modified: ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/ModelWidgetAction.java ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java Modified: ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java?rev=1307606&r1=1307605&r2=1307606&view=diff ============================================================================== --- ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java (original) +++ ofbiz/branches/20120329_portletWidget/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java Fri Mar 30 20:53:28 2012 @@ -28,6 +28,7 @@ import javax.servlet.http.HttpServletRes import javolution.util.FastMap; +import org.ofbiz.base.util.UtilGenerics; import org.ofbiz.base.util.UtilMisc; import org.ofbiz.base.util.UtilHttp; import org.ofbiz.base.util.collections.FlexibleMapAccessor; @@ -90,9 +91,21 @@ public class MethodContext implements It } } + // constructor to use minilang as script call in screen action + public MethodContext(DispatchContext ctx, Map<String, ? extends Object> context) { + this.methodType = MethodContext.SERVICE; + Map<String, Object> parametersCtx = UtilGenerics.checkMap(context.get("parameters")); + this.parameters = UtilMisc.makeMapWritable(parametersCtx); + putAllEnv(context); + loadThis(ctx, context, null); + } + public MethodContext(DispatchContext ctx, Map<String, ? extends Object> context, ClassLoader loader) { this.methodType = MethodContext.SERVICE; this.parameters = UtilMisc.makeMapWritable(context); + loadThis(ctx, context, loader); + } + private void loadThis(DispatchContext ctx, Map<String, ? extends Object> context, ClassLoader loader) { this.loader = loader; this.locale = (Locale) context.get("locale"); this.timeZone = (TimeZone) context.get("timeZone"); Modified: ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/ModelWidgetAction.java URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/ModelWidgetAction.java?rev=1307606&r1=1307605&r2=1307606&view=diff ============================================================================== --- ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/ModelWidgetAction.java (original) +++ ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/ModelWidgetAction.java Fri Mar 30 20:53:28 2012 @@ -389,31 +389,37 @@ public abstract class ModelWidgetAction } public static class Script extends ModelWidgetAction { - protected String location; - protected String method; + protected FlexibleStringExpander scriptLocationExdr; public Script(ModelWidget modelWidget, Element scriptElement) { super (modelWidget, scriptElement); - String scriptLocation = scriptElement.getAttribute("location"); - this.location = WidgetWorker.getScriptLocation(scriptLocation); - this.method = WidgetWorker.getScriptMethodName(scriptLocation); + this.scriptLocationExdr = FlexibleStringExpander.getInstance(scriptElement.getAttribute("location")); } @Override public void runAction(Map<String, Object> context) throws GeneralException { + Locale locale = (Locale) context.get("locale"); + String scriptLocation = this.scriptLocationExdr.expandString(context, locale); + String location = WidgetWorker.getScriptLocation(scriptLocation); + String method = WidgetWorker.getScriptMethodName(scriptLocation); if (location.endsWith(".xml")) { - Map<String, Object> localContext = FastMap.newInstance(); - localContext.putAll(context); DispatchContext ctx = WidgetWorker.getDispatcher(context).getDispatchContext(); - MethodContext methodContext = new MethodContext(ctx, localContext, null); + MethodContext methodContext = new MethodContext(ctx, context); try { SimpleMethod.runSimpleMethod(location, method, methodContext); - context.putAll(methodContext.getResults()); + Map<String, Object> resultContext = methodContext.getEnv("widget"); + if (UtilValidate.isNotEmpty(resultContext)){ + context.putAll(resultContext); + } + Map<String, Object> parametersUp = methodContext.getParameters(); + if (UtilValidate.isNotEmpty(parametersUp)){ + context.put("parameters",parametersUp); + } } catch (MiniLangException e) { throw new GeneralException("Error running simple method at location [" + location + "]", e); } } else { - ScriptUtil.executeScript(this.location, this.method, context); + ScriptUtil.executeScript(location, method, context); } } } Modified: ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java?rev=1307606&r1=1307605&r2=1307606&view=diff ============================================================================== --- ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java (original) +++ ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java Fri Mar 30 20:53:28 2012 @@ -273,31 +273,37 @@ public abstract class ModelFormAction { } public static class Script extends ModelFormAction { - protected String location; - protected String method; + protected FlexibleStringExpander scriptLocationExdr; public Script(ModelForm modelForm, Element scriptElement) { super (modelForm, scriptElement); - String scriptLocation = scriptElement.getAttribute("location"); - this.location = WidgetWorker.getScriptLocation(scriptLocation); - this.method = WidgetWorker.getScriptMethodName(scriptLocation); + this.scriptLocationExdr = FlexibleStringExpander.getInstance(scriptElement.getAttribute("location")); } @Override public void runAction(Map<String, Object> context) { + Locale locale = (Locale) context.get("locale"); + String scriptLocation = this.scriptLocationExdr.expandString(context, locale); + String location = WidgetWorker.getScriptLocation(scriptLocation); + String method = WidgetWorker.getScriptMethodName(scriptLocation); if (location.endsWith(".xml")) { - Map<String, Object> localContext = FastMap.newInstance(); - localContext.putAll(context); DispatchContext ctx = this.modelForm.dispatchContext; - MethodContext methodContext = new MethodContext(ctx, localContext, null); + MethodContext methodContext = new MethodContext(ctx, context); try { SimpleMethod.runSimpleMethod(location, method, methodContext); - context.putAll(methodContext.getResults()); + Map<String, Object> resultContext = methodContext.getEnv("widget"); + if (UtilValidate.isNotEmpty(resultContext)){ + context.putAll(resultContext); + } + Map<String, Object> parametersUp = methodContext.getParameters(); + if (UtilValidate.isNotEmpty(parametersUp)){ + context.put("parameters",parametersUp); + } } catch (MiniLangException e) { throw new IllegalArgumentException("Error running simple method at location [" + location + "]", e); } } else { - ScriptUtil.executeScript(this.location, this.method, context); + ScriptUtil.executeScript(location, method, context); } } } Modified: ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java?rev=1307606&r1=1307605&r2=1307606&view=diff ============================================================================== --- ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java (original) +++ ofbiz/branches/20120329_portletWidget/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java Fri Mar 30 20:53:28 2012 @@ -401,31 +401,37 @@ public abstract class ModelScreenAction @Deprecated public static class Script extends ModelScreenAction { - protected String location; - protected String method; + protected FlexibleStringExpander scriptLocationExdr; public Script(ModelScreen modelScreen, Element scriptElement) { super (modelScreen, scriptElement); - String scriptLocation = scriptElement.getAttribute("location"); - this.location = WidgetWorker.getScriptLocation(scriptLocation); - this.method = WidgetWorker.getScriptMethodName(scriptLocation); + this.scriptLocationExdr = FlexibleStringExpander.getInstance(scriptElement.getAttribute("location")); } @Override public void runAction(Map<String, Object> context) throws GeneralException { + Locale locale = (Locale) context.get("locale"); + String scriptLocation = this.scriptLocationExdr.expandString(context, locale); + String location = WidgetWorker.getScriptLocation(scriptLocation); + String method = WidgetWorker.getScriptMethodName(scriptLocation); if (location.endsWith(".xml")) { - Map<String, Object> localContext = FastMap.newInstance(); - localContext.putAll(context); DispatchContext ctx = this.modelScreen.getDispatcher(context).getDispatchContext(); - MethodContext methodContext = new MethodContext(ctx, localContext, null); + MethodContext methodContext = new MethodContext(ctx, context); try { SimpleMethod.runSimpleMethod(location, method, methodContext); - context.putAll(methodContext.getResults()); + Map<String, Object> resultContext = methodContext.getEnv("widget"); + if (UtilValidate.isNotEmpty(resultContext)){ + context.putAll(resultContext); + } + Map<String, Object> parametersUp = methodContext.getParameters(); + if (UtilValidate.isNotEmpty(parametersUp)){ + context.put("parameters",parametersUp); + } } catch (MiniLangException e) { throw new GeneralException("Error running simple method at location [" + location + "]", e); } } else { - ScriptUtil.executeScript(this.location, this.method, context); + ScriptUtil.executeScript(location, method, context); } } } |
Free forum by Nabble | Edit this page |