Author: lukaszlenart
Date: Tue Apr 3 18:34:30 2012
New Revision: 1309089
URL: http://svn.apache.org/viewvc?rev=1309089&view=rev
Log:
WW-3636 adds className parameter to @Action annotation, can be useful when used
with Spring Framework to instantiate actions
Added:
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/actions/action/ClassNameAction.java
- copied, changed from r1307911,
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/actions/action/ActionNameAction.java
Modified:
struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/Action.java
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java
Modified:
struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java?rev=1309089&r1=1309088&r2=1309089&view=diff
==
---
struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
(original)
+++
struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java
Tue Apr 3 18:34:30 2012
@@ -76,7 +76,9 @@ import java.util.regex.Pattern;
*
*/
public class PackageBasedActionConfigBuilder implements ActionConfigBuilder {
+
private static final Logger LOG =
LoggerFactory.getLogger(PackageBasedActionConfigBuilder.class);
+
private final Configuration configuration;
private final ActionNameBuilder actionNameBuilder;
private final ResultMapBuilder resultMapBuilder;
@@ -353,7 +355,7 @@ public class PackageBasedActionConfigBui
if (ctx != null)
classLoaderInterface = (ClassLoaderInterface)
ctx.get(ClassLoaderInterface.CLASS_LOADER_INTERFACE);
-return (ClassLoaderInterface)
ObjectUtils.defaultIfNull(classLoaderInterface, new
ClassLoaderInterfaceDelegate(getClassLoader()));
+return ObjectUtils.defaultIfNull(classLoaderInterface, new
ClassLoaderInterfaceDelegate(getClassLoader()));
}
}
@@ -841,14 +843,16 @@ public class PackageBasedActionConfigBui
*/
protected void createActionConfig(PackageConfig.Builder pkgCfg, Class
actionClass, String actionName,
String actionMethod, Action annotation) {
+ String className = actionClass.getName();
if (annotation != null) {
-actionName = annotation.value() != null &&
annotation.value().equals(Action.DEFAULT_VALUE) ?
-actionName : annotation.value();
+actionName = annotation.value() != null &&
annotation.value().equals(Action.DEFAULT_VALUE) ? actionName :
annotation.value();
actionName = StringUtils.contains(actionName, "/") &&
!slashesInActionNames ? StringUtils.substringAfterLast(actionName, "/") :
actionName;
+if(!Action.DEFAULT_VALUE.equals(annotation.className())){
+ className = annotation.className();
+}
}
-
-ActionConfig.Builder actionConfig = new
ActionConfig.Builder(pkgCfg.getName(),
-actionName, actionClass.getName());
+
+ActionConfig.Builder actionConfig = new
ActionConfig.Builder(pkgCfg.getName(), actionName, className);
actionConfig.methodName(actionMethod);
if (LOG.isDebugEnabled()) {
Modified:
struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/Action.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/Action.java?rev=1309089&r1=1309088&r2=1309089&view=diff
==
---
struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/Action.java
(original)
+++
struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/Action.java
Tue Apr 3 18:34:30 2012
@@ -92,4 +92,11 @@ public @interface Action {
* @return Maps return codes to exceptions. The "exceptions" interceptor
must be applied to the action.
*/
ExceptionMapping[] exceptionMappings() default {};
+
+/**
+ * Allows actions to specify different class name.
+ *
+ * @return The class name for the action.
+ */
+String className() default DEFAULT_VALUE;
}
\ No newline at end of file
Modified:
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/