]> source.dussan.org Git - archiva.git/blob
e59187cc820f63a6227b7f73ede7a8754893ac8e
[archiva.git] /
1 /*
2  *  Copyright 2008 jdumay.
3  * 
4  *  Licensed under the Apache License, Version 2.0 (the "License");
5  *  you may not use this file except in compliance with the License.
6  *  You may obtain a copy of the License at
7  * 
8  *       http://www.apache.org/licenses/LICENSE-2.0
9  * 
10  *  Unless required by applicable law or agreed to in writing, software
11  *  distributed under the License is distributed on an "AS IS" BASIS,
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *  See the License for the specific language governing permissions and
14  *  limitations under the License.
15  *  under the License.
16  */
17
18 package org.apache.archiva.consumers;
19
20 import java.io.File;
21 import java.io.IOException;
22 import java.util.Arrays;
23 import java.util.Date;
24 import java.util.List;
25 import org.apache.commons.io.FileUtils;
26 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
27 import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer;
28 import org.apache.maven.archiva.consumers.ConsumerException;
29 import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer;
30 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
31 import org.apache.maven.archiva.repository.content.ManagedDefaultRepositoryContent;
32 import org.apache.tools.ant.BuildException;
33 import org.apache.tools.ant.types.FileSet;
34 import org.apache.tools.ant.types.selectors.FilenameSelector;
35 import org.osgi.impl.bundle.bindex.ant.BindexTask;
36
37 /**
38  *
39  * @author jdumay
40  */
41 public class OBRRepositoryConsumer 
42         extends AbstractMonitoredConsumer
43         implements KnownRepositoryContentConsumer
44 {
45     private ManagedRepositoryContent content;
46
47     public String getDescription() {
48         return "Produces the OSGi OBR repository index";
49     }
50
51     public String getId() {
52         return "create-obr-repositoryxml";
53     }
54
55     public boolean isPermanent() {
56         return false;
57     }
58
59     public void beginScan(ManagedRepositoryConfiguration repository, Date whenGathered) throws ConsumerException {
60         content = new ManagedDefaultRepositoryContent();
61         content.setRepository(repository);
62     }
63
64     public void completeScan() {
65         /** do nothing **/
66     }
67
68     public List<String> getExcludes() {
69         return null;
70     }
71
72     public List<String> getIncludes() {
73         return Arrays.asList("**/*.jar");
74     }
75
76     public void processFile(String path)
77         throws ConsumerException
78     {
79         BindexTask task = new BindexTask();
80         File repositoryIndexFile = new File(new File(path).getParentFile(), ".repository.xml");
81         task.setRepositoryFile(repositoryIndexFile);
82         task.setName(content.getRepository().getName());
83         task.setQuiet(false);
84         task.setRoot(new File(content.getRepoRoot()));
85
86         FileSet fileSet = new FileSet();
87         fileSet.setDir(new File(path).getParentFile());
88         fileSet.setIncludes("**/*.jar");
89         try
90         {
91             task.execute();
92         }
93         catch (BuildException e)
94         {
95             throw new ConsumerException("Could not add jar " + path + " to obr repository.xml", e);
96         }
97     }
98
99 }