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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to