]> source.dussan.org Git - archiva.git/blob
3f8f311b9fd165d7f9580a9364bade1799636a98
[archiva.git] /
1 package org.apache.archiva.proxy.common;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
23 import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
24 import org.apache.commons.lang.StringUtils;
25 import org.apache.maven.wagon.Wagon;
26 import org.springframework.stereotype.Service;
27
28 import javax.inject.Inject;
29
30 /**
31  * @author Olivier Lamy
32  * @since 1.4-M1
33  */
34 @Service( "wagonFactory" )
35 public class DefaultWagonFactory
36     implements WagonFactory
37 {
38
39     private PlexusSisuBridge plexusSisuBridge;
40
41     private DebugTransferListener debugTransferListener = new DebugTransferListener();
42
43     @Inject
44     public DefaultWagonFactory( PlexusSisuBridge plexusSisuBridge )
45     {
46         this.plexusSisuBridge = plexusSisuBridge;
47     }
48
49     public Wagon getWagon( String protocol )
50         throws WagonFactoryException
51     {
52         try
53         {
54             // with sisu inject bridge hint is file or http
55             // so remove wagon#
56             protocol = StringUtils.remove( protocol, "wagon#" );
57             Wagon wagon = plexusSisuBridge.lookup( Wagon.class, protocol );
58             wagon.addTransferListener( debugTransferListener );
59             return wagon;
60         }
61         catch ( PlexusSisuBridgeException e )
62         {
63             throw new WagonFactoryException( e.getMessage(), e );
64         }
65     }
66 }