]> source.dussan.org Git - archiva.git/blob
2253b5cf9d5f3db83c1cc25179678ab3974e958f
[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.Operation;
23 import org.apache.archiva.redback.rbac.RBACManager;
24 import org.apache.archiva.redback.rbac.RbacManagerException;
25 import org.apache.archiva.redback.rbac.Resource;
26 import org.apache.archiva.redback.struts2.action.RedbackActionSupport;
27 import org.apache.archiva.redback.integration.interceptor.SecureActionBundle;
28 import org.apache.archiva.redback.integration.interceptor.SecureActionException;
29 import org.apache.archiva.redback.integration.role.RoleConstants;
30 import org.apache.archiva.redback.integration.util.OperationSorter;
31 import org.springframework.context.annotation.Scope;
32 import org.springframework.stereotype.Controller;
33
34 import javax.inject.Inject;
35 import javax.inject.Named;
36 import java.util.Arrays;
37 import java.util.Collections;
38 import java.util.List;
39
40 /**
41  * OperationsAction:
42  *
43  * @author Jesse McConnell <jmcconnell@apache.org>
44  *
45  */
46 @Controller( "redback-operations" )
47 @Scope( "prototype" )
48 public class OperationsAction
49     extends RedbackActionSupport
50 {
51     private static final String LIST = "list";
52
53     /**
54      *  role-hint="cached"
55      */
56     @Inject
57     @Named( value = "rBACManager#cached" )
58     private RBACManager manager;
59
60     private String operationName;
61
62     private String description;
63
64     private List<Operation> allOperations;
65
66     public String list()
67     {
68         try
69         {
70             allOperations = manager.getAllOperations();
71
72             if ( allOperations == null )
73             {
74                 allOperations = Collections.emptyList();
75             }
76
77             Collections.sort( allOperations, new OperationSorter() );
78         }
79         catch ( RbacManagerException e )
80         {
81             addActionError( getText( "cannot.list.all.operations", Arrays.asList( (Object) e.getMessage() ) ) );
82             log.error( "System error:", e );
83             allOperations = Collections.emptyList();
84         }
85
86         return LIST;
87     }
88
89     public String save()
90     {
91         try
92         {
93             Operation temp = manager.createOperation( operationName );
94
95             temp.setDescription( description );
96
97             manager.saveOperation( temp );
98         }
99         catch ( RbacManagerException e )
100         {
101             addActionError( getText( "cannot.save.operation", Arrays.asList( (Object) operationName ) ) );
102             log.error( "System error:", e );
103             allOperations = Collections.emptyList();
104         }
105
106         return LIST;
107     }
108
109     public String remove()
110     {
111         try
112         {
113             manager.removeOperation( manager.getOperation( operationName ) );
114         }
115         catch ( RbacManagerException ne )
116         {
117             addActionError( getText( "cannot.remove.operation", Arrays.asList( (Object) operationName ) ) );
118             return ERROR;
119         }
120         return LIST;
121     }
122
123     public List<Operation> getAllOperations()
124     {
125         return allOperations;
126     }
127
128     public void setAllOperations( List<Operation> allOperations )
129     {
130         this.allOperations = allOperations;
131     }
132
133     public String getDescription()
134     {
135         return description;
136     }
137
138     public void setDescription( String description )
139     {
140         this.description = description;
141     }
142
143     public String getOperationName()
144     {
145         return operationName;
146     }
147
148     public void setOperationName( String operationName )
149     {
150         this.operationName = operationName;
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 }