package org.camunda.bpm.extension.osgi.internal.impl;
import java.net.URL;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.camunda.bpm.extension.osgi.internal.ProcessDefinitionDeployer;
import org.camunda.bpm.extension.osgi.internal.ProcessDefinitionParser;
import org.camunda.bpm.extension.osgi.internal.ProcessDefintionChecker;
import org.osgi.framework.Bundle;
/**
* Implementation of the {@link ProcessDefintionChecker} that tries to deploy
* processes using a {@link ProcessDefinitionDeployer}.
*
* @author Ronny Bräunlich
*
*/
public class ProcessDefinitionCheckerImpl implements ProcessDefintionChecker {
private static final Logger LOGGER = Logger
.getLogger(ProcessDefinitionCheckerImpl.class.getName());
private volatile ProcessDefinitionDeployer deployer;
public ProcessDefinitionCheckerImpl() {}
public ProcessDefinitionCheckerImpl(ProcessDefinitionDeployer deployer) {
this.deployer = deployer;
}
@Override
public void checkBundle(Bundle bundle) {
List<URL> pathList = ProcessDefinitionParser.scanForProcesses(bundle);
if (!pathList.isEmpty()) {
deployer.deployProcessDefinitions(bundle.getSymbolicName(),
pathList);
} else {
LOGGER.log(Level.FINE, "No process found in bundle {}",
bundle.getSymbolicName());
}
}
@SuppressWarnings("unused")
public void bundleRemoved(Bundle bundle) {
// so far do nothing
}
}