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()));
String jobId = PluginHelper.getJobId(innerPlugin);
ActorRef jobStateInfoActor = getJobContextInformation(jobId);
if (jobStateInfoActor != null) {
if (stoppingJobs.contains(jobId)) {
throw new JobIsStoppingException();
}
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;
}