private List<DataProcessor> createDataProcessors( MessageBroker messageBroker, String baseContextPath, Harvester.Listener listener) { List<DataProcessor> processors = new ArrayList<DataProcessor>(); for (DataProcessorFactory factory : cfg.getDataProcessorFactories()) { processors.add(factory.newProcessor(messageBroker, baseContextPath, listener)); } return processors; }
/** Initializes engine. */ public void init() { if (cfg.getQueueEnabled()) { LOGGER.info("[SYNCHRONIZER] Initializing synchronizer queue."); this.taskQueue = new TaskQueue(); } if (cfg.getActive()) { LOGGER.info("[SYNCHRONIZER] Initializing synchronizer engine."); this.taskQueue = new TaskQueue(); this.pool = new Pool( new DataProcessorDispatcher( createDataProcessors(messageBroker, cfg.getBaseContextPath(), listenerArray)), taskQueue, cfg.getPoolSize()); if (cfg.getAutoSelectFrequency() > 0) { this.autoSelector = new AutoSelector(cfg.getAutoSelectFrequency()) { @Override protected void onSelect(HrRecord resource) { if (ProtocolInvoker.getUpdateContent(resource.getProtocol())) { RequestContext context = RequestContext.extract(null); try { submit( context, resource, null, resource.getLastSyncDate() == null || HarvestPolicy.getInstance().getForceFullHarvest(resource) ? null : resource.getLastSyncDate()); } finally { context.onExecutionPhaseCompleted(); } } } }; Thread thread = new Thread(autoSelector, "Auto-selector"); thread.start(); } if (cfg.getWatchDogFrequency() > 0) { this.watchDog = new WatchDog(cfg.getWatchDogFrequency()) { @Override protected String[] getCurrentlyHarvesterResourceUuids() { ArrayList<String> uuids = new ArrayList<String>(); for (ExecutionUnit u : pool.getAllExecutedUnits()) { uuids.add(u.getRepository().getUuid()); } return uuids.toArray(new String[uuids.size()]); } @Override protected void cancelByResourceUuids(String[] uuids) { for (String uuid : uuids) { pool.drop(uuid); } } }; Thread thread = new Thread(watchDog, "Watch-dog"); thread.start(); } } // resetRunning from the last fail/shutdown resetRunning(); }