]> source.dussan.org Git - archiva.git/blob
7d0ce6b54555a60dc308f5254bd0b0eb96b5e5b2
[archiva.git] /
1 package org.apache.archiva.converter.legacy;
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.admin.model.beans.ManagedRepository;
23 import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
24 import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
25 import org.apache.archiva.consumers.AbstractMonitoredConsumer;
26 import org.apache.archiva.consumers.ConsumerException;
27 import org.apache.archiva.consumers.KnownRepositoryContentConsumer;
28 import org.apache.archiva.converter.artifact.ArtifactConversionException;
29 import org.apache.archiva.converter.artifact.ArtifactConverter;
30 import org.apache.archiva.model.ArtifactReference;
31 import org.apache.archiva.repository.ManagedRepositoryContent;
32 import org.apache.archiva.repository.content.ManagedDefaultRepositoryContent;
33 import org.apache.archiva.repository.layout.LayoutException;
34 import org.apache.maven.artifact.Artifact;
35 import org.apache.maven.artifact.factory.ArtifactFactory;
36 import org.apache.maven.artifact.repository.ArtifactRepository;
37 import org.slf4j.Logger;
38 import org.slf4j.LoggerFactory;
39 import org.springframework.context.annotation.Scope;
40 import org.springframework.stereotype.Service;
41
42 import javax.inject.Inject;
43 import java.util.ArrayList;
44 import java.util.Date;
45 import java.util.List;
46
47 /**
48  * LegacyConverterArtifactConsumer - convert artifacts as they are found
49  * into the destination repository.
50  *
51  * @version $Id$
52  */
53 @Service( "knownRepositoryContentConsumer#artifact-legacy-to-default-converter" )
54 @Scope( "prototype" )
55 public class LegacyConverterArtifactConsumer
56     extends AbstractMonitoredConsumer
57     implements KnownRepositoryContentConsumer
58 {
59     private Logger log = LoggerFactory.getLogger( LegacyConverterArtifactConsumer.class );
60
61     /**
62      *
63      */
64     @Inject
65     private ArtifactConverter artifactConverter;
66
67     /**
68      *
69      */
70     private ArtifactFactory artifactFactory;
71
72     private ManagedRepositoryContent managedRepository;
73
74     private ArtifactRepository destinationRepository;
75
76     private List<String> includes;
77
78     private List<String> excludes;
79
80     @Inject
81     public LegacyConverterArtifactConsumer( PlexusSisuBridge plexusSisuBridge )
82         throws PlexusSisuBridgeException
83     {
84         includes = new ArrayList<String>( 3 );
85         includes.add( "**/*.jar" );
86         includes.add( "**/*.ear" );
87         includes.add( "**/*.war" );
88         artifactFactory = plexusSisuBridge.lookup( ArtifactFactory.class );
89     }
90
91     public void beginScan( ManagedRepository repository, Date whenGathered )
92         throws ConsumerException
93     {
94         this.managedRepository = new ManagedDefaultRepositoryContent();
95         this.managedRepository.setRepository( repository );
96     }
97
98     public void beginScan( ManagedRepository repository, Date whenGathered, boolean executeOnEntireRepo )
99         throws ConsumerException
100     {
101         beginScan( repository, whenGathered );
102     }
103
104     public void completeScan()
105     {
106         // no op
107     }
108
109     public void completeScan( boolean executeOnEntireRepo )
110     {
111         completeScan();
112     }
113
114     public List<String> getExcludes()
115     {
116         return excludes;
117     }
118
119     public List<String> getIncludes()
120     {
121         return includes;
122     }
123
124     public void processFile( String path )
125         throws ConsumerException
126     {
127         try
128         {
129             ArtifactReference reference = managedRepository.toArtifactReference( path );
130             Artifact artifact = artifactFactory.createArtifact( reference.getGroupId(), reference.getArtifactId(),
131                                                                 reference.getVersion(), reference.getClassifier(),
132                                                                 reference.getType() );
133             artifactConverter.convert( artifact, destinationRepository );
134         }
135         catch ( LayoutException e )
136         {
137             log.warn( "Unable to convert artifact: " + path + " : " + e.getMessage(), e );
138         }
139         catch ( ArtifactConversionException e )
140         {
141             log.warn( "Unable to convert artifact: " + path + " : " + e.getMessage(), e );
142         }
143     }
144
145     public void processFile( String path, boolean executeOnEntireRepo )
146         throws Exception
147     {
148         processFile( path );
149     }
150
151     public String getDescription()
152     {
153         return "Legacy Artifact to Default Artifact Converter";
154     }
155
156     public String getId()
157     {
158         return "artifact-legacy-to-default-converter";
159     }
160
161     public boolean isPermanent()
162     {
163         return false;
164     }
165
166     public void setExcludes( List<String> excludes )
167     {
168         this.excludes = excludes;
169     }
170
171     public void setIncludes( List<String> includes )
172     {
173         this.includes = includes;
174     }
175
176     public ArtifactRepository getDestinationRepository()
177     {
178         return destinationRepository;
179     }
180
181     public void setDestinationRepository( ArtifactRepository destinationRepository )
182     {
183         this.destinationRepository = destinationRepository;
184     }
185 }