Added: maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/main/java/org/apache/maven/router/repository/WagonTransferListenerAdapter.java URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/main/java/org/apache/maven/router/repository/WagonTransferListenerAdapter.java?rev=1126854&view=auto ============================================================================== --- maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/main/java/org/apache/maven/router/repository/WagonTransferListenerAdapter.java (added) +++ maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/main/java/org/apache/maven/router/repository/WagonTransferListenerAdapter.java Tue May 24 03:33:06 2011 @@ -0,0 +1,94 @@ +package org.apache.maven.router.repository; + +/******************************************************************************* + * Copyright (c) 2010-2011 Sonatype, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Apache License v2.0 which accompanies this distribution. + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * The Apache License v2.0 is available at + * http://www.apache.org/licenses/LICENSE-2.0.html + * You may elect to redistribute this code under either of these licenses. + *******************************************************************************/ + +import java.io.File; + +import org.apache.maven.wagon.events.TransferEvent; +import org.apache.maven.wagon.observers.AbstractTransferListener; +import org.sonatype.aether.RequestTrace; +import org.sonatype.aether.transfer.TransferCancelledException; +import org.sonatype.aether.transfer.TransferEvent.EventType; +import org.sonatype.aether.transfer.TransferEvent.RequestType; +import org.sonatype.aether.transfer.TransferListener; +import org.sonatype.aether.transfer.TransferResource; +import org.sonatype.aether.util.listener.DefaultTransferEvent; +import org.sonatype.aether.util.listener.DefaultTransferResource; + +/** + * An adapter to transform transfer events from Wagon into events for the repository system. + * + * @author Benjamin Bentmann + */ +class WagonTransferListenerAdapter + extends AbstractTransferListener +{ + + private final TransferResource resource; + + private final TransferListener delegate; + + private long transferredBytes; + + public WagonTransferListenerAdapter( TransferListener delegate, String repositoryUrl, String resourceName, + File file, RequestTrace trace ) + { + this.delegate = delegate; + resource = new DefaultTransferResource( repositoryUrl, resourceName, file, trace ); + } + + @Override + public void transferStarted( TransferEvent event ) + { + transferredBytes = 0; + try + { + delegate.transferStarted( wrap( event, EventType.STARTED ) ); + } + catch ( TransferCancelledException e ) + { + // wagon transfers are not freely abortable + } + } + + @Override + public void transferProgress( TransferEvent event, byte[] buffer, int length ) + { + transferredBytes += length; + try + { + delegate.transferProgressed( wrap( event, EventType.PROGRESSED ).setDataBuffer( buffer, 0, length ) ); + } + catch ( TransferCancelledException e ) + { + // wagon transfers are not freely abortable + } + } + + private DefaultTransferEvent wrap( TransferEvent event, EventType type ) + { + DefaultTransferEvent e = newEvent(); + e.setRequestType( event.getRequestType() == TransferEvent.REQUEST_PUT ? RequestType.PUT : RequestType.GET ); + e.setType( type ); + return e; + } + + public DefaultTransferEvent newEvent() + { + DefaultTransferEvent e = new DefaultTransferEvent(); + e.setResource( resource ); + e.setTransferredBytes( transferredBytes ); + return e; + } + +}
Propchange: maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/main/java/org/apache/maven/router/repository/WagonTransferListenerAdapter.java ------------------------------------------------------------------------------ svn:eol-style = native Added: maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/test/java/org/apache/maven/router/repository/TestSuiteHttpWagon.java URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/test/java/org/apache/maven/router/repository/TestSuiteHttpWagon.java?rev=1126854&view=auto ============================================================================== --- maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/test/java/org/apache/maven/router/repository/TestSuiteHttpWagon.java (added) +++ maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/test/java/org/apache/maven/router/repository/TestSuiteHttpWagon.java Tue May 24 03:33:06 2011 @@ -0,0 +1,114 @@ +package org.apache.maven.router.repository; + +/******************************************************************************* + * Copyright (c) 2010-2011 Sonatype, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Apache License v2.0 which accompanies this distribution. + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * The Apache License v2.0 is available at + * http://www.apache.org/licenses/LICENSE-2.0.html + * You may elect to redistribute this code under either of these licenses. + *******************************************************************************/ + +import java.util.Map; + +import org.apache.maven.router.repository.WagonProvider; +import org.apache.maven.router.repository.WagonRepositoryConnector; +import org.apache.maven.wagon.ConnectionException; +import org.apache.maven.wagon.Wagon; +import org.apache.maven.wagon.providers.http.LightweightHttpWagon; +import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.repository.RemoteRepository; +import org.sonatype.aether.spi.connector.RepositoryConnector; +import org.sonatype.aether.spi.connector.RepositoryConnectorFactory; +import org.sonatype.aether.spi.log.NullLogger; +import org.sonatype.aether.test.impl.TestFileProcessor; +import org.sonatype.aether.test.util.connector.suite.ConnectorTestSetup.AbstractConnectorTestSetup; +import org.sonatype.aether.test.util.connector.suite.ConnectorTestSuite; +import org.sonatype.aether.transfer.NoRepositoryConnectorException; +import org.sonatype.tests.http.server.jetty.behaviour.ResourceServer; +import org.sonatype.tests.http.server.jetty.impl.JettyServerProvider; + +/** + * @author Benjamin Hanzelmann + */ +public class TestSuiteHttpWagon + extends ConnectorTestSuite +{ + + private static class JettyConnectorTestSetup + extends AbstractConnectorTestSetup + { + + private JettyServerProvider provider; + + public RemoteRepository before( RepositorySystemSession session, Map<String, Object> context ) + throws Exception + { + provider = new JettyServerProvider(); + provider.initServer(); + provider.addBehaviour( "/*", new ResourceServer() ); + provider.start(); + return new RemoteRepository( "jetty-repo", "default", provider.getUrl().toString() + "/repo" ); + } + + public RepositoryConnectorFactory factory() + { + return new RepositoryConnectorFactory() + { + + public RepositoryConnector newInstance( RepositorySystemSession session, RemoteRepository repository ) + throws NoRepositoryConnectorException + { + return new WagonRepositoryConnector( new WagonProvider() + { + + public void release( Wagon wagon ) + { + try + { + wagon.disconnect(); + } + catch ( ConnectionException e ) + { + throw new RuntimeException( e.getMessage(), e ); + } + } + + public Wagon lookup( String roleHint ) + throws Exception + { + return new LightweightHttpWagon(); + } + + }, null, repository, session, TestFileProcessor.INSTANCE, NullLogger.INSTANCE ); + } + + public int getPriority() + { + return 0; + } + }; + } + + @Override + public void after( RepositorySystemSession session, RemoteRepository repository, Map<String, Object> context ) + throws Exception + { + if ( provider != null ) + { + provider.stop(); + provider = null; + } + } + + } + + public TestSuiteHttpWagon() + { + super( new JettyConnectorTestSetup() ); + } + +} Propchange: maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/test/java/org/apache/maven/router/repository/TestSuiteHttpWagon.java ------------------------------------------------------------------------------ svn:eol-style = native Added: maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/test/resources/logback-test.xml URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/test/resources/logback-test.xml?rev=1126854&view=auto ============================================================================== --- maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/test/resources/logback-test.xml (added) +++ maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/test/resources/logback-test.xml Tue May 24 03:33:06 2011 @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + ~ Copyright (c) 2010-2011 Sonatype, Inc. + ~ All rights reserved. This program and the accompanying materials + ~ are made available under the terms of the Eclipse Public License v1.0 + ~ and Apache License v2.0 which accompanies this distribution. + ~ The Eclipse Public License is available at + ~ http://www.eclipse.org/legal/epl-v10.html + ~ The Apache License v2.0 is available at + ~ http://www.apache.org/licenses/LICENSE-2.0.html + ~ You may elect to redistribute this code under either of these licenses. +--> + +<configuration> + <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>%d{HH:mm:ss.SSS} [%-18thread] %c{1} [%p] %m%n</pattern> + </encoder> + </appender> + + <logger name="org.sonatype.tests.jetty.server" level="INFO"/> + <logger name="org.sonatype.tests.jetty.server.behaviour" level="DEBUG"/> + <logger name="org.sonatype.tests" level="DEBUG"/> + + <root level="WARN"> + <appender-ref ref="CONSOLE"/> + </root> +</configuration> Propchange: maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/test/resources/logback-test.xml ------------------------------------------------------------------------------ svn:eol-style = native Modified: maven/maven-3/branches/mirror-group-routing/maven-routem-api/src/main/java/org/apache/maven/artifact/router/ArtifactRouter.java URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-routem-api/src/main/java/org/apache/maven/artifact/router/ArtifactRouter.java?rev=1126854&r1=1126853&r2=1126854&view=diff ============================================================================== --- maven/maven-3/branches/mirror-group-routing/maven-routem-api/src/main/java/org/apache/maven/artifact/router/ArtifactRouter.java (original) +++ maven/maven-3/branches/mirror-group-routing/maven-routem-api/src/main/java/org/apache/maven/artifact/router/ArtifactRouter.java Tue May 24 03:33:06 2011 @@ -30,6 +30,8 @@ import java.util.Random; public final class ArtifactRouter { + public static final String SESSION_KEY = ArtifactRouter.class.getName(); + private List<MirrorRoute> mirrors = new ArrayList<MirrorRoute>(); private Map<GroupPattern, GroupRoute> groups = new HashMap<GroupPattern, GroupRoute>(); @@ -132,7 +134,7 @@ public final class ArtifactRouter if ( matches.isEmpty() ) { - return GroupRoute.CENTRAL; + return GroupRoute.DEFAULT; } else { Modified: maven/maven-3/branches/mirror-group-routing/maven-routem-api/src/main/java/org/apache/maven/artifact/router/GroupRoute.java URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-routem-api/src/main/java/org/apache/maven/artifact/router/GroupRoute.java?rev=1126854&r1=1126853&r2=1126854&view=diff ============================================================================== --- maven/maven-3/branches/mirror-group-routing/maven-routem-api/src/main/java/org/apache/maven/artifact/router/GroupRoute.java (original) +++ maven/maven-3/branches/mirror-group-routing/maven-routem-api/src/main/java/org/apache/maven/artifact/router/GroupRoute.java Tue May 24 03:33:06 2011 @@ -28,7 +28,7 @@ import java.util.List; public final class GroupRoute { - public static final GroupRoute CENTRAL = new GroupRoute( "http://repo1.maven.org/maven2", new GroupPattern( "*" ) ); + public static final GroupRoute DEFAULT = new GroupRoute( "http://repo1.maven.org/maven2", new GroupPattern( "*" ) ); private final String canonicalUrl; Modified: maven/maven-3/branches/mirror-group-routing/maven-routem-api/src/main/java/org/apache/maven/artifact/router/MirrorRoute.java URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-routem-api/src/main/java/org/apache/maven/artifact/router/MirrorRoute.java?rev=1126854&r1=1126853&r2=1126854&view=diff ============================================================================== --- maven/maven-3/branches/mirror-group-routing/maven-routem-api/src/main/java/org/apache/maven/artifact/router/MirrorRoute.java (original) +++ maven/maven-3/branches/mirror-group-routing/maven-routem-api/src/main/java/org/apache/maven/artifact/router/MirrorRoute.java Tue May 24 03:33:06 2011 @@ -27,6 +27,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.Set; +// TODO: Needs to have a layout field! public final class MirrorRoute implements Comparable<MirrorRoute> { @@ -185,4 +186,9 @@ public final class MirrorRoute return mirrorOfUrls.contains( check ); } + public String getLayout() + { + return "default"; + } + } Modified: maven/maven-3/branches/mirror-group-routing/pom.xml URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/pom.xml?rev=1126854&r1=1126853&r2=1126854&view=diff ============================================================================== --- maven/maven-3/branches/mirror-group-routing/pom.xml (original) +++ maven/maven-3/branches/mirror-group-routing/pom.xml Tue May 24 03:33:06 2011 @@ -49,6 +49,7 @@ <jxpathVersion>1.3</jxpathVersion> <aetherVersion>1.11</aetherVersion> <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile> + <plexusContainerVersion>1.5.5</plexusContainerVersion> </properties> <mailingLists> @@ -142,6 +143,7 @@ <module>maven-compat</module> <module>maven-routem-api</module> <module>maven-routem-impl</module> + <module>maven-routem-aether-wagon-connector</module> </modules> <scm> @@ -235,6 +237,11 @@ <artifactId>maven-repository-metadata</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-routem-aether-wagon-connector</artifactId> + <version>${project.version}</version> + </dependency> <!--bootstrap-end-comment--> <!-- Plexus --> <dependency> @@ -267,6 +274,12 @@ </dependency> <dependency> <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + <version>${plexusContainerVersion}</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-classworlds</artifactId> <version>${classWorldsVersion}</version> </dependency> @@ -318,17 +331,6 @@ <artifactId>aether-util</artifactId> <version>${aetherVersion}</version> </dependency> - <dependency> - <groupId>org.sonatype.aether</groupId> - <artifactId>aether-connector-wagon</artifactId> - <version>${aetherVersion}</version> - <exclusions> - <exclusion> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-container-default</artifactId> - </exclusion> - </exclusions> - </dependency> <!-- Commons --> <dependency> <groupId>commons-cli</groupId> Modified: maven/maven-3/branches/mirror-group-routing/pom.xml.orig URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/pom.xml.orig?rev=1126854&r1=1126853&r2=1126854&view=diff ============================================================================== --- maven/maven-3/branches/mirror-group-routing/pom.xml.orig (original) +++ maven/maven-3/branches/mirror-group-routing/pom.xml.orig Tue May 24 03:33:06 2011 @@ -37,7 +37,7 @@ <classWorldsVersion>2.4</classWorldsVersion> <commonsCliVersion>1.2</commonsCliVersion> <easyMockVersion>1.2_Java1.3</easyMockVersion> - <junitVersion>3.8.2</junitVersion> + <junitVersion>4.8.2</junitVersion> <plexusVersion>1.5.5</plexusVersion> <plexusInterpolationVersion>1.14</plexusInterpolationVersion> <plexusUtilsVersion>2.0.6</plexusUtilsVersion> @@ -141,6 +141,7 @@ <module>maven-embedder</module> <module>maven-compat</module> <module>maven-routem-api</module> + <module>maven-routem-impl</module> </modules> <scm> @@ -176,6 +177,11 @@ </dependency> <dependency> <groupId>org.apache.maven</groupId> + <artifactId>maven-routem-impl</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> <artifactId>maven-model</artifactId> <version>${project.version}</version> </dependency>