]> source.dussan.org Git - archiva.git/blob
8780aba449132fd13c50f86d2a68b1ffcdf25f4d
[archiva.git] /
1 package org.apache.maven.archiva.web.action;\r
2 \r
3 /*\r
4  * Licensed to the Apache Software Foundation (ASF) under one\r
5  * or more contributor license agreements.  See the NOTICE file\r
6  * distributed with this work for additional information\r
7  * regarding copyright ownership.  The ASF licenses this file\r
8  * to you under the Apache License, Version 2.0 (the\r
9  * "License"); you may not use this file except in compliance\r
10  * with the License.  You may obtain a copy of the License at\r
11  *\r
12  *  http://www.apache.org/licenses/LICENSE-2.0\r
13  *\r
14  * Unless required by applicable law or agreed to in writing,\r
15  * software distributed under the License is distributed on an\r
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r
17  * KIND, either express or implied.  See the License for the\r
18  * specific language governing permissions and limitations\r
19  * under the License.\r
20  */\r
21 \r
22 import java.util.ArrayList;\r
23 import java.util.List;\r
24 import java.util.Map;\r
25 \r
26 import org.apache.maven.archiva.repository.audit.AuditEvent;\r
27 import org.apache.maven.archiva.repository.audit.AuditListener;\r
28 import org.apache.maven.archiva.repository.audit.Auditable;\r
29 import org.apache.maven.archiva.security.ArchivaXworkUser;\r
30 import org.apache.struts2.ServletActionContext;\r
31 import org.apache.struts2.interceptor.SessionAware;\r
32 import org.slf4j.Logger;\r
33 import org.slf4j.LoggerFactory;\r
34 \r
35 import com.opensymphony.xwork2.ActionContext;\r
36 import com.opensymphony.xwork2.ActionSupport;\r
37 \r
38 /**\r
39  * LogEnabled and SessionAware ActionSupport\r
40  */\r
41 public abstract class PlexusActionSupport\r
42     extends ActionSupport\r
43     implements SessionAware, Auditable\r
44 {\r
45     protected Map<?, ?> session;\r
46 \r
47     protected Logger log = LoggerFactory.getLogger( getClass() );\r
48 \r
49     /**\r
50      * @plexus.requirement role="org.apache.maven.archiva.repository.audit.AuditListener"\r
51      */\r
52     private List<AuditListener> auditListeners = new ArrayList<AuditListener>();\r
53 \r
54     @SuppressWarnings("unchecked")\r
55     public void setSession( Map map )\r
56     {\r
57         this.session = map;\r
58     }\r
59 \r
60     public void addAuditListener( AuditListener listener )\r
61     {\r
62         this.auditListeners.add( listener );\r
63     }\r
64 \r
65     public void clearAuditListeners()\r
66     {\r
67         this.auditListeners.clear();\r
68     }\r
69 \r
70     public void removeAuditListener( AuditListener listener )\r
71     {\r
72         this.auditListeners.remove( listener );\r
73     }\r
74 \r
75     protected void triggerAuditEvent( String repositoryId, String resource, String action )\r
76     {\r
77         AuditEvent event = new AuditEvent( repositoryId, getPrincipal(), resource, action );\r
78         event.setRemoteIP( ServletActionContext.getRequest().getRemoteAddr() );\r
79     \r
80         for ( AuditListener listener : auditListeners )\r
81         {\r
82             listener.auditEvent( event );\r
83         }\r
84     }\r
85 \r
86     protected void triggerAuditEvent( String resource, String action )\r
87     {\r
88         AuditEvent event = new AuditEvent( getPrincipal(), resource, action );\r
89         event.setRemoteIP( ServletActionContext.getRequest().getRemoteAddr() );\r
90         \r
91         for ( AuditListener listener : auditListeners )\r
92         {\r
93             listener.auditEvent( event );\r
94         }\r
95     }\r
96 \r
97     protected void triggerAuditEvent( String action )\r
98     {\r
99         AuditEvent event = new AuditEvent( getPrincipal(), action );\r
100         event.setRemoteIP( ServletActionContext.getRequest().getRemoteAddr() );\r
101         \r
102         for ( AuditListener listener : auditListeners )\r
103         {\r
104             listener.auditEvent( event );\r
105         }\r
106     }\r
107 \r
108     @SuppressWarnings( "unchecked" )\r
109     protected String getPrincipal()\r
110     {\r
111         return ArchivaXworkUser.getActivePrincipal( ActionContext.getContext().getSession() );\r
112     }\r
113 }\r