Update of 
/var/cvs/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/util
In directory 
james.mmbase.org:/tmp/cvs-serv2827/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/util

Modified Files:
        ClassInstanceFactory.java 
Log Message:
tests are finished


See also: 
http://cvs.mmbase.org/viewcvs/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/util


Index: ClassInstanceFactory.java
===================================================================
RCS file: 
/var/cvs/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/util/ClassInstanceFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- ClassInstanceFactory.java   12 Nov 2008 19:41:28 -0000      1.3
+++ ClassInstanceFactory.java   10 Dec 2008 15:44:18 -0000      1.4
@@ -6,40 +6,48 @@
 /**
  * @javadoc
  * @author Ernst Bunders
- * @version $Id: ClassInstanceFactory.java,v 1.3 2008/11/12 19:41:28 michiel 
Exp $
+ * @version $Id: ClassInstanceFactory.java,v 1.4 2008/12/10 15:44:18 ernst Exp 
$
  */
 
 public class ClassInstanceFactory<T> {
 
-    private Class<? extends T> clazz;
+    private Class<? extends T> classToInstantiate;
 
     public Class<? extends T> getClazz() {
-        return clazz;
+        return classToInstantiate;
     }
 
     @SuppressWarnings("unchecked")
     public void setClassName(String className) {
         try {
-            Class<? extends T> c = (Class<? extends T>) 
Class.forName(className);
-            boolean pubNoarg = false;
-            for (Constructor<?> m : c.getConstructors()) {
-                if (m.getParameterTypes().length == 0 && 
Modifier.isPublic(m.getModifiers())) {
-                    pubNoarg = true;
-                    this.clazz = c;
+            Class<? extends T> classFromName = (Class<? extends T>) 
Class.forName(className);
+            checkIfclassHasNoargConstructor(classFromName);
+            classToInstantiate = classFromName;
+        } catch (ClassNotFoundException e) {
+            throw new IllegalArgumentException(String.format("Class name '%s' 
can not be loaded", className));
                 }
             }
-            if (!pubNoarg) {
-                throw new IllegalArgumentException(String.format("Class '%s' 
has no public no-arg constructor",
-                        className));
+
+    private void checkIfclassHasNoargConstructor(Class<? extends T> c) {
+        for (Constructor<?> m : c.getConstructors()) {
+            if (constructorIsPublicNoarg(m))
+                return;
+        }
+        throw new IllegalArgumentException(String.format("Class '%s' has no 
public no-arg constructor", c.getName()));
             }
-        } catch (ClassNotFoundException e) {
-            throw new IllegalArgumentException(String.format("Class name '%s' 
can not be loaded", className));
+
+    private boolean constructorIsPublicNoarg(Constructor<?> m) {
+        return m.getParameterTypes().length == 0 && 
Modifier.isPublic(m.getModifiers());
         }
+
+    public void setClass(Class<? extends T> classToInstantiate) {
+        checkIfclassHasNoargConstructor(classToInstantiate);
+        this.classToInstantiate = classToInstantiate;
     }
 
     public T newInstance() {
         try {
-            return clazz.newInstance();
+            return classToInstantiate.newInstance();
         } catch (InstantiationException e) {
             e.printStackTrace();
         } catch (IllegalAccessException e) {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to