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/19 19:21:25 UTC
svn commit: r1072407 -
/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/RulesBinderImpl.java
Author: simonetripodi
Date: Sat Feb 19 18:21:24 2011
New Revision: 1072407
URL: http://svn.apache.org/viewvc?rev=1072407&view=rev
Log:
when reporting an error message, added the Java file name of (Abstract)RulesModule and the related line number where the binding error occurred
Modified:
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/RulesBinderImpl.java
Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/RulesBinderImpl.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/RulesBinderImpl.java?rev=1072407&r1=1072406&r2=1072407&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/RulesBinderImpl.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/internal/rulesbinder/RulesBinderImpl.java Sat Feb 19 18:21:24 2011
@@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.util.Formatter;
import java.util.List;
+import org.apache.commons.digester3.AbstractRulesModule;
import org.apache.commons.digester3.DigesterLoadingException;
import org.apache.commons.digester3.Rule;
import org.apache.commons.digester3.RulesBinder;
@@ -65,6 +66,26 @@ public final class RulesBinderImpl imple
* {@inheritDoc}
*/
public void addError(String messagePattern, Object... arguments) {
+ StackTraceElement[] stackTrace = new Exception().getStackTrace();
+ StackTraceElement element = stackTrace[3];
+ Class<?> moduleClass = null;
+
+ try {
+ moduleClass = Class.forName(element.getClassName(), false, this.classLoader);
+ } catch (ClassNotFoundException e) {
+ try {
+ moduleClass = Class.forName(element.getClassName(), false, this.getClass().getClassLoader());
+ } catch (ClassNotFoundException e1) {
+ // swallow, don't write the file name:line number
+ }
+ }
+
+ if (moduleClass != null) {
+ if (!AbstractRulesModule.class.isAssignableFrom(moduleClass)) {
+ element = stackTrace[2];
+ }
+ messagePattern = String.format("%s (%s:%s)", messagePattern, element.getFileName(), element.getLineNumber());
+ }
this.addError(new ErrorMessage(messagePattern, arguments));
}