private <T extends IsRODAObject> void initJobPluginInfo(Plugin<T> plugin, int objectsCount, ActorRef jobActor) throws JobIsStoppingException, JobInErrorException { // keep track of each job/plugin relation String jobId = PluginHelper.getJobId(plugin); ActorRef jobStateInfoActor = getJobContextInformation(jobId); if (jobStateInfoActor != null) { // see if job is stopping if (stoppingJobs.contains(jobId)) { throw new JobIsStoppingException(); } // see if job is in error if (inErrorJobs.contains(jobId)) { throw new JobInErrorException(); } JobPluginInfo jobPluginInfo = getJobPluginInfo(plugin); initJobPluginInfo(plugin, jobActor, jobStateInfoActor, jobPluginInfo, objectsCount); plugin.injectJobPluginInfo(jobPluginInfo); } else { LOGGER.error("Error while trying to init plugin. Cause: unable to find out job id"); } }
private <T extends IsRODAObject> Plugin<T> getNewPluginInstanceAndInitJobPluginInfo(Plugin<T> plugin, Class<T> pluginClass, int objectsCount, ActorRef jobActor) throws InvalidParameterException, JobIsStoppingException, JobInErrorException { Plugin<T> innerPlugin = RodaCoreFactory.getPluginManager().getPlugin(plugin.getClass().getName(), pluginClass); innerPlugin.setParameterValues(new HashMap<>(plugin.getParameterValues())); // keep track of each job/plugin relation String jobId = PluginHelper.getJobId(innerPlugin); ActorRef jobStateInfoActor = getJobContextInformation(jobId); if (jobStateInfoActor != null) { // see if job is stopping if (stoppingJobs.contains(jobId)) { throw new JobIsStoppingException(); } // see if job is in error if (inErrorJobs.contains(jobId)) { throw new JobInErrorException(); } JobPluginInfo jobPluginInfo = getJobPluginInfo(plugin); initJobPluginInfo(innerPlugin, jobActor, jobStateInfoActor, jobPluginInfo, objectsCount); innerPlugin.injectJobPluginInfo(jobPluginInfo); } else { LOGGER.error("Error while trying to init plugin. Cause: unable to find out job id"); } return innerPlugin; }