📄 coreevents.java
字号:
request.setAttribute("_ERROR_MESSAGE_", "<li>" + errMsg + " [" + serviceName + "]: " + e.toString()); return "error"; } if (modelService == null) { String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.service_name_not_find", locale); request.setAttribute("_ERROR_MESSAGE_", "<li>" + errMsg + " [" + serviceName + "]"); return "error"; } // make the context valid; using the makeValid method from ModelService Map serviceContext = new HashMap(); Iterator ci = modelService.getInParamNames().iterator(); while (ci.hasNext()) { String name = (String) ci.next(); // don't include userLogin, that's taken care of below if ("userLogin".equals(name)) continue; // don't include locale, that is also taken care of below if ("locale".equals(name)) continue; Object value = request.getParameter(name); // if the parameter wasn't passed and no other value found, don't pass on the null if (value == null) { value = request.getAttribute(name); } if (value == null) { value = request.getSession().getAttribute(name); } if (value == null) { // still null, give up for this one continue; } if (value instanceof String && ((String) value).length() == 0) { // interpreting empty fields as null values for each in back end handling... value = null; } // set even if null so that values will get nulled in the db later on serviceContext.put(name, value); } serviceContext = modelService.makeValid(serviceContext, ModelService.IN_PARAM, true, null, locale); if (userLogin != null) { serviceContext.put("userLogin", userLogin); } if (locale != null) { serviceContext.put("locale", locale); } if (!modelService.export && !security.hasPermission("SERVICE_INVOKE_ANY", request.getSession())) { String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.not_authorized_to_call", locale); request.setAttribute("_ERROR_MESSAGE_", "<li>" + errMsg); return "error"; } // some conversions if (serviceTime != null && serviceTime.length() > 0) { try { Timestamp ts1 = Timestamp.valueOf(serviceTime); startTime = ts1.getTime(); } catch (IllegalArgumentException e) { try { startTime = Long.parseLong(serviceTime); } catch (NumberFormatException nfe) { String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.invalid_format_time", locale); errorBuf.append("<li>" + errMsg); } } if (startTime < (new Date()).getTime()) { String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.service_time_already_passed", locale); errorBuf.append("<li>" + errMsg); } } if (serviceEndTime != null && serviceEndTime.length() > 0) { try { Timestamp ts1 = Timestamp.valueOf(serviceEndTime); endTime = ts1.getTime(); } catch (IllegalArgumentException e) { try { endTime = Long.parseLong(serviceTime); } catch (NumberFormatException nfe) { String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.invalid_format_time", locale); errorBuf.append("<li>" + errMsg); } } if (endTime < (new Date()).getTime()) { String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.service_time_already_passed", locale); errorBuf.append("<li>" + errMsg); } } if (serviceIntr != null && serviceIntr.length() > 0) { try { interval = Integer.parseInt(serviceIntr); } catch (NumberFormatException nfe) { String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.invalid_format_interval", locale); errorBuf.append("<li>" + errMsg); } } if (serviceCnt != null && serviceCnt.length() > 0) { try { count = Integer.parseInt(serviceCnt); } catch (NumberFormatException nfe) { String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.invalid_format_count", locale); errorBuf.append("<li>" + errMsg); } } if (serviceFreq != null && serviceFreq.length() > 0) { int parsedValue = 0; try { parsedValue = Integer.parseInt(serviceFreq); if (parsedValue > 0 && parsedValue < 8) frequency = parsedValue; } catch (NumberFormatException nfe) { parsedValue = 0; } if (parsedValue == 0) { if (!freqMap.containsKey(serviceFreq.toUpperCase())) { String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.invalid_format_frequency", locale); errorBuf.append("<li>" + errMsg); } else { frequency = ((Integer) freqMap.get(serviceFreq.toUpperCase())).intValue(); } } } if (retryCnt != null && retryCnt.length() > 0) { int parsedValue = -2; try { parsedValue = Integer.parseInt(retryCnt); } catch (NumberFormatException e) { parsedValue = -2; } if (parsedValue > -2) { maxRetry = parsedValue; } else { maxRetry = modelService.maxRetry; } } else { maxRetry = modelService.maxRetry; } // return the errors if (errorBuf.length() > 0) { request.setAttribute("_ERROR_MESSAGE_", errorBuf.toString()); return "error"; } // schedule service try { dispatcher.schedule(poolName, serviceName, serviceContext, startTime, frequency, interval, count, endTime, maxRetry); } catch (GenericServiceException e) { String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.service_dispatcher_exception", locale); request.setAttribute("_ERROR_MESSAGE_", "<li>" + errMsg + e.getMessage()); return "error"; } String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.service_scheduled", locale); request.setAttribute("_ERROR_MESSAGE_", "<li>" + errMsg); return "success"; } public static ServiceEventHandler seh = new ServiceEventHandler(); /** * Run a service. * Request Parameters which are used for this event: * SERVICE_NAME - Name of the service to invoke * * @param request HttpServletRequest * @param response HttpServletResponse * @return Response code string */ public static String runService(HttpServletRequest request, HttpServletResponse response) { // get the mode and service name String serviceName = request.getParameter("serviceName"); String mode = request.getParameter("mode"); Locale locale = UtilHttp.getLocale(request); if (UtilValidate.isEmpty(serviceName)) { String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.must_specify_service_name", locale); request.setAttribute("_ERROR_MESSAGE_", "<li>" + errMsg); return "error"; } if (UtilValidate.isEmpty(mode)) { mode = "sync"; } // now do a security check Security security = (Security) request.getAttribute("security"); LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher"); //lookup the service definition to see if this service is externally available, if not require the SERVICE_INVOKE_ANY permission ModelService modelService = null; try { modelService = dispatcher.getDispatchContext().getModelService(serviceName); } catch (GenericServiceException e) { Debug.logError(e, "Error looking up ModelService for serviceName [" + serviceName + "]", module); String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.error_modelservice_for_srv_name", locale); request.setAttribute("_ERROR_MESSAGE_", "<li>" + errMsg + "[" + serviceName + "]: " + e.toString()); return "error"; } if (modelService == null) { String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.service_name_not_find", locale); request.setAttribute("_ERROR_MESSAGE_", "<li>" + errMsg + "[" + serviceName + "]"); return "error"; } if (!modelService.export && !security.hasPermission("SERVICE_INVOKE_ANY", request.getSession())) { String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.not_authorized_to_call", locale); request.setAttribute("_ERROR_MESSAGE_", "<li>" + errMsg + "."); return "error"; } Debug.logInfo("Running service named [" + serviceName + "] from event with mode [" + mode + "]", module); // call the service via the ServiceEventHandler which // adapts an event to a service. try { return seh.invoke(mode, serviceName, request, response); } catch (EventHandlerException e) { String errMsg = UtilProperties.getMessage(CoreEvents.err_resource, "coreEvents.service_eventhandler_exception", locale); request.setAttribute("_ERROR_MESSAGE_", "<li>" + errMsg + ": " + e.getMessage()); return "error"; } } public static String streamFile(HttpServletRequest request, HttpServletResponse response) { //RequestHandler rh = (RequestHandler) request.getAttribute("_REQUEST_HANDLER_"); String filePath = RequestHandler.getNextPageUri(request.getPathInfo()); //String fileName = filePath.substring(filePath.lastIndexOf("/")+1); // load the file File file = new File(filePath); if (file.exists()) { Long longLen = new Long(file.length()); int length = longLen.intValue(); try { FileInputStream fis = new FileInputStream(file); UtilHttp.streamContentToBrowser(response, fis, length, null); fis.close(); } catch (FileNotFoundException e) { Debug.logError(e, module); return "error"; } catch (IOException e) { Debug.logError(e, module); return "error"; } } return null; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -