diff options
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java')
-rw-r--r-- | bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java b/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java index 0880cef8b..3b9998200 100644 --- a/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java +++ b/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java @@ -19,9 +19,9 @@ import java.net.URI; import java.util.*; import org.eclipse.core.runtime.*; import org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactDescriptor; -import org.eclipse.equinox.internal.p2.core.helpers.LogHelper; -import org.eclipse.equinox.internal.p2.core.helpers.Tracing; +import org.eclipse.equinox.internal.p2.core.helpers.*; import org.eclipse.equinox.internal.p2.update.Site; +import org.eclipse.equinox.p2.core.IProvisioningAgent; import org.eclipse.equinox.p2.core.ProvisionException; import org.eclipse.equinox.p2.metadata.IInstallableUnit; import org.eclipse.equinox.p2.publisher.*; @@ -33,6 +33,7 @@ import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository; import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager; import org.eclipse.osgi.service.resolver.BundleDescription; import org.eclipse.osgi.util.NLS; +import org.osgi.framework.*; public class RepositoryListener extends DirectoryChangeListener { public static final String ARTIFACT_FOLDER = "artifact.folder"; //$NON-NLS-1$ @@ -58,7 +59,7 @@ public class RepositoryListener extends DirectoryChangeListener { * @param properties the map of repository properties or <code>null</code> */ public RepositoryListener(String repositoryName, Map<String, String> properties) { - URI location = Activator.getDefaultRepositoryLocation(this, repositoryName); + URI location = getDefaultRepositoryLocation(this, repositoryName); metadataRepository = initializeMetadataRepository(repositoryName, location, properties); artifactRepository = initializeArtifactRepository(repositoryName, location, properties); initializePublisher(); @@ -79,7 +80,7 @@ public class RepositoryListener extends DirectoryChangeListener { } protected CachingArtifactRepository initializeArtifactRepository(String name, URI repositoryLocation, Map<String, String> properties) { - IArtifactRepositoryManager manager = Activator.getArtifactRepositoryManager(); + IArtifactRepositoryManager manager = getArtifactRepositoryManager(); if (manager == null) throw new IllegalStateException(Messages.artifact_repo_manager_not_registered); @@ -99,7 +100,7 @@ public class RepositoryListener extends DirectoryChangeListener { } protected IMetadataRepository initializeMetadataRepository(String name, URI repositoryLocation, Map<String, String> properties) { - IMetadataRepositoryManager manager = Activator.getMetadataRepositoryManager(); + IMetadataRepositoryManager manager = getMetadataRepositoryManager(); if (manager == null) throw new IllegalStateException(Messages.metadata_repo_manager_not_registered); @@ -244,7 +245,7 @@ public class RepositoryListener extends DirectoryChangeListener { if (filename == null) { if (Tracing.DEBUG) { String message = NLS.bind(Messages.filename_missing, "artifact", descriptor.getArtifactKey()); //$NON-NLS-1$ - LogHelper.log(new Status(IStatus.ERROR, Activator.ID, message, null)); + LogHelper.log(new Status(IStatus.ERROR, Constants.BUNDLE_ID, message, null)); } } else { File artifactFile = new File(filename); @@ -270,7 +271,7 @@ public class RepositoryListener extends DirectoryChangeListener { if (filename == null) { if (Tracing.DEBUG) { String message = NLS.bind(Messages.filename_missing, "installable unit", iu.getId()); //$NON-NLS-1$ - LogHelper.log(new Status(IStatus.ERROR, Activator.ID, message, null)); + LogHelper.log(new Status(IStatus.ERROR, Constants.BUNDLE_ID, message, null)); } } else { File iuFile = new File(filename); @@ -304,4 +305,24 @@ public class RepositoryListener extends DirectoryChangeListener { public IArtifactRepository getArtifactRepository() { return artifactRepository; } + + private static IMetadataRepositoryManager getMetadataRepositoryManager() { + BundleContext bundleContext = FrameworkUtil.getBundle(RepositoryListener.class).getBundleContext(); + return ServiceHelper.getService(bundleContext, IProvisioningAgent.class).getService(IMetadataRepositoryManager.class); + } + + private static IArtifactRepositoryManager getArtifactRepositoryManager() { + BundleContext bundleContext = FrameworkUtil.getBundle(RepositoryListener.class).getBundleContext(); + return ServiceHelper.getService(bundleContext, IProvisioningAgent.class).getService(IArtifactRepositoryManager.class); + } + + private static URI getDefaultRepositoryLocation(Object object, String repositoryName) { + Bundle bundle = FrameworkUtil.getBundle(object.getClass()); + BundleContext context = bundle.getBundleContext(); + File base = context.getDataFile(""); //$NON-NLS-1$ + File result = new File(base, "listener_" + repositoryName.hashCode()); //$NON-NLS-1$ + result.mkdirs(); + return result.toURI(); + } + } |