Author: musachy
Date: Wed May 14 13:24:35 2008
New Revision: 656410
URL: http://svn.apache.org/viewvc?rev=656410&view=rev
Log:
Add @InterceptorRefs, which can be applied at the class level
Added:
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/annotation/InterceptorRefs.java
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/actions/interceptor/ActionLevelInterceptor2Action.java
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/actions/interceptor/ActionLevelInterceptor3Action.java
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/actions/interceptor/ActionLevelInterceptorAction.java
Modified:
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/InterceptorMapBuilder.java
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/annotation/InterceptorRef.java
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java
Modified:
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java?rev=656410&r1=656409&r2=656410&view=diff
==============================================================================
---
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java
(original)
+++
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/DefaultInterceptorMapBuilder.java
Wed May 14 13:24:35 2008
@@ -26,7 +26,9 @@
import java.util.Map;
import org.apache.struts2.convention.annotation.Action;
+import org.apache.struts2.convention.annotation.AnnotationTools;
import org.apache.struts2.convention.annotation.InterceptorRef;
+import org.apache.struts2.convention.annotation.InterceptorRefs;
import com.opensymphony.xwork2.ObjectFactory;
import com.opensymphony.xwork2.config.Configuration;
@@ -35,6 +37,7 @@
import com.opensymphony.xwork2.config.entities.PackageConfig;
import com.opensymphony.xwork2.config.providers.InterceptorBuilder;
import com.opensymphony.xwork2.inject.Inject;
+import com.opensymphony.xwork2.util.AnnotationUtils;
import com.opensymphony.xwork2.util.logging.Logger;
import com.opensymphony.xwork2.util.logging.LoggerFactory;
@@ -49,29 +52,48 @@
private Configuration configuration;
- public List<InterceptorMapping> build(PackageConfig.Builder builder,
+ public List<InterceptorMapping> build(Class<?> actionClass,
PackageConfig.Builder builder,
String actionName, Action annotation) {
List<InterceptorMapping> interceptorList = new
ArrayList<InterceptorMapping>(
10);
+ //from @InterceptorRefs annotation
+ InterceptorRefs interceptorRefs =
AnnotationTools.findAnnotation(actionClass, InterceptorRefs.class);
+ if (interceptorRefs != null)
+ interceptorList.addAll(build(interceptorRefs.value(), actionName,
builder));
+
+ //from @InterceptorRef annotation
+ InterceptorRef interceptorRef =
AnnotationTools.findAnnotation(actionClass, InterceptorRef.class);
+ if (interceptorRef != null)
+ interceptorList.addAll(build(new InterceptorRef[]
{interceptorRef}, actionName, builder));
+
+ //from @Action annotation
if (annotation != null) {
InterceptorRef[] interceptors =
annotation.interceptorRefs();
if (interceptors != null) {
- for (InterceptorRef interceptor : interceptors)
{
- if (LOG.isTraceEnabled())
- LOG.trace("Adding interceptor
[#0] to [#1]",
-
interceptor.value(), actionName);
- Map<String, String> params =
createParameterMap(interceptor
- .params());
-
interceptorList.addAll(buildInterceptorList(builder,
- interceptor, params));
- }
+ interceptorList.addAll(build(interceptors,
actionName, builder));
}
}
return interceptorList;
}
+ protected List<InterceptorMapping> build(InterceptorRef[] interceptors,
String actionName, PackageConfig.Builder builder) {
+ List<InterceptorMapping> interceptorList = new
ArrayList<InterceptorMapping>(
+ 10);
+ for (InterceptorRef interceptor : interceptors) {
+ if (LOG.isTraceEnabled())
+ LOG.trace("Adding interceptor [#0] to [#1]",
+ interceptor.value(), actionName);
+ Map<String, String> params = createParameterMap(interceptor
+ .params());
+ interceptorList.addAll(buildInterceptorList(builder,
+ interceptor, params));
+ }
+
+ return interceptorList;
+ }
+
protected Map<String, String> createParameterMap(String[] parms) {
Map<String, String> map = new HashMap<String, String>();
int subtract = parms.length % 2;
Modified:
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/InterceptorMapBuilder.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/InterceptorMapBuilder.java?rev=656410&r1=656409&r2=656410&view=diff
==============================================================================
---
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/InterceptorMapBuilder.java
(original)
+++
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/InterceptorMapBuilder.java
Wed May 14 13:24:35 2008
@@ -40,9 +40,9 @@
* @param actionClass The class of the action.
* @param annotation The action annotation.
* @param actionName The action name.
- * @param packageConfig The package configuration that the action will
be added to.
+ * @param builder The package configuration builder.
* @return The mapping of the interceptors. If there were none found
- * than this should return an empty Map.
+ * then this should return an empty List.
*/
- List<InterceptorMapping> build(PackageConfig.Builder builder, String
actionName, Action annotation);
+ List<InterceptorMapping> build(Class<?> actionClass,
PackageConfig.Builder builder, String actionName, Action annotation);
}
Modified:
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java?rev=656410&r1=656409&r2=656410&view=diff
==============================================================================
---
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
(original)
+++
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
Wed May 14 13:24:35 2008
@@ -430,7 +430,7 @@
}
//build interceptors
- List<InterceptorMapping> interceptors =
interceptorMapBuilder.build(pkgCfg, actionName, annotation);
+ List<InterceptorMapping> interceptors =
interceptorMapBuilder.build(actionClass, pkgCfg, actionName, annotation);
actionConfig.addInterceptors(interceptors);
//build results
Modified:
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/annotation/InterceptorRef.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/annotation/InterceptorRef.java?rev=656410&r1=656409&r2=656410&view=diff
==============================================================================
---
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/annotation/InterceptorRef.java
(original)
+++
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/annotation/InterceptorRef.java
Wed May 14 13:24:35 2008
@@ -28,7 +28,10 @@
/**
* <!-- START SNIPPET: javadoc -->
* <p>
- * This annotation allows interceptor to be applied to acctions
+ * This annotation allows an interceptor to be applied to an action. If
+ * this annotation is used at the class level, then the interceptor
+ * will be applied to all actions defined on that class, and will be applied
+ * before the ones defined at the method level.
* </p>
* <!-- END SNIPPET: javadoc -->
*/
@@ -39,7 +42,7 @@
* @return name of the interceptor or interceptor stack
*/
String value();
-
+
/**
* @return The parameters passed to the interceptor. This is a list of
strings that form a name/value
* pair chain, since creating a Map for annotations is not
possible. An example would be:
Added:
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/annotation/InterceptorRefs.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/annotation/InterceptorRefs.java?rev=656410&view=auto
==============================================================================
---
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/annotation/InterceptorRefs.java
(added)
+++
struts/sandbox/trunk/struts2-convention-plugin/src/main/java/org/apache/struts2/convention/annotation/InterceptorRefs.java
Wed May 14 13:24:35 2008
@@ -0,0 +1,40 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.struts2.convention.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * <!-- START SNIPPET: javadoc -->
+ * <p>
+ * This annotation allows a class to define more than one [EMAIL PROTECTED]
InterceptorRef}
+ * annotations.
+ * </p>
+ * <!-- END SNIPPET: javadoc -->
+ */
[EMAIL PROTECTED](RetentionPolicy.RUNTIME)
[EMAIL PROTECTED]({ElementType.TYPE})
+public @interface InterceptorRefs {
+ InterceptorRef[] value();
+}
Modified:
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java?rev=656410&r1=656409&r2=656410&view=diff
==============================================================================
---
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java
(original)
+++
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java
Wed May 14 13:24:35 2008
@@ -20,6 +20,12 @@
*/
package org.apache.struts2.convention;
+import static org.apache.struts2.convention.ReflectionTools.getAnnotation;
+import static org.easymock.EasyMock.checkOrder;
+import static org.easymock.EasyMock.createStrictMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.verify;
+
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -28,7 +34,6 @@
import junit.framework.TestCase;
-import static org.apache.struts2.convention.ReflectionTools.*;
import org.apache.struts2.convention.actions.DefaultResultPathAction;
import org.apache.struts2.convention.actions.NoAnnotationAction;
import org.apache.struts2.convention.actions.Skip;
@@ -36,6 +41,9 @@
import org.apache.struts2.convention.actions.action.ActionNamesAction;
import org.apache.struts2.convention.actions.action.SingleActionNameAction;
import org.apache.struts2.convention.actions.action.TestAction;
+import
org.apache.struts2.convention.actions.interceptor.ActionLevelInterceptor2Action;
+import
org.apache.struts2.convention.actions.interceptor.ActionLevelInterceptor3Action;
+import
org.apache.struts2.convention.actions.interceptor.ActionLevelInterceptorAction;
import org.apache.struts2.convention.actions.interceptor.InterceptorsAction;
import
org.apache.struts2.convention.actions.namespace.ActionLevelNamespaceAction;
import
org.apache.struts2.convention.actions.namespace.ClassLevelNamespaceAction;
@@ -54,9 +62,7 @@
import org.apache.struts2.convention.annotation.Actions;
import org.apache.struts2.dispatcher.ServletDispatcherResult;
import org.easymock.EasyMock;
-import static org.easymock.EasyMock.*;
-import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ObjectFactory;
import com.opensymphony.xwork2.config.Configuration;
import com.opensymphony.xwork2.config.entities.ActionConfig;
@@ -69,11 +75,7 @@
import com.opensymphony.xwork2.config.impl.DefaultConfiguration;
import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.inject.Scope.Strategy;
-import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
-import com.opensymphony.xwork2.interceptor.Interceptor;
import com.opensymphony.xwork2.ognl.OgnlReflectionProvider;
-import com.opensymphony.xwork2.util.reflection.ReflectionProvider;
-import com.opensymphony.xwork2.validator.ValidationInterceptor;
/**
* <p>
@@ -164,6 +166,13 @@
expect(resultMapBuilder.build(InterceptorsAction.class,
getAnnotation(InterceptorsAction.class, "run3", Action.class), "action300",
interceptorRefsPkg)).andReturn(results);
expect(resultMapBuilder.build(InterceptorsAction.class,
getAnnotation(InterceptorsAction.class, "run4", Action.class), "action400",
interceptorRefsPkg)).andReturn(results);
+ expect(resultMapBuilder.build(ActionLevelInterceptorAction.class,
getAnnotation(ActionLevelInterceptorAction.class, "run1", Action.class),
"action500", interceptorRefsPkg)).andReturn(results);
+ expect(resultMapBuilder.build(ActionLevelInterceptorAction.class,
getAnnotation(ActionLevelInterceptorAction.class, "run2", Action.class),
"action600", interceptorRefsPkg)).andReturn(results);
+ expect(resultMapBuilder.build(ActionLevelInterceptorAction.class,
getAnnotation(ActionLevelInterceptorAction.class, "run3", Action.class),
"action700", interceptorRefsPkg)).andReturn(results);
+
+ expect(resultMapBuilder.build(ActionLevelInterceptor2Action.class,
getAnnotation(ActionLevelInterceptor2Action.class, "run1", Action.class),
"action800", interceptorRefsPkg)).andReturn(results);
+ expect(resultMapBuilder.build(ActionLevelInterceptor3Action.class,
getAnnotation(ActionLevelInterceptor3Action.class, "run1", Action.class),
"action900", interceptorRefsPkg)).andReturn(results);
+
/* org.apache.struts2.convention.actions.namespace */
expect(resultMapBuilder.build(ActionLevelNamespaceAction.class,
getAnnotation(ActionLevelNamespaceAction.class, "execute", Action.class),
"action", actionLevelNamespacePkg)).andReturn(results);
expect(resultMapBuilder.build(ClassLevelNamespaceAction.class, null,
"class-level-namespace", classLevelNamespacePkg)).andReturn(results);
@@ -309,12 +318,21 @@
/* org.apache.struts2.convention.actions.interceptorRefs */
pkgConfig =
configuration.getPackageConfig("org.apache.struts2.convention.actions.interceptor#struts-default#/interceptor");
assertNotNull(pkgConfig);
- assertEquals(4, pkgConfig.getActionConfigs().size());
+ assertEquals(9, pkgConfig.getActionConfigs().size());
verifyActionConfigInterceptors(pkgConfig, "action100",
"interceptor-1");
verifyActionConfigInterceptors(pkgConfig, "action200",
"interceptor-1", "interceptor-2");
verifyActionConfigInterceptors(pkgConfig, "action300",
"interceptor-1", "interceptor-2");
verifyActionConfigInterceptors(pkgConfig, "action400",
"interceptor-1", "interceptor-1", "interceptor-2");
-
+
+ // Interceptors at class level
+ verifyActionConfigInterceptors(pkgConfig, "action500",
"interceptor-1");
+ verifyActionConfigInterceptors(pkgConfig, "action600",
"interceptor-1", "interceptor-2");
+ verifyActionConfigInterceptors(pkgConfig, "action700",
"interceptor-1", "interceptor-1", "interceptor-2");
+
+ //multiple interceptor at class level
+ verifyActionConfigInterceptors(pkgConfig, "action800",
"interceptor-1", "interceptor-2");
+ verifyActionConfigInterceptors(pkgConfig, "action900",
"interceptor-1", "interceptor-1", "interceptor-2");
+
/* org.apache.struts2.convention.actions */
pkgConfig =
configuration.getPackageConfig("org.apache.struts2.convention.actions#struts-default#");
assertNotNull(pkgConfig);
Added:
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/actions/interceptor/ActionLevelInterceptor2Action.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/actions/interceptor/ActionLevelInterceptor2Action.java?rev=656410&view=auto
==============================================================================
---
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/actions/interceptor/ActionLevelInterceptor2Action.java
(added)
+++
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/actions/interceptor/ActionLevelInterceptor2Action.java
Wed May 14 13:24:35 2008
@@ -0,0 +1,42 @@
+/*
+ * $Id: ActionLevelResultAction.java 655902 2008-05-13 15:15:12Z bpontarelli $
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.struts2.convention.actions.interceptor;
+
+import org.apache.struts2.convention.annotation.Action;
+import org.apache.struts2.convention.annotation.InterceptorRef;
+import org.apache.struts2.convention.annotation.InterceptorRefs;
+
+/**
+ * <p>
+ * This is a test action with 2 interceptors at the action level.
+ * </p>
+ */
[EMAIL PROTECTED]({
+ @InterceptorRef("interceptor-1"),
+ @InterceptorRef("interceptor-2")
+})
+public class ActionLevelInterceptor2Action {
+
+ @Action(value = "action800")
+ public String run1() throws Exception {
+ return null;
+ }
+}
\ No newline at end of file
Added:
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/actions/interceptor/ActionLevelInterceptor3Action.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/actions/interceptor/ActionLevelInterceptor3Action.java?rev=656410&view=auto
==============================================================================
---
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/actions/interceptor/ActionLevelInterceptor3Action.java
(added)
+++
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/actions/interceptor/ActionLevelInterceptor3Action.java
Wed May 14 13:24:35 2008
@@ -0,0 +1,42 @@
+/*
+ * $Id: ActionLevelResultAction.java 655902 2008-05-13 15:15:12Z bpontarelli $
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.struts2.convention.actions.interceptor;
+
+import org.apache.struts2.convention.annotation.Action;
+import org.apache.struts2.convention.annotation.InterceptorRef;
+import org.apache.struts2.convention.annotation.InterceptorRefs;
+
+/**
+ * <p>
+ * This is a test action with 1 interceptor and 1 stack at the action level.
+ * </p>
+ */
[EMAIL PROTECTED]({
+ @InterceptorRef("interceptor-1"),
+ @InterceptorRef("stack-1")
+})
+public class ActionLevelInterceptor3Action {
+
+ @Action(value = "action900")
+ public String run1() throws Exception {
+ return null;
+ }
+}
\ No newline at end of file
Added:
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/actions/interceptor/ActionLevelInterceptorAction.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/actions/interceptor/ActionLevelInterceptorAction.java?rev=656410&view=auto
==============================================================================
---
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/actions/interceptor/ActionLevelInterceptorAction.java
(added)
+++
struts/sandbox/trunk/struts2-convention-plugin/src/test/java/org/apache/struts2/convention/actions/interceptor/ActionLevelInterceptorAction.java
Wed May 14 13:24:35 2008
@@ -0,0 +1,48 @@
+/*
+ * $Id: ActionLevelResultAction.java 655902 2008-05-13 15:15:12Z bpontarelli $
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.struts2.convention.actions.interceptor;
+
+import org.apache.struts2.convention.annotation.Action;
+import org.apache.struts2.convention.annotation.InterceptorRef;
+
+/**
+ * <p>
+ * This is a test action with one interceptor at the action level.
+ * </p>
+ */
[EMAIL PROTECTED]("interceptor-1")
+public class ActionLevelInterceptorAction {
+
+ @Action(value = "action500")
+ public String run1() throws Exception {
+ return null;
+ }
+
+ @Action(value = "action600", interceptorRefs =
@InterceptorRef("interceptor-2"))
+ public String run2() throws Exception {
+ return null;
+ }
+
+ @Action(value = "action700", interceptorRefs = @InterceptorRef("stack-1"))
+ public String run3() throws Exception {
+ return null;
+ }
+}