📄 callservice.java
字号:
Map inMap = null;
if (inMapAcsr.isEmpty()) {
inMap = new HashMap();
} 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 fromAcsr = (ContextAccessor) entry.getKey();
ContextAccessor resultAcsr = (ContextAccessor) entry.getValue();
fromAcsr.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 static class ResultToFieldDef {
public String resultName;
public ContextAccessor mapAcsr;
public ContextAccessor fieldAcsr;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -