public void process(Event event) { String serviceId = event.getServiceRequest().getServiceId(); Service service = null; ServiceProviderInterface serviceProvider = null; for (ServiceProviderInterface provider : providers) { service = provider.getService(serviceId); if (service != null) { serviceProvider = provider; break; } } if (service != null) { serviceProvider.execute(service, event.getServiceRequest().getContext()); // 回写Context,event返回时 ServiceRegistryItem item = serviceProvider.getServiceRegistryItem(service); Context oldC = event.getServiceRequest().getContext(); Context c = ContextFactory.getContext(); for (Parameter p : item.getResults()) { if (("void").equals(p.getTitle()) || ("").equals(p.getTitle()) || p.getType() == null) { } else { String name = p.getName(); c.put(name, oldC.get(name)); } } event.getServiceRequest().setContext(c); } else { logger.logMessage(LogLevel.ERROR, "未找到合适的Service[id:{0}]", serviceId); } }
public static Context getContext(Event event, ServiceInfo info, ClassLoader loder) { Context c = new ContextImpl(); Context oldContext = event.getServiceRequest().getContext(); if (info.getParameters() == null) { return c; } for (Parameter p : info.getParameters()) { Object value = Context2ObjectUtil.getObject(p, oldContext, loder); if (value != null && !(value instanceof java.io.Serializable)) { throw new ParamNotSerializableException( event.getServiceRequest().getServiceId(), p.getName()); } c.put(p.getName(), value); } return c; }
public void execute(Context context) { context.put(resultKey, a + b); }