[hibernate-commits] Hibernate SVN: r16990 - search/trunk/src/main/java/org/hibernate/search/util.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Jul 1 18:55:25 EDT 2009


Author: sannegrinovero
Date: 2009-07-01 18:55:25 -0400 (Wed, 01 Jul 2009)
New Revision: 16990

Modified:
   search/trunk/src/main/java/org/hibernate/search/util/PluginLoader.java
Log:
javadoc for HSEARCH-384 improve error messages for loading plugins and add consistency to the performed checks

Modified: search/trunk/src/main/java/org/hibernate/search/util/PluginLoader.java
===================================================================
--- search/trunk/src/main/java/org/hibernate/search/util/PluginLoader.java	2009-07-01 22:38:30 UTC (rev 16989)
+++ search/trunk/src/main/java/org/hibernate/search/util/PluginLoader.java	2009-07-01 22:55:25 UTC (rev 16990)
@@ -4,13 +4,29 @@
 import org.hibernate.util.ReflectHelper;
 
 /**
+ * Utility class to load instances of other classes by using a fully qualified name,
+ * or from a class type.
+ * Uses reflection and throws SearchException(s) with proper descriptions of the error,
+ * like the target class is missing a proper constructor, is an interface, is not found...
  * 
  * @author Sanne Grinovero
- *
- * @param <T>
  */
 public class PluginLoader {
 	
+	/**
+	 * Creates an instance of a target class designed by fully qualified name
+	 * 
+	 * @param <T> matches the type of targetSuperType: defines the return type
+	 * @param targetSuperType the return type of the function, the classNameToLoad will be checked
+	 * to be assignable to this type.
+	 * @param classNameToLoad a fully qualified class name, whose type is assignable to targetSuperType
+	 * @param caller the class of the caller, needed for classloading purposes
+	 * @param componentDescription a meaningful description of the role the instance will have,
+	 * used to enrich error messages to describe the context of the error
+	 * @return a new instance of classNameToLoad
+	 * @throws SearchException wrapping other error types with a proper error message for all kind of problems, like
+	 * classNotFound, missing proper constructor, wrong type, security errors.
+	 */
 	public static <T> T instanceFromName(Class<T> targetSuperType, String classNameToLoad,
 			Class<?> caller, String componentDescription) {
 		final Class<?> clazzDef;
@@ -23,6 +39,16 @@
 		return instanceFromClass( targetSuperType, clazzDef, componentDescription );
 	}
 	
+	/**
+	 * Creates an instance of target class
+	 * @param <T> the type of targetSuperType: defines the return type
+	 * @param targetSuperType the created instance will be checked to be assignable to this type
+	 * @param classToLoad the class to be instantiated
+	 * @param componentDescription a role name/description to contextualize error messages
+	 * @return a new instance of classToLoad
+	 * @throws SearchException wrapping other error types with a proper error message for all kind of problems, like
+	 * missing proper constructor, wrong type, security errors.
+	 */
 	@SuppressWarnings("unchecked")
 	public static <T> T instanceFromClass(Class<T> targetSuperType, Class<?> classToLoad, String componentDescription) {
 		checkClassType( classToLoad, componentDescription );
@@ -66,6 +92,13 @@
 		}
 	}
 
+	/**
+	 * Verifies if target class has a no-args constructor, and that it is
+	 * accessible in current security manager.
+	 * @param classToLoad the class type to check
+	 * @param componentDescription adds a meaningful description to the type to describe in the
+	 * 	exception message
+	 */
 	public static void checkHasValidconstructor(Class<?> classToLoad, String componentDescription) {
 		try {
 			classToLoad.getConstructor();




More information about the hibernate-commits mailing list