You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2011/02/22 13:28:47 UTC
svn commit: r1073311 - in
/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3:
internal/rulesbinder/ rule/
Author: simonetripodi
Date: Tue Feb 22 12:28:46 2011
New Revision: 1073311
URL: http://svn.apache.org/viewvc?rev=1073311&view=rev
Log:
setNext(String) argument type resolved at bootstrap and not at runtime
Modified:
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/AbstractParamTypeBuilder.java
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/LinkedRuleBuilderImpl.java
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/SetNextBuilderImpl.java
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/SetRootBuilderImpl.java
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/SetTopBuilderImpl.java
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/AbstractMethodRule.java
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/SetNextRule.java
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/SetRootRule.java
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/SetTopRule.java
Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/AbstractParamTypeBuilder.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/AbstractParamTypeBuilder.java?rev=1073311&r1=1073310&r2=1073311&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/AbstractParamTypeBuilder.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/AbstractParamTypeBuilder.java Tue Feb 22 12:28:46 2011
@@ -31,17 +31,21 @@ abstract class AbstractParamTypeBuilder<
private final String methodName;
+ private final ClassLoader classLoader;
+
private boolean useExactMatch = false;
- private String paramType;
+ private Class<?> paramType;
public AbstractParamTypeBuilder(String keyPattern,
String namespaceURI,
RulesBinder mainBinder,
LinkedRuleBuilderImpl mainBuilder,
- String methodName) {
+ String methodName,
+ ClassLoader classLoader) {
super(keyPattern, namespaceURI, mainBinder, mainBuilder);
this.methodName = methodName;
+ this.classLoader = classLoader;
}
/**
@@ -60,7 +64,18 @@ abstract class AbstractParamTypeBuilder<
* {@inheritDoc}
*/
public final ParamTypeBuilder<R> withParameterType(String paramType) {
- this.paramType = paramType;
+ if (paramType == null) {
+ this.reportError(String.format(".%s.withParameterType(Class<?>)", this.methodName),
+ "NULL Java type not allowed");
+ return this;
+ }
+
+ try {
+ this.paramType = this.classLoader.loadClass(paramType);
+ } catch (ClassNotFoundException e) {
+ this.reportError(String.format(".%s.withParameterType(Class<?>)", this.methodName),
+ String.format("class '%s' cannot be load", paramType));
+ }
return this;
}
@@ -76,7 +91,7 @@ abstract class AbstractParamTypeBuilder<
return this.methodName;
}
- protected final String getParamType() {
+ protected final Class<?> getParamType() {
return this.paramType;
}
Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/LinkedRuleBuilderImpl.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/LinkedRuleBuilderImpl.java?rev=1073311&r1=1073310&r2=1073311&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/LinkedRuleBuilderImpl.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/LinkedRuleBuilderImpl.java Tue Feb 22 12:28:46 2011
@@ -162,7 +162,7 @@ final class LinkedRuleBuilderImpl implem
this.keyPattern);
}
return this.addProvider(
- new SetNextBuilderImpl(this.keyPattern, this.namespaceURI, this.mainBinder, this, methodName));
+ new SetNextBuilderImpl(this.keyPattern, this.namespaceURI, this.mainBinder, this, methodName, this.classLoader));
}
/**
@@ -202,7 +202,7 @@ final class LinkedRuleBuilderImpl implem
}
return this.addProvider(
- new SetRootBuilderImpl(this.keyPattern, this.namespaceURI, this.mainBinder, this, methodName));
+ new SetRootBuilderImpl(this.keyPattern, this.namespaceURI, this.mainBinder, this, methodName, this.classLoader));
}
/**
@@ -215,7 +215,7 @@ final class LinkedRuleBuilderImpl implem
}
return this.addProvider(
- new SetTopBuilderImpl(this.keyPattern, this.namespaceURI, this.mainBinder, this, methodName));
+ new SetTopBuilderImpl(this.keyPattern, this.namespaceURI, this.mainBinder, this, methodName, this.classLoader));
}
/**
Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/SetNextBuilderImpl.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/SetNextBuilderImpl.java?rev=1073311&r1=1073310&r2=1073311&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/SetNextBuilderImpl.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/SetNextBuilderImpl.java Tue Feb 22 12:28:46 2011
@@ -27,8 +27,9 @@ final class SetNextBuilderImpl extends A
String namespaceURI,
RulesBinder mainBinder,
LinkedRuleBuilderImpl mainBuilder,
- String methodName) {
- super(keyPattern, namespaceURI, mainBinder, mainBuilder, methodName);
+ String methodName,
+ ClassLoader classLoader) {
+ super(keyPattern, namespaceURI, mainBinder, mainBuilder, methodName, classLoader);
}
/**
Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/SetRootBuilderImpl.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/SetRootBuilderImpl.java?rev=1073311&r1=1073310&r2=1073311&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/SetRootBuilderImpl.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/SetRootBuilderImpl.java Tue Feb 22 12:28:46 2011
@@ -27,8 +27,9 @@ final class SetRootBuilderImpl extends A
String namespaceURI,
RulesBinder mainBinder,
LinkedRuleBuilderImpl mainBuilder,
- String methodName) {
- super(keyPattern, namespaceURI, mainBinder, mainBuilder, methodName);
+ String methodName,
+ ClassLoader classLoader) {
+ super(keyPattern, namespaceURI, mainBinder, mainBuilder, methodName, classLoader);
}
/**
Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/SetTopBuilderImpl.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/SetTopBuilderImpl.java?rev=1073311&r1=1073310&r2=1073311&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/SetTopBuilderImpl.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/SetTopBuilderImpl.java Tue Feb 22 12:28:46 2011
@@ -27,8 +27,9 @@ final class SetTopBuilderImpl extends Ab
String namespaceURI,
RulesBinder mainBinder,
LinkedRuleBuilderImpl mainBuilder,
- String methodName) {
- super(keyPattern, namespaceURI, mainBinder, mainBuilder, methodName);
+ String methodName,
+ ClassLoader classLoader) {
+ super(keyPattern, namespaceURI, mainBinder, mainBuilder, methodName, classLoader);
}
/**
Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/AbstractMethodRule.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/AbstractMethodRule.java?rev=1073311&r1=1073310&r2=1073311&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/AbstractMethodRule.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/AbstractMethodRule.java Tue Feb 22 12:28:46 2011
@@ -35,7 +35,7 @@ abstract class AbstractMethodRule extend
/**
* The Java class name of the parameter type expected by the method.
*/
- private final String paramType;
+ private final Class<?> paramType;
/**
* Should we use exact matching.
@@ -49,7 +49,7 @@ abstract class AbstractMethodRule extend
* @param paramType
* @param useExactMatch
*/
- public AbstractMethodRule(String methodName, String paramType, boolean useExactMatch) {
+ public AbstractMethodRule(String methodName, Class<?> paramType, boolean useExactMatch) {
this.methodName = methodName;
this.paramType = paramType;
this.useExactMatch = useExactMatch;
@@ -59,7 +59,7 @@ abstract class AbstractMethodRule extend
return this.methodName;
}
- public final String getParamType() {
+ public final Class<?> getParamType() {
return this.paramType;
}
@@ -113,7 +113,7 @@ abstract class AbstractMethodRule extend
Class<?> paramTypes[] = new Class<?>[1];
if (this.getParamType() != null) {
- paramTypes[0] = this.getDigester().getClassLoader().loadClass(this.getParamType());
+ paramTypes[0] = this.getParamType();
} else {
paramTypes[0] = arg.getClass();
}
@@ -133,7 +133,7 @@ abstract class AbstractMethodRule extend
return String.format("%s[methodName=%s, paramType=%s, useExactMatch=%s]",
this.getClass().getSimpleName(),
this.methodName,
- this.paramType,
+ (this.paramType != null ? this.paramType.getName() : "unset"),
this.useExactMatch);
}
Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/SetNextRule.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/SetNextRule.java?rev=1073311&r1=1073310&r2=1073311&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/SetNextRule.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/SetNextRule.java Tue Feb 22 12:28:46 2011
@@ -46,7 +46,7 @@ public class SetNextRule extends Abstrac
* Java wrapper class instead, such as <code>java.lang.Boolean</code>
* for a <code>boolean</code> parameter)
*/
- public SetNextRule(String methodName, String paramType, boolean useExactMatch) {
+ public SetNextRule(String methodName, Class<?> paramType, boolean useExactMatch) {
super(methodName, paramType, useExactMatch);
}
Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/SetRootRule.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/SetRootRule.java?rev=1073311&r1=1073310&r2=1073311&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/SetRootRule.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/SetRootRule.java Tue Feb 22 12:28:46 2011
@@ -38,7 +38,7 @@ public class SetRootRule extends Abstrac
* Java wrapper class instead, such as <code>java.lang.Boolean</code>
* for a <code>boolean</code> parameter)
*/
- public SetRootRule(String methodName, String paramType, boolean useExactMatch) {
+ public SetRootRule(String methodName, Class<?> paramType, boolean useExactMatch) {
super(methodName, paramType, useExactMatch);
}
Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/SetTopRule.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/SetTopRule.java?rev=1073311&r1=1073310&r2=1073311&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/SetTopRule.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/rule/SetTopRule.java Tue Feb 22 12:28:46 2011
@@ -34,7 +34,7 @@ public class SetTopRule extends Abstract
* @param methodName Method name of the "set parent" method to call
* @param paramType Java class of the "set parent" method's argument
*/
- public SetTopRule(String methodName, String paramType, boolean useExactMatch) {
+ public SetTopRule(String methodName, Class<?> paramType, boolean useExactMatch) {
super(methodName, paramType, useExactMatch);
}