📄 callservice.java
字号:
/* * $Id: CallService.java 5462 2005-08-05 18:35:48Z jonesde $ * * Copyright (c) 2001-2005 The Open For Business Project - www.ofbiz.org * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * THE USE OR OTHER DEALINGS IN THE SOFTWARE. */package org.ofbiz.minilang.method.callops;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.Locale;import java.util.Map;import org.ofbiz.base.util.Debug;import org.ofbiz.base.util.UtilValidate;import org.ofbiz.base.util.UtilXml;import org.ofbiz.base.util.collections.FlexibleServletAccessor;import org.ofbiz.entity.GenericValue;import org.ofbiz.minilang.SimpleMethod;import org.ofbiz.minilang.method.ContextAccessor;import org.ofbiz.minilang.method.MethodContext;import org.ofbiz.minilang.method.MethodOperation;import org.ofbiz.service.GenericServiceException;import org.ofbiz.service.ModelService;import org.ofbiz.service.ServiceUtil;import org.w3c.dom.Element;/** * Calls a service using the given parameters * * @author <a href="mailto:jonesde@ofbiz.org">David E. Jones</a> * @author <a href="mailto:jaz@ofbiz.org">Andy Zeneski</a> * @version $Rev: 5462 $ * @since 2.0 */public class CallService extends MethodOperation { public static final String module = CallService.class.getName(); String serviceName; ContextAccessor inMapAcsr; String includeUserLoginStr; String breakOnErrorStr; String errorCode; String successCode; FlexibleMessage errorPrefix; FlexibleMessage errorSuffix; FlexibleMessage successPrefix; FlexibleMessage successSuffix; FlexibleMessage messagePrefix; FlexibleMessage messageSuffix; FlexibleMessage defaultMessage; /** A list of strings with names of new maps to create */ List resultsToMap = new LinkedList(); /** A list of ResultToFieldDef objects */ List resultToField = new LinkedList(); /** the key is the request attribute name, the value is the result name to get */ Map resultToRequest = new HashMap(); /** the key is the session attribute name, the value is the result name to get */ Map resultToSession = new HashMap(); /** the key is the result entry name, the value is the result name to get */ Map resultToResult = new HashMap(); public CallService(Element element, SimpleMethod simpleMethod) { super(element, simpleMethod); serviceName = element.getAttribute("service-name"); inMapAcsr = new ContextAccessor(element.getAttribute("in-map-name")); includeUserLoginStr = element.getAttribute("include-user-login"); breakOnErrorStr = element.getAttribute("break-on-error"); errorCode = element.getAttribute("error-code"); if (errorCode == null || errorCode.length() == 0) errorCode = "error"; successCode = element.getAttribute("success-code"); if (successCode == null || successCode.length() == 0) successCode = "success"; errorPrefix = new FlexibleMessage(UtilXml.firstChildElement(element, "error-prefix"), "service.error.prefix"); errorSuffix = new FlexibleMessage(UtilXml.firstChildElement(element, "error-suffix"), "service.error.suffix"); successPrefix = new FlexibleMessage(UtilXml.firstChildElement(element, "success-prefix"), "service.success.prefix"); successSuffix = new FlexibleMessage(UtilXml.firstChildElement(element, "success-suffix"), "service.success.suffix"); messagePrefix = new FlexibleMessage(UtilXml.firstChildElement(element, "message-prefix"), "service.message.prefix"); messageSuffix = new FlexibleMessage(UtilXml.firstChildElement(element, "message-suffix"), "service.message.suffix"); defaultMessage = new FlexibleMessage(UtilXml.firstChildElement(element, "default-message"), "service.default.message"); List resultsToMapElements = UtilXml.childElementList(element, "results-to-map"); if (resultsToMapElements != null && resultsToMapElements.size() > 0) { Iterator iter = resultsToMapElements.iterator(); while (iter.hasNext()) { Element resultsToMapElement = (Element) iter.next(); resultsToMap.add(resultsToMapElement.getAttribute("map-name")); } } List resultToFieldElements = UtilXml.childElementList(element, "result-to-field"); if (resultToFieldElements != null && resultToFieldElements.size() > 0) { Iterator iter = resultToFieldElements.iterator(); while (iter.hasNext()) { Element resultToFieldElement = (Element) iter.next(); ResultToFieldDef rtfDef = new ResultToFieldDef(); rtfDef.resultName = resultToFieldElement.getAttribute("result-name"); rtfDef.mapAcsr = new ContextAccessor(resultToFieldElement.getAttribute("map-name")); rtfDef.fieldAcsr = new ContextAccessor(resultToFieldElement.getAttribute("field-name"), rtfDef.resultName); resultToField.add(rtfDef); } } // get result-to-request and result-to-session sub-ops List resultToRequestElements = UtilXml.childElementList(element, "result-to-request"); if (resultToRequestElements != null && resultToRequestElements.size() > 0) { Iterator iter = resultToRequestElements.iterator(); while (iter.hasNext()) { Element resultToRequestElement = (Element) iter.next(); FlexibleServletAccessor reqAcsr = new FlexibleServletAccessor(resultToRequestElement.getAttribute("request-name"), resultToRequestElement.getAttribute("result-name")); ContextAccessor resultAcsr = new ContextAccessor(resultToRequestElement.getAttribute("result-name")); resultToRequest.put(reqAcsr, resultAcsr); } } List resultToSessionElements = UtilXml.childElementList(element, "result-to-session"); if (resultToSessionElements != null && resultToSessionElements.size() > 0) { Iterator iter = resultToSessionElements.iterator(); while (iter.hasNext()) { Element resultToSessionElement = (Element) iter.next(); FlexibleServletAccessor sesAcsr = new FlexibleServletAccessor(resultToSessionElement.getAttribute("session-name"), resultToSessionElement.getAttribute("result-name")); ContextAccessor resultAcsr = new ContextAccessor(resultToSessionElement.getAttribute("result-name")); resultToSession.put(sesAcsr, resultAcsr); } } List resultToResultElements = UtilXml.childElementList(element, "result-to-result"); if (resultToResultElements != null && resultToResultElements.size() > 0) { Iterator iter = resultToResultElements.iterator(); while (iter.hasNext()) { Element resultToResultElement = (Element) iter.next(); ContextAccessor serResAcsr = new ContextAccessor(resultToResultElement.getAttribute("service-result-name"), resultToResultElement.getAttribute("result-name")); ContextAccessor resultAcsr = new ContextAccessor(resultToResultElement.getAttribute("result-name")); resultToResult.put(serResAcsr, resultAcsr); } } } public boolean exec(MethodContext methodContext) { boolean includeUserLogin = !"false".equals(methodContext.expandString(includeUserLoginStr)); boolean breakOnError = !"false".equals(methodContext.expandString(breakOnErrorStr)); String serviceName = methodContext.expandString(this.serviceName); String errorCode = methodContext.expandString(this.errorCode); String successCode = methodContext.expandString(this.successCode); Map inMap = null; if (inMapAcsr.isEmpty()) { inMap = new HashMap();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -