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 Object getObject(Parameter p, Context context) { if (context.exist(p.getName())) return context.get(p.getName()); // Object o = context.get(p.getName()); // if (o != null) { // return o; // } return getObjectByGenerator(p, context); }
public static Object getObjectByGenerator(Parameter parameter, Context context) { String collectionType = parameter.getCollectionType(); // 集合类型 String paramName = parameter.getName(); String paramType = parameter.getType(); ClassNameObjectGenerator generator = SpringUtil.getBean(GeneratorFileProcessor.CLASSNAME_OBJECT_GENERATOR_BEAN); if (!isNull(collectionType)) { // 如果集合类型非空 return generator.getObjectCollection(paramName, collectionType, paramType, context); } else if (parameter.isArray()) { // 如果是数组 return generator.getObjectArray(paramName, paramType, context); } // 否则就是对象 return generator.getObject(paramName, paramName, paramType, context); }
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; }