|
Author: adrianc
Date: Sat May 5 11:34:12 2012 New Revision: 1334402 URL: http://svn.apache.org/viewvc?rev=1334402&view=rev Log: More work on the Mini-language <simple-method> element: I removed the attributes that specify some of the environment map (bindings) keys. Those keys should be under the control of the framework so they are consistent across scripting languages. Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java?rev=1334402&r1=1334401&r2=1334402&view=diff ============================================================================== --- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java (original) +++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java Sat May 5 11:34:12 2012 @@ -65,6 +65,7 @@ public final class SimpleMethod { public static final String module = SimpleMethod.class.getName(); public static final String err_resource = "MiniLangErrorUiLabels"; + private static final String[] DEPRECATED_ATTRIBUTES = {"parameter-map-name", "locale-name", "delegator-name", "security-name", "dispatcher-name", "user-login-name"}; private static final Map<String, MethodOperation.Factory<MethodOperation>> methodOperationFactories; private static final UtilCache<String, Map<String, SimpleMethod>> simpleMethodsDirectCache = UtilCache.createUtilCache("minilang.SimpleMethodsDirect", 0, 0); private static final UtilCache<String, Map<String, SimpleMethod>> simpleMethodsResourceCache = UtilCache.createUtilCache("minilang.SimpleMethodsResource", 0, 0); @@ -80,6 +81,18 @@ public final class SimpleMethod { methodOperationFactories = Collections.unmodifiableMap(mapFactories); } + // This method is needed only during the v1 to v2 transition + private static boolean autoCorrect(Element element) { + boolean elementModified = false; + for (int i = 0; i < DEPRECATED_ATTRIBUTES.length; i++) { + if (!element.getAttribute(DEPRECATED_ATTRIBUTES[i]).isEmpty()) { + element.removeAttribute(DEPRECATED_ATTRIBUTES[i]); + elementModified = true; + } + } + return elementModified; + } + private static void compileAllSimpleMethods(Element rootElement, Map<String, SimpleMethod> simpleMethods, String location) throws MiniLangException { for (Element simpleMethodElement : UtilXml.childElementList(rootElement, "simple-method")) { SimpleMethod simpleMethod = compileSimpleMethod(simpleMethodElement, simpleMethods, location); @@ -287,8 +300,6 @@ public final class SimpleMethod { private final String defaultErrorCode; private final String defaultSuccessCode; - private final String delegatorName; - private final String dispatcherName; private final String eventErrorMessageListName; private final String eventErrorMessageName; private final String eventEventMessageListName; @@ -298,13 +309,10 @@ public final class SimpleMethod { private final String eventResponseName; private final String eventSessionName; private final String fromLocation; - private final String localeName; private final boolean loginRequired; private final String methodName; private final List<MethodOperation> methodOperations; - private final String parameterMapName; private final Map<String, SimpleMethod> parentSimpleMethodsMap; - private final String securityName; private final String serviceErrorMessageListName; private final String serviceErrorMessageMapName; private final String serviceErrorMessageName; @@ -312,7 +320,6 @@ public final class SimpleMethod { private final String serviceSuccessMessageListName; private final String serviceSuccessMessageName; private final String shortDescription; - private final String userLoginName; private final boolean useTransaction; public SimpleMethod(Element simpleMethodElement, Map<String, SimpleMethod> parentSimpleMethodsMap, String fromLocation) throws MiniLangException { @@ -321,6 +328,15 @@ public final class SimpleMethod { if (simpleMethodElement.getAttribute("method-name").isEmpty()) { MiniLangValidate.handleError("Element must include the \"method-name\" attribute.".concat(locationMsg), null, simpleMethodElement); } + for (int i = 0; i < DEPRECATED_ATTRIBUTES.length; i++) { + if (!simpleMethodElement.getAttribute(DEPRECATED_ATTRIBUTES[i]).isEmpty()) { + MiniLangValidate.handleError("Attribute \"" + DEPRECATED_ATTRIBUTES[i] + "\" is deprecated (no replacement)", null, simpleMethodElement); + } + } + } + boolean elementModified = autoCorrect(simpleMethodElement); + if (elementModified && MiniLangUtil.autoCorrectOn()) { + MiniLangUtil.flagDocumentAsCorrected(simpleMethodElement); } this.parentSimpleMethodsMap = parentSimpleMethodsMap; this.fromLocation = fromLocation; @@ -328,7 +344,6 @@ public final class SimpleMethod { shortDescription = simpleMethodElement.getAttribute("short-description"); defaultErrorCode = UtilXml.elementAttribute(simpleMethodElement, "default-error-code", "error"); defaultSuccessCode = UtilXml.elementAttribute(simpleMethodElement, "default-success-code", "success"); - parameterMapName = UtilXml.elementAttribute(simpleMethodElement, "parameter-map-name", "parameters"); eventRequestName = UtilXml.elementAttribute(simpleMethodElement, "event-request-object-name", "request"); eventSessionName = UtilXml.elementAttribute(simpleMethodElement, "event-session-object-name", "session"); eventResponseName = UtilXml.elementAttribute(simpleMethodElement, "event-response-object-name", "response"); @@ -345,11 +360,6 @@ public final class SimpleMethod { serviceSuccessMessageListName = UtilXml.elementAttribute(simpleMethodElement, "service-success-message-list-name", "successMessageList"); loginRequired = !"false".equals(simpleMethodElement.getAttribute("login-required")); useTransaction = !"false".equals(simpleMethodElement.getAttribute("use-transaction")); - localeName = UtilXml.elementAttribute(simpleMethodElement, "locale-name", "locale"); - delegatorName = UtilXml.elementAttribute(simpleMethodElement, "delegator-name", "delegator"); - securityName = UtilXml.elementAttribute(simpleMethodElement, "security-name", "security"); - dispatcherName = UtilXml.elementAttribute(simpleMethodElement, "dispatcher-name", "dispatcher"); - userLoginName = UtilXml.elementAttribute(simpleMethodElement, "user-login-name", "userLogin"); methodOperations = Collections.unmodifiableList(readOperations(simpleMethodElement, this)); } @@ -374,14 +384,26 @@ public final class SimpleMethod { /** Execute the Simple Method operations */ public String exec(MethodContext methodContext) throws MiniLangException { + Locale locale = methodContext.getLocale(); + GenericValue userLogin = methodContext.getUserLogin(); + if (loginRequired) { + if (userLogin == null) { + Map<String, Object> messageMap = UtilMisc.<String, Object> toMap("shortDescription", shortDescription); + String errMsg = UtilProperties.getMessage(SimpleMethod.err_resource, "simpleMethod.must_logged_process", messageMap, locale) + "."; + return returnError(methodContext, errMsg); + } + } + if (userLogin != null) { + methodContext.putEnv(getUserLoginEnvName(), userLogin); + } // always put the null field object in as "null" methodContext.putEnv("null", GenericEntity.NULL_FIELD); methodContext.putEnv("nullField", GenericEntity.NULL_FIELD); - methodContext.putEnv(delegatorName, methodContext.getDelegator()); - methodContext.putEnv(securityName, methodContext.getSecurity()); - methodContext.putEnv(dispatcherName, methodContext.getDispatcher()); - methodContext.putEnv(localeName, methodContext.getLocale()); - methodContext.putEnv(parameterMapName, methodContext.getParameters()); + methodContext.putEnv(getDelegatorEnvName(), methodContext.getDelegator()); + methodContext.putEnv(getSecurityEnvName(), methodContext.getSecurity()); + methodContext.putEnv(getDispatcherEnvName(), methodContext.getDispatcher()); + methodContext.putEnv("locale", locale); + methodContext.putEnv(getParameterMapName(), methodContext.getParameters()); if (methodContext.getMethodType() == MethodContext.EVENT) { methodContext.putEnv(eventRequestName, methodContext.getRequest()); methodContext.putEnv(eventSessionName, methodContext.getRequest().getSession()); @@ -389,18 +411,6 @@ public final class SimpleMethod { } methodContext.putEnv("methodName", this.getMethodName()); methodContext.putEnv("methodShortDescription", this.getShortDescription()); - GenericValue userLogin = methodContext.getUserLogin(); - Locale locale = methodContext.getLocale(); - if (userLogin != null) { - methodContext.putEnv(userLoginName, userLogin); - } - if (loginRequired) { - if (userLogin == null) { - Map<String, Object> messageMap = UtilMisc.<String, Object> toMap("shortDescription", shortDescription); - String errMsg = UtilProperties.getMessage(SimpleMethod.err_resource, "simpleMethod.must_logged_process", messageMap, locale) + "."; - return returnError(methodContext, errMsg); - } - } // if using transaction, try to start here boolean beganTransaction = false; if (useTransaction) { @@ -560,11 +570,11 @@ public final class SimpleMethod { } public String getDelegatorEnvName() { - return this.delegatorName; + return "delegator"; } public String getDispatcherEnvName() { - return this.dispatcherName; + return "dispatcher"; } public String getEventErrorMessageListName() { @@ -617,11 +627,11 @@ public final class SimpleMethod { } public String getParameterMapName() { - return this.parameterMapName; + return "parameters"; } public String getSecurityEnvName() { - return this.securityName; + return "security"; } public String getServiceErrorMessageListName() { @@ -659,7 +669,7 @@ public final class SimpleMethod { } public String getUserLoginEnvName() { - return this.userLoginName; + return "userLogin"; } public boolean getUseTransaction() { |
| Free forum by Nabble | Edit this page |
