avalon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From akaras...@apache.org
Subject cvs commit: avalon-sandbox/repository/api/src/java/org/apache/avalon/repository Bootstrapper.java
Date Sun, 16 Nov 2003 06:06:51 GMT
akarasulu    2003/11/15 22:06:51

  Modified:    repository/api/src/java/org/apache/avalon/repository
                        Bootstrapper.java
  Log:
  Filled in method to instantiate using constructor with args.
  
  Revision  Changes    Path
  1.2       +35 -6     avalon-sandbox/repository/api/src/java/org/apache/avalon/repository/Bootstrapper.java
  
  Index: Bootstrapper.java
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/repository/api/src/java/org/apache/avalon/repository/Bootstrapper.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Bootstrapper.java	16 Nov 2003 05:45:05 -0000	1.1
  +++ Bootstrapper.java	16 Nov 2003 06:06:51 -0000	1.2
  @@ -53,6 +53,7 @@
   
   import java.text.ParseException ;
   
  +import java.lang.reflect.Constructor;
   import java.lang.reflect.Method ;
   import java.lang.reflect.InvocationTargetException ;
   
  @@ -277,17 +278,45 @@
        * @return the newly created instance 
        * @throws RepositoryException if the instantiation fails
        */
  -    public Object newInstance( String a_fqcn, String[] a_types, Object[] args )
  +    public Object newInstance( String a_fqcn, String[] a_types, 
  +                               Object[] a_args )
           throws RepositoryException
       {
           Class l_clazz = loadClass( a_fqcn ) ;
  +        Class[] l_types = new Class[a_types.length] ;
           
           for ( int ii = 0; ii < a_types.length; ii++ )
           {
  -            
  +            l_types[ii] = loadClass( a_types[ii] ) ;
           }
           
  -        throw new UnsupportedOperationException( "STUB" ) ;
  +        try 
  +        {
  +            Constructor l_constructor = l_clazz.getConstructor( l_types ) ;
  +            return l_constructor.newInstance( a_args ) ;
  +        }
  +        catch ( InstantiationException e )
  +        {
  +            throw new RepositoryException( 
  +                    "Failed to instantiate with constructor "
  +                    + toSignature( getConstructor( a_fqcn ), a_types ), e ) ;
  +        }
  +        catch ( NoSuchMethodException e )
  +        {
  +            throw new RepositoryException( 
  +                    "Could not find a constructor with signature " 
  +                    + toSignature( getConstructor( a_fqcn ), a_types ), e ) ;
  +        }
  +        catch ( InvocationTargetException e )
  +        {
  +            throw new RepositoryException( "Failed to invoke constructor "
  +                    + toSignature( getConstructor( a_fqcn ), a_types ), e ) ;
  +        }
  +        catch ( IllegalAccessException e )
  +        {
  +            throw new RepositoryException( "Cannot access constructor " 
  +                    + toSignature( getConstructor( a_fqcn ), a_types ), e ) ;
  +        }
       }
       
       
  @@ -343,7 +372,7 @@
           {
               throw new RepositoryException( "Failed to invoke target "
                       + toSignature( a_method, a_argTypes ) + " in class " 
  -                    + a_obj.getClass() ) ;
  +                    + a_obj.getClass(), e ) ;
           }
           catch ( IllegalAccessException e )
           {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org


Mime
View raw message