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