📄 callservice.java
字号:
} else { inMap = (Map) inMapAcsr.get(methodContext); if (inMap == null) { inMap = new HashMap(); inMapAcsr.put(methodContext, inMap); } } // before invoking the service, clear messages if (methodContext.getMethodType() == MethodContext.EVENT) { methodContext.removeEnv(simpleMethod.getEventErrorMessageName()); methodContext.removeEnv(simpleMethod.getEventEventMessageName()); methodContext.removeEnv(simpleMethod.getEventResponseCodeName()); } else if (methodContext.getMethodType() == MethodContext.SERVICE) { methodContext.removeEnv(simpleMethod.getServiceErrorMessageName()); methodContext.removeEnv(simpleMethod.getServiceSuccessMessageName()); methodContext.removeEnv(simpleMethod.getServiceResponseMessageName()); } // invoke the service Map result = null; // add UserLogin to context if expected if (includeUserLogin) { GenericValue userLogin = methodContext.getUserLogin(); if (userLogin != null) { inMap.put("userLogin", userLogin); } } // always add Locale to context unless null Locale locale = methodContext.getLocale(); if (locale != null) { inMap.put("locale", locale); } try { result = methodContext.getDispatcher().runSync(serviceName, inMap); } catch (GenericServiceException e) { Debug.logError(e, module); String errMsg = "ERROR: Could not complete the " + simpleMethod.getShortDescription() + " process [problem invoking the [" + serviceName + "] service with the map named [" + inMapAcsr + "] containing [" + inMap + "]: " + e.getMessage() + "]"; if (methodContext.getMethodType() == MethodContext.EVENT) { methodContext.putEnv(simpleMethod.getEventErrorMessageName(), errMsg); methodContext.putEnv(simpleMethod.getEventResponseCodeName(), errorCode); } else if (methodContext.getMethodType() == MethodContext.SERVICE) { methodContext.putEnv(simpleMethod.getServiceErrorMessageName(), errMsg); methodContext.putEnv(simpleMethod.getServiceResponseMessageName(), errorCode); } return false; } if (resultsToMap.size() > 0) { Iterator iter = resultsToMap.iterator(); while (iter.hasNext()) { String mapName = (String) iter.next(); methodContext.putEnv(mapName, new HashMap(result)); } } if (resultToField.size() > 0) { Iterator iter = resultToField.iterator(); while (iter.hasNext()) { ResultToFieldDef rtfDef = (ResultToFieldDef) iter.next(); if (!rtfDef.mapAcsr.isEmpty()) { Map tempMap = (Map) rtfDef.mapAcsr.get(methodContext); if (tempMap == null) { tempMap = new HashMap(); rtfDef.mapAcsr.put(methodContext, tempMap); } rtfDef.fieldAcsr.put(tempMap, result.get(rtfDef.resultName), methodContext); } else { rtfDef.fieldAcsr.put(methodContext, result.get(rtfDef.resultName)); } } } // only run this if it is in an EVENT context if (methodContext.getMethodType() == MethodContext.EVENT) { if (resultToRequest.size() > 0) { Iterator iter = resultToRequest.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); FlexibleServletAccessor requestAcsr = (FlexibleServletAccessor) entry.getKey(); ContextAccessor resultAcsr = (ContextAccessor) entry.getValue(); requestAcsr.put(methodContext.getRequest(), resultAcsr.get(result, methodContext), methodContext.getEnvMap()); } } if (resultToSession.size() > 0) { Iterator iter = resultToSession.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); FlexibleServletAccessor sessionAcsr = (FlexibleServletAccessor) entry.getKey(); ContextAccessor resultAcsr = (ContextAccessor) entry.getValue(); sessionAcsr.put(methodContext.getRequest().getSession(), resultAcsr.get(result, methodContext), methodContext.getEnvMap()); } } } // only run this if it is in an SERVICE context if (methodContext.getMethodType() == MethodContext.SERVICE) { if (resultToResult.size() > 0) { Iterator iter = resultToResult.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); ContextAccessor targetResultAcsr = (ContextAccessor) entry.getKey(); ContextAccessor resultAcsr = (ContextAccessor) entry.getValue(); targetResultAcsr.put(methodContext.getResults(), resultAcsr.get(result, methodContext), methodContext); } } } String errorPrefixStr = errorPrefix.getMessage(methodContext.getLoader(), methodContext); String errorSuffixStr = errorSuffix.getMessage(methodContext.getLoader(), methodContext); String successPrefixStr = successPrefix.getMessage(methodContext.getLoader(), methodContext); String successSuffixStr = successSuffix.getMessage(methodContext.getLoader(), methodContext); String messagePrefixStr = messagePrefix.getMessage(methodContext.getLoader(), methodContext); String messageSuffixStr = messageSuffix.getMessage(methodContext.getLoader(), methodContext); String errorMessage = ServiceUtil.makeErrorMessage(result, messagePrefixStr, messageSuffixStr, errorPrefixStr, errorSuffixStr); if (UtilValidate.isNotEmpty(errorMessage)) { errorMessage += " calling service " + serviceName + " in " + simpleMethod.getMethodName(); if (methodContext.getMethodType() == MethodContext.EVENT) { methodContext.putEnv(simpleMethod.getEventErrorMessageName(), errorMessage); } else if (methodContext.getMethodType() == MethodContext.SERVICE) { methodContext.putEnv(simpleMethod.getServiceErrorMessageName(), errorMessage); } } String successMessage = ServiceUtil.makeSuccessMessage(result, messagePrefixStr, messageSuffixStr, successPrefixStr, successSuffixStr); if (UtilValidate.isNotEmpty(successMessage)) { if (methodContext.getMethodType() == MethodContext.EVENT) { methodContext.putEnv(simpleMethod.getEventEventMessageName(), successMessage); } else if (methodContext.getMethodType() == MethodContext.SERVICE) { methodContext.putEnv(simpleMethod.getServiceSuccessMessageName(), successMessage); } } String defaultMessageStr = defaultMessage.getMessage(methodContext.getLoader(), methodContext); if (UtilValidate.isEmpty(errorMessage) && UtilValidate.isEmpty(successMessage) && UtilValidate.isNotEmpty(defaultMessageStr)) { if (methodContext.getMethodType() == MethodContext.EVENT) { methodContext.putEnv(simpleMethod.getEventEventMessageName(), defaultMessageStr); } else if (methodContext.getMethodType() == MethodContext.SERVICE) { methodContext.putEnv(simpleMethod.getServiceSuccessMessageName(), defaultMessageStr); } } // handle the result String responseCode = result.containsKey(ModelService.RESPONSE_MESSAGE) ? (String) result.get(ModelService.RESPONSE_MESSAGE) : successCode; if (methodContext.getMethodType() == MethodContext.EVENT) { methodContext.putEnv(simpleMethod.getEventResponseCodeName(), responseCode); } else if (methodContext.getMethodType() == MethodContext.SERVICE) { methodContext.putEnv(simpleMethod.getServiceResponseMessageName(), responseCode); } if (errorCode.equals(responseCode) && breakOnError) { return false; } else { return true; } } public String rawString() { // TODO: something more than the empty tag return "<call-service/>"; } public String expandedString(MethodContext methodContext) { // TODO: something more than a stub/dummy return this.rawString(); } public static class ResultToFieldDef { public String resultName; public ContextAccessor mapAcsr; public ContextAccessor fieldAcsr; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -