You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tn...@apache.org on 2013/01/22 17:08:48 UTC
svn commit: r1437018 -
/commons/proper/collections/trunk/src/main/java/org/apache/commons/collections/functors/InstantiateFactory.java
Author: tn
Date: Tue Jan 22 16:08:48 2013
New Revision: 1437018
URL: http://svn.apache.org/viewvc?rev=1437018&view=rev
Log:
Move input parameter cloning from factory method to the ctor to prevent findbugs warning.
Modified:
commons/proper/collections/trunk/src/main/java/org/apache/commons/collections/functors/InstantiateFactory.java
Modified: commons/proper/collections/trunk/src/main/java/org/apache/commons/collections/functors/InstantiateFactory.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/main/java/org/apache/commons/collections/functors/InstantiateFactory.java?rev=1437018&r1=1437017&r2=1437018&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/main/java/org/apache/commons/collections/functors/InstantiateFactory.java (original)
+++ commons/proper/collections/trunk/src/main/java/org/apache/commons/collections/functors/InstantiateFactory.java Tue Jan 22 16:08:48 2013
@@ -48,11 +48,12 @@ public class InstantiateFactory<T> imple
*
* @param <T> the type the factory creates
* @param classToInstantiate the class to instantiate, not null
- * @param paramTypes the constructor parameter types
- * @param args the constructor arguments
+ * @param paramTypes the constructor parameter types, cloned
+ * @param args the constructor arguments, cloned
* @return a new instantiate factory
*/
- public static <T> Factory<T> instantiateFactory(final Class<T> classToInstantiate, Class<?>[] paramTypes,
+ public static <T> Factory<T> instantiateFactory(final Class<T> classToInstantiate,
+ Class<?>[] paramTypes,
Object[] args) {
if (classToInstantiate == null) {
throw new IllegalArgumentException("Class to instantiate must not be null");
@@ -66,8 +67,6 @@ public class InstantiateFactory<T> imple
if (paramTypes == null || paramTypes.length == 0) {
return new InstantiateFactory<T>(classToInstantiate);
}
- paramTypes = paramTypes.clone();
- args = args.clone();
return new InstantiateFactory<T>(classToInstantiate, paramTypes, args);
}
@@ -90,14 +89,14 @@ public class InstantiateFactory<T> imple
* Use <code>getInstance</code> if you want that.
*
* @param classToInstantiate the class to instantiate
- * @param paramTypes the constructor parameter types, not cloned
- * @param args the constructor arguments, not cloned
+ * @param paramTypes the constructor parameter types, cloned
+ * @param args the constructor arguments, cloned
*/
public InstantiateFactory(final Class<T> classToInstantiate, final Class<?>[] paramTypes, final Object[] args) {
super();
iClassToInstantiate = classToInstantiate;
- iParamTypes = paramTypes;
- iArgs = args;
+ iParamTypes = paramTypes.clone();
+ iArgs = args.clone();
findConstructor();
}
@@ -107,7 +106,6 @@ public class InstantiateFactory<T> imple
private void findConstructor() {
try {
iConstructor = iClassToInstantiate.getConstructor(iParamTypes);
-
} catch (final NoSuchMethodException ex) {
throw new IllegalArgumentException("InstantiateFactory: The constructor must exist and be public ");
}