public abstract class ArtifactRepositoryBaseImpl<ArtifactDescriptorT extends org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor> extends AbstractArtifactRepository2 implements org.eclipse.equinox.p2.repository.artifact.IFileArtifactRepository, IRawArtifactFileProvider
getArtifactFile(IArtifactDescriptor)
, andgetInternalDescriptorForAdding(IArtifactDescriptor)
,
getComparableDescriptor(IArtifactDescriptor)
Modifier and Type | Field and Description |
---|---|
protected Set<ArtifactDescriptorT> |
descriptors |
protected Map<org.eclipse.equinox.p2.metadata.IArtifactKey,Set<ArtifactDescriptorT>> |
descriptorsMap |
Modifier | Constructor and Description |
---|---|
protected |
ArtifactRepositoryBaseImpl(org.eclipse.equinox.p2.core.IProvisioningAgent agent,
URI location,
ArtifactTransferPolicy transferPolicy) |
Modifier and Type | Method and Description |
---|---|
boolean |
contains(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor)
Returns
true if this a provider for an artifact in the given format |
boolean |
contains(org.eclipse.equinox.p2.metadata.IArtifactKey key)
Returns
true if this is a provider for the given artifact. |
org.eclipse.equinox.p2.query.IQueryable<org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor> |
descriptorQueryable() |
org.eclipse.core.runtime.IStatus |
getArtifact(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor,
OutputStream destination,
org.eclipse.core.runtime.IProgressMonitor monitor)
Deprecated.
Obsolete. Use
getArtifact(IArtifactSink, IProgressMonitor) instead. |
org.eclipse.core.runtime.IStatus |
getArtifact(IArtifactSink sink,
org.eclipse.core.runtime.IProgressMonitor monitor)
Writes the requested artifact to the given
IArtifactSink . |
org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor[] |
getArtifactDescriptors(org.eclipse.equinox.p2.metadata.IArtifactKey key)
Return the raw artifact formats in which the given artifact can be provided.
|
File |
getArtifactFile(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor)
Returns the file system location of the given artifact in the given format.
|
File |
getArtifactFile(org.eclipse.equinox.p2.metadata.IArtifactKey key)
Returns the file system location of the given artifact.
|
protected abstract org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor |
getComparableDescriptor(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor)
Returns an
IArtifactDescriptor instance which is comparable to the artifact
descriptors stored in the index (i.e. |
protected abstract ArtifactDescriptorT |
getInternalDescriptorForAdding(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor)
Returns an artifact descriptor of the internal descriptor type
ArtifactDescriptorT which may be added to the index. |
org.eclipse.core.runtime.IStatus |
getRawArtifact(IRawArtifactSink sink,
org.eclipse.core.runtime.IProgressMonitor monitor)
Writes the requested artifact in the specified raw format to the given
IRawArtifactSink . |
protected void |
internalAddDescriptor(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor) |
protected void |
internalAddInternalDescriptor(ArtifactDescriptorT internalDescriptor) |
protected abstract File |
internalGetArtifactStorageLocation(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor)
Returns the file system location where the given artifact is or would be stored.
|
protected org.eclipse.tycho.repository.p2base.artifact.repository.ArtifactRepositoryBaseImpl.AddingArtifactSink |
internalNewAddingArtifactSink(ArtifactDescriptorT canonicalDescriptorToBeAdded) |
protected void |
internalRemoveAllDescriptors() |
protected void |
internalRemoveDescriptor(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor) |
protected void |
internalRemoveDescriptors(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor[] descriptors) |
protected void |
internalRemoveDescriptors(org.eclipse.equinox.p2.metadata.IArtifactKey key) |
protected void |
internalRemoveDescriptors(org.eclipse.equinox.p2.metadata.IArtifactKey[] keys) |
protected void |
internalStore(org.eclipse.core.runtime.IProgressMonitor monitor)
Persists the index of this repository.
|
IArtifactSink |
newAddingArtifactSink(org.eclipse.equinox.p2.metadata.IArtifactKey key)
Returns a new
IArtifactSink instance that adds the received artifact to this
repository on IArtifactSink.commitWrite() . |
IRawArtifactSink |
newAddingRawArtifactSink(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor newDescriptor)
Returns a new
IRawArtifactSink instance that adds the received artifact to this
repository on IArtifactSink.commitWrite() . |
org.eclipse.equinox.p2.query.IQueryResult<org.eclipse.equinox.p2.metadata.IArtifactKey> |
query(org.eclipse.equinox.p2.query.IQuery<org.eclipse.equinox.p2.metadata.IArtifactKey> query,
org.eclipse.core.runtime.IProgressMonitor monitor) |
addDescriptor, addDescriptor, addDescriptors, addDescriptors, getArtifacts, getOutputStream, getRawArtifact, isFatal, removeAll, removeAll, removeDescriptor, removeDescriptor, removeDescriptor, removeDescriptor, removeDescriptors, removeDescriptors, removeDescriptors, removeDescriptors, setStatusOnStreamIfPossible
createArtifactDescriptor, createArtifactKey, equals, executeBatch, hashCode
assertModifiable, getDescription, getLocation, getName, getProperties, getProperty, getProvider, getProvisioningAgent, getType, getVersion, isModifiable, setDescription, setLocation, setName, setProperties, setProperty, setProperty, setProvider, setType, setVersion
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
addDescriptor, addDescriptor, addDescriptors, addDescriptors, createArtifactDescriptor, createArtifactKey, executeBatch, getArtifacts, getOutputStream, getRawArtifact, removeAll, removeAll, removeDescriptor, removeDescriptor, removeDescriptor, removeDescriptor, removeDescriptors, removeDescriptors, removeDescriptors, removeDescriptors
protected Set<ArtifactDescriptorT extends org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor> descriptors
protected Map<org.eclipse.equinox.p2.metadata.IArtifactKey,Set<ArtifactDescriptorT extends org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor>> descriptorsMap
protected ArtifactRepositoryBaseImpl(org.eclipse.equinox.p2.core.IProvisioningAgent agent, URI location, ArtifactTransferPolicy transferPolicy)
protected abstract org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor getComparableDescriptor(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor)
IArtifactDescriptor
instance which is comparable to the artifact
descriptors stored in the index (i.e. the descriptors
member). A valid
implementation is to convert the argument to the internal descriptor type
ArtifactDescriptorT
, but this is not a requirement. This method should be
implemented in a way so that calling
descriptors.contains(getComparableDescriptor(foreignDescriptor))
with a
descriptor from a foreign artifact repository returns true
if and only if
copying that foreign artifact to this repository with
AbstractArtifactRepository2.getOutputStream(IArtifactDescriptor)
would not add a new artifact to this
repository.
This method may be called by any API method with an IArtifactDescriptor
argument.
descriptor
- An IArtifactDescriptor
from any artifact repository.public final boolean contains(org.eclipse.equinox.p2.metadata.IArtifactKey key)
IArtifactProvider
true
if this is a provider for the given artifact.contains
in interface org.eclipse.equinox.p2.repository.artifact.IArtifactRepository
contains
in interface IArtifactProvider
contains
in class org.eclipse.equinox.p2.repository.artifact.spi.AbstractArtifactRepository
key
- An artifact keytrue
if this instance can provide the artifact for the given keypublic final boolean contains(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor)
IRawArtifactProvider
true
if this a provider for an artifact in the given formatcontains
in interface org.eclipse.equinox.p2.repository.artifact.IArtifactRepository
contains
in interface IRawArtifactProvider
contains
in class org.eclipse.equinox.p2.repository.artifact.spi.AbstractArtifactRepository
descriptor
- An artifact descriptortrue
if this instance can provide the artifact as raw artifact in the
described formatpublic final org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor[] getArtifactDescriptors(org.eclipse.equinox.p2.metadata.IArtifactKey key)
IRawArtifactProvider
getArtifactDescriptors
in interface org.eclipse.equinox.p2.repository.artifact.IArtifactRepository
getArtifactDescriptors
in interface IRawArtifactProvider
getArtifactDescriptors
in class org.eclipse.equinox.p2.repository.artifact.spi.AbstractArtifactRepository
key
- An artifact keypublic final org.eclipse.equinox.p2.query.IQueryResult<org.eclipse.equinox.p2.metadata.IArtifactKey> query(org.eclipse.equinox.p2.query.IQuery<org.eclipse.equinox.p2.metadata.IArtifactKey> query, org.eclipse.core.runtime.IProgressMonitor monitor)
query
in interface org.eclipse.equinox.p2.query.IQueryable<org.eclipse.equinox.p2.metadata.IArtifactKey>
public final org.eclipse.equinox.p2.query.IQueryable<org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor> descriptorQueryable()
descriptorQueryable
in interface org.eclipse.equinox.p2.repository.artifact.IArtifactRepository
protected abstract ArtifactDescriptorT getInternalDescriptorForAdding(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor) throws IllegalArgumentException
ArtifactDescriptorT
which may be added to the index. Implementations may require
that the descriptor argument is a descriptor instance created by this repository – see
AbstractArtifactRepository.createArtifactDescriptor(IArtifactKey)
.
This method is called by methods that add entries to the index, i.e. from
newAddingArtifactSink(IArtifactKey)
.
descriptor
- An IArtifactDescriptor
instanceIllegalArgumentException
- if the provided descriptor cannot be addedprotected final void internalAddDescriptor(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor)
internalAddDescriptor
in class AbstractArtifactRepository2
protected final void internalAddInternalDescriptor(ArtifactDescriptorT internalDescriptor)
protected final void internalRemoveDescriptor(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor)
internalRemoveDescriptor
in class AbstractArtifactRepository2
protected final void internalRemoveDescriptors(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor[] descriptors)
internalRemoveDescriptors
in class AbstractArtifactRepository2
protected final void internalRemoveDescriptors(org.eclipse.equinox.p2.metadata.IArtifactKey key)
internalRemoveDescriptors
in class AbstractArtifactRepository2
protected final void internalRemoveDescriptors(org.eclipse.equinox.p2.metadata.IArtifactKey[] keys)
internalRemoveDescriptors
in class AbstractArtifactRepository2
protected final void internalRemoveAllDescriptors()
internalRemoveAllDescriptors
in class AbstractArtifactRepository2
protected void internalStore(org.eclipse.core.runtime.IProgressMonitor monitor)
This method is called after every (bulk) change to the index.
internalStore
in class AbstractArtifactRepository2
protected abstract File internalGetArtifactStorageLocation(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor)
getArtifactFile(IArtifactDescriptor)
, this method does not check if the given
artifact exists in the repository and never returns null
.
This method may be called by any API method for reading or writing artifacts.
public final File getArtifactFile(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor)
IRawArtifactFileProvider
getArtifactFile
in interface org.eclipse.equinox.p2.repository.artifact.IFileArtifactRepository
getArtifactFile
in interface IRawArtifactFileProvider
descriptor
- The key and format of an artifactnull
the that artifact
does not exist in the given format.public final File getArtifactFile(org.eclipse.equinox.p2.metadata.IArtifactKey key)
IArtifactFileProvider
getArtifactFile
in interface org.eclipse.equinox.p2.repository.artifact.IFileArtifactRepository
getArtifactFile
in interface IArtifactFileProvider
key
- An artifact keynull
the given artifact does
not exist.@Deprecated public final org.eclipse.core.runtime.IStatus getArtifact(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor descriptor, OutputStream destination, org.eclipse.core.runtime.IProgressMonitor monitor)
getArtifact(IArtifactSink, IProgressMonitor)
instead.getArtifact
in interface org.eclipse.equinox.p2.repository.artifact.IArtifactRepository
getArtifact
in class AbstractArtifactRepository2
public final org.eclipse.core.runtime.IStatus getArtifact(IArtifactSink sink, org.eclipse.core.runtime.IProgressMonitor monitor) throws ArtifactSinkException
IArtifactProvider
IArtifactSink
.
The implementation is free to pick the most suitable internal storage format to serve the request, e.g. it may extract the artifact from a pack200-compressed format. If an error is detected while streaming the artifact (e.g. an MD5 checksum error), the implementation may re-attempt the read from all other available sources. In case there were multiple read attempts, a multi-status with the results of all attempts is returned.
getArtifact
in interface IArtifactProvider
sink
- A sink for a specific artifact. When this method returns, the sink will either be
closed (with IArtifactSink.commitWrite()
or
IArtifactSink.abortWrite()
, depending on the status), or not have received
any content.monitor
- A progress monitor, or null
ArtifactSinkException
- if that exception is thrown by the given IArtifactSink
IArtifactSink.getArtifactToBeWritten()
public final org.eclipse.core.runtime.IStatus getRawArtifact(IRawArtifactSink sink, org.eclipse.core.runtime.IProgressMonitor monitor) throws ArtifactSinkException
IRawArtifactProvider
IRawArtifactSink
.
If an error is detected while streaming the artifact (e.g. an MD5 checksum error) and there are other sources available (e.g. in a composite provider), the implementation may re-attempt the read from these other sources. In case there were multiple read attempts, a multi-status with the results of all attempts is returned.
getRawArtifact
in interface IRawArtifactProvider
sink
- A sink for a specific artifact in a specific format. When this method returns, the
sink will either be closed (with IArtifactSink.commitWrite()
or
IArtifactSink.abortWrite()
, depending on the status), or not have
received any content.monitor
- A progress monitor, or null
ArtifactSinkException
- if that exception is thrown by the given IArtifactSink
IArtifactSink.getArtifactToBeWritten()
,
IRawArtifactSink.getArtifactFormatToBeWritten()
public final IArtifactSink newAddingArtifactSink(org.eclipse.equinox.p2.metadata.IArtifactKey key) throws org.eclipse.equinox.p2.core.ProvisionException
AbstractArtifactRepository2
IArtifactSink
instance that adds the received artifact to this
repository on IArtifactSink.commitWrite()
.newAddingArtifactSink
in class AbstractArtifactRepository2
key
- The artifact key to be added to this repositoryorg.eclipse.equinox.p2.core.ProvisionException
- if the artifact is already stored in the repository (in canonical format)protected final org.eclipse.tycho.repository.p2base.artifact.repository.ArtifactRepositoryBaseImpl.AddingArtifactSink internalNewAddingArtifactSink(ArtifactDescriptorT canonicalDescriptorToBeAdded) throws org.eclipse.equinox.p2.core.ProvisionException
org.eclipse.equinox.p2.core.ProvisionException
public final IRawArtifactSink newAddingRawArtifactSink(org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor newDescriptor) throws org.eclipse.equinox.p2.core.ProvisionException
AbstractArtifactRepository2
IRawArtifactSink
instance that adds the received artifact to this
repository on IArtifactSink.commitWrite()
.newAddingRawArtifactSink
in class AbstractArtifactRepository2
newDescriptor
- The artifact descriptor to the added to this repositoryorg.eclipse.equinox.p2.core.ProvisionException
- if the artifact is already stored in the repository in the given format.Copyright © 2008–2013 Eclipse Foundation. All rights reserved.