You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by oc...@apache.org on 2008/02/13 09:49:07 UTC
svn commit: r627310 - in
/maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype: ./ src/
src/main/ src/main/resources/ src/main/resources/META-INF/
src/main/resources/META-INF/maven/ src/main/resources/archetype-resources/
src/main/resources/ar...
Author: oching
Date: Wed Feb 13 00:49:05 2008
New Revision: 627310
URL: http://svn.apache.org/viewvc?rev=627310&view=rev
Log:
[MRM-654]
-applied patch with some revisions
Patch submitted by: Stephen Gargan
-archetype for use in creating artifact-consumer-plugin projects
Added:
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/pom.xml
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/META-INF/
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/META-INF/maven/
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/META-INF/maven/archetype.xml
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/pom.xml
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/main/
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/main/java/
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/main/java/consumer/
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/main/java/consumer/SimpleArtifactConsumer.java
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/test/
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/test/java/
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/test/java/consumer/
maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/test/java/consumer/SimpleArtifactConsumerTest.java
Added: maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/pom.xml?rev=627310&view=auto
==============================================================================
--- maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/pom.xml (added)
+++ maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/pom.xml Wed Feb 13 00:49:05 2008
@@ -0,0 +1,9 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-consumer-plugin-archetype</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ <name>Archiva Consumers :: Consumers Plugin Archetype</name>
+ <description>Simple archetype to create archiva consumers</description>
+</project>
Added: maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/META-INF/maven/archetype.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/META-INF/maven/archetype.xml?rev=627310&view=auto
==============================================================================
--- maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/META-INF/maven/archetype.xml (added)
+++ maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/META-INF/maven/archetype.xml Wed Feb 13 00:49:05 2008
@@ -0,0 +1,12 @@
+<archetype>
+ <id>archiva-consumer-plugin-archetype</id>
+ <sources>
+ <source>src/main/java/consumer/SimpleArtifactConsumer.java</source>
+ </sources>
+ <testSources>
+ <source>src/test/java/consumer/SimpleArtifactConsumerTest.java</source>
+ </testSources>
+ <testResources>
+ <source>src/test/resources/consumer/SimpleArtifactConsumerTest.xml</source>
+ </testResources>
+</archetype>
Added: maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/pom.xml?rev=627310&view=auto
==============================================================================
--- maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/pom.xml (added)
+++ maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/pom.xml Wed Feb 13 00:49:05 2008
@@ -0,0 +1,92 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>${groupId}</groupId>
+ <artifactId>${artifactId}</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ <name>Simple Archiva Consumer</name>
+ <url>http://maven.apache.org</url>
+ <description>
+ This is a simple consumer component which demonstrates how a
+ component can be plugged in Archiva.
+ </description>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-consumer-api</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-configuration</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-repository-layer</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-indexer</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.easymock</groupId>
+ <artifactId>easymock</artifactId>
+ <version>2.2</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <!--
+ This is required to be declared in the pom.
+ Generates the components.xml file which is needed for the consumer to be looked up by Archiva
+ -->
+ <plugin>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-maven-plugin</artifactId>
+ <version>1.3.5</version>
+ <executions>
+ <execution>
+ <id>generate</id>
+ <goals>
+ <goal>descriptor</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>package</id>
+ <phase>package</phase>
+ <configuration>
+ <tasks>
+ <echo>
+ Remember to add the the following to the knownconsumers section in ~/.m2/archiva.xml
+ <knownContentConsumer>simple-artifact-consumer</knownContentConsumer>
+ </echo>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added: maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/main/java/consumer/SimpleArtifactConsumer.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/main/java/consumer/SimpleArtifactConsumer.java?rev=627310&view=auto
==============================================================================
--- maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/main/java/consumer/SimpleArtifactConsumer.java (added)
+++ maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/main/java/consumer/SimpleArtifactConsumer.java Wed Feb 13 00:49:05 2008
@@ -0,0 +1,142 @@
+package org.example.consumer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+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.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;
+
+/**
+ * <code>SimpleArtifactConsumer</code>
+ *
+ * @plexus.component role="org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer"
+ * role-hint="simple-artifact-consumer" instantiation-strategy="per-lookup"
+ */
+public class SimpleArtifactConsumer
+ extends AbstractMonitoredConsumer
+ implements KnownRepositoryContentConsumer, RegistryListener, Initializable
+{
+ /**
+ * @plexus.configuration default-value="simple-artifact-consumer"
+ */
+ private String id;
+
+ /**
+ * @plexus.configuration default-value="Simple consumer to illustrate how to consume the contents of a repository."
+ */
+ private String description;
+
+ /**
+ * @plexus.requirement
+ */
+ private FileTypes filetypes;
+
+ /**
+ * @plexus.requirement
+ */
+ private ArchivaConfiguration configuration;
+
+ private List propertyNameTriggers = new ArrayList();
+
+ private List includes = new ArrayList();
+
+ /** current repository being scanned */
+ private ManagedRepositoryConfiguration repository;
+
+ public void beginScan( ManagedRepositoryConfiguration repository )
+ throws ConsumerException
+ {
+ this.repository = repository;
+ getLogger().info( "Beginning scan of repository [" + this.repository.getId() + "]" );
+ }
+
+ public void processFile( String path )
+ throws ConsumerException
+ {
+ getLogger().info( "Processing entry [" + path + "] from repository [" + this.repository.getId() + "]" );
+ }
+
+ public void completeScan()
+ {
+ getLogger().info( "Finished scan of repository [" + this.repository.getId() + "]" );
+ }
+
+ /**
+ * Used by archiva to determine if the consumer wishes to process all of a repository's entries or just those that
+ * have been modified since the last scan.
+ *
+ * @return boolean true if the consumer wishes to process all entries on each scan, false for only those modified
+ * since the last scan
+ */
+ public boolean isProcessUnmodified()
+ {
+ return super.isProcessUnmodified();
+ }
+
+ public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
+ {
+ if ( propertyNameTriggers.contains( propertyName ) )
+ {
+ initIncludes();
+ }
+ }
+
+ public void beforeConfigurationChange( Registry registry, String propertyName, Object propertyValue )
+ {
+ /* do nothing */
+ }
+
+ private void initIncludes()
+ {
+ includes.clear();
+ includes.addAll( filetypes.getFileTypePatterns( FileTypes.INDEXABLE_CONTENT ) );
+ }
+
+ public void initialize()
+ throws InitializationException
+ {
+ propertyNameTriggers = new ArrayList();
+ propertyNameTriggers.add( "repositoryScanning" );
+ propertyNameTriggers.add( "fileTypes" );
+ propertyNameTriggers.add( "fileType" );
+ propertyNameTriggers.add( "patterns" );
+ propertyNameTriggers.add( "pattern" );
+
+ configuration.addChangeListener( this );
+
+ initIncludes();
+ }
+
+ public String getId()
+ {
+ return this.id;
+ }
+
+ public String getDescription()
+ {
+ return this.description;
+ }
+
+ public List getExcludes()
+ {
+ return null;
+ }
+
+ public List getIncludes()
+ {
+ return this.includes;
+ }
+
+ public boolean isPermanent()
+ {
+ return false;
+ }
+}
Added: maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/test/java/consumer/SimpleArtifactConsumerTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/test/java/consumer/SimpleArtifactConsumerTest.java?rev=627310&view=auto
==============================================================================
--- maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/test/java/consumer/SimpleArtifactConsumerTest.java (added)
+++ maven/sandbox/trunk/archiva/archiva-consumer-plugin-archetype/src/main/resources/archetype-resources/src/test/java/consumer/SimpleArtifactConsumerTest.java Wed Feb 13 00:49:05 2008
@@ -0,0 +1,104 @@
+package org.example.consumer;
+
+/*
+ * 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 org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer;
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.logging.Logger;
+import org.easymock.EasyMock;
+
+/**
+ * <code>SimpleArtifactConsumerTest</code>
+ */
+public class SimpleArtifactConsumerTest
+ extends PlexusTestCase
+{
+ private SimpleArtifactConsumer consumer;
+
+ private File repoDir;
+
+ private ManagedRepositoryConfiguration testRepository;
+
+ private Logger mockLogger;
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ String consumerRole = KnownRepositoryContentConsumer.class.getName();
+ consumer = (SimpleArtifactConsumer) lookup( consumerRole, "simple-artifact-consumer" );
+
+ setUpMockRepository();
+ setupMockLogger();
+ }
+
+ private void setupMockLogger()
+ {
+ mockLogger = (Logger) EasyMock.createNiceMock(Logger.class);
+ consumer.enableLogging( mockLogger );
+ }
+
+ private void setUpMockRepository()
+ {
+ repoDir = new java.io.File( getBasedir(), "/target/test-consumer-repo" );
+ repoDir.mkdirs();
+ repoDir.deleteOnExit();
+
+ testRepository = new ManagedRepositoryConfiguration();
+ testRepository.setName( "Test-Consumer-Repository" );
+ testRepository.setId( "test-consumer-repository" );
+ testRepository.setLocation( repoDir.getAbsolutePath() );
+ }
+
+ public void testBeginScan()
+ throws Exception
+ {
+ mockLogger.info( "Beginning scan of repository [test-consumer-repository]" );
+ EasyMock.expectLastCall();
+ EasyMock.replay(mockLogger);
+
+ consumer.beginScan( testRepository );
+
+ EasyMock.verify();
+ }
+
+ public void testProcessFile()
+ throws Exception
+ {
+ mockLogger.info( "Beginning scan of repository [test-consumer-repository]" );
+ EasyMock.expectLastCall();
+ mockLogger.info( "Processing entry [org/simple/test/testartifact/testartifact/1.0/testartifact-1.0.pom]"
+ + " from repository [test-consumer-repository]" );
+ EasyMock.expectLastCall();
+ mockLogger.info( "Processing entry [org/simple/test/testartifact/testartifact/1.1/testartifact-1.1.pom]"
+ + " from repository [test-consumer-repository]" );
+ EasyMock.expectLastCall();
+ EasyMock.replay(mockLogger);
+
+ consumer.beginScan( testRepository );
+ consumer.processFile( "org/simple/test/testartifact/testartifact/1.0/testartifact-1.0.pom" );
+ consumer.processFile( "org/simple/test/testartifact/testartifact/1.1/testartifact-1.1.pom" );
+ EasyMock.verify(mockLogger);
+ }
+
+}