(no commit message)
[utils] / system / general / src / main / java / org / wamblee / system / adapters / ParameterValues.java
index 4b561c3e2f9fceddfc3466069b2657ce48d83dc7..2f6f12de0c0f3d6da71f5512e54f44b138e28684 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright 2008 the original author or authors.
- *
+ * Copyright 2005-2010 the original author or authors.
+ * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- *
+ * 
  *      http://www.apache.org/licenses/LICENSE-2.0
- *
+ * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -20,37 +20,29 @@ import org.wamblee.system.core.RequiredInterface;
 import org.wamblee.system.core.Scope;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
-
 /**
- * Represents parameter values for a method or constructor and allows for
- * the configuration of how these values are retrieved.
- *
+ * Represents parameter values for a method or constructor and allows for the
+ * configuration of how these values are retrieved.
+ * 
  * @author Erik Brakkee
  */
 public class ParameterValues {
-    /**
-     * DOCUMENT ME!
-     */
     private String[] names;
 
-    /**
-     * DOCUMENT ME!
-     */
     private Class[] types;
 
-    /**
-     * DOCUMENT ME!
-     */
     private ValueProvider[] values;
 
-/**
-         * Constructs the configuration. By default no constructor is selected and 
-         * one of {@link #select(Class...)} or 
-         * {@link #greedy()} must be called.  
-         * @param aClass Class to construct. 
-         */
+    /**
+     * Constructs the configuration. By default no constructor is selected and
+     * one of {@link #select(Class...)} or {@link #greedy()} must be called.
+     * 
+     * @param aClass
+     *            Class to construct.
+     */
     public ParameterValues(Class[] aTypes) {
         names = new String[aTypes.length];
 
@@ -62,51 +54,54 @@ public class ParameterValues {
         resetValues();
     }
 
-/**
-     * Constructs the configuration. By default no constructor is selected and 
-     * one of {@link #select(Class...)} or 
-     * {@link #greedy()} must be called.
-     * @param aNames Names of the arguments.   
-     * @param aClass Class to construct. 
+    /**
+     * Constructs the configuration. By default no constructor is selected and
+     * one of {@link #select(Class...)} or {@link #greedy()} must be called.
+     * 
+     * @param aNames
+     *            Names of the arguments.
+     * @param aClass
+     *            Class to construct.
      */
     public ParameterValues(String[] aNames, Class[] aTypes) {
         assert aNames.length == aTypes.length;
-        names     = aNames;
-        types     = aTypes;
+        names = aNames;
+        types = Arrays.copyOf(aTypes, aTypes.length);
         resetValues();
     }
 
     /**
      * The types of the parameter values.
-     *
+     * 
      * @return Types.
      */
     public Class[] getTypes() {
-        return types;
+        return Arrays.copyOf(types, types.length);
     }
 
     /**
-     * Sets argument i to be optional, meaning that null is allowed to
-     * be passed in.
-     *
-     * @param aArg Argument to set.
-     *
-     * @return DOCUMENT ME!
+     * Sets argument i to be optional, meaning that null is allowed to be passed
+     * in.
+     * 
+     * @param aArg
+     *            Argument to set.
+     * 
      */
     public ParameterValues setOptional(int aArg) {
-        values[aArg] = new RequiredInterfaceProvider(new DefaultRequiredInterface(
-                    "arg" + aArg, types[aArg], true));
+        values[aArg] = new RequiredInterfaceProvider(
+            new DefaultRequiredInterface("arg" + aArg, types[aArg], true));
 
         return this;
     }
 
     /**
      * Sets the argument i to a fixed value.
-     *
-     * @param aArg Argument to set.
-     * @param aValue Value.
-     *
-     * @return DOCUMENT ME!
+     * 
+     * @param aArg
+     *            Argument to set.
+     * @param aValue
+     *            Value.
+     * 
      */
     public ParameterValues setValue(int aArg, Object aValue) {
         values[aArg] = new FixedValueProvider(aValue);
@@ -121,15 +116,15 @@ public class ParameterValues {
         values = new ValueProvider[types.length];
 
         for (int i = 0; i < values.length; i++) {
-            values[i] = new RequiredInterfaceProvider(new DefaultRequiredInterface(
-                        names[i], types[i]));
+            values[i] = new RequiredInterfaceProvider(
+                new DefaultRequiredInterface(names[i], types[i]));
         }
     }
 
     /**
-     * Gets the required interfaces to provide values that are not
-     * provided in another way.
-     *
+     * Gets the required interfaces to provide values that are not provided in
+     * another way.
+     * 
      * @return Required interfaces.
      */
     public List<RequiredInterface> getRequiredInterfaces() {
@@ -147,9 +142,10 @@ public class ParameterValues {
 
     /**
      * Returns the values to use in the given scope.
-     *
-     * @param aScope Scope within which to retrieve the values.
-     *
+     * 
+     * @param aScope
+     *            Scope within which to retrieve the values.
+     * 
      * @return Values.
      */
     public Object[] values(Scope aScope) {