package com.tandbergtv.metadatamanager;


import java.util.Collection;
import java.util.Properties;

import org.java.plugin.ObjectFactory;
import org.java.plugin.PluginManager;
import org.java.plugin.PluginManager.PluginLocation;
import org.java.plugin.boot.DefaultPluginsCollector;
import org.java.plugin.boot.PluginsCollector;
import org.java.plugin.util.ExtendedProperties;

/**
 * JPF lifecycle controller
 * 
 * @author Sahil Verma
 */
public class JPFActivator {
	
	private PluginManager pluginManager;
	
	/**
	 * @return the pluginManager
	 */
	public PluginManager getPluginManager() {
		return pluginManager;
	}

	/**
	 * Creates a plugin manager with the specified properties. Ensure that JPF's plugin repository
	 * URL property is correctly set.
	 */
	public void start(Properties props) {
		ExtendedProperties properties = new ExtendedProperties(props);
		pluginManager = ObjectFactory.newInstance(properties).createManager();
		PluginsCollector collector = new DefaultPluginsCollector();
		
		try {
			collector.configure(properties);

			Collection<PluginLocation> pluginLocations = collector.collectPluginLocations();

			pluginManager.publishPlugins(pluginLocations.toArray(new PluginLocation[pluginLocations.size()]));
			
			pluginManager.getRegistry().checkIntegrity(pluginManager.getPathResolver(), true);
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
	
	public void stop() {
		// ???
	}
}
