avalon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mcconn...@apache.org
Subject cvs commit: avalon-sandbox/merlin/src/test/org/apache/avalon/playground ContextualizationHandler.java StandardContextImp.java
Date Fri, 28 Feb 2003 06:10:36 GMT
mcconnell    2003/02/27 22:10:36

  Modified:    merlin/src/java/org/apache/avalon/merlin/block/impl
                        DefaultBlock.java DefaultBlockLoader.java
               merlin/src/java/org/apache/avalon/merlin/kernel/impl
                        DefaultKernel.xinfo
               merlin/src/test/org/apache/avalon/playground
                        ContextualizationHandler.java
                        StandardContextImp.java
  Log:
  Synchronization with the assembly framework.
  
  Revision  Changes    Path
  1.10      +4 -2      avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/block/impl/DefaultBlock.java
  
  Index: DefaultBlock.java
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/block/impl/DefaultBlock.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- DefaultBlock.java	27 Feb 2003 23:43:45 -0000	1.9
  +++ DefaultBlock.java	28 Feb 2003 06:10:36 -0000	1.10
  @@ -233,8 +233,9 @@
       public void contextualize( Locator context ) throws ContextException
       {
           super.contextualize( context );
  -        m_engine = (EngineClassLoader) context.get( "urn:assembly:engine" );
           m_applianceContext = (ApplianceContext) context.get( "urn:assembly:appliance.context"
);
  +
  +        m_engine = (EngineClassLoader) context.get( "urn:assembly:engine" );
           m_descriptor = (ContainerDescriptor) context.get( "urn:merlin:container.descriptor"
);
           m_library = (Library) context.get( "urn:merlin:container.library" );
           m_blocks = (List) context.get( "urn:merlin:container.containers" );
  @@ -269,7 +270,8 @@
               Profile profile = profiles[i];
               if( getLogger().isDebugEnabled() )
               {
  -                final String message = "adding child profile: " + profile + " in " + this;

  +                final String message = 
  +                  "adding child profile: " + profile + " in " + this; 
                   getLogger().debug( message );
               }
   
  
  
  
  1.13      +2 -6      avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/block/impl/DefaultBlockLoader.java
  
  Index: DefaultBlockLoader.java
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/block/impl/DefaultBlockLoader.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- DefaultBlockLoader.java	27 Feb 2003 23:45:09 -0000	1.12
  +++ DefaultBlockLoader.java	28 Feb 2003 06:10:36 -0000	1.13
  @@ -600,16 +600,12 @@
           // to be applied to the block.
           //
   
  -        //Map map = new Hashtable();
  -        //map.put("urn:merlin:container.descriptor", descriptor ); 
  -
           DefaultApplianceContext context = new DefaultApplianceContext( descriptor );
   
           context.setName( name );
  -        context.setDeploymentContext( map );
           context.setPartitionName( partition );
           context.setApplianceClassname( DefaultBlock.class.getName() );
  -        context.put("urn:merlin:container.descriptor", descriptor ); 
  +        context.put("urn:merlin:container.descriptor", descriptor );
           context.put("urn:merlin:container.library", this );
           context.put("urn:merlin:container.containers", containers );
           context.makeReadOnly();
  
  
  
  1.4       +1 -1      avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/kernel/impl/DefaultKernel.xinfo
  
  Index: DefaultKernel.xinfo
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/merlin/src/java/org/apache/avalon/merlin/kernel/impl/DefaultKernel.xinfo,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DefaultKernel.xinfo	19 Feb 2003 11:58:25 -0000	1.3
  +++ DefaultKernel.xinfo	28 Feb 2003 06:10:36 -0000	1.4
  @@ -11,7 +11,7 @@
   
   @author  Stephen McConnell
   @version 1.0 12/03/2001
  -NOTE: usage of kernal as a component is completely untested.  This file is provided primarily
for documetation of the context requirements of the kernel.  This file may be removed in the
future.
  +NOTE: usage of kernel as a component is completely untested.  This file is provided primarily
for documetation of the context requirements of the kernel.  This file may be removed in the
future.
   -->
   
   <type>
  
  
  
  1.3       +72 -2     avalon-sandbox/merlin/src/test/org/apache/avalon/playground/ContextualizationHandler.java
  
  Index: ContextualizationHandler.java
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/merlin/src/test/org/apache/avalon/playground/ContextualizationHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ContextualizationHandler.java	7 Feb 2003 15:39:37 -0000	1.2
  +++ ContextualizationHandler.java	28 Feb 2003 06:10:36 -0000	1.3
  @@ -55,11 +55,14 @@
   
   package org.apache.avalon.playground;
   
  +import java.util.Map;
  +import java.lang.reflect.Constructor;
  +
   import org.apache.avalon.framework.context.Context;
   import org.apache.avalon.framework.context.ContextException;
  -
   import org.apache.avalon.assembly.appliance.Appliance;
   import org.apache.avalon.assembly.lifecycle.context.Contextualization;
  +import org.apache.avalon.meta.model.ContextDirective;
   
   /**
    * Definition of an extension handler that handles the Expoitable
  @@ -80,11 +83,12 @@
        * @exception ContextException if a contextualization error occurs
        */
       public void contextualize( 
  -      Object object, Context context ) 
  +      ContextDirective directive, Object object, Map map ) 
         throws ContextException
       {
           if( object instanceof Contextualizable )
           {
  +            Object context = createContextArgument( directive, StandardContext.class, map
);
               if( context instanceof StandardContext )
               {
                   ( (Contextualizable)object ).contextualize( (StandardContext) context );
  @@ -104,4 +108,70 @@
               throw new ContextException( error );
           }
       }
  +
  +   /**
  +    * Returns a instance of a class established using the supplied map as a 
  +    * constructor argument.
  +    *
  +    * @param descriptor the context descriptor
  +    * @param clazz the default class if no class defined in the descriptor
  +    * @param map the context entry map
  +    * @return the context argument value
  +    */
  +    public Object createContextArgument( ContextDirective directive, Class clazz, Map map
)
  +       throws ContextException
  +    {
  +        if( directive == null )
  +        {
  +            throw new NullPointerException( "directive" );
  +        }
  +        if( clazz == null )
  +        {
  +            throw new NullPointerException( "clazz" );
  +        }
  +        if( map == null )
  +        {
  +            throw new NullPointerException( "map" );
  +        }
  +        
  +        String classname = directive.getClassname();
  +        Class base;
  +        if( classname != null )
  +        {
  +            try
  +            {
  +                base = Thread.currentThread().getContextClassLoader().loadClass( classname
);
  +            }
  +            catch( ClassNotFoundException cnfe )
  +            {
  +                throw new ContextException(
  +                  "Could not find context class: " + classname, cnfe );
  +            }
  +        }
  +        else
  +        {
  +            base = clazz;
  +        }
  +
  +        try
  +        {
  +            Constructor constructor = base.getConstructor(
  +               new Class[]{ Map.class } );
  +            return constructor.newInstance( new Object[]{ map } );
  +        }
  +        catch( NoSuchMethodException e )
  +        {
  +            final String error = 
  +              "Custom context class: [" + classname 
  +              + "] does not implement a constructor pattern <init>{ Map }.";
  +            throw new ContextException( error, e );
  +        }
  +        catch( Throwable e )
  +        {
  +            throw new ContextException(
  +                "Unexpected exception while creating context from "
  +                + base.getName(), e );
  +        }
  +    }
  +
   }
  
  
  
  1.3       +2 -2      avalon-sandbox/merlin/src/test/org/apache/avalon/playground/StandardContextImp.java
  
  Index: StandardContextImp.java
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/merlin/src/test/org/apache/avalon/playground/StandardContextImp.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- StandardContextImp.java	7 Feb 2003 15:39:37 -0000	1.2
  +++ StandardContextImp.java	28 Feb 2003 06:10:36 -0000	1.3
  @@ -80,9 +80,9 @@
        * @param map the context name/value map
        * @param parent a possibly parent context
        */
  -    public StandardContextImp( Map map, Context parent ) throws ContextException
  +    public StandardContextImp( Map map ) throws ContextException
       {
  -        super( map, parent );
  +        super( map );
       }
   
       //-----------------------------------------------------------------
  
  
  

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


Mime
View raw message