WW-3699 - from now, buildValidatorKey includes the package name

git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@1199696 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Maurizio Cucchiara
2011-11-09 11:03:35 +00:00
parent 04aa19c9e7
commit 63e704201a
2 changed files with 11 additions and 4 deletions
@@ -19,12 +19,14 @@ package com.opensymphony.xwork2.validator;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionProxy;
import com.opensymphony.xwork2.config.entities.ActionConfig;
import com.opensymphony.xwork2.inject.Inject;
import com.opensymphony.xwork2.util.FileManager;
import com.opensymphony.xwork2.util.ValueStack;
import com.opensymphony.xwork2.util.logging.Logger;
import com.opensymphony.xwork2.util.logging.LoggerFactory;
import com.opensymphony.xwork2.validator.validators.VisitorFieldValidator;
import org.apache.commons.lang.StringUtils;
import java.io.IOException;
import java.io.InputStream;
@@ -217,13 +219,18 @@ public class AnnotationActionValidatorManager implements ActionValidatorManager
protected static String buildValidatorKey(Class clazz) {
ActionInvocation invocation = ActionContext.getContext().getActionInvocation();
ActionProxy proxy = invocation.getProxy();
ActionConfig config = proxy.getConfig();
//the key needs to use the name of the action from the config file,
//instead of the url, so wild card actions will have the same validator
//see WW-2996
StringBuilder sb = new StringBuilder(clazz.getName());
sb.append("/");
sb.append(proxy.getConfig().getName());
if (StringUtils.isNotBlank(config.getPackageName())) {
sb.append(config.getPackageName());
sb.append("/");
}
sb.append(config.getName());
sb.append("|");
sb.append(proxy.getMethod());
return sb.toString();
@@ -23,10 +23,10 @@ import com.opensymphony.xwork2.test.SimpleAnnotationAction2;
import com.opensymphony.xwork2.test.SimpleAnnotationAction3;
import com.opensymphony.xwork2.util.FileManager;
import com.opensymphony.xwork2.validator.validators.*;
import org.easymock.EasyMock;
import java.util.List;
import org.easymock.EasyMock;
/**
@@ -47,7 +47,7 @@ public class AnnotationActionValidatorManagerTest extends XWorkTestCase {
super.setUp();
annotationActionValidatorManager = (AnnotationActionValidatorManager) container.getInstance(ActionValidatorManager.class);
ActionConfig config = new ActionConfig.Builder("", "name", "").build();
ActionConfig config = new ActionConfig.Builder("packageName", "name", "").build();
ActionInvocation invocation = EasyMock.createNiceMock(ActionInvocation.class);
ActionProxy proxy = EasyMock.createNiceMock(ActionProxy.class);
@@ -71,7 +71,7 @@ public class AnnotationActionValidatorManagerTest extends XWorkTestCase {
public void testBuildValidatorKey() {
String validatorKey = AnnotationActionValidatorManager.buildValidatorKey(SimpleAnnotationAction.class);
assertEquals(SimpleAnnotationAction.class.getName() + "/name|execute", validatorKey);
assertEquals(SimpleAnnotationAction.class.getName() + "/packageName/name|execute", validatorKey);
}
public void testBuildsValidatorsForAlias() {