commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From simonetrip...@apache.org
Subject svn commit: r1069128 - /commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/ObjectCreateRule.java
Date Wed, 09 Feb 2011 21:47:09 GMT
Author: simonetripodi
Date: Wed Feb  9 21:47:09 2011
New Revision: 1069128

URL: http://svn.apache.org/viewvc?rev=1069128&view=rev
Log:
missed from previous commit:
moved the String type resolution of ObjectCreationRule to binding time rather then execution
time

Modified:
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/ObjectCreateRule.java

Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/ObjectCreateRule.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/ObjectCreateRule.java?rev=1069128&r1=1069127&r2=1069128&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/ObjectCreateRule.java
(original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/ObjectCreateRule.java
Wed Feb  9 21:47:09 2011
@@ -29,7 +29,7 @@ public class ObjectCreateRule extends Ru
     /**
      * The Java class name of the object to be created.
      */
-    private final String className;
+    private final Class<?> type;
 
     /**
      * The attribute containing an override class name if it is present.
@@ -42,8 +42,8 @@ public class ObjectCreateRule extends Ru
      * @param className The Java class name of the object to be created
      * @param attributeName The attribute containing an override class name if it is present
      */
-    public ObjectCreateRule(String className, String attributeName) {
-        this.className = className;
+    public ObjectCreateRule(Class<?> type, String attributeName) {
+        this.type = type;
         this.attributeName = attributeName;
     }
 
@@ -53,21 +53,25 @@ public class ObjectCreateRule extends Ru
     @Override
     public void begin(String namespace, String name, Attributes attributes) throws Exception
{
         // Identify the name of the class to instantiate
-        String realClassName = this.className;
+        Class<?> clazz = this.type;
         if (this.attributeName != null) {
             String value = attributes.getValue(this.attributeName);
             if (value != null) {
-                realClassName = value;
+                clazz = this.getDigester().getClassLoader().loadClass(value);
             }
         }
         if (this.getDigester().getLog().isDebugEnabled()) {
             this.getDigester().getLog().debug(String.format("[ObjectCreateRule]{%s} New %s",
                     this.getDigester().getMatch(),
-                    realClassName));
+                    clazz.getName()));
+        }
+
+        if (clazz == null) {
+            throw this.getDigester().createSAXException(String.format("[ObjectCreateRule]{%s}
No type defined",
+                    this.getDigester().getMatch()));
         }
 
         // Instantiate the new object and push it on the context stack
-        Class<?> clazz = this.getDigester().getClassLoader().loadClass(realClassName);
         Object instance = clazz.newInstance();
         this.getDigester().push(instance);
     }
@@ -91,7 +95,7 @@ public class ObjectCreateRule extends Ru
      */
     @Override
     public String toString() {
-        return String.format("ObjectCreateRule[className=%s, attributeName=%s]", this.className,
this.attributeName);
+        return String.format("ObjectCreateRule[className=%s, attributeName=%s]", this.type.getClasses(),
this.attributeName);
     }
 
 }



Mime
View raw message