]> source.dussan.org Git - archiva.git/blob
904a1a590d37be12f138f6416e315cea5bb111f9
[archiva.git] /
1 package org.apache.maven.archiva.web.action.admin;
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.maven.archiva.configuration.AbstractRepositoryConfiguration;
23 import org.apache.maven.archiva.configuration.Configuration;
24 import org.apache.maven.archiva.configuration.RepositoryConfiguration;
25 import org.codehaus.plexus.rbac.profile.RoleProfileException;
26 import org.codehaus.plexus.util.FileUtils;
27
28 import java.io.IOException;
29
30 /**
31  * Configures the application repositories.
32  *
33  * @plexus.component role="com.opensymphony.xwork.Action" role-hint="deleteRepositoryAction"
34  */
35 public class DeleteRepositoryAction
36     extends AbstractDeleteRepositoryAction
37 {
38     protected AbstractRepositoryConfiguration getRepository( Configuration configuration )
39     {
40         return configuration.getRepositoryById( repoId );
41     }
42
43     protected void removeRepository( Configuration configuration, AbstractRepositoryConfiguration existingRepository )
44     {
45         configuration.removeRepository( (RepositoryConfiguration) existingRepository );
46
47         try
48         {
49             removeRepositoryRoles( existingRepository );
50         }
51         catch ( RoleProfileException e )
52         {
53             getLogger().error( "Error removing user roles associated with repository " + existingRepository.getId() );
54         }
55     }
56
57     protected void removeContents( AbstractRepositoryConfiguration existingRepository )
58         throws IOException
59     {
60         RepositoryConfiguration repository = (RepositoryConfiguration) existingRepository;
61         getLogger().info( "Removing " + repository.getDirectory() );
62         FileUtils.deleteDirectory( repository.getDirectory() );
63     }
64
65     /**
66      * Remove user roles associated with the repository
67      *
68      * @param existingRepository
69      * @throws RoleProfileException
70      */
71     private void removeRepositoryRoles( AbstractRepositoryConfiguration existingRepository )
72         throws RoleProfileException
73     {
74         roleProfileManager.deleteDynamicRole( "archiva-repository-manager", existingRepository.getId() );
75         roleProfileManager.deleteDynamicRole( "archiva-repository-observer", existingRepository.getId() );
76
77         getLogger().info( "removed user roles associated with repository " + existingRepository.getId() );
78     }
79 }