]> source.dussan.org Git - archiva.git/blob
f4aba4cfb58585009ada4a9d39c08b6ad7166d5e
[archiva.git] /
1 package org.apache.archiva.admin.repository.admin;
2 /*
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  */
20
21 import net.sf.beanlib.provider.replicator.BeanReplicator;
22 import org.apache.archiva.admin.AuditInformation;
23 import org.apache.archiva.admin.repository.AbstractRepositoryAdmin;
24 import org.apache.archiva.admin.repository.RepositoryAdminException;
25 import org.apache.archiva.audit.AuditEvent;
26 import org.apache.commons.lang.StringUtils;
27 import org.apache.maven.archiva.configuration.Configuration;
28 import org.apache.maven.archiva.configuration.RepositoryScanningConfiguration;
29 import org.springframework.stereotype.Service;
30
31 import java.util.ArrayList;
32 import java.util.List;
33
34 /**
35  * @author Olivier Lamy
36  */
37 @Service( "archivaAdministration#default" )
38 public class DefaultArchivaAdministration
39     extends AbstractRepositoryAdmin
40     implements ArchivaAdministration
41 {
42     public List<LegacyArtifactPath> getLegacyArtifactPaths()
43         throws RepositoryAdminException
44     {
45         List<LegacyArtifactPath> legacyArtifactPaths = new ArrayList<LegacyArtifactPath>();
46         for ( org.apache.maven.archiva.configuration.LegacyArtifactPath legacyArtifactPath : getArchivaConfiguration().getConfiguration().getLegacyArtifactPaths() )
47         {
48             legacyArtifactPaths.add(
49                 new BeanReplicator().replicateBean( legacyArtifactPath, LegacyArtifactPath.class ) );
50         }
51         return legacyArtifactPaths;
52
53     }
54
55     public void addLegacyArtifactPath( LegacyArtifactPath legacyArtifactPath, AuditInformation auditInformation )
56         throws RepositoryAdminException
57     {
58         Configuration configuration = getArchivaConfiguration().getConfiguration();
59
60         configuration.addLegacyArtifactPath( new BeanReplicator().replicateBean( legacyArtifactPath,
61                                                                                  org.apache.maven.archiva.configuration.LegacyArtifactPath.class ) );
62
63         saveConfiguration( configuration );
64         triggerAuditEvent( "", "", AuditEvent.ADD_LEGACY_PATH, auditInformation );
65     }
66
67     public void deleteLegacyArtifactPath( String path, AuditInformation auditInformation )
68         throws RepositoryAdminException
69     {
70         Configuration configuration = getArchivaConfiguration().getConfiguration();
71         org.apache.maven.archiva.configuration.LegacyArtifactPath legacyArtifactPath =
72             new org.apache.maven.archiva.configuration.LegacyArtifactPath();
73
74         legacyArtifactPath.setPath( path );
75         configuration.removeLegacyArtifactPath( legacyArtifactPath );
76
77         saveConfiguration( configuration );
78         triggerAuditEvent( "", "", AuditEvent.REMOVE_LEGACY_PATH, auditInformation );
79     }
80
81     public void updateRepositoryScanning( RepositoryScanning repositoryScanning, AuditInformation auditInformation )
82         throws RepositoryAdminException
83     {
84         Configuration configuration = getArchivaConfiguration().getConfiguration();
85
86         configuration.setRepositoryScanning(
87             new BeanReplicator().replicateBean( repositoryScanning, RepositoryScanningConfiguration.class ) );
88
89         saveConfiguration( configuration );
90     }
91
92     public RepositoryScanning getRepositoryScanning()
93         throws RepositoryAdminException
94     {
95
96         RepositoryScanning repositoryScanning =
97             new BeanReplicator().replicateBean( getArchivaConfiguration().getConfiguration().getRepositoryScanning(),
98                                                 RepositoryScanning.class )
99
100         return repositoryScanning;
101     }
102
103     public void addFileTypePattern( String fileTypeId, String pattern, AuditInformation auditInformation )
104         throws RepositoryAdminException
105     {
106         Configuration configuration = getArchivaConfiguration().getConfiguration();
107
108         org.apache.maven.archiva.configuration.FileType fileType = getFileTypeById( fileTypeId, configuration );
109         if ( fileType == null )
110         {
111             return;
112         }
113         fileType.addPattern( pattern );
114
115         saveConfiguration( configuration );
116         triggerAuditEvent( "", "", AuditEvent.ADD_PATTERN, auditInformation );
117     }
118
119     public void removeFileTypePattern( String fileTypeId, String pattern, AuditInformation auditInformation )
120         throws RepositoryAdminException
121     {
122         Configuration configuration = getArchivaConfiguration().getConfiguration();
123
124         org.apache.maven.archiva.configuration.FileType fileType = getFileTypeById( fileTypeId, configuration );
125         if ( fileType == null )
126         {
127             return;
128         }
129         fileType.removePattern( pattern );
130
131         saveConfiguration( configuration );
132         triggerAuditEvent( "", "", AuditEvent.REMOVE_PATTERN, auditInformation );
133     }
134
135     public FileType getFileType( String fileTypeId )
136         throws RepositoryAdminException
137     {
138         org.apache.maven.archiva.configuration.FileType fileType =
139             getFileTypeById( fileTypeId, getArchivaConfiguration().getConfiguration() );
140         if ( fileType == null )
141         {
142             return null;
143         }
144         return new BeanReplicator().replicateBean( fileType, FileType.class );
145     }
146
147     public void addFileType( FileType fileType, AuditInformation auditInformation )
148         throws RepositoryAdminException
149     {
150         Configuration configuration = getArchivaConfiguration().getConfiguration();
151         if ( getFileTypeById( fileType.getId(), configuration ) != null )
152         {
153             throw new RepositoryAdminException(
154                 "impossible to FileType with id " + fileType.getId() + " already exists" );
155         }
156
157         configuration.getRepositoryScanning().addFileType(
158             new BeanReplicator().replicateBean( fileType, org.apache.maven.archiva.configuration.FileType.class ) );
159         saveConfiguration( configuration );
160     }
161
162     public void removeFileType( String fileTypeId, AuditInformation auditInformation )
163         throws RepositoryAdminException
164     {
165         Configuration configuration = getArchivaConfiguration().getConfiguration();
166         org.apache.maven.archiva.configuration.FileType fileType =
167             new org.apache.maven.archiva.configuration.FileType();
168         fileType.setId( fileTypeId );
169         configuration.getRepositoryScanning().removeFileType( fileType );
170         saveConfiguration( configuration );
171     }
172
173     public void addKnownContentConsumer( String knownContentConsumer, AuditInformation auditInformation )
174         throws RepositoryAdminException
175     {
176         Configuration configuration = getArchivaConfiguration().getConfiguration();
177         if ( configuration.getRepositoryScanning().getKnownContentConsumers().contains( knownContentConsumer ) )
178         {
179             log.warn( "skip adding knownContentConsumer {} as already here", knownContentConsumer );
180             return;
181         }
182         configuration.getRepositoryScanning().addKnownContentConsumer( knownContentConsumer );
183         saveConfiguration( configuration );
184         triggerAuditEvent( "", "", AuditEvent.ENABLE_REPO_CONSUMER, auditInformation );
185     }
186
187     public void removeKnownContentConsumer( String knownContentConsumer, AuditInformation auditInformation )
188         throws RepositoryAdminException
189     {
190         Configuration configuration = getArchivaConfiguration().getConfiguration();
191         configuration.getRepositoryScanning().removeKnownContentConsumer( knownContentConsumer );
192         saveConfiguration( configuration );
193         triggerAuditEvent( "", "", AuditEvent.DISABLE_REPO_CONSUMER, auditInformation );
194     }
195
196     public void addInvalidContentConsumer( String invalidContentConsumer, AuditInformation auditInformation )
197         throws RepositoryAdminException
198     {
199         Configuration configuration = getArchivaConfiguration().getConfiguration();
200         if ( configuration.getRepositoryScanning().getInvalidContentConsumers().contains( invalidContentConsumer ) )
201         {
202             log.warn( "skip adding invalidContentConsumer {} as already here", invalidContentConsumer );
203             return;
204         }
205         configuration.getRepositoryScanning().addInvalidContentConsumer( invalidContentConsumer );
206         saveConfiguration( configuration );
207         triggerAuditEvent( "", "", AuditEvent.ENABLE_REPO_CONSUMER, auditInformation );
208     }
209
210     public void removeInvalidContentConsumer( String invalidContentConsumer, AuditInformation auditInformation )
211         throws RepositoryAdminException
212     {
213         Configuration configuration = getArchivaConfiguration().getConfiguration();
214         configuration.getRepositoryScanning().removeInvalidContentConsumer( invalidContentConsumer );
215         saveConfiguration( configuration );
216         triggerAuditEvent( "", "", AuditEvent.DISABLE_REPO_CONSUMER, auditInformation );
217     }
218
219     public void setKnownContentConsumers( List<String> knownContentConsumers, AuditInformation auditInformation )
220         throws RepositoryAdminException
221     {
222         if ( knownContentConsumers == null )
223         {
224             return;
225         }
226         for ( String knowContentConsumer : knownContentConsumers )
227         {
228             addKnownContentConsumer( knowContentConsumer, auditInformation );
229         }
230     }
231
232     public void setInvalidContentConsumers( List<String> invalidContentConsumers, AuditInformation auditInformation )
233         throws RepositoryAdminException
234     {
235         if ( invalidContentConsumers == null )
236         {
237             return;
238         }
239         for ( String invalidContentConsumer : invalidContentConsumers )
240         {
241             addKnownContentConsumer( invalidContentConsumer, auditInformation );
242         }
243     }
244
245     //-------------------------
246     //
247     //-------------------------
248
249     private org.apache.maven.archiva.configuration.FileType getFileTypeById( String id, Configuration configuration )
250     {
251         for ( org.apache.maven.archiva.configuration.FileType fileType : configuration.getRepositoryScanning().getFileTypes() )
252         {
253             if ( StringUtils.equals( id, fileType.getId() ) )
254             {
255                 return fileType;
256             }
257         }
258         return null;
259     }
260 }