diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/pom.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/pom.xml index 5c9ec1c04..ac3e6748a 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/pom.xml +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/pom.xml @@ -40,10 +40,6 @@ org.apache.archiva metadata-repository-api - - org.apache.archiva - metadata-repository-file - org.apache.archiva archiva-repository-layer diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java b/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java index d8a33deb5..a016ccf2a 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java @@ -31,6 +31,8 @@ import org.apache.archiva.metadata.model.ArtifactMetadata; import org.apache.archiva.metadata.model.ProjectMetadata; import org.apache.archiva.metadata.model.ProjectVersionMetadata; import org.apache.archiva.metadata.repository.MetadataRepository; +import org.apache.archiva.metadata.repository.MetadataResolverException; +import org.apache.archiva.metadata.repository.storage.StorageMetadataResolver; import org.apache.maven.archiva.common.utils.VersionUtil; import org.apache.maven.archiva.configuration.ArchivaConfiguration; import org.apache.maven.archiva.configuration.ConfigurationNames; @@ -94,6 +96,15 @@ public class ArchivaMetadataCreationConsumer */ private MetadataRepository metadataRepository; + /** + * FIXME: this needs to be configurable based on storage type, and availability of proxy module + * ... could be a different type since we need methods to modify the storage metadata, which would also allow more + * appropriate methods to pass in the already determined repository configuration, for example, instead of the ID + * + * @plexus.requirement role-hint="maven2" + */ + private StorageMetadataResolver storageResolver; + private static final Logger log = LoggerFactory.getLogger( ArchivaMetadataCreationConsumer.class ); public String getId() @@ -150,8 +161,18 @@ public class ArchivaMetadataCreationConsumer project.setNamespace( artifact.getGroupId() ); project.setId( artifact.getArtifactId() ); - ProjectVersionMetadata versionMetadata = new ProjectVersionMetadata(); - versionMetadata.setId( VersionUtil.getBaseVersion( artifact.getVersion() ) ); + // TODO: maybe not too efficient since it may have already been read and stored for this artifact + ProjectVersionMetadata versionMetadata = null; + try + { + versionMetadata = + storageResolver.getProjectVersion( repository.getId(), artifact.getGroupId(), artifact.getArtifactId(), + VersionUtil.getBaseVersion( artifact.getVersion() ) ); + } + catch ( MetadataResolverException e ) + { + throw new ConsumerException( e.getMessage(), e ); + } ArtifactMetadata artifactMeta = new ArtifactMetadata(); artifactMeta.setRepositoryId( repository.getId() ); @@ -181,7 +202,6 @@ public class ArchivaMetadataCreationConsumer log.error( "Error attempting to get SHA-1 checksum for " + file + ": " + e.getMessage() ); } - // TODO: read the POM and fill in the rest of the information // TODO: transaction // read the metadata and update it if it is newer or doesn't exist