X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fadapters%2FParameterValues.java;h=fa0f008e55058314339a42c79f8b674064daf4cc;hb=0d8d8f24656e585ee75558cfd6a4c661f8f14985;hp=609f9d2586dbbce17b143aad3254e3ab384fdfea;hpb=c3f21528b7c03474411dfeb0bfc2a756f293c26c;p=utils diff --git a/system/general/src/main/java/org/wamblee/system/adapters/ParameterValues.java b/system/general/src/main/java/org/wamblee/system/adapters/ParameterValues.java index 609f9d25..fa0f008e 100644 --- a/system/general/src/main/java/org/wamblee/system/adapters/ParameterValues.java +++ b/system/general/src/main/java/org/wamblee/system/adapters/ParameterValues.java @@ -29,8 +29,9 @@ import org.wamblee.system.core.Scope; * @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 @@ -39,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; } /** @@ -52,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; } @@ -63,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; } @@ -71,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 getRequiredInterfaces() { List result = new ArrayList(); - for (ValueProvider provider: _values) { + for (ValueProvider provider: values) { if ( provider instanceof RequiredInterfaceProvider) { result.add( ((RequiredInterfaceProvider)provider).getRequiredInterface()); } @@ -88,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; } }