From: Brett Porter Date: Mon, 1 Dec 2008 13:47:06 +0000 (+0000) Subject: [MRM-1025] separate metadata consumer so that it can be run from the CLI without... X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=067e7501abe0b3e222990732752bb710ca01038f;p=archiva.git [MRM-1025] separate metadata consumer so that it can be run from the CLI without a database git-svn-id: https://svn.apache.org/repos/asf/archiva/branches@722073 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/MRM-1025/archiva-cli/pom.xml b/MRM-1025/archiva-cli/pom.xml index 70f20a3ce..6fc0f2cc7 100644 --- a/MRM-1025/archiva-cli/pom.xml +++ b/MRM-1025/archiva-cli/pom.xml @@ -38,6 +38,12 @@ 1.2-SNAPSHOT runtime + + org.apache.archiva + archiva-metadata-consumer + 1.2-SNAPSHOT + runtime + org.apache.archiva archiva-xml-tools diff --git a/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml b/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml index 2d1e5c78d..cbf3e0557 100644 --- a/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml +++ b/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml @@ -52,21 +52,6 @@ plexus-spring test - - org.apache.archiva - metadata-model - 1.2-SNAPSHOT - - - org.apache.archiva - metadata-repository-api - 1.2-SNAPSHOT - - - org.apache.archiva - metadata-repository-file - 1.2-SNAPSHOT - diff --git a/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArchivaMetadataCreationConsumer.java b/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArchivaMetadataCreationConsumer.java deleted file mode 100644 index 593f72c6c..000000000 --- a/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArchivaMetadataCreationConsumer.java +++ /dev/null @@ -1,206 +0,0 @@ -package org.apache.maven.archiva.consumers.core; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import java.io.File; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import org.apache.archiva.metadata.model.ArtifactMetadata; -import org.apache.archiva.metadata.model.ProjectBuildMetadata; -import org.apache.archiva.metadata.model.ProjectMetadata; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.file.FileMetadataRepository; -import org.apache.maven.archiva.configuration.ArchivaConfiguration; -import org.apache.maven.archiva.configuration.ConfigurationNames; -import org.apache.maven.archiva.configuration.FileTypes; -import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; -import org.apache.maven.archiva.consumers.ConsumerException; -import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; -import org.apache.maven.archiva.model.ArtifactReference; -import org.apache.maven.archiva.repository.ManagedRepositoryContent; -import org.apache.maven.archiva.repository.RepositoryContentFactory; -import org.apache.maven.archiva.repository.RepositoryException; -import org.apache.maven.archiva.repository.layout.LayoutException; -import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; -import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; -import org.codehaus.plexus.registry.Registry; -import org.codehaus.plexus.registry.RegistryListener; - -/** - * ArtifactUpdateDatabaseConsumer - Take an artifact off of disk and put it into the repository. - * - * @version $Id: ArtifactUpdateDatabaseConsumer.java 718864 2008-11-19 06:33:35Z brett $ - * @plexus.component role="org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer" - * role-hint="create-archiva-metadata" instantiation-strategy="per-lookup" - */ -public class ArchivaMetadataCreationConsumer - extends AbstractMonitoredConsumer - implements KnownRepositoryContentConsumer, RegistryListener, Initializable -{ - /** - * @plexus.configuration default-value="create-archiva-metadata" - */ - private String id; - - /** - * @plexus.configuration default-value="Create basic metadata for Archiva to be able to reference the artifact" - */ - private String description; - - /** - * @plexus.requirement - */ - private ArchivaConfiguration configuration; - - /** - * @plexus.requirement - */ - private FileTypes filetypes; - - /** - * @plexus.requirement - */ - private RepositoryContentFactory repositoryFactory; - - private Date whenGathered; - - private ManagedRepositoryContent repository; - - private List includes = new ArrayList(); - - private MetadataRepository metadataRepository; - - public String getId() - { - return this.id; - } - - public String getDescription() - { - return this.description; - } - - public boolean isPermanent() - { - return true; - } - - public List getExcludes() - { - return getDefaultArtifactExclusions(); - } - - public List getIncludes() - { - return this.includes; - } - - public void beginScan( ManagedRepositoryConfiguration repo, Date whenGathered ) - throws ConsumerException - { - try - { - this.repository = repositoryFactory.getManagedRepositoryContent( repo.getId() ); - this.metadataRepository = new FileMetadataRepository( new File( repository.getRepoRoot(), ".metadata" ) ); - this.whenGathered = whenGathered; - } - catch ( RepositoryException e ) - { - throw new ConsumerException( "Unable to start ArtifactUpdateDatabaseConsumer: " + e.getMessage(), e ); - } - } - - public void processFile( String path ) - throws ConsumerException - { - // note that we do minimal processing including checksums and POM information for performance of - // the initial scan. Any request for this information will be intercepted and populated on-demand - // or picked up by subsequent scans - ArtifactReference artifact; - try - { - artifact = repository.toArtifactReference( path ); - } - catch ( LayoutException e ) - { - throw new ConsumerException( e.getMessage(), e ); - } - - File file = new File( repository.getRepoRoot(), path ); - - // TODO: needed in a more central place, but trying to isolate impact to start with - String metadataId = artifact.getGroupId() + "." + artifact.getArtifactId(); - - ProjectMetadata project = new ProjectMetadata(); - project.setId( metadataId ); - - ProjectBuildMetadata build = new ProjectBuildMetadata(); - build.setId( artifact.getVersion() ); - - ArtifactMetadata artifactMeta = new ArtifactMetadata(); - artifactMeta.setId( file.getName() ); - artifactMeta.setUpdated( file.lastModified() ); - artifactMeta.setSize( file.length() ); - - build.addArtifact( artifactMeta ); - project.addBuild( build ); - - // TODO: store "whenGathered" - - // read the metadata and update it if it is newer or doesn't exist - metadataRepository.update( project ); - } - - public void completeScan() - { - /* do nothing */ - } - - public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue ) - { - if ( ConfigurationNames.isRepositoryScanning( propertyName ) ) - { - initIncludes(); - } - } - - public void beforeConfigurationChange( Registry registry, String propertyName, Object propertyValue ) - { - /* do nothing */ - } - - private void initIncludes() - { - includes.clear(); - - includes.addAll( filetypes.getFileTypePatterns( FileTypes.ARTIFACTS ) ); - } - - public void initialize() - throws InitializationException - { - configuration.addChangeListener( this ); - - initIncludes(); - } -} diff --git a/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-dependency-tree-consumer/pom.xml b/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-dependency-tree-consumer/pom.xml index c675a7c6a..e417bcd5a 100644 --- a/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-dependency-tree-consumer/pom.xml +++ b/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-dependency-tree-consumer/pom.xml @@ -1,3 +1,23 @@ + + + 4.0.0 diff --git a/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/pom.xml b/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/pom.xml new file mode 100644 index 000000000..98fb35656 --- /dev/null +++ b/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/pom.xml @@ -0,0 +1,55 @@ + + + + + 4.0.0 + + archiva-consumers + org.apache.archiva + 1.2-SNAPSHOT + + archiva-metadata-consumer + Archiva Metadata Consumer + + + org.apache.archiva + archiva-consumer-api + + + org.apache.archiva + metadata-model + 1.2-SNAPSHOT + + + org.apache.archiva + metadata-repository-api + 1.2-SNAPSHOT + + + org.apache.archiva + metadata-repository-file + 1.2-SNAPSHOT + + + org.apache.archiva + archiva-repository-layer + + + diff --git a/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java b/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java new file mode 100644 index 000000000..1a65b7c4d --- /dev/null +++ b/MRM-1025/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/src/main/java/org/apache/archiva/consumers/metadata/ArchivaMetadataCreationConsumer.java @@ -0,0 +1,195 @@ +package org.apache.archiva.consumers.metadata; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.File; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.apache.archiva.metadata.model.ArtifactMetadata; +import org.apache.archiva.metadata.model.ProjectBuildMetadata; +import org.apache.archiva.metadata.model.ProjectMetadata; +import org.apache.archiva.metadata.repository.MetadataRepository; +import org.apache.archiva.metadata.repository.file.FileMetadataRepository; +import org.apache.maven.archiva.configuration.ArchivaConfiguration; +import org.apache.maven.archiva.configuration.ConfigurationNames; +import org.apache.maven.archiva.configuration.FileTypes; +import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; +import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer; +import org.apache.maven.archiva.consumers.ConsumerException; +import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer; +import org.apache.maven.archiva.model.ArtifactReference; +import org.apache.maven.archiva.repository.ManagedRepositoryContent; +import org.apache.maven.archiva.repository.layout.LayoutException; +import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; +import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; +import org.codehaus.plexus.registry.Registry; +import org.codehaus.plexus.registry.RegistryListener; + +/** + * Take an artifact off of disk and put it into the metadata repository. + * + * @version $Id: ArtifactUpdateDatabaseConsumer.java 718864 2008-11-19 06:33:35Z brett $ + * @plexus.component role="org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer" + * role-hint="create-archiva-metadata" instantiation-strategy="per-lookup" + */ +public class ArchivaMetadataCreationConsumer + extends AbstractMonitoredConsumer + implements KnownRepositoryContentConsumer, RegistryListener, Initializable +{ + /** + * @plexus.configuration default-value="create-archiva-metadata" + */ + private String id; + + /** + * @plexus.configuration default-value="Create basic metadata for Archiva to be able to reference the artifact" + */ + private String description; + + /** + * @plexus.requirement + */ + private ArchivaConfiguration configuration; + + /** + * @plexus.requirement + */ + private FileTypes filetypes; + + private Date whenGathered; + + /** + * @plexus.requirement + */ + private ManagedRepositoryContent repository; + + private List includes = new ArrayList(); + + private MetadataRepository metadataRepository; + + public String getId() + { + return this.id; + } + + public String getDescription() + { + return this.description; + } + + public boolean isPermanent() + { + return true; + } + + public List getExcludes() + { + return getDefaultArtifactExclusions(); + } + + public List getIncludes() + { + return this.includes; + } + + public void beginScan( ManagedRepositoryConfiguration repo, Date whenGathered ) + throws ConsumerException + { + this.repository.setRepository( repo ); + this.metadataRepository = new FileMetadataRepository( new File( repository.getRepoRoot(), ".metadata" ) ); + this.whenGathered = whenGathered; + } + + public void processFile( String path ) + throws ConsumerException + { + // note that we do minimal processing including checksums and POM information for performance of + // the initial scan. Any request for this information will be intercepted and populated on-demand + // or picked up by subsequent scans + ArtifactReference artifact; + try + { + artifact = repository.toArtifactReference( path ); + } + catch ( LayoutException e ) + { + throw new ConsumerException( e.getMessage(), e ); + } + + File file = new File( repository.getRepoRoot(), path ); + + // TODO: needed in a more central place, but trying to isolate impact to start with + String metadataId = artifact.getGroupId() + "." + artifact.getArtifactId(); + + ProjectMetadata project = new ProjectMetadata(); + project.setId( metadataId ); + + ProjectBuildMetadata build = new ProjectBuildMetadata(); + build.setId( artifact.getVersion() ); + + ArtifactMetadata artifactMeta = new ArtifactMetadata(); + artifactMeta.setId( file.getName() ); + artifactMeta.setUpdated( file.lastModified() ); + artifactMeta.setSize( file.length() ); + + build.addArtifact( artifactMeta ); + project.addBuild( build ); + + // TODO: store "whenGathered" + + // read the metadata and update it if it is newer or doesn't exist + metadataRepository.update( project ); + } + + public void completeScan() + { + /* do nothing */ + } + + public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue ) + { + if ( ConfigurationNames.isRepositoryScanning( propertyName ) ) + { + initIncludes(); + } + } + + public void beforeConfigurationChange( Registry registry, String propertyName, Object propertyValue ) + { + /* do nothing */ + } + + private void initIncludes() + { + includes.clear(); + + includes.addAll( filetypes.getFileTypePatterns( FileTypes.ARTIFACTS ) ); + } + + public void initialize() + throws InitializationException + { + configuration.addChangeListener( this ); + + initIncludes(); + } +} diff --git a/MRM-1025/archiva-modules/archiva-base/archiva-consumers/pom.xml b/MRM-1025/archiva-modules/archiva-base/archiva-consumers/pom.xml index 4d6752164..5ffbb9406 100644 --- a/MRM-1025/archiva-modules/archiva-base/archiva-consumers/pom.xml +++ b/MRM-1025/archiva-modules/archiva-base/archiva-consumers/pom.xml @@ -1,18 +1,21 @@ @@ -35,6 +38,7 @@ archiva-lucene-consumers archiva-signature-consumers archiva-dependency-tree-consumer + archiva-metadata-consumer diff --git a/MRM-1025/archiva-modules/archiva-web/archiva-webapp/pom.xml b/MRM-1025/archiva-modules/archiva-web/archiva-webapp/pom.xml index f353e46b0..768236b3d 100644 --- a/MRM-1025/archiva-modules/archiva-web/archiva-webapp/pom.xml +++ b/MRM-1025/archiva-modules/archiva-web/archiva-webapp/pom.xml @@ -70,6 +70,12 @@ org.apache.archiva archiva-database-consumers + + org.apache.archiva + archiva-metadata-consumer + 1.2-SNAPSHOT + runtime + org.apache.archiva archiva-lucene-consumers