]> source.dussan.org Git - archiva.git/blob
16731d5cca063ebda0832f8b424238535f473d30
[archiva.git] /
1 package org.apache.archiva.redback.struts2.interceptor;
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 com.opensymphony.xwork2.ActionContext;
23 import com.opensymphony.xwork2.ActionInvocation;
24 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
25 import org.apache.struts2.StrutsException;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
28 import org.springframework.context.ApplicationContext;
29 import org.springframework.web.context.WebApplicationContext;
30
31 import java.util.Map;
32
33 public abstract class AbstractHttpRequestTrackerInterceptor
34     extends AbstractInterceptor
35 {
36     public static final String TRACKER_NAME = ActionInvocationTracker.class.getName( )+ ":name";
37
38     protected Logger logger = LoggerFactory.getLogger( getClass() );
39
40     protected abstract String getTrackerName();
41
42     @Override
43     public void init()
44     {
45         super.init();
46         logger.info( "{} initialized!", this.getClass().getName() );
47     }
48
49     @SuppressWarnings( "unchecked" )
50     protected synchronized ActionInvocationTracker addActionInvocation( ActionInvocation invocation )
51     {
52         Map<String, Object> sessionMap = invocation.getInvocationContext().getSession();
53
54         ApplicationContext applicationContext = (ApplicationContext) ActionContext.getContext().getApplication().get(
55             WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE );
56         if ( applicationContext == null )
57         {
58             throw new StrutsException( "Could not locate ApplicationContext" );
59         }
60
61         ActionInvocationTracker tracker = (ActionInvocationTracker) sessionMap.get( ActionInvocationTracker.class.getName() );
62
63         if ( tracker == null )
64         {
65             //noinspection deprecation
66             tracker = applicationContext.getBean( getTrackerName(), ActionInvocationTracker.class );
67             sessionMap.put( ActionInvocationTracker.class.getName(), tracker );
68         }
69
70         tracker.addActionInvocation( invocation );
71
72         return tracker;
73     }
74 }