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 
+                 &lt;knownContentConsumer>simple-artifact-consumer&lt;/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);
+    }
+
+}