/*
- * 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.
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];
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);
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() {
/**
* 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) {