]> source.dussan.org Git - archiva.git/blob
fabebf44bb9f613e31fb8660cd3fe89339dd2edd
[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.ActionInvocation;
23 import org.springframework.context.annotation.Scope;
24 import org.springframework.stereotype.Controller;
25
26 import java.util.Stack;
27
28 /**
29  *
30  */
31 @Controller( "simple" )
32 @Scope( "prototype" )
33 public class SimpleActionInvocationTracker
34     implements ActionInvocationTracker
35
36     /**
37      *
38      */
39     private int historySize = 5;
40
41     private boolean backTrack;
42
43     private Stack<SavedActionInvocation> actionInvocationStack = new Stack<SavedActionInvocation>();
44
45     public void setHistorySize( int size )
46     {
47         this.historySize = size;
48     }
49
50     public int getHistorySize()
51     {
52         return this.historySize;
53     }
54
55     public int getHistoryCount()
56     {
57         return actionInvocationStack.size();
58     }
59
60     /**
61      * returns the previous actioninvocation and dropping the current one
62      */
63     public SavedActionInvocation getPrevious()
64     {
65         if ( actionInvocationStack.size() > 1 )
66         {
67             // drop the current SavedActionInvocation
68             actionInvocationStack.pop();
69             return (SavedActionInvocation) actionInvocationStack.pop();
70         }
71
72         return null;
73     }
74
75     /**
76      * return the current action invocation
77      */
78     public SavedActionInvocation getCurrent()
79     {
80         if ( actionInvocationStack.size() > 0 )
81         {
82             return (SavedActionInvocation) actionInvocationStack.pop();
83         }
84
85         return null;
86     }
87
88     /**
89      * returns the actioninvocation at the specified index, preserving
90      * the actioninvocation list
91      */
92     public SavedActionInvocation getActionInvocationAt( int index )
93     {
94         if ( actionInvocationStack.size() >= index )
95         {
96             return (SavedActionInvocation) actionInvocationStack.get( index );
97         }
98
99         return null;
100     }
101
102     public void addActionInvocation( ActionInvocation invocation )
103     {
104         actionInvocationStack.push( new SavedActionInvocation( invocation ) );
105
106         // remove oldest action invocation
107         if ( actionInvocationStack.size() > historySize )
108         {
109             actionInvocationStack.remove( 0 );
110         }
111     }
112
113     public void setBackTrack()
114     {
115         backTrack = true;
116     }
117
118     public void unsetBackTrack()
119     {
120         backTrack = false;
121     }
122
123     public boolean isBackTracked()
124     {
125         return backTrack;
126     }
127 }