@Override public void process() throws ProcessingException final InputOutputAttributeDescriptors descriptors = prepareAttributeDescriptors(); final Map<String, Object> inputProcessingAttributes = getAttributesForDescriptors( descriptors.inputProcessingDescriptors, inputAttributes); outputAttributes.putAll(getAttributesForDescriptors( descriptors.outputDescriptors, processingResult));
public IProcessingComponent prepare(Class<? extends IProcessingComponent> clazz, String id, Map<String, Object> inputAttributes, Map<String, Object> outputAttributes) { // If the processing component is to be cached, wrap with our internal // processing component implementation that will do the caching. // One very important implementation detail is that the only moment we can pass // all input attributes (including the processing-time ones) to the component // wrapper is here when we create it. For this reason, the controller needs to // pass all attributes at this state, even though the other manager will likely // use only the init-time attributes. The same goes for output attributes, // these will be collected to the map we provide during the creation of the // wrapper. for (Class<?> cachedClass : cachedComponentClasses) { if (cachedClass.isAssignableFrom(clazz)) { return new CachedProcessingComponent(clazz, id, inputAttributes, outputAttributes); } } // Otherwise, return the original component return delegate.prepare(clazz, id, inputAttributes, outputAttributes); }