You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by mc...@apache.org on 2003/04/04 14:19:19 UTC
cvs commit: avalon-sandbox/merlin/meta-spi/src/java/org/apache/avalon/meta/model Parameter.java
mcconnell 2003/04/04 04:19:19
Modified: merlin/meta-spi/src/java/org/apache/avalon/meta/model
Parameter.java
Log:
Improved error handling and added todo note concerning support for primative types.
Revision Changes Path
1.2 +17 -5 avalon-sandbox/merlin/meta-spi/src/java/org/apache/avalon/meta/model/Parameter.java
Index: Parameter.java
===================================================================
RCS file: /home/cvs/avalon-sandbox/merlin/meta-spi/src/java/org/apache/avalon/meta/model/Parameter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Parameter.java 13 Mar 2003 01:06:29 -0000 1.1
+++ Parameter.java 4 Apr 2003 12:19:19 -0000 1.2
@@ -86,6 +86,9 @@
* @see Import
* @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
* @version $Revision$ $Date$
+ * @todo Fix usage of basic type (int, float, long, etc.) - how do we return
+ * basic types - can't use getValue() becuase it returns an Object unless
+ * have some way of packing the basic type into a carrier
*/
public class Parameter
{
@@ -285,20 +288,29 @@
else
{
//
- // the argument is a single string parameter
+ // the argument is a simple type that takes a single String value
+ // as a constructor argument
//
+ Class clazz = getParameterClass( loader );
+
try
{
final Class[] params = new Class[]{String.class};
- Constructor constructor = getParameterClass( loader ).getConstructor( params );
+ Constructor constructor = clazz.getConstructor( params );
final Object[] values = new Object[]{m_argument};
m_value = constructor.newInstance( values );
return m_value;
}
+ catch( NoSuchMethodException e )
+ {
+ final String error = "Class: '" + clazz.getName()
+ + "' does not implement a single string argument constructor.";
+ throw new ModelException( error );
+ }
catch( InstantiationException e )
{
- final String error = "Unable to instantiate instance of class: " + m_classname
+ final String error = "Unable to instantiate instance of class: " + clazz.getName()
+ " with the single argument: '" + m_argument + "'";
throw new ModelException( error, e );
}
@@ -316,7 +328,6 @@
+ m_classname + "'.";
throw new ModelException( error, e );
}
-
}
}
@@ -455,6 +466,7 @@
*/
protected void asString( StringBuffer buffer, String lead )
{
+ String classname = m_classname;
buffer.append(
lead + "[\n"
+ lead + " type: " + this.getClass().getName() + "\n"
---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org