Return-Path: Delivered-To: apmail-jakarta-avalon-cvs-archive@apache.org Received: (qmail 23748 invoked from network); 2 Aug 2002 06:34:57 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 2 Aug 2002 06:34:57 -0000 Received: (qmail 5250 invoked by uid 97); 2 Aug 2002 06:35:27 -0000 Delivered-To: qmlist-jakarta-archive-avalon-cvs@jakarta.apache.org Received: (qmail 5234 invoked by uid 97); 2 Aug 2002 06:35:27 -0000 Mailing-List: contact avalon-cvs-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Avalon CVS List" Reply-To: "Avalon Developers List" Delivered-To: mailing list avalon-cvs@jakarta.apache.org Received: (qmail 5223 invoked by uid 97); 2 Aug 2002 06:35:26 -0000 X-Antivirus: nagoya (v4198 created Apr 24 2002) Date: 2 Aug 2002 06:34:52 -0000 Message-ID: <20020802063452.77659.qmail@icarus.apache.org> From: mcconnell@apache.org To: jakarta-avalon-excalibur-cvs@apache.org Subject: cvs commit: jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/builder ProfileCreator.java XMLProfileCreator.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N mcconnell 2002/08/01 23:34:52 Modified: assembly/src/java/org/apache/excalibur/merlin/model CategoriesDescriptor.java Category.java ContextDirective.java Import.java Profile.java Resource.java assembly/src/java/org/apache/excalibur/merlin/model/builder ProfileCreator.java XMLProfileCreator.java Added: assembly/src/java/org/apache/excalibur/merlin/model ClasspathDescriptor.java ContainerDescriptor.java DirsetDescriptor.java ExtensionsDescriptor.java FileTargetProvider.java FilesetDescriptor.java IncludeDescriptor.java KernelDescriptor.java LoggingDescriptor.java TargetDescriptor.java TargetProvider.java Log: rationalizing model components Revision Changes Path 1.2 +11 -1 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/CategoriesDescriptor.java Index: CategoriesDescriptor.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/CategoriesDescriptor.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- CategoriesDescriptor.java 25 Jul 2002 18:04:58 -0000 1.1 +++ CategoriesDescriptor.java 2 Aug 2002 06:34:51 -0000 1.2 @@ -37,6 +37,16 @@ * Create a CategoriesDescriptor instance. * * @param name the base category name + */ + public CategoriesDescriptor( final String name ) + { + this( name, null, null, new Category[0] ); + } + + /** + * Create a CategoriesDescriptor instance. + * + * @param name the base category name * @param priority the default logging priority * @param target the default logging target * @param categories the logging category descriptors 1.4 +11 -1 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/Category.java Index: Category.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/Category.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Category.java 29 Jul 2002 06:14:32 -0000 1.3 +++ Category.java 2 Aug 2002 06:34:51 -0000 1.4 @@ -59,6 +59,16 @@ private final String m_target; /** + * Creation of a new Category using a supplied name. + * + * @param name the category name + */ + public Category( final String name ) + { + this( name, null, null ); + } + + /** * Creation of a new Category using a supplied name, priority, target and * collection of subsidiary categories. * 1.6 +2 -2 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/ContextDirective.java Index: ContextDirective.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/ContextDirective.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- ContextDirective.java 23 Jul 2002 15:36:04 -0000 1.5 +++ ContextDirective.java 2 Aug 2002 06:34:51 -0000 1.6 @@ -26,7 +26,7 @@ *
    *    <context class="MyContextCLass">
    *       <import name="classloader" key="special.classloader"/>
  - *       <import name="avalon.work" key="base"/>
  + *       <import name="avalon:home" key="base"/>
    *       <entry key="location" value="Paris"/>
    *       <entry key="special" class="MySpecialClass">
    *         <parameter>hello</parameter>
  
  
  
  1.5       +3 -3      jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/Import.java
  
  Index: Import.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/Import.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Import.java	30 Jul 2002 07:05:55 -0000	1.4
  +++ Import.java	2 Aug 2002 06:34:51 -0000	1.5
  @@ -19,12 +19,12 @@
    *
    *    
    *    <-- 
  - *    Declare the import of the value of "avalon.work" as a keyed context
  + *    Declare the import of the value of "avalon:home" as a keyed context
    *    value using the key "home".
    *    -->
    *
    *  <context>
  - *    <import key="home" name="avalon.home">;
  + *    <import key="home" name="avalon:home">;
    *  </context>
    * 
* 1.14 +88 -5 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/Profile.java Index: Profile.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/Profile.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- Profile.java 30 Jul 2002 13:49:08 -0000 1.13 +++ Profile.java 2 Aug 2002 06:34:51 -0000 1.14 @@ -7,17 +7,22 @@ */ package org.apache.excalibur.merlin.model; +import java.io.InputStream; import java.io.Serializable; import java.util.Hashtable; import org.apache.avalon.framework.logger.Logger; import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; import org.apache.avalon.framework.parameters.Parameters; import org.apache.avalon.framework.context.Context; +import org.apache.excalibur.meta.ConfigurationBuilder; import org.apache.excalibur.meta.info.Type; import org.apache.excalibur.meta.info.Facility; import org.apache.excalibur.meta.info.PhaseDescriptor; import org.apache.excalibur.merlin.model.Association; import org.apache.excalibur.configuration.ConfigurationUtil; +import org.apache.excalibur.configuration.CascadingConfiguration; +import org.xml.sax.InputSource; /** * Defintion of the criteria for an explicit component profile. A profile, when @@ -151,6 +156,11 @@ private final Configuration m_configuration; /** + * The derived configuration + */ + private Configuration m_config; + + /** * The configuration for component (if any). */ private final ContextDirective m_context; @@ -302,14 +312,73 @@ /** * Return the Configuration for the profile. * - * @return the Configuration for profile. + * @return the base Configuration for profile. */ - public Configuration getConfiguration() + public Configuration getConfiguration( ) { return m_configuration; } /** + * Return the derived Configuration for the profile. + * + * @return the Configuration for profile. + */ + public Configuration getConfiguration( ClassLoader classloader ) throws Exception + { + if( m_config != null ) + return m_config; + + final Configuration defaults = getType().getDefaultConfiguration( classloader ); + Configuration base = null; + if( getConfiguration().getAttribute("src", null ) != null ) + { + String src = getConfiguration().getAttribute("src" ); + if( src.startsWith("resource://") ) + { + final String url = src.substring( 11 ); + final InputStream stream = + classloader.getResourceAsStream( url ); + if( null == stream ) + { + final String error = + "Requested configuration source does not exist: " + src; + throw new ConfigurationException( error ); + } + final InputSource source = new InputSource( stream ); + base = ConfigurationBuilder.build( source ); + } + else + { + try + { + base = ConfigurationBuilder.build( src ); + } + catch( Throwable e ) + { + final String error = + "Unexpected exception while attempting to resolve configuration fro src : " + src; + throw new ConfigurationException( error ); + } + } + } + else + { + base = getConfiguration(); + } + + if( null == defaults ) + { + m_config = base; + } + else + { + m_config = new CascadingConfiguration( base, defaults ); + } + return m_config; + } + + /** * Return the dependency associations for component type with specified role. * * @return the dependency metadata for component with specified role. @@ -368,8 +437,22 @@ */ public Facility getFacility( PhaseDescriptor phase ) { - Profile profile = (Profile) m_extensions.get( phase ); - return (Facility) profile.getType(); + Profile profile = getExtensionProfile( phase ); + if( profile != null ) + { + return (Facility) profile.getType(); + } + return null; + } + + /** + * Return the profile associated as the phase provider. + * @param phase the lifecycle phase specification + * @return a reference to the phase extension + */ + public Profile getExtensionProfile( PhaseDescriptor phase ) + { + return (Profile) m_extensions.get( phase ); } 1.3 +2 -2 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/Resource.java Index: Resource.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/Resource.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Resource.java 30 Jul 2002 14:34:04 -0000 1.2 +++ Resource.java 2 Aug 2002 06:34:51 -0000 1.3 @@ -67,7 +67,7 @@ /** * Release the service instance. */ - public void release( Object instance ); + public void release( Object instance ) throws Exception; /** * Destroy the resource. 1.5 +11 -4 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/ClasspathDescriptor.java 1.10 +77 -52 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/ContainerDescriptor.java 1.5 +1 -1 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/DirsetDescriptor.java 1.5 +1 -1 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/ExtensionsDescriptor.java 1.5 +1 -1 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/FileTargetProvider.java 1.5 +1 -1 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/FilesetDescriptor.java 1.6 +1 -1 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/IncludeDescriptor.java 1.8 +15 -12 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/KernelDescriptor.java 1.8 +10 -1 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/LoggingDescriptor.java 1.5 +1 -1 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/TargetDescriptor.java 1.5 +1 -1 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/TargetProvider.java 1.5 +2 -2 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/builder/ProfileCreator.java Index: ProfileCreator.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/builder/ProfileCreator.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- ProfileCreator.java 29 Jul 2002 06:14:33 -0000 1.4 +++ ProfileCreator.java 2 Aug 2002 06:34:51 -0000 1.5 @@ -39,7 +39,7 @@ * @return the profile * @exception Exception if an error occurs during profile creation */ - Profile createProfile( ClassLoader loader, Type type, Configuration config ) + Profile createProfile( Type type, Configuration config ) throws Exception; } 1.12 +12 -69 jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/builder/XMLProfileCreator.java Index: XMLProfileCreator.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/builder/XMLProfileCreator.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- XMLProfileCreator.java 29 Jul 2002 06:14:33 -0000 1.11 +++ XMLProfileCreator.java 2 Aug 2002 06:34:51 -0000 1.12 @@ -16,6 +16,7 @@ import org.apache.avalon.framework.Version; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; +import org.apache.avalon.framework.configuration.DefaultConfiguration; import org.apache.avalon.framework.parameters.Parameters; import org.apache.avalon.framework.context.Context; import org.apache.avalon.framework.logger.AbstractLogEnabled; @@ -42,7 +43,7 @@ * @author Stephen McConnell * @version $Revision$ $Date$ */ -public class XMLProfileCreator +public class XMLProfileCreator implements ProfileCreator { private static final Resources REZ = @@ -70,7 +71,7 @@ } else { - Profile profile = createImplicitProfile( loader, type ); + Profile profile = createImplicitProfile( type ); return new Profile[]{ profile }; } } @@ -82,11 +83,10 @@ * @return the profile * @exception Exception if an error occurs during profile creation */ - public Profile createProfile( - ClassLoader loader, Type type, Configuration config ) + public Profile createProfile( Type type, Configuration config ) throws Exception { - return buildProfile( loader, type, config, Profile.EXPLICIT ); + return buildProfile( type, config, Profile.EXPLICIT ); } /** @@ -106,18 +106,17 @@ Configuration[] profiles = info.getChildren("component"); if( profiles.length == 0 ) { - Profile profile = createImplicitProfile( loader, type ); + Profile profile = createImplicitProfile( type ); return new Profile[]{ profile }; } for( int i=0; i For additional commands, e-mail: