]> source.dussan.org Git - archiva.git/blob
bf9d7e9c22a079ba535208c7e0ccddf443bc0ea8
[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.commons.lang.StringUtils;
24 import org.apache.maven.wagon.Wagon;
25 import org.springframework.beans.BeansException;
26 import org.springframework.context.ApplicationContext;
27 import org.springframework.stereotype.Service;
28
29 import javax.inject.Inject;
30
31 /**
32  * @author Olivier Lamy
33  * @since 1.4-M1
34  */
35 @Service( "wagonFactory" )
36 public class DefaultWagonFactory
37     implements WagonFactory
38 {
39
40     private PlexusSisuBridge plexusSisuBridge;
41
42     private ApplicationContext applicationContext;
43
44     private DebugTransferListener debugTransferListener = new DebugTransferListener();
45
46     @Inject
47     public DefaultWagonFactory( PlexusSisuBridge plexusSisuBridge, ApplicationContext applicationContext )
48     {
49         this.plexusSisuBridge = plexusSisuBridge;
50         this.applicationContext = applicationContext;
51     }
52
53     public Wagon getWagon( String protocol )
54         throws WagonFactoryException
55     {
56         try
57         {
58             // with sisu inject bridge hint is file or http
59             // so remove wagon#
60             //protocol = StringUtils.remove( protocol, "wagon#" );
61             // spring beans will be named wagon#protocol (http, https, file )
62             protocol = StringUtils.startsWith( protocol, "wagon#" ) ? protocol : "wagon#" + protocol;
63             //Wagon wagon = plexusSisuBridge.lookup( Wagon.class, protocol );
64
65             Wagon wagon = applicationContext.getBean( protocol, Wagon.class );
66             wagon.addTransferListener( debugTransferListener );
67             return wagon;
68         }
69         //catch ( PlexusSisuBridgeException e )
70         catch ( BeansException e )
71         {
72             throw new WagonFactoryException( e.getMessage(), e );
73         }
74     }
75 }