]> source.dussan.org Git - archiva.git/blob
bd3c6832e76121718a9997e3f82b09b3fed9d01c
[archiva.git] /
1 package org.apache.archiva.redback.struts2.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.archiva.redback.rbac.RBACManager;
23 import org.apache.archiva.redback.rbac.Resource;
24 import org.apache.archiva.redback.rbac.RbacManagerException;
25 import org.apache.archiva.redback.struts2.action.AbstractSecurityAction;
26 import org.apache.archiva.redback.integration.interceptor.SecureActionBundle;
27 import org.apache.archiva.redback.integration.interceptor.SecureActionException;
28 import org.apache.archiva.redback.integration.role.RoleConstants;
29 import org.apache.archiva.redback.integration.util.ResourceSorter;
30 import org.springframework.context.annotation.Scope;
31 import org.springframework.stereotype.Controller;
32
33 import javax.inject.Inject;
34 import javax.inject.Named;
35 import java.util.Arrays;
36 import java.util.Collections;
37 import java.util.List;
38
39 /**
40  * OperationsAction:
41  *
42  * @author Jesse McConnell <jmcconnell@apache.org>
43  *
44  */
45 @Controller( "redback-resources" )
46 @Scope( "prototype" )
47 public class ResourcesAction
48     extends AbstractSecurityAction
49 {
50     private static final String LIST = "list";
51
52     /**
53      *  role-hint="cached"
54      */
55     @Inject
56     @Named( value = "rBACManager#cached" )
57     private RBACManager manager;
58
59     private String resourceIdentifier;
60
61     private boolean isPattern;
62
63     private List<Resource> allResources;
64
65     public String list()
66     {
67         try
68         {
69             allResources = manager.getAllResources();
70
71             if ( allResources == null )
72             {
73                 allResources = Collections.emptyList();
74             }
75
76             Collections.sort( allResources, new ResourceSorter() );
77         }
78         catch ( RbacManagerException e )
79         {
80             addActionError( getText( "cannot.list.all.resources", Arrays.asList( (Object) e.getMessage() ) ) );
81             log.error( "System error:", e );
82             allResources = Collections.emptyList();
83         }
84
85         return LIST;
86     }
87
88     public String save()
89     {
90         try
91         {
92             Resource temp = manager.createResource( resourceIdentifier );
93
94             temp.setIdentifier( resourceIdentifier );
95             temp.setPattern( isPattern );
96
97             manager.saveResource( temp );
98         }
99         catch ( RbacManagerException e )
100         {
101             addActionError( getText( "cannot.save.resource", Arrays.asList( (Object) e.getMessage() ) ) );
102             log.error( "System error:", e );
103             allResources = Collections.emptyList();
104         }
105
106         return LIST;
107     }
108
109     public String remove()
110     {
111         try
112         {
113             manager.removeResource( manager.getResource( resourceIdentifier ) );
114         }
115         catch ( RbacManagerException ne )
116         {
117             addActionError( getText( "cannot.remove.resource", Arrays.asList( (Object) resourceIdentifier ) ) );
118             return ERROR;
119         }
120         return LIST;
121     }
122
123     public List<Resource> getAllResources()
124     {
125         return allResources;
126     }
127
128     public void setAllResources( List<Resource> allResources )
129     {
130         this.allResources = allResources;
131     }
132
133     public String getResourceIdentifier()
134     {
135         return resourceIdentifier;
136     }
137
138     public void setResourceIdentifier( String resourceIdentifier )
139     {
140         this.resourceIdentifier = resourceIdentifier;
141     }
142
143     public boolean isPattern()
144     {
145         return isPattern;
146     }
147
148     public void setPattern( boolean isPattern )
149     {
150         this.isPattern = isPattern;
151     }
152
153     public SecureActionBundle initSecureActionBundle()
154         throws SecureActionException
155     {
156         SecureActionBundle bundle = new SecureActionBundle();
157         bundle.setRequiresAuthentication( true );
158         bundle.addRequiredAuthorization( RoleConstants.USER_MANAGEMENT_RBAC_ADMIN_OPERATION, Resource.GLOBAL );
159         return bundle;
160     }
161 }