updated coding rules.
[utils] / system / general / src / main / java / org / wamblee / system / adapters / ParameterValues.java
index 413481907a92dce77853cc40caa5bb9b75ed7164..fa0f008e55058314339a42c79f8b674064daf4cc 100644 (file)
@@ -22,9 +22,16 @@ import org.wamblee.system.core.DefaultRequiredInterface;
 import org.wamblee.system.core.RequiredInterface;
 import org.wamblee.system.core.Scope;
 
+/**
+ * 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 {
-       private Class[] _types;
-       private ValueProvider[] _values;
+    private String[] names; 
+       private Class[] types;
+       private ValueProvider[] values;
 
        /**
         * Constructs the configuration. By default no constructor is selected and 
@@ -33,12 +40,34 @@ public class ParameterValues {
         * @param aClass Class to construct. 
         */
        public ParameterValues(Class[] aTypes) {
-               _types = aTypes; 
+           names = new String[aTypes.length];
+           for (int i = 0; i < aTypes.length; i++) { 
+               names[i] = "arg" + i; 
+           }
+               types = aTypes; 
                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. 
+     */
+    public ParameterValues(String[] aNames, Class[] aTypes) {
+        assert aNames.length == aTypes.length; 
+        names = aNames;
+        types = aTypes; 
+        resetValues();   
+    }
+       
+       /**
+        * The types of the parameter values. 
+        * @return Types. 
+        */
        public Class[] getTypes() {
-               return _types;
+               return types;
        }
        
        /**
@@ -46,8 +75,8 @@ public class ParameterValues {
         * @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; 
        }
        
@@ -57,7 +86,7 @@ public class ParameterValues {
         * @param aValue Value. 
         */
        public ParameterValues setValue(int aArg, Object aValue) { 
-               _values[aArg] = new FixedValueProvider(aValue);
+               values[aArg] = new FixedValueProvider(aValue);
                return this; 
        }
        
@@ -65,16 +94,21 @@ public class ParameterValues {
         * Resets the values. 
         */
        private void resetValues() { 
-               _values = new ValueProvider[_types.length];
-               for (int i = 0; i < _values.length; i++) { 
-                       _values[i] = new RequiredInterfaceProvider(new DefaultRequiredInterface(
-                                       "arg" + i, _types[i]));
+               values = new ValueProvider[types.length];
+               for (int i = 0; i < values.length; 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. 
+        * @return Required interfaces. 
+        */
        public List<RequiredInterface> getRequiredInterfaces() { 
                List<RequiredInterface> result = new ArrayList<RequiredInterface>(); 
-               for (ValueProvider provider: _values) { 
+               for (ValueProvider provider: values) { 
                        if ( provider instanceof RequiredInterfaceProvider) { 
                                result.add( ((RequiredInterfaceProvider)provider).getRequiredInterface());
                        }
@@ -82,12 +116,17 @@ public class ParameterValues {
                return result; 
        }
 
+       /**
+        * Returns the values to use in the given scope. 
+        * @param aScope Scope within which to retrieve the values. 
+        * @return Values. 
+        */
        public Object[] values(Scope aScope) {
-               Object[] values = new Object[_values.length];
-               for (int i = 0; i < _values.length; i++) {
-                       values[i] = _values[i].getValue(aScope);
+               Object[] valueArray = new Object[values.length];
+               for (int i = 0; i < values.length; i++) {
+                       valueArray[i] = values[i].getValue(aScope);
                }
-               return values
+               return valueArray
        }
        
 }