Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Arthorne2008-01-11 16:45:56 +0000
committerJohn Arthorne2008-01-11 16:45:56 +0000
commit0c26813151c77bda96fb1b35ffcf58e74aa05fd8 (patch)
treea7338e0dc3c573e3c2a84d60e22be3a15ea59b51 /bundles/org.eclipse.equinox.p2.directorywatcher/src
parent30aecc5b3ad752b3021f0a6a512d6e9d50ae1ef6 (diff)
downloadrt.equinox.p2-0c26813151c77bda96fb1b35ffcf58e74aa05fd8.tar.gz
rt.equinox.p2-0c26813151c77bda96fb1b35ffcf58e74aa05fd8.tar.xz
rt.equinox.p2-0c26813151c77bda96fb1b35ffcf58e74aa05fd8.zip
Bug 212348 [prov] [repo] Find a way to better report the failure of repository addition
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.directorywatcher/src')
-rw-r--r--bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/p2/directorywatcher/ProvisioningListener.java36
-rw-r--r--bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/p2/directorywatcher/RepositoryListener.java29
2 files changed, 36 insertions, 29 deletions
diff --git a/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/p2/directorywatcher/ProvisioningListener.java b/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/p2/directorywatcher/ProvisioningListener.java
index e6fa220e1..6c30c457b 100644
--- a/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/p2/directorywatcher/ProvisioningListener.java
+++ b/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/p2/directorywatcher/ProvisioningListener.java
@@ -13,9 +13,11 @@ import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;
+import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
import org.eclipse.equinox.p2.artifact.repository.IArtifactRepository;
import org.eclipse.equinox.p2.artifact.repository.IArtifactRepositoryManager;
+import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.directorywatcher.DirectoryChangeListener;
import org.eclipse.equinox.p2.directorywatcher.DirectoryWatcher;
import org.eclipse.equinox.p2.metadata.generator.*;
@@ -163,23 +165,27 @@ public class ProvisioningListener extends DirectoryChangeListener {
private void initializeMetadataRepository(EclipseInstallGeneratorInfoProvider provider, URL location) {
IMetadataRepositoryManager manager = (IMetadataRepositoryManager) ServiceHelper.getService(Activator.getContext(), IMetadataRepositoryManager.class.getName());
- IMetadataRepository repository = manager.loadRepository(location, null);
- if (repository != null) {
- if (repository.isModifiable()) {
- provider.setMetadataRepository(repository);
- if (!provider.append())
- repository.removeAll();
- return;
+ try {
+ IMetadataRepository repository = manager.loadRepository(location, null);
+ if (repository != null) {
+ if (repository.isModifiable()) {
+ provider.setMetadataRepository(repository);
+ if (!provider.append())
+ repository.removeAll();
+ return;
+ }
+ throw new IllegalArgumentException("Artifact repository not writeable: " + location); //$NON-NLS-1$
}
- throw new IllegalArgumentException("Artifact repository not writeable: " + location); //$NON-NLS-1$
+ } catch (ProvisionException e) {
+ //fall through and create a new repository
+ }
+ try {
+ String repositoryName = location + " - metadata"; //$NON-NLS-1$
+ IMetadataRepository repository = manager.createRepository(location, repositoryName, IMetadataRepositoryManager.TYPE_SIMPLE_REPOSITORY);
+ provider.setMetadataRepository(repository);
+ } catch (ProvisionException e) {
+ LogHelper.log(e);
}
-
- // the given repo location is not an existing repo so we have to create something
- // TODO for now create a random repo by default.
- String repositoryName = location + " - metadata"; //$NON-NLS-1$
- IMetadataRepository result = manager.createRepository(location, repositoryName, IMetadataRepositoryManager.TYPE_SIMPLE_REPOSITORY);
- if (result != null)
- provider.setMetadataRepository(result);
}
}
diff --git a/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/p2/directorywatcher/RepositoryListener.java b/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/p2/directorywatcher/RepositoryListener.java
index f4885fc2e..72053bd15 100644
--- a/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/p2/directorywatcher/RepositoryListener.java
+++ b/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/p2/directorywatcher/RepositoryListener.java
@@ -13,7 +13,9 @@ import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;
+import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
import org.eclipse.equinox.p2.artifact.repository.*;
+import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.core.repository.IRepository;
import org.eclipse.equinox.p2.metadata.IArtifactKey;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
@@ -101,28 +103,27 @@ public class RepositoryListener extends DirectoryChangeListener {
private IMetadataRepository initializeMetadataRepository(BundleContext context, URL stateDirURL) {
ServiceReference reference = context.getServiceReference(IMetadataRepositoryManager.class.getName());
- if (reference == null)
- throw new IllegalStateException("MetadataRepositoryManager not registered.");
-
- IMetadataRepositoryManager manager = (IMetadataRepositoryManager) context.getService(reference);
+ IMetadataRepositoryManager manager = null;
+ if (reference != null)
+ manager = (IMetadataRepositoryManager) context.getService(reference);
if (manager == null)
throw new IllegalStateException("MetadataRepositoryManager not registered.");
- IMetadataRepository repository = null;
try {
- repository = manager.loadRepository(stateDirURL, null);
- if (repository == null) {
- repository = manager.createRepository(stateDirURL, "metadata listener " + repositoryName, IMetadataRepositoryManager.TYPE_SIMPLE_REPOSITORY);
- repository.setProperty(IRepository.PROP_SYSTEM, Boolean.TRUE.toString());
+ try {
+ return manager.loadRepository(stateDirURL, null);
+ } 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());
+ return repository;
+ } catch (ProvisionException e) {
+ LogHelper.log(e);
+ throw new IllegalStateException("Couldn't create listener metadata repository for: " + stateDirURL);
} finally {
context.ungetService(reference);
}
-
- if (repository == null)
- throw new IllegalStateException("Couldn't create listener metadata repository for: " + stateDirURL);
-
- return repository;
}
/* (non-Javadoc)

Back to the top