package eu.jucy.gui;
import java.net.URI;
import java.net.URISyntaxException;
import logger.LoggerFactory;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.equinox.p2.core.IProvisioningAgent;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
import org.eclipse.equinox.p2.ui.Policy;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.ServiceRegistration;
import eu.jucy.gui.update.CloudPolicy;
import eu.jucy.gui.update.ProvSDKMessages;
public class Activator extends AbstractUIPlugin {
private static Logger logger = LoggerFactory.make();
private ServiceRegistration<?> policyRegistration;
// Shared instance of bundle context
public static BundleContext bundleContext;
//private ServiceRegistration policyRegistration;
public Activator() {
}
@Override
public void start(BundleContext context) throws Exception {
super.start(context);
bundleContext = context;
registerP2Policy(context);
logger.debug("registred P2 policy");
}
@Override
public void stop(BundleContext context) throws Exception {
super.stop(context);
if (policyRegistration != null) {
policyRegistration.unregister();
policyRegistration = null;
}
bundleContext = null;
}
private void registerP2Policy(final BundleContext context) {
CloudPolicy cp = new CloudPolicy();
policyRegistration = context.registerService(Policy.class.getName(), cp , null);
if (GUIPI.getBoolean(GUIPI.allowTestRepos)) {
@SuppressWarnings("unchecked")
ServiceReference<IProvisioningAgent> sref = (ServiceReference<IProvisioningAgent>)context.getServiceReference(IProvisioningAgent.SERVICE_NAME);
IProvisioningAgent agent = context.getService(sref);
IMetadataRepositoryManager manager = (IMetadataRepositoryManager) agent.getService(IMetadataRepositoryManager.SERVICE_NAME);
IArtifactRepositoryManager artManager = (IArtifactRepositoryManager) agent.getService(IArtifactRepositoryManager.SERVICE_NAME);
try {
// String nickname = "unstable";
URI[] repos = new URI [] { new URI("http://jucy.eu/p2/test_update"),
new URI("http://jucy.eu/p2/test_extensions")};
for (URI repo: repos) {
//import org.eclipse.equinox.internal.p2.console.ProvisioningHelper;
//ProvisioningHelper.addMetadataRepository(repoUri);
//ProvisioningHelper.addArtifactRepository(repoUri);
manager.addRepository(repo);
artManager.addRepository(repo);
// ProvisioningUtil.addMetadataRepository(repo, true);
// ProvisioningUtil.addArtifactRepository(repo, true);
// ProvisioningUtil.setMetadataRepositoryProperty(repo,
// IRepository.PROP_NICKNAME, nickname);
// ProvisioningUtil.setArtifactRepositoryProperty(repo,
// IRepository.PROP_NICKNAME, nickname);
}
} catch (URISyntaxException e) {
throw new IllegalStateException(e);
}
// catch (ProvisionException e) {
// e.printStackTrace();
// }
}
}
public static IStatus getNoSelfProfileStatus() {
return new Status(IStatus.WARNING, Application.PLUGIN_ID, ProvSDKMessages.ProvSDKUIActivator_NoSelfProfile);
}
}