You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/09/16 18:28:52 UTC

svn commit: r695968 [1/3] - in /maven/sandbox/trunk/wagon/wagon-mercury: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/maven/ src/main/java/org/apache/maven/wagon/ src/main/java/org/apache/maven/...

Author: ogusakov
Date: Tue Sep 16 09:28:47 2008
New Revision: 695968

URL: http://svn.apache.org/viewvc?rev=695968&view=rev
Log:
added Mercury wagon provider

Added:
    maven/sandbox/trunk/wagon/wagon-mercury/pom.xml
    maven/sandbox/trunk/wagon/wagon-mercury/src/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/MercuryWagon.java
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/StupidWagonObserverAdapter.java
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/StupidWagonObserverFactory.java
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/TransferEventDebugger.java
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/META-INF/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/META-INF/plexus/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/META-INF/plexus/components.xml
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/org/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/org/apache/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/org/apache/maven/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/org/apache/maven/wagon/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/org/apache/maven/wagon/mercury/
    maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/org/apache/maven/wagon/mercury/Messages.properties
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/java/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/java/org/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/java/org/apache/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/java/org/apache/maven/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/java/org/apache/maven/wagon/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/java/org/apache/maven/wagon/mercury/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/java/org/apache/maven/wagon/mercury/MercuryWagonTest.java
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/conf/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/conf/plexus.properties
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/conf/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/conf/nexus.xml
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/conf/security.xml
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-local/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-local/_a.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-local/_a_1.del   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-local/_b.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-local/segments.gen   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-local/segments_p   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-local/timestamp   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-local/write.lock
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-remote/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-remote/_a.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-remote/_a_1.del   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-remote/_b.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-remote/segments.gen   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-remote/segments_p   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-remote/timestamp   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/apache-snapshots-remote/write.lock
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-local/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-local/_a.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-local/_a_1.del   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-local/_b.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-local/segments.gen   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-local/segments_p   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-local/timestamp   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-local/write.lock
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-m1-local/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-m1-local/_a.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-m1-local/_a_1.del   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-m1-local/_b.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-m1-local/segments.gen   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-m1-local/segments_p   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-m1-local/timestamp   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-m1-local/write.lock
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-remote/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-remote/_a.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-remote/_a_1.del   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-remote/_b.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-remote/segments.gen   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-remote/segments_p   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-remote/timestamp   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/central-remote/write.lock
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-local/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-local/_a.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-local/_a_1.del   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-local/_b.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-local/segments.gen   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-local/segments_p   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-local/timestamp   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-local/write.lock
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-remote/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-remote/_a.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-remote/_a_1.del   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-remote/_b.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-remote/segments.gen   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-remote/segments_p   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-remote/timestamp   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/codehaus-snapshots-remote/write.lock
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-merged/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-merged/_a.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-merged/_a_1.del   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-merged/_b.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-merged/segments.gen   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-merged/segments_p   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-merged/timestamp   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-merged/write.lock
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-snapshots-merged/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-snapshots-merged/_a.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-snapshots-merged/_a_1.del   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-snapshots-merged/_b.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-snapshots-merged/segments.gen   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-snapshots-merged/segments_p   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-snapshots-merged/timestamp   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/public-snapshots-merged/write.lock
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/releases-local/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/releases-local/_a.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/releases-local/_a_1.del   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/releases-local/_b.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/releases-local/segments.gen   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/releases-local/segments_p   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/releases-local/timestamp   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/releases-local/write.lock
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/snapshots-local/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/snapshots-local/_a.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/snapshots-local/_a_1.del   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/snapshots-local/_b.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/snapshots-local/segments.gen   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/snapshots-local/segments_p   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/snapshots-local/timestamp   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/snapshots-local/write.lock
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/test-local/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/test-local/_0.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/test-local/segments.gen   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/test-local/segments_3   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/test-local/write.lock
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/thirdparty-local/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/thirdparty-local/_a.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/thirdparty-local/_a_1.del   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/thirdparty-local/_b.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/thirdparty-local/segments.gen   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/thirdparty-local/segments_p   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/thirdparty-local/timestamp   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/indexer/thirdparty-local/write.lock
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/storage/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/storage/apache-snapshots/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/storage/central/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/storage/central-m1/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/storage/codehaus-snapshots/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/storage/releases/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/storage/snapshots/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/storage/test/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/storage/thirdparty/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/template-store/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/template-store/repository-default_hosted_release.xml
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/template-store/repository-default_hosted_snapshot.xml
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/template-store/repository-default_proxy_release.xml
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/template-store/repository-default_proxy_snapshot.xml
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/template-store/repositoryShadow-default_virtual.xml
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/timeline/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/timeline/_h.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/timeline/_i.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/timeline/_j.cfs   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/timeline/segments.gen   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/timeline/segments_15   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/timeline/write.lock
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/resources/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/resources/META-INF/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/resources/META-INF/plexus/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/resources/META-INF/plexus/components.xml
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/resources/pgp/
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/resources/pgp/pubring.gpg   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/resources/pgp/secring.gpg   (with props)
    maven/sandbox/trunk/wagon/wagon-mercury/src/test/resources/test.properties
Modified:
    maven/sandbox/trunk/wagon/wagon-mercury/   (props changed)

Propchange: maven/sandbox/trunk/wagon/wagon-mercury/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Sep 16 09:28:47 2008
@@ -0,0 +1,4 @@
+.settings
+target
+.classpath
+.project

Added: maven/sandbox/trunk/wagon/wagon-mercury/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/wagon/wagon-mercury/pom.xml?rev=695968&view=auto
==============================================================================
--- maven/sandbox/trunk/wagon/wagon-mercury/pom.xml (added)
+++ maven/sandbox/trunk/wagon/wagon-mercury/pom.xml Tue Sep 16 09:28:47 2008
@@ -0,0 +1,276 @@
+<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">
+  <parent>
+    <artifactId>wagon</artifactId>
+    <groupId>org.apache.maven.wagon</groupId>
+    <version>1.0-beta-4</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>wagon-mercury</artifactId>
+  <name>Maven Wagon Mercury implementation</name>
+  <version>1.0.0-alpha-1-SNAPSHOT</version>
+  
+  <properties>
+    <mercury.version>1.0.0-alpha-1-SNAPSHOT</mercury.version>
+    <plexus.appbooter.version>1.4</plexus.appbooter.version>
+    <plexus.container.version>1.0-alpha-47</plexus.container.version>
+    <plexus.utils.version>1.5.1</plexus.utils.version>
+    <nexus.version>1.0.0</nexus.version>
+
+    <nexus-security-enabled>false</nexus-security-enabled>
+
+    <bundle-expanded-dir>target</bundle-expanded-dir>
+    <config-expanded-dir>target/test-nexus-config</config-expanded-dir>
+
+    <nexus-relative-basedir>${bundle-expanded-dir}/nexus-webapp-${nexus.version}</nexus-relative-basedir>
+    <nexus-abs-basedir>${project.build.directory}/nexus-webapp-${nexus.version}</nexus-abs-basedir>
+
+    <config-target-dir>${nexus-abs-basedir}/runtime/apps/nexus/conf</config-target-dir>
+    <work-target-dir>${nexus-abs-basedir}/runtime/work</work-target-dir>
+    <nexus-plexus-config-file>${nexus-abs-basedir}/conf/plexus.xml</nexus-plexus-config-file>
+
+    <nexus-application-protocol>http</nexus-application-protocol>
+    <nexus-application-host>localhost</nexus-application-host>
+    <nexus-application-name>nexus</nexus-application-name>
+    <nexus-application-port>8091</nexus-application-port>
+    <jetty-application-host>0.0.0.0</jetty-application-host>
+
+    <nexus-base-url>${nexus-application-protocol}://${nexus-application-host}:${nexus-application-port}/${nexus-application-name}/</nexus-base-url>
+
+    <nexus-control-port>33002</nexus-control-port>
+  </properties>
+
+  <build>
+
+    <resources>
+      <resource>
+        <directory>src/main/java</directory>
+        <filtering>false</filtering>
+        <includes>
+            <include>**/*.properties</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>src/main/resources</directory>
+        <filtering>false</filtering>
+      </resource>
+    </resources>
+    
+    <testResources>
+
+      <testResource>
+        <directory>src/test/resources</directory>
+        <filtering>true</filtering>
+      </testResource>
+ 
+      <testResource>
+        <directory>src/test/nexus</directory>
+        <filtering>false</filtering>
+        <excludes>
+            <exclude>work/conf/**</exclude>
+        </excludes>
+        <targetPath>../nexus-webapp-${nexus.version}/runtime</targetPath>
+      </testResource>
+ 
+      <testResource>
+        <directory>src/test/nexus</directory>
+        <filtering>true</filtering>
+        <includes>
+            <include>work/conf/**</include>
+        </includes>
+        <targetPath>../nexus-webapp-${nexus.version}/runtime</targetPath>
+      </testResource>
+ 
+      <testResource>
+        <directory>src/test/nexus/conf</directory>
+        <filtering>true</filtering>
+        <targetPath>../nexus-webapp-${nexus.version}/conf</targetPath>
+      </testResource>
+
+    </testResources>
+
+    <plugins>
+      
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.5</source>
+          <target>1.5</target>
+          <includes>
+            <include>**/*.java</include>
+            <include>**/*.properties</include>
+          </includes>
+        </configuration>
+      </plugin>
+      
+      <plugin>
+        <groupId>org.codehaus.plexus</groupId>
+        <artifactId>plexus-maven-plugin</artifactId>
+        <version>1.3.5</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>descriptor</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      
+      <plugin>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <version>2.0</version>
+        <executions>
+          <execution>
+            <id>unpack-bundle</id>
+            <phase>generate-resources</phase>
+            <goals>
+              <goal>unpack-dependencies</goal>
+            </goals>
+            <configuration>
+              <includeArtifactIds>nexus-webapp</includeArtifactIds>
+              <outputDirectory>${bundle-expanded-dir}</outputDirectory>
+              <excludes>**/conf/plexus.properties</excludes>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>2.4</version>
+        <configuration>
+          <skip>true</skip>
+        </configuration>
+        <executions>
+
+          <execution>
+            <id>test</id>
+            <phase>test</phase>
+            <goals>
+              <goal>test</goal>
+            </goals>
+            <configuration>
+              <skip>true</skip>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+ 
+      <plugin>
+        <artifactId>maven-shade-plugin</artifactId>
+        <version>1.1</version>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <finalName>${project.artifactId}-${project.version}-uber</finalName>
+              <keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope>
+              <createDependencyReducedPom>true</createDependencyReducedPom>
+              <artifactSet>
+                <includes>
+
+                  <include>org.apache.maven.mercury:mercury-crypto-api</include>
+                  <include>org.apache.maven.mercury:mercury-crypto-basic</include>
+                  <include>org.apache.maven.mercury:mercury-transport-api</include>
+                  <include>org.apache.maven.mercury:mercury-transport-http</include>
+                  <include>org.apache.maven.mercury:mercury-util</include>
+
+                  <include>org.mortbay.jetty:jetty</include>
+                  <include>org.mortbay.jetty:jetty-client</include>
+                  <include>org.mortbay.jetty:jetty-ssl</include>
+                  <include>org.mortbay.jetty:jetty-util</include>
+                  <include>org.mortbay.jetty:servlet-api</include>
+
+                  <include>org.codehaus.plexus:plexus-i18n</include>
+
+                  <include>org.slf4j:slf4j-api</include>
+                  <include>org.slf4j:slf4j-jdk14</include>
+                  
+                </includes>
+                
+                <excludes>
+                  <exclude>org.codehaus.plexus:plexus-component-api</exclude>
+                  <exclude>org.bouncycastle:bcprov-jdk15</exclude>
+                  <exclude>org.bouncycastle:bcpg-jdk15</exclude>
+                  <exclude>bouncycastle:bcprov-jdk15</exclude>
+                  <exclude>bouncycastle:bcpg-jdk15</exclude>
+                </excludes>
+                
+              </artifactSet>
+
+              <filters>
+                <filter>
+                  <excludes>
+                    <exclude>/META-INF/BCKEY.DSA</exclude> 
+                    <exclude>/META-INF/BCKEY.SF</exclude> 
+                  </excludes>
+                </filter>
+              </filters>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      
+    </plugins>
+  </build>
+      
+  
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-provider-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-provider-test</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.maven.mercury</groupId>
+      <artifactId>mercury-transport-http</artifactId>
+      <version>${mercury.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.maven.mercury</groupId>
+      <artifactId>mercury-util</artifactId>
+      <version>${mercury.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-container-default</artifactId>
+      <version>${plexus.container.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+      <version>${plexus.utils.version}</version>
+    </dependency>
+ 
+    <dependency>
+      <groupId>org.sonatype.nexus</groupId>
+      <artifactId>nexus-webapp</artifactId>
+      <version>${nexus.version}</version>
+      <classifier>bundle</classifier>
+      <type>zip</type>
+      <scope>provided</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.sonatype.appbooter</groupId>
+      <artifactId>plexus-forked-app-booter</artifactId>
+      <version>${plexus.appbooter.version}</version>
+      <scope>test</scope>
+    </dependency>
+    
+  </dependencies>
+</project>

Added: maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/MercuryWagon.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/MercuryWagon.java?rev=695968&view=auto
==============================================================================
--- maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/MercuryWagon.java (added)
+++ maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/MercuryWagon.java Tue Sep 16 09:28:47 2008
@@ -0,0 +1,376 @@
+package org.apache.maven.wagon.mercury;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Properties;
+import java.util.Set;
+
+import org.apache.maven.mercury.crypto.api.StreamObserverFactory;
+import org.apache.maven.mercury.crypto.api.StreamVerifierAttributes;
+import org.apache.maven.mercury.crypto.api.StreamVerifierException;
+import org.apache.maven.mercury.crypto.api.StreamVerifierFactory;
+import org.apache.maven.mercury.crypto.pgp.PgpStreamVerifierFactory;
+import org.apache.maven.mercury.spi.http.client.HttpClientException;
+import org.apache.maven.mercury.spi.http.client.deploy.DefaultDeployRequest;
+import org.apache.maven.mercury.spi.http.client.deploy.DefaultDeployer;
+import org.apache.maven.mercury.spi.http.client.deploy.DeployResponse;
+import org.apache.maven.mercury.spi.http.client.retrieve.DefaultRetrievalRequest;
+import org.apache.maven.mercury.spi.http.client.retrieve.DefaultRetriever;
+import org.apache.maven.mercury.spi.http.client.retrieve.RetrievalResponse;
+import org.apache.maven.mercury.transport.api.Binding;
+import org.apache.maven.mercury.transport.api.Credentials;
+import org.apache.maven.mercury.transport.api.Server;
+import org.apache.maven.wagon.AbstractWagon;
+import org.apache.maven.wagon.ConnectionException;
+import org.apache.maven.wagon.ResourceDoesNotExistException;
+import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.Wagon;
+import org.apache.maven.wagon.authentication.AuthenticationException;
+import org.apache.maven.wagon.authentication.AuthenticationInfo;
+import org.apache.maven.wagon.authorization.AuthorizationException;
+import org.apache.maven.wagon.events.TransferEvent;
+import org.apache.maven.wagon.events.TransferEventSupport;
+import org.apache.maven.wagon.events.TransferListener;
+import org.apache.maven.wagon.observers.ChecksumObserver;
+import org.apache.maven.wagon.proxy.ProxyInfoProvider;
+import org.apache.maven.wagon.repository.Repository;
+import org.apache.maven.wagon.resource.Resource;
+import org.codehaus.plexus.i18n.DefaultLanguage;
+import org.codehaus.plexus.i18n.Language;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *    plexus.component
+ *    role-hint="http"
+ *    instantiation-strategy="per-lookup"
+ *    description="Mercury based wagon implementation"
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class MercuryWagon
+extends AbstractWagon
+implements Wagon
+{
+  public static final String SYSTEM_PARAMETER_DEBUG_TRANSFER = "maven.mercury.wagon.debug.transfer";
+  private boolean debugTransfer = Boolean.parseBoolean( System.getProperty( SYSTEM_PARAMETER_DEBUG_TRANSFER, "false" ) );
+
+  public static final String SYSTEM_PARAMETER_PGP_CONGIG = "maven.mercury.wagon.pgp.config";
+  private String pgpConfig = System.getProperty( SYSTEM_PARAMETER_PGP_CONGIG, null );
+
+  private static final Logger _log = LoggerFactory.getLogger(MercuryWagon.class);
+  private static final Language _lang = new DefaultLanguage( MercuryWagon.class );
+  
+  private Server server;
+  private DefaultRetriever retriever;
+  private DefaultDeployer deployer;
+  
+  private List<TransferEvent> events = new ArrayList<TransferEvent>(8);
+  
+  /**
+   * 
+   */
+  public MercuryWagon()
+  {
+    _log.debug( "\n===============> MercuryWagon instantiated, repository "+repository);
+  }
+  
+  public MercuryWagon( Server server )
+  throws IllegalArgumentException
+  {
+    init( server );
+  }
+
+  private void init( Server server )
+  throws IllegalArgumentException
+  {
+    if( server == null )
+      throw new IllegalArgumentException( _lang.getMessage( "null.read.server" ) );
+    
+    if( server.getURL() == null )
+      throw new IllegalArgumentException( _lang.getMessage( "null.read.server.url", server.getId() ) );
+    
+    this.server = server;
+    
+    Set<StreamVerifierFactory>[] pgpFac = null;
+    
+    try
+    {
+      pgpFac = readPgpConfig();
+      this.server.setReaderStreamVerifierFactories( pgpFac[0] );
+      this.server.setWriterStreamVerifierFactories( pgpFac[1] );
+//_log.info( "ReaderFacs="+this.server.getReaderStreamVerifierFactories()+"\nWriterFacs="+this.server.getWriterStreamVerifierFactories() );
+    }
+    catch( Exception ex )
+    {
+      throw new IllegalArgumentException(ex);
+    }
+
+    Set<StreamObserverFactory> rf = server.getReaderStreamObserverFactories();
+    if( rf == null )
+    {
+      rf = new HashSet<StreamObserverFactory>(1);
+      this.server.setReaderStreamObserverFactories( rf );
+    }
+    rf.add( new StupidWagonObserverFactory( this ) );
+    
+    HashSet<Server> servers = new HashSet<Server>(1);
+    servers.add( this.server );
+    
+    Set<StreamObserverFactory> wf = this.server.getWriterStreamObserverFactories();
+    if( wf == null )
+    {
+      wf = new HashSet<StreamObserverFactory>(1);
+      this.server.setReaderStreamObserverFactories( wf );
+    }
+    wf.add( new StupidWagonObserverFactory( this ) );
+
+    try
+    {
+      retriever = new DefaultRetriever();
+    }
+    catch( HttpClientException e )
+    {
+      throw new IllegalArgumentException(e);
+    }
+    retriever.setServers( servers );
+    
+    try
+    {
+      deployer = new DefaultDeployer();
+    }
+    catch( HttpClientException e )
+    {
+      throw new IllegalArgumentException(e);
+    }
+    deployer.setServers( servers );
+  }
+
+  public void get( String resourceName, File destination )
+  throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+  {
+    if( _log.isDebugEnabled())
+      _log.debug("\n------------\nMercuryWagon getting "+resourceName+" into "+destination);
+
+    Binding binding = null;
+    
+    try
+    {
+      binding = new Binding( new URL(server.getURL().toString()+'/'+resourceName), destination );
+    }
+    catch( MalformedURLException e )
+    {
+      throw new TransferFailedException( e.getMessage() );
+    }
+    
+    DefaultRetrievalRequest request = new DefaultRetrievalRequest();
+    request.addBinding( binding );
+    
+    Resource resource = new Resource( resourceName );
+
+    fireGetInitiated( resource, destination );
+
+    resource.setLastModified( 0l );
+
+    fireGetStarted( resource, destination );
+    
+    pushEvent( new TransferEvent(this, resource, TransferEvent.TRANSFER_PROGRESS, TransferEvent.REQUEST_GET) );
+
+    RetrievalResponse response = retriever.retrieve( request );
+    
+    fireGetCompleted( resource, destination );
+
+    if( response.hasExceptions() )
+    {
+      _log.error( response.getExceptions().toString() );
+      throw new ResourceDoesNotExistException( response.getExceptions().toString() );
+    }
+
+    if( _log.isDebugEnabled())
+      _log.debug("\n------------\nMercuryWagon got "+resourceName+" into "+destination);
+    
+  }
+
+  public boolean getIfNewer( String resourceName, File destination, long timestamp )
+  throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+  {
+    get( resourceName, destination );
+    return true;
+  }
+
+  public void put( File source, String destination )
+  throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+  {
+    
+    Resource resource = new Resource( destination );
+    
+    firePutInitiated( resource, source );
+    
+    resource.setContentLength( source.length() );
+    
+    resource.setLastModified( source.lastModified() );
+
+    Binding binding = null;
+    try
+    {
+      binding = new Binding( new URL(repository.getUrl()+'/'+destination), source );
+    }
+    catch( MalformedURLException e )
+    {
+      throw new TransferFailedException( e.getMessage() );
+    }
+    
+    HashSet<Binding> bindings = new HashSet<Binding>(1);
+    bindings.add( binding );
+    
+    DefaultDeployRequest request = new DefaultDeployRequest();
+    request.setBindings( bindings );
+    
+    firePutStarted( resource, source );
+    
+    pushEvent( new TransferEvent(this, resource, TransferEvent.TRANSFER_PROGRESS, TransferEvent.REQUEST_PUT) );
+
+    DeployResponse response = deployer.deploy( request );
+
+    firePutCompleted( resource, source );
+
+    if( response.hasExceptions() )
+      throw new TransferFailedException( response.getExceptions().toString() );
+  }
+
+  protected void closeConnection()
+  throws ConnectionException
+  {
+    fireSessionLoggedOff();
+    fireSessionDisconnecting();
+    fireSessionDisconnected();
+  }
+  
+  @Override
+  public void openConnection()
+  throws ConnectionException, AuthenticationException
+  {
+    openConnectionInternal();
+  }
+  
+  protected void openConnectionInternal()
+  throws ConnectionException, AuthenticationException
+  {
+    if(_log.isDebugEnabled())
+      _log.debug( "Opening connection to repository "+repository );
+
+    try
+    {
+      String url = 'h'+repository.getUrl().substring( 1 );
+      boolean requireEncryption = url.startsWith( "https" ) ? true : false;
+      Credentials user = null;
+
+      if( repository.getUsername() != null )
+        user = new Credentials( repository.getUsername(), repository.getPassword() );
+      
+      Server server = new Server( repository.getId(), new URL( url ), requireEncryption, false, user );
+      
+      init( server );
+      
+      if( debugTransfer )
+        transferEventSupport.addTransferListener( new TransferEventDebugger() );
+    }
+    catch( MalformedURLException e )
+    {
+      throw new ConnectionException( e.getMessage() );
+    }
+  }
+  
+  @Override
+  public void addTransferListener( TransferListener listener )
+  {
+    super.addTransferListener( listener );
+  }
+
+  void bytesReady( TransferEvent transferEvent, byte [] buf, int len )
+  {
+    fireTransferProgress( transferEvent, buf, len );
+  }
+
+  /**
+   * @return
+   */
+  public TransferEvent popEvent()
+  {
+    if( events.isEmpty() )
+      return null;
+    
+    TransferEvent event = events.get( 0 );
+    events.remove( 0 );
+    
+    return event;
+  }
+
+  public void pushEvent( TransferEvent event)
+  {
+    events.add( 0, event );
+  }
+  
+  private final Set<StreamVerifierFactory>[] readPgpConfig()
+  throws FileNotFoundException, IOException, StreamVerifierException
+  {
+    Set<StreamVerifierFactory> [] res = new Set [] { null, null };
+    
+    if( pgpConfig == null )
+      return res;
+    
+    _log.info( "PGP signature configuration will be read from "+pgpConfig );
+    
+    Properties pgpProps = new Properties();
+    pgpProps.load( new FileInputStream(pgpConfig) );
+
+    StreamVerifierAttributes readerAttr = new StreamVerifierAttributes( PgpStreamVerifierFactory.DEFAULT_EXTENSION
+        , Boolean.parseBoolean( pgpProps.getProperty( "reader.lenient", "true" ) )
+        , false
+                                                      );
+    String readerKeyring = pgpProps.getProperty( "reader.keyring" );
+    
+    if( readerKeyring != null )
+    {
+      StreamVerifierFactory rf = new PgpStreamVerifierFactory( readerAttr, new FileInputStream(readerKeyring) );
+if( _log.isDebugEnabled() )
+  _log.debug( "public key file: "+new File(readerKeyring).getAbsolutePath() );
+      
+      Set<StreamVerifierFactory> rs = new HashSet<StreamVerifierFactory>(1);
+      rs.add( rf );
+      res[0] = rs;
+    }
+
+    StreamVerifierAttributes writerAttr = new StreamVerifierAttributes( PgpStreamVerifierFactory.DEFAULT_EXTENSION
+        , Boolean.parseBoolean( pgpProps.getProperty( "writer.lenient", "true" ) )
+        , false
+                                                      );
+    String writerKeyring = pgpProps.getProperty( "writer.keyring" );
+    String writerKeyId = pgpProps.getProperty( "writer.key.id" );
+    String writerKeyringPass = pgpProps.getProperty( "writer.key.pass" );
+
+    if( writerKeyring != null && writerKeyId != null && writerKeyringPass != null )
+    {
+if( _log.isDebugEnabled() )
+  _log.debug( "secret key file: "+new File(writerKeyring).getAbsolutePath() );
+      StreamVerifierFactory wf = new PgpStreamVerifierFactory( writerAttr, new FileInputStream(writerKeyring)
+                                                              , writerKeyId, writerKeyringPass );
+      
+      Set<StreamVerifierFactory> ws = new HashSet<StreamVerifierFactory>(1);
+      ws.add( wf );
+      res[1] = ws;
+    }
+    
+    return res;
+  }
+
+}

Added: maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/StupidWagonObserverAdapter.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/StupidWagonObserverAdapter.java?rev=695968&view=auto
==============================================================================
--- maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/StupidWagonObserverAdapter.java (added)
+++ maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/StupidWagonObserverAdapter.java Tue Sep 16 09:28:47 2008
@@ -0,0 +1,65 @@
+package org.apache.maven.wagon.mercury;
+
+import org.apache.maven.mercury.crypto.api.StreamObserver;
+import org.apache.maven.mercury.crypto.api.StreamObserverException;
+import org.apache.maven.mercury.crypto.api.StreamVerifierAttributes;
+import org.apache.maven.mercury.crypto.api.StreamVerifierException;
+import org.apache.maven.mercury.crypto.sha.SHA1Verifier;
+import org.apache.maven.wagon.events.TransferEvent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class StupidWagonObserverAdapter
+implements StreamObserver
+{
+  private static final Logger _log = LoggerFactory.getLogger(StupidWagonObserverAdapter.class);
+  byte [] buf = new byte[2048];
+
+  MercuryWagon wagon;
+  TransferEvent event;
+  
+  long length = -1L;
+  
+  public StupidWagonObserverAdapter( MercuryWagon wagon, TransferEvent event )
+  {
+    this.wagon = wagon;
+    this.event = event;
+    if( _log.isDebugEnabled() )
+      _log.debug( "|=========-> adapter for "+event.getResource().getName()+" is created" );
+  }
+
+  public void byteReady( int b )
+  throws StreamObserverException
+  {
+    bytesReady( new byte [] { (byte)b }, 0, 1 );
+  }
+
+  public void bytesReady( byte[] b, int off, int len )
+  throws StreamObserverException
+  {
+    if( len > buf.length )
+      buf = new byte[len];
+    
+    System.arraycopy( b, off, buf, 0, len );
+    wagon.bytesReady( event, buf, len );
+  }
+
+  public long getLength()
+  {
+    return length;
+  }
+
+  public void setLength( long length )
+  {
+    this.length = length;
+_log.info( "|=-> length is "+length );
+  }
+
+}

Added: maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/StupidWagonObserverFactory.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/StupidWagonObserverFactory.java?rev=695968&view=auto
==============================================================================
--- maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/StupidWagonObserverFactory.java (added)
+++ maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/StupidWagonObserverFactory.java Tue Sep 16 09:28:47 2008
@@ -0,0 +1,30 @@
+package org.apache.maven.wagon.mercury;
+
+import org.apache.maven.mercury.crypto.api.StreamObserver;
+import org.apache.maven.mercury.crypto.api.StreamObserverException;
+import org.apache.maven.mercury.crypto.api.StreamObserverFactory;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class StupidWagonObserverFactory
+implements StreamObserverFactory
+{
+  private MercuryWagon wagon;
+  
+  public StupidWagonObserverFactory( MercuryWagon wagon )
+  {
+    this.wagon = wagon;
+  }
+
+  public StreamObserver newInstance()
+  throws StreamObserverException
+  {
+    return new StupidWagonObserverAdapter( wagon, wagon.popEvent() );
+  }
+
+}

Added: maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/TransferEventDebugger.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/TransferEventDebugger.java?rev=695968&view=auto
==============================================================================
--- maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/TransferEventDebugger.java (added)
+++ maven/sandbox/trunk/wagon/wagon-mercury/src/main/java/org/apache/maven/wagon/mercury/TransferEventDebugger.java Tue Sep 16 09:28:47 2008
@@ -0,0 +1,81 @@
+package org.apache.maven.wagon.mercury;
+
+import org.apache.maven.wagon.events.TransferEvent;
+import org.apache.maven.wagon.events.TransferListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class TransferEventDebugger
+implements TransferListener
+{
+  public static final String SYSTEM_PARAMETER_DEBUG_TRANSFER_BYTES = "maven.mercury.wagon.debug.transfer.bytes";
+  private boolean debugTransferBytes = Boolean.parseBoolean( System.getProperty( SYSTEM_PARAMETER_DEBUG_TRANSFER_BYTES, "false" ) );
+
+  private static final Logger _log = LoggerFactory.getLogger(TransferEventDebugger.class);
+
+  /* (non-Javadoc)
+   * @see org.apache.maven.wagon.events.TransferListener#debug(java.lang.String)
+   */
+  public void debug(
+      String message )
+  {
+    // TODO Auto-generated method stub
+    
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.maven.wagon.events.TransferListener#transferCompleted(org.apache.maven.wagon.events.TransferEvent)
+   */
+  public void transferCompleted(
+      TransferEvent transferEvent )
+  {
+    _log.info("|=============>   completed: "+transferEvent.getResource().getName() );
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.maven.wagon.events.TransferListener#transferError(org.apache.maven.wagon.events.TransferEvent)
+   */
+  public void transferError(
+      TransferEvent transferEvent )
+  {
+    _log.info("|=============>   error: "+transferEvent.getResource().getName() );
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.maven.wagon.events.TransferListener#transferInitiated(org.apache.maven.wagon.events.TransferEvent)
+   */
+  public void transferInitiated(
+      TransferEvent transferEvent )
+  {
+    _log.info("|=============>   initialized: "+transferEvent.getResource().getName() );
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.maven.wagon.events.TransferListener#transferProgress(org.apache.maven.wagon.events.TransferEvent, byte[], int)
+   */
+  public void transferProgress(
+      TransferEvent transferEvent,
+      byte[] buffer,
+      int length )
+  {
+    if( debugTransferBytes )
+      _log.info("|=============>   ready "+length+" bytes : "+transferEvent.getResource().getName() );
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.maven.wagon.events.TransferListener#transferStarted(org.apache.maven.wagon.events.TransferEvent)
+   */
+  public void transferStarted(
+      TransferEvent transferEvent )
+  {
+    _log.info("|=============>   started: "+transferEvent.getResource().getName() );
+  }
+
+}

Added: maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/META-INF/plexus/components.xml?rev=695968&view=auto
==============================================================================
--- maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/META-INF/plexus/components.xml (added)
+++ maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/META-INF/plexus/components.xml Tue Sep 16 09:28:47 2008
@@ -0,0 +1,35 @@
+<!--
+  ~ 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.
+  -->
+
+<component-set>
+    <components>
+      <component>
+        <role>org.apache.maven.wagon.Wagon</role>
+        <role-hint>mttp</role-hint>
+        <implementation>org.apache.maven.wagon.mercury.MercuryWagon</implementation>
+        <instantiation-strategy>per-lookup</instantiation-strategy>
+      </component>
+      <component>
+        <role>org.apache.maven.wagon.Wagon</role>
+        <role-hint>mttps</role-hint>
+        <implementation>org.apache.maven.wagon.mercury.MercuryWagon</implementation>
+        <instantiation-strategy>per-lookup</instantiation-strategy>
+      </component>
+    </components>
+</component-set>

Added: maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/org/apache/maven/wagon/mercury/Messages.properties
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/org/apache/maven/wagon/mercury/Messages.properties?rev=695968&view=auto
==============================================================================
--- maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/org/apache/maven/wagon/mercury/Messages.properties (added)
+++ maven/sandbox/trunk/wagon/wagon-mercury/src/main/resources/org/apache/maven/wagon/mercury/Messages.properties Tue Sep 16 09:28:47 2008
@@ -0,0 +1,4 @@
+null.read.server=read server cannot be null
+null.read.server.url=read server {0} : URL cannot be null
+null.write.server=write server cannot be null
+null.write.server.url=write server {0} : URL cannot be null

Added: maven/sandbox/trunk/wagon/wagon-mercury/src/test/java/org/apache/maven/wagon/mercury/MercuryWagonTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/wagon/wagon-mercury/src/test/java/org/apache/maven/wagon/mercury/MercuryWagonTest.java?rev=695968&view=auto
==============================================================================
--- maven/sandbox/trunk/wagon/wagon-mercury/src/test/java/org/apache/maven/wagon/mercury/MercuryWagonTest.java (added)
+++ maven/sandbox/trunk/wagon/wagon-mercury/src/test/java/org/apache/maven/wagon/mercury/MercuryWagonTest.java Tue Sep 16 09:28:47 2008
@@ -0,0 +1,146 @@
+package org.apache.maven.wagon.mercury;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashSet;
+
+import org.apache.maven.mercury.crypto.api.StreamVerifierAttributes;
+import org.apache.maven.mercury.crypto.api.StreamVerifierFactory;
+import org.apache.maven.mercury.crypto.pgp.PgpStreamVerifierFactory;
+import org.apache.maven.mercury.crypto.sha.SHA1VerifierFactory;
+import org.apache.maven.mercury.transport.api.Credentials;
+import org.apache.maven.mercury.transport.api.Server;
+import org.apache.maven.mercury.util.FileUtil;
+import org.apache.maven.wagon.Wagon;
+import org.apache.maven.wagon.WagonTestCase;
+import org.codehaus.plexus.PlexusContainer;
+import org.sonatype.appbooter.ForkedAppBooter;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class MercuryWagonTest
+extends WagonTestCase
+{
+
+  public static final String TEST_NEXUS_ROLE = ForkedAppBooter.ROLE;
+  public static final String TEST_NEXUS_HINT = "NexusForkedAppBooter";
+
+  PlexusContainer plexus;
+  ForkedAppBooter nexusForkedAppBooter;
+  
+  String nexusReleasesTestDir = "./target/nexus-webapp-1.0.0/runtime/work/storage/releases";
+  String nexusReleasesTestUrl = "http://127.0.0.1:8091/nexus/content/repositories/releases";
+
+  String nexusSnapshotsTestDir = "./target/nexus-webapp-1.0.0/runtime/work/storage/snapshots";
+  String nexusSnapshotsTestUrl = "http://127.0.0.1:8091/nexus/content/repositories/snapshots";
+
+  String nexusTestUser = "admin";
+  String nexusTestPass = "admin123";
+  
+  protected static final String keyId   = "0EDB5D91141BC4F2";
+
+  protected static final String secretKeyFile = "/pgp/secring.gpg";
+  protected static final String publicKeyFile = "/pgp/pubring.gpg";
+  protected static final String secretKeyPass = "testKey82";
+  
+  PgpStreamVerifierFactory pgpF;
+  SHA1VerifierFactory      sha1F;
+  HashSet<StreamVerifierFactory> vFacPgp;
+  HashSet<StreamVerifierFactory> vFacSha1;
+  
+  Server server;
+
+  HashSet<StreamVerifierFactory> readFactories;
+  HashSet<StreamVerifierFactory> writeFactories;
+
+  private File targetDirectory;
+  
+  MercuryWagon wagon;
+  
+  //------------------------------------------------------------------------------
+  @Override
+  protected void setUp()
+  throws Exception
+  {
+    Credentials user = new Credentials( nexusTestUser, nexusTestPass );
+
+    server = new Server( "mercuryWagonTestRead", new URL(nexusReleasesTestUrl), false, false, user );
+    
+    // verifiers
+    readFactories = new HashSet<StreamVerifierFactory>();       
+    readFactories.add( 
+        new PgpStreamVerifierFactory(
+                new StreamVerifierAttributes( PgpStreamVerifierFactory.DEFAULT_EXTENSION, false, false )
+                , getClass().getResourceAsStream( publicKeyFile )
+                                    )
+                  );
+    readFactories.add( new SHA1VerifierFactory(false,false) );
+    server.setWriterStreamVerifierFactories(readFactories);
+
+    // verifiers
+    writeFactories = new HashSet<StreamVerifierFactory>();       
+    writeFactories.add( 
+        new PgpStreamVerifierFactory(
+                new StreamVerifierAttributes( PgpStreamVerifierFactory.DEFAULT_EXTENSION, false, false )
+                , getClass().getResourceAsStream( secretKeyFile )
+                , keyId
+                , secretKeyPass
+                                    )
+                  );
+    writeFactories.add( new SHA1VerifierFactory(false,false) );
+    server.setWriterStreamVerifierFactories(writeFactories);
+      
+    targetDirectory = new File(nexusReleasesTestDir);
+    FileUtil.delete( new File( targetDirectory, "org" ) );
+    
+    wagon = new MercuryWagon( server );
+
+    super.setUp();
+
+    plexus = getContainer();
+
+    assertNotNull( plexus );
+    
+    nexusForkedAppBooter = (ForkedAppBooter)plexus.lookup( TEST_NEXUS_ROLE, TEST_NEXUS_HINT  );
+    
+    nexusForkedAppBooter.start();
+
+  }
+  
+  @Override
+  protected void tearDown()
+  throws Exception
+  {
+    super.tearDown();
+    nexusForkedAppBooter.stop();
+  }
+  
+  @Override
+  protected Wagon getWagon()
+      throws Exception
+  {
+    return wagon;
+  }
+
+
+
+  @Override
+  protected String getProtocol()
+  {
+    return "http";
+  }
+
+  @Override
+  protected String getTestRepositoryUrl()
+      throws IOException
+  {
+    return nexusReleasesTestUrl;
+  }
+
+}

Added: maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/conf/plexus.properties
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/conf/plexus.properties?rev=695968&view=auto
==============================================================================
--- maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/conf/plexus.properties (added)
+++ maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/conf/plexus.properties Tue Sep 16 09:28:47 2008
@@ -0,0 +1,5 @@
+applicationPort=${nexus-application-port}
+runtime=${basedir}/runtime
+apps=${runtime}/apps
+nexus-work=${basedir}/../sonatype-work/nexus
+webapp=${runtime}/apps/nexus/webapp

Added: maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/conf/nexus.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/conf/nexus.xml?rev=695968&view=auto
==============================================================================
--- maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/conf/nexus.xml (added)
+++ maven/sandbox/trunk/wagon/wagon-mercury/src/test/nexus/work/conf/nexus.xml Tue Sep 16 09:28:47 2008
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<nexusConfiguration>
+  <version>1.0.5</version>
+
+  <security>
+    <enabled>${nexus-security-enabled}</enabled>
+    <anonymousAccessEnabled>false</anonymousAccessEnabled>
+    <realms>
+      <realm>default</realm>
+    </realms>
+  </security>
+
+  <globalConnectionSettings />
+  <restApi />
+  <httpProxy>
+    <enabled>true</enabled>
+  </httpProxy>
+  <routing>
+    <groups />
+  </routing>
+  <repositories>
+    <repository>
+      <id>central</id>
+      <name>Maven Central</name>
+      <artifactMaxAge>-1</artifactMaxAge>
+      <remoteStorage>
+        <url>http://repo1.maven.org/maven2/</url>
+      </remoteStorage>
+    </repository>
+    <repository>
+      <id>apache-snapshots</id>
+      <name>Apache Snapshots</name>
+      <repositoryPolicy>snapshot</repositoryPolicy>
+      <remoteStorage>
+        <url>http://people.apache.org/repo/m2-snapshot-repository</url>
+      </remoteStorage>
+    </repository>
+    <repository>
+      <id>codehaus-snapshots</id>
+      <name>Codehaus Snapshots</name>
+      <repositoryPolicy>snapshot</repositoryPolicy>
+      <remoteStorage>
+        <url>http://snapshots.repository.codehaus.org/</url>
+      </remoteStorage>
+    </repository>
+    <repository>
+      <id>releases</id>
+      <name>Releases</name>
+      <allowWrite>true</allowWrite>
+      <artifactMaxAge>-1</artifactMaxAge>
+    </repository>
+    <repository>
+      <id>snapshots</id>
+      <name>Snapshots</name>
+      <allowWrite>true</allowWrite>
+      <repositoryPolicy>snapshot</repositoryPolicy>
+    </repository>
+    <repository>
+      <id>thirdparty</id>
+      <name>3rd party</name>
+      <allowWrite>true</allowWrite>
+      <artifactMaxAge>-1</artifactMaxAge>
+    </repository>
+    <repository>
+      <id>test</id>
+      <name>test</name>
+      <allowWrite>true</allowWrite>
+      <checksumPolicy>ignore</checksumPolicy>
+    </repository>
+  </repositories>
+  <repositoryShadows>
+    <repositoryShadow>
+      <id>central-m1</id>
+      <name>Central M1 shadow</name>
+      <shadowOf>central</shadowOf>
+    </repositoryShadow>
+  </repositoryShadows>
+  <repositoryGrouping>
+    <pathMappings>
+      <pathMapping>
+        <id>inhouse-stuff</id>
+        <groupId>*</groupId>
+        <routePattern>.*/(com|org)/somecompany/.*</routePattern>
+        <routeType>inclusive</routeType>
+        <repositories>
+          <repository>snapshots</repository>
+          <repository>releases</repository>
+        </repositories>
+      </pathMapping>
+      <pathMapping>
+        <id>apache-stuff</id>
+        <groupId>*</groupId>
+        <routePattern>.*/org/some-oss/.*</routePattern>
+        <routeType>exclusive</routeType>
+        <repositories>
+          <repository>releases</repository>
+          <repository>snapshots</repository>
+        </repositories>
+      </pathMapping>
+    </pathMappings>
+    <repositoryGroups>
+      <repositoryGroup>
+        <groupId>public</groupId>
+        <name>Public Repositories</name>
+        <repositories>
+          <repository>releases</repository>
+          <repository>snapshots</repository>
+          <repository>thirdparty</repository>
+          <repository>central</repository>
+        </repositories>
+      </repositoryGroup>
+      <repositoryGroup>
+        <groupId>public-snapshots</groupId>
+        <name>Public Snapshot Repositories</name>
+        <repositories>
+          <repository>apache-snapshots</repository>
+          <repository>codehaus-snapshots</repository>
+        </repositories>
+      </repositoryGroup>
+    </repositoryGroups>
+  </repositoryGrouping>
+  <repositoryTargets>
+    <repositoryTarget>
+      <id>1</id>
+      <name>All (Maven2)</name>
+      <contentClass>maven2</contentClass>
+      <patterns>
+        <pattern>.*</pattern>
+      </patterns>
+    </repositoryTarget>
+    <repositoryTarget>
+      <id>2</id>
+      <name>All (Maven1)</name>
+      <contentClass>maven1</contentClass>
+      <patterns>
+        <pattern>.*</pattern>
+      </patterns>
+    </repositoryTarget>
+    <repositoryTarget>
+      <id>3</id>
+      <name>All but sources (Maven2)</name>
+      <contentClass>maven2</contentClass>
+      <patterns>
+        <pattern>(?!.*-sources.*).*</pattern>
+      </patterns>
+    </repositoryTarget>
+    <repositoryTarget>
+      <id>4</id>
+      <name>All Metadata (Maven2)</name>
+      <contentClass>maven2</contentClass>
+      <patterns>
+        <pattern>.*maven-metadata\.xml.*</pattern>
+      </patterns>
+    </repositoryTarget>
+  </repositoryTargets>
+  <smtpConfiguration>
+    <host>smtp-host</host>
+    <port>25</port>
+    <username>smtp-username</username>
+    <password>smtp-password</password>
+    <systemEmailAddress>system@nexus.org</systemEmailAddress>
+  </smtpConfiguration>
+</nexusConfiguration>