Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.directorywatcher')
-rw-r--r--bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/RepositoryListener.java50
1 files changed, 40 insertions, 10 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 5a75d6ce2..fbbe6605f 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
@@ -37,14 +37,30 @@ public class RepositoryListener extends DirectoryChangeListener {
private final BundleDescriptionFactory bundleDescriptionFactory;
private final Map currentFiles = new HashMap();
private final String repositoryName;
+ private final boolean hidden;
private long lastModifed;
- public RepositoryListener(BundleContext context, String repositoryName) {
+ /**
+ * Create a repository listener that watches the specified folder and generates repositories
+ * for its content.
+ * @param context the bundle context
+ * @param repositoryName the repository name to use for the repository
+ * @param repositoryFolder the target folder for the repository, or <code>null</code> if a folder based on the
+ * bundle's data location should be used.
+ * @param hidden <code>true</code> if the repository should be hidden, <code>false</code> if not.
+ */
+ public RepositoryListener(BundleContext context, String repositoryName, File repositoryFolder, boolean hidden) {
this.repositoryName = repositoryName;
- String stateDirName = "listener_" + repositoryName;
- File stateDir = context.getDataFile(stateDirName);
- stateDir.mkdirs();
+ this.hidden = hidden;
+ File stateDir;
+ if (repositoryFolder == null) {
+ String stateDirName = "listener_" + repositoryName;
+ stateDir = context.getDataFile(stateDirName);
+ stateDir.mkdirs();
+ } else {
+ stateDir = repositoryFolder;
+ }
URL stateDirURL;
try {
@@ -58,6 +74,10 @@ public class RepositoryListener extends DirectoryChangeListener {
bundleDescriptionFactory = initializeBundleDescriptionFactory(context);
}
+ public RepositoryListener(BundleContext context, String string) {
+ this(context, string, null, false);
+ }
+
private BundleDescriptionFactory initializeBundleDescriptionFactory(BundleContext context) {
ServiceReference reference = context.getServiceReference(PlatformAdmin.class.getName());
@@ -90,12 +110,17 @@ public class RepositoryListener extends DirectoryChangeListener {
//fall through and create a new repository
}
try {
- IArtifactRepository repository = manager.createRepository(stateDirURL, "artifact listener " + repositoryName, IArtifactRepositoryManager.TYPE_SIMPLE_REPOSITORY);
- repository.setProperty(IRepository.PROP_SYSTEM, Boolean.TRUE.toString());
+ IArtifactRepository repository;
+ if (hidden) {
+ repository = manager.createRepository(stateDirURL, "artifact listener " + repositoryName, IArtifactRepositoryManager.TYPE_SIMPLE_REPOSITORY);
+ repository.setProperty(IRepository.PROP_SYSTEM, Boolean.TRUE.toString());
+ } else {
+ repository = manager.createRepository(stateDirURL, repositoryName, IArtifactRepositoryManager.TYPE_SIMPLE_REPOSITORY);
+ }
return repository;
} catch (ProvisionException e) {
LogHelper.log(e);
- throw new IllegalStateException("Couldn't create listener artifact repository for: " + stateDirURL);
+ throw new IllegalStateException("Couldn't create artifact repository for: " + stateDirURL);
}
} finally {
context.ungetService(reference);
@@ -116,12 +141,17 @@ public class RepositoryListener extends DirectoryChangeListener {
} catch (ProvisionException e) {
//fall through and create new repository
}
- IMetadataRepository repository = manager.createRepository(stateDirURL, "Metadata listener " + repositoryName, IMetadataRepositoryManager.TYPE_SIMPLE_REPOSITORY);
- repository.setProperty(IRepository.PROP_SYSTEM, Boolean.TRUE.toString());
+ IMetadataRepository repository;
+ if (hidden) {
+ repository = manager.createRepository(stateDirURL, "Metadata listener " + repositoryName, IMetadataRepositoryManager.TYPE_SIMPLE_REPOSITORY);
+ repository.setProperty(IRepository.PROP_SYSTEM, Boolean.TRUE.toString());
+ } else {
+ repository = manager.createRepository(stateDirURL, repositoryName, IMetadataRepositoryManager.TYPE_SIMPLE_REPOSITORY);
+ }
return repository;
} catch (ProvisionException e) {
LogHelper.log(e);
- throw new IllegalStateException("Couldn't create listener metadata repository for: " + stateDirURL);
+ throw new IllegalStateException("Couldn't create metadata repository for: " + stateDirURL);
} finally {
context.ungetService(reference);
}

Back to the top