diff options
author | DJ Houghton | 2010-08-26 12:56:02 +0000 |
---|---|---|
committer | DJ Houghton | 2010-08-26 12:56:02 +0000 |
commit | 8c91ab7a6145a1176d8f593f209369a559aba8a9 (patch) | |
tree | b3d00dc7b4109806a9f5dd846fab7b340d64d50d | |
parent | cd254bc15261f58490302ec42031775abc7f593f (diff) | |
download | rt.equinox.p2-8c91ab7a6145a1176d8f593f209369a559aba8a9.tar.gz rt.equinox.p2-8c91ab7a6145a1176d8f593f209369a559aba8a9.tar.xz rt.equinox.p2-8c91ab7a6145a1176d8f593f209369a559aba8a9.zip |
Bug 244628 - [api] [repository] artifact repos do not support bulk remove
15 files changed, 116 insertions, 5 deletions
diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.artifact.repository/META-INF/MANIFEST.MF index 2cce6bc62..8ce0a38ab 100644 --- a/bundles/org.eclipse.equinox.p2.artifact.repository/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.equinox.p2.artifact.repository/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.equinox.p2.artifact.repository;singleton:=true -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.1.100.qualifier Bundle-Activator: org.eclipse.equinox.internal.p2.artifact.repository.Activator Bundle-Vendor: %providerName Bundle-Localization: plugin diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepository.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepository.java index 928d34b19..c726f294f 100644 --- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepository.java +++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/CompositeArtifactRepository.java @@ -246,6 +246,13 @@ public class CompositeArtifactRepository extends AbstractArtifactRepository impl /** * Composite repositories should be unable to directly modify their child repositories */ + public void removeDescriptors(IArtifactKey[] keys) { + throw new UnsupportedOperationException(Messages.exception_unsupportedRemoveFromComposite); + } + + /** + * Composite repositories should be unable to directly modify their child repositories + */ public void removeDescriptor(IArtifactDescriptor descriptor) { throw new UnsupportedOperationException(Messages.exception_unsupportedRemoveFromComposite); } @@ -253,6 +260,13 @@ public class CompositeArtifactRepository extends AbstractArtifactRepository impl /** * Composite repositories should be unable to directly modify their child repositories */ + public void removeDescriptors(IArtifactDescriptor[] descriptors) { + throw new UnsupportedOperationException(Messages.exception_unsupportedRemoveFromComposite); + } + + /** + * Composite repositories should be unable to directly modify their child repositories + */ public synchronized void removeAll() { throw new UnsupportedOperationException(Messages.exception_unsupportedRemoveFromComposite); } diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java index 465b29d0f..7e7494c34 100644 --- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java +++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/simple/SimpleArtifactRepository.java @@ -885,6 +885,25 @@ public class SimpleArtifactRepository extends AbstractArtifactRepository impleme save(); } + public synchronized void removeDescriptors(IArtifactDescriptor[] descriptors) { + boolean changed = false; + for (IArtifactDescriptor descriptor : descriptors) + changed |= doRemoveArtifact(descriptor); + if (changed) + save(); + } + + public synchronized void removeDescriptors(IArtifactKey[] keys) { + boolean changed = false; + for (IArtifactKey key : keys) { + IArtifactDescriptor[] descriptors = getArtifactDescriptors(key); + for (IArtifactDescriptor descriptor : descriptors) + changed |= doRemoveArtifact(descriptor); + } + if (changed) + save(); + } + public synchronized void removeDescriptor(IArtifactKey key) { IArtifactDescriptor[] toRemove = getArtifactDescriptors(key); boolean changed = false; diff --git a/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/CachingArtifactRepository.java b/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/CachingArtifactRepository.java index 574a85657..05720ff83 100644 --- a/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/CachingArtifactRepository.java +++ b/bundles/org.eclipse.equinox.p2.directorywatcher/src/org/eclipse/equinox/internal/provisional/p2/directorywatcher/CachingArtifactRepository.java @@ -156,6 +156,16 @@ public class CachingArtifactRepository implements IArtifactRepository, IFileArti doRemoveArtifact(toRemove[i]); } + public synchronized void removeDescriptors(IArtifactDescriptor[] descriptors) { + for (IArtifactDescriptor descriptor : descriptors) + doRemoveArtifact(descriptor); + } + + public synchronized void removeDescriptors(IArtifactKey[] keys) { + for (IArtifactKey key : keys) + removeDescriptor(key); + } + /** * Removes the given descriptor and returns <code>true</code> if and only if the * descriptor existed in the repository, and was successfully removed. diff --git a/bundles/org.eclipse.equinox.p2.engine/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.engine/META-INF/MANIFEST.MF index ed9ab240c..eb461ba05 100644 --- a/bundles/org.eclipse.equinox.p2.engine/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.equinox.p2.engine/META-INF/MANIFEST.MF @@ -20,7 +20,7 @@ Require-Bundle: org.eclipse.equinox.common, org.eclipse.equinox.registry, org.eclipse.equinox.p2.metadata.repository;bundle-version="1.0.100", org.eclipse.core.jobs;bundle-version="[3.4.0,4.0.0)", - org.eclipse.equinox.p2.repository;bundle-version="[2.0.0,2.1.0)", + org.eclipse.equinox.p2.repository;bundle-version="[2.0.0,2.2.0)", org.eclipse.equinox.p2.metadata;bundle-version="[2.0.0,2.2.0)", org.eclipse.equinox.p2.core;bundle-version="[2.0.0,2.1.0)" Eclipse-RegisterBuddy: org.eclipse.equinox.p2.metadata.repository diff --git a/bundles/org.eclipse.equinox.p2.extensionlocation/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.extensionlocation/META-INF/MANIFEST.MF index 84f75ec97..a3effadd6 100644 --- a/bundles/org.eclipse.equinox.p2.extensionlocation/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.equinox.p2.extensionlocation/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.equinox.p2.extensionlocation;singleton:=true -Bundle-Version: 1.2.0.qualifier +Bundle-Version: 1.2.100.qualifier Bundle-Activator: org.eclipse.equinox.internal.p2.extensionlocation.Activator Bundle-Vendor: %providerName Bundle-Localization: plugin diff --git a/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationArtifactRepository.java b/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationArtifactRepository.java index 984f56314..5bdb8ad1f 100644 --- a/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationArtifactRepository.java +++ b/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationArtifactRepository.java @@ -167,6 +167,14 @@ public class ExtensionLocationArtifactRepository extends AbstractRepository<IArt throw new UnsupportedOperationException(); } + public void removeDescriptors(IArtifactDescriptor[] descriptors) { + throw new UnsupportedOperationException(); + } + + public void removeDescriptors(IArtifactKey[] keys) { + throw new UnsupportedOperationException(); + } + public boolean contains(IArtifactDescriptor descriptor) { ensureInitialized(); return artifactRepository.contains(descriptor); diff --git a/bundles/org.eclipse.equinox.p2.repository/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.repository/META-INF/MANIFEST.MF index 63428ef07..2fdf3fce4 100644 --- a/bundles/org.eclipse.equinox.p2.repository/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.equinox.p2.repository/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.equinox.p2.repository;singleton:=true -Bundle-Version: 2.0.0.qualifier +Bundle-Version: 2.1.0.qualifier Bundle-Activator: org.eclipse.equinox.internal.p2.repository.Activator Bundle-Vendor: %providerName Bundle-Localization: plugin diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/IArtifactRepository.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/IArtifactRepository.java index ae46654d5..3e68f2b16 100644 --- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/IArtifactRepository.java +++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/IArtifactRepository.java @@ -167,6 +167,22 @@ public interface IArtifactRepository extends IRepository<IArtifactKey> { public void removeDescriptor(IArtifactKey key); /** + * Remove the given list of artifact descriptors and their corresponding content + * in this repository. + * @param descriptors the list of descriptors to remove + * @since 2.1 + */ + public void removeDescriptors(IArtifactDescriptor[] descriptors); + + /** + * Remove the given list of keys and all related content and descriptors from this + * repository. + * @param keys + * @since 2.1 + */ + public void removeDescriptors(IArtifactKey[] keys); + + /** * Executes a runnable against this repository. It is up to the repository * implementor to determine what "batch process" means, for example, it may mean * that the repository index is not stored until after the runnable completes. diff --git a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/spi/AbstractArtifactRepository.java b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/spi/AbstractArtifactRepository.java index 692c66fab..60626e4d7 100644 --- a/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/spi/AbstractArtifactRepository.java +++ b/bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/p2/repository/artifact/spi/AbstractArtifactRepository.java @@ -63,10 +63,18 @@ public abstract class AbstractArtifactRepository extends AbstractRepository<IArt assertModifiable(); } + public void removeDescriptors(IArtifactDescriptor[] descriptors) { + assertModifiable(); + } + public void removeDescriptor(IArtifactKey key) { assertModifiable(); } + public void removeDescriptors(IArtifactKey[] keys) { + assertModifiable(); + } + public void removeAll() { assertModifiable(); } diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractWrappedArtifactRepository.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractWrappedArtifactRepository.java index e66b2f641..a1402b87e 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractWrappedArtifactRepository.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractWrappedArtifactRepository.java @@ -79,6 +79,14 @@ public class AbstractWrappedArtifactRepository implements IArtifactRepository { delegate.removeDescriptor(key); } + public void removeDescriptors(IArtifactDescriptor[] descriptors) { + delegate.removeDescriptors(descriptors); + } + + public void removeDescriptors(IArtifactKey[] keys) { + delegate.removeDescriptors(keys); + } + public String getDescription() { return delegate.getDescription(); } diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/TestArtifactRepository.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/TestArtifactRepository.java index 0a3815173..0d2cd95f1 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/TestArtifactRepository.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/TestArtifactRepository.java @@ -167,6 +167,16 @@ public class TestArtifactRepository extends AbstractArtifactRepository { removeDescriptor(descriptor.getArtifactKey()); } + public void removeDescriptors(IArtifactDescriptor[] descriptors) { + for (IArtifactDescriptor descriptor : descriptors) + removeDescriptor(descriptor); + } + + public void removeDescriptors(IArtifactKey[] keys) { + for (IArtifactKey key : keys) + removeDescriptor(key); + } + public void removeDescriptor(IArtifactKey key) { for (IArtifactDescriptor nextDescriptor : artifactDescriptors) { if (key.equals(nextDescriptor.getArtifactKey())) diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/TestArtifactRepository.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/TestArtifactRepository.java index 7b1ae7bea..6b50cf744 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/TestArtifactRepository.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/TestArtifactRepository.java @@ -209,6 +209,16 @@ public class TestArtifactRepository implements IArtifactRepository { } } + public void removeDescriptors(IArtifactDescriptor[] descriptors) { + for (IArtifactDescriptor descriptor : descriptors) + removeDescriptor(descriptor); + } + + public void removeDescriptors(IArtifactKey[] keys) { + for (IArtifactKey key : keys) + removeDescriptor(key); + } + public String getDescription() { return description; } diff --git a/bundles/org.eclipse.equinox.p2.updatesite/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.updatesite/META-INF/MANIFEST.MF index 8273b9e72..0c80433f3 100644 --- a/bundles/org.eclipse.equinox.p2.updatesite/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.equinox.p2.updatesite/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.equinox.p2.updatesite;singleton:=true -Bundle-Version: 1.0.200.qualifier +Bundle-Version: 1.0.300.qualifier Bundle-Activator: org.eclipse.equinox.internal.p2.updatesite.Activator Bundle-Vendor: %providerName Bundle-Localization: plugin diff --git a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/artifact/UpdateSiteArtifactRepository.java b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/artifact/UpdateSiteArtifactRepository.java index 414c28492..1d9733b96 100644 --- a/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/artifact/UpdateSiteArtifactRepository.java +++ b/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/artifact/UpdateSiteArtifactRepository.java @@ -81,10 +81,18 @@ public class UpdateSiteArtifactRepository implements IArtifactRepository { throw new UnsupportedOperationException("Repository not modifiable: " + location); //$NON-NLS-1$ } + public void removeDescriptors(IArtifactDescriptor[] descriptors) { + throw new UnsupportedOperationException("Repository not modifiable: " + location); //$NON-NLS-1$ + } + public void removeDescriptor(IArtifactKey key) { throw new UnsupportedOperationException("Repository not modifiable: " + location); //$NON-NLS-1$ } + public void removeDescriptors(IArtifactKey[] keys) { + throw new UnsupportedOperationException("Repository not modifiable: " + location); //$NON-NLS-1$ + } + public String getDescription() { return delegate.getDescription(); } |