001package org.nasdanika.html.model.app.graph.emf;
002
003import java.util.concurrent.CompletionStage;
004import java.util.function.Consumer;
005import java.util.function.Function;
006
007import org.nasdanika.common.ProgressMonitor;
008import org.nasdanika.graph.Element;
009import org.nasdanika.graph.processor.ConnectionProcessorConfig;
010import org.nasdanika.graph.processor.ProcessorConfig;
011import org.nasdanika.graph.processor.ProcessorInfo;
012import org.nasdanika.graph.processor.ReflectiveProcessorFactoryProvider;
013import org.nasdanika.html.model.app.graph.WidgetFactory;
014
015public class EObjectReflectiveProcessorFactoryProvider extends ReflectiveProcessorFactoryProvider<Object, WidgetFactory, WidgetFactory> {
016
017        public EObjectReflectiveProcessorFactoryProvider(Object... targets) {
018                super(targets);
019        }
020        
021        @SuppressWarnings("unchecked")
022        @Override
023        protected Object createProcessor(
024                        ProcessorConfig config,
025                        boolean parallel,
026                        Function<Element, CompletionStage<ProcessorInfo<Object>>> infoProvider,
027                        Consumer<CompletionStage<?>> stageConsumer, 
028                        ProgressMonitor progressMonitor) {
029                
030                Object processor = super.createProcessor(config, parallel, infoProvider, stageConsumer, progressMonitor);
031                if (processor == null && config instanceof ConnectionProcessorConfig) {
032                        return new ConnectionProcessor((ConnectionProcessorConfig<WidgetFactory, WidgetFactory>) config);
033                }
034                        
035                return processor;
036        }
037
038}