donaldp 01/04/03 16:18:04 Modified: proposal/4.0/src/java/org/apache/avalon/camelot AbstractContainer.java AbstractDeployer.java DefaultFactory.java DefaultLoader.java DeployerUtil.java proposal/4.0/src/java/org/apache/avalon/datasource JdbcConnection.java JdbcConnectionPool.java JdbcDataSource.java proposal/4.0/src/java/org/apache/avalon/thread DefaultThreadPool.java WorkerThread.java proposal/4.0/src/java/org/apache/framework/component ComponentException.java proposal/4.0/src/java/org/apache/framework/configuration ConfigurationException.java proposal/4.0/src/java/org/apache/log/format AvalonLogFormatter.java Added: proposal/4.0/src/java/org/apache/avalon/camelot Container.java ContainerException.java Deployer.java DeploymentException.java Entry.java Factory.java FactoryException.java Loader.java Locator.java MetaInfo.java Registry.java RegistryException.java State.java proposal/4.0/src/java/org/apache/avalon/thread ThreadContext.java ThreadManager.java ThreadPool.java proposal/4.0/src/java/org/apache/framework CascadingError.java CascadingException.java CascadingRuntimeException.java CascadingThrowable.java ExceptionUtil.java proposal/4.0/src/java/org/apache/framework/component DefaultComponentManager.java DefaultComponentSelector.java proposal/4.0/src/java/org/apache/framework/configuration AbstractConfiguration.java DefaultConfiguration.java DefaultConfigurationBuilder.java SAXConfigurationHandler.java proposal/4.0/src/java/org/apache/framework/context DefaultContext.java proposal/4.0/src/java/org/apache/framework/logger AbstractLoggable.java Removed: proposal/4.0/src/java/org/apache/aut CascadingError.java CascadingException.java CascadingRuntimeException.java CascadingThrowable.java ExceptionUtil.java proposal/4.0/src/java/org/apache/avalon/component DefaultComponentManager.java DefaultComponentSelector.java proposal/4.0/src/java/org/apache/avalon/configuration AbstractConfiguration.java DefaultConfiguration.java DefaultConfigurationBuilder.java SAXConfigurationHandler.java proposal/4.0/src/java/org/apache/avalon/context DefaultContext.java proposal/4.0/src/java/org/apache/avalon/logger AbstractLoggable.java proposal/4.0/src/java/org/apache/framework/container Container.java ContainerException.java Deployer.java DeploymentException.java Entry.java Factory.java FactoryException.java Loader.java Locator.java MetaInfo.java Registry.java RegistryException.java State.java proposal/4.0/src/java/org/apache/framework/thread ThreadContext.java ThreadManager.java ThreadPool.java Log: Moved implementations to live with their interfaces in framework. Moved container interfaces to camelot as they are not stable enough. Revision Changes Path 1.5 +1 -1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/AbstractContainer.java Index: AbstractContainer.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/AbstractContainer.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- AbstractContainer.java 2001/03/15 04:34:44 1.4 +++ AbstractContainer.java 2001/04/03 23:17:59 1.5 @@ -13,7 +13,7 @@ import org.apache.framework.container.Container; import org.apache.framework.container.ContainerException; import org.apache.framework.container.Entry; -import org.apache.avalon.logger.AbstractLoggable; +import org.apache.framework.logger.AbstractLoggable; /** * This contains it during execution and may provide certain 1.5 +1 -1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/AbstractDeployer.java Index: AbstractDeployer.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/AbstractDeployer.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- AbstractDeployer.java 2001/03/15 04:34:44 1.4 +++ AbstractDeployer.java 2001/04/03 23:17:59 1.5 @@ -14,7 +14,7 @@ import java.io.OutputStream; import java.net.URL; import java.util.HashMap; -import org.apache.avalon.logger.AbstractLoggable; +import org.apache.framework.logger.AbstractLoggable; import org.apache.framework.component.Component; import org.apache.aut.io.FileUtil; import org.apache.log.Logger; 1.5 +1 -1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DefaultFactory.java Index: DefaultFactory.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DefaultFactory.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- DefaultFactory.java 2001/03/15 04:34:45 1.4 +++ DefaultFactory.java 2001/04/03 23:17:59 1.5 @@ -9,7 +9,7 @@ import java.net.URL; import java.util.HashMap; -import org.apache.avalon.logger.AbstractLoggable; +import org.apache.framework.logger.AbstractLoggable; import org.apache.framework.component.Component; import org.apache.framework.container.Factory; import org.apache.framework.container.FactoryException; 1.5 +1 -1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DefaultLoader.java Index: DefaultLoader.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DefaultLoader.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- DefaultLoader.java 2001/04/03 04:41:41 1.4 +++ DefaultLoader.java 2001/04/03 23:17:59 1.5 @@ -9,7 +9,7 @@ import java.net.URL; import java.net.URLClassLoader; -import org.apache.aut.ExceptionUtil; +import org.apache.framework.ExceptionUtil; import org.apache.framework.component.Component; import org.apache.framework.container.FactoryException; import org.apache.framework.container.Loader; 1.4 +1 -1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DeployerUtil.java Index: DeployerUtil.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DeployerUtil.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DeployerUtil.java 2001/03/15 04:34:45 1.3 +++ DeployerUtil.java 2001/04/03 23:17:59 1.4 @@ -18,7 +18,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipException; import java.util.zip.ZipFile; -import org.apache.avalon.configuration.DefaultConfigurationBuilder; +import org.apache.framework.configuration.DefaultConfigurationBuilder; import org.apache.framework.component.ComponentManager; import org.apache.framework.component.Composer; import org.apache.framework.configuration.Configuration; 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/Container.java Index: Container.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.container; import java.util.Iterator; import org.apache.framework.component.Component; /** * This contains it during execution and may provide certain * facilities (like a thread per EJB etc). * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Container extends Component { /** * Add a component instance to container. * * @param entry the component entry */ void add( String name, Entry entry ) throws ContainerException; /** * Remove a component instance from container. * * @param name the name of component */ void remove( String name ) throws ContainerException; /** * Retrieve Entry from container * * @param name the name of entry * @return the entry */ Entry getEntry( String name ) throws ContainerException; /** * List all names of entries in container. * * @return the list of all entries */ Iterator list(); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/ContainerException.java Index: ContainerException.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.container; import org.apache.framework.CascadingException; /** * Exception to indicate error manipulating container. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public final class ContainerException extends CascadingException { /** * Construct a new <code>ContainerException</code> instance. * * @param message The detail message for this exception. */ public ContainerException( final String message ) { this( message, null ); } /** * Construct a new <code>ContainerException</code> instance. * * @param message The detail message for this exception. * @param throwable the root cause of the exception */ public ContainerException( final String message, final Throwable throwable ) { super( message, throwable ); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/Deployer.java Index: Deployer.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.container; import java.net.URL; import org.apache.framework.component.Component; /** * A Deployer is responsible for taking a URL (ie a jar/war/ear) and deploying * it to a particular "location". "location" means different things for * different containers. For a servlet container it may mean the place to * mount servlet (ie /myapp --> /myapp/Cocoon.xml is mapping cocoon servlet to * /myapp context). * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Deployer extends Component { /** * Deploy a resource indicate by url to location. * * @param location the location to deploy to * @param url the url of deployment * @exception DeploymentException if an error occurs */ void deploy( String location, URL url ) throws DeploymentException; /** * undeploy a resource from a location. * * @param location the location * @exception DeploymentException if an error occurs */ void undeploy( String location ) throws DeploymentException; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/DeploymentException.java Index: DeploymentException.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.container; import org.apache.framework.CascadingException; /** * Exception to indicate error deploying. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public final class DeploymentException extends CascadingException { /** * Construct a new <code>DeploymentException</code> instance. * * @param message The detail message for this exception. */ public DeploymentException( final String message ) { this( message, null ); } /** * Construct a new <code>DeploymentException</code> instance. * * @param message The detail message for this exception. * @param throwable the root cause of the exception */ public DeploymentException( final String message, final Throwable throwable ) { super( message, throwable ); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/Entry.java Index: Entry.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.container; import org.apache.framework.component.Component; /** * Contains information about a particular instance of contained component. * This would contain name, configuration data, parameters, log entries etc. * Basically instance data. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public class Entry implements Component { protected MetaInfo m_info; protected Object m_instance; protected State m_state; public Entry() { } public Entry( final MetaInfo info, final Object instance, final State state ) { m_info = info; m_instance = instance; m_state = state; } /** * Retrieve MetaInfo describing instance. * * @return the info */ public MetaInfo getInfo() { return m_info; } /** * Mutator for info property. * * @param info the MetaInfo */ public void setInfo( final MetaInfo info ) { m_info = info; } /** * Retrieve instance of component. * * @return the component instance */ public Object getInstance() { return m_instance; } /** * Set instance of component. * * @return the component instance */ public void setInstance( final Object instance ) { m_instance = instance; } /** * Retrieve state of a component. * * @return the components state */ public State getState() { return m_state; } /** * set state of a component. * * @param state the components state */ public void setState( final State state ) { m_state = state; } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/Factory.java Index: Factory.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.container; import org.apache.framework.component.Component; /** * This is the component that creates the components. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Factory extends Component { /** * Create a component whos position is indicated by locator. * * @param locator the locator indicating the component location * @return the component * @exception FactoryException if an error occurs */ Object create( Locator locator ) throws FactoryException; /** * Create a component whos position is indicated by locator. * Make sure it is of the correct type. * * @param locator the locator indicating the component location * @param clazz the expected type of component * @return the component * @exception FactoryException if an error occurs */ Object create( Locator locator, Class clazz ) throws FactoryException; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/FactoryException.java Index: FactoryException.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.container; import org.apache.framework.CascadingException; /** * Exception to indicate error creating entries in factory. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public final class FactoryException extends CascadingException { /** * Construct a new <code>FactoryException</code> instance. * * @param message The detail message for this exception. */ public FactoryException( final String message ) { this( message, null ); } /** * Construct a new <code>FactoryException</code> instance. * * @param message The detail message for this exception. * @param throwable the root cause of the exception */ public FactoryException( final String message, final Throwable throwable ) { super( message, throwable ); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/Loader.java Index: Loader.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.container; import org.apache.framework.component.Component; /** * Class used to load resources from a source. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Loader extends Component { /** * Retrieve classloader associated with source. * * @return the ClassLoader */ ClassLoader getClassLoader(); /** * Load an object from source. * * @param component the name of object * @return the Object * @exception Exception if an error occurs */ Object load( String component ) throws FactoryException; } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/Locator.java Index: Locator.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.container; import java.net.URL; import org.apache.framework.component.Component; /** * This contains information required to locate a component. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Locator extends MetaInfo { /** * Retrieve "name" of component type. * The "name" usually indicates the classname. * * @return the name */ String getName(); /** * Retrieve location of component. * Usually references the archive (zip/jar/war/ear) * which contains the name (ie classname) * * @return the URL of location */ URL getLocation(); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/MetaInfo.java Index: MetaInfo.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.container; /** * This contains information about the component. * (ie would be a BlockInfo, an EJBDescriptor, a MailetInfo etc) * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface MetaInfo { } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/Registry.java Index: Registry.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.container; import java.util.Iterator; import org.apache.framework.component.Component; /** * Represents a database of Infos. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface Registry extends Component { /** * register an info under a particular name. * * @param name the name * @param info the info * @exception RegistryException if info is invalid or name already contains info under name */ void register( String name, MetaInfo info ) throws RegistryException; /** * unregister an info. * * @param name the name of info * @exception RegistryException if no such info exists */ void unregister( String name ) throws RegistryException; /** * Retrieve an MetaInfo by name. * * @param name the name * @return the MetaInfo * @exception RegistryException if an error occurs */ MetaInfo getInfo( String name ) throws RegistryException; /** * Return an iterator of all names of infos registered. * * @return the info names */ Iterator getInfoNames(); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/RegistryException.java Index: RegistryException.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.container; import org.apache.framework.CascadingException; /** * Exception to indicate registry error. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public final class RegistryException extends CascadingException { /** * Construct a new <code>RegistryException</code> instance. * * @param message The detail message for this exception. */ public RegistryException( final String message ) { this( message, null ); } /** * Construct a new <code>RegistryException</code> instance. * * @param message The detail message for this exception. * @param throwable the root cause of the exception */ public RegistryException( final String message, final Throwable throwable ) { super( message, throwable ); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/camelot/State.java Index: State.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.container; import org.apache.aut.ValuedEnum; /** * Defines possible states for contained components. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public abstract class State extends ValuedEnum { public State( final String name, final int value ) { super( name, value ); } } 1.6 +2 -2 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/JdbcConnection.java Index: JdbcConnection.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/JdbcConnection.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- JdbcConnection.java 2001/04/03 04:41:42 1.5 +++ JdbcConnection.java 2001/04/03 23:18:01 1.6 @@ -15,7 +15,7 @@ import java.sql.SQLWarning; import java.sql.Statement; import java.util.Map; -import org.apache.avalon.logger.AbstractLoggable; +import org.apache.framework.logger.AbstractLoggable; import org.apache.avalon.pool.Recyclable; import org.apache.avalon.pool.Pool; import org.apache.avalon.pool.Poolable; @@ -29,7 +29,7 @@ * total number of Connection objects that are created. * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> - * @version CVS $Revision: 1.5 $ $Date: 2001/04/03 04:41:42 $ + * @version CVS $Revision: 1.6 $ $Date: 2001/04/03 23:18:01 $ */ public class JdbcConnection extends AbstractLoggable 1.7 +4 -4 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/JdbcConnectionPool.java Index: JdbcConnectionPool.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/JdbcConnectionPool.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- JdbcConnectionPool.java 2001/04/03 04:41:42 1.6 +++ JdbcConnectionPool.java 2001/04/03 23:18:01 1.7 @@ -12,19 +12,19 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.apache.avalon.logger.AbstractLoggable; +import org.apache.avalon.pool.Pool; +import org.apache.avalon.pool.Poolable; import org.apache.avalon.pool.Recyclable; import org.apache.framework.lifecycle.Disposable; import org.apache.framework.lifecycle.Initializable; -import org.apache.avalon.pool.Pool; -import org.apache.avalon.pool.Poolable; +import org.apache.framework.logger.AbstractLoggable; /** * The Pool implementation for JdbcConnections. It uses a background * thread to manage the number of SQL Connections. * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> - * @version CVS $Revision: 1.6 $ $Date: 2001/04/03 04:41:42 $ + * @version CVS $Revision: 1.7 $ $Date: 2001/04/03 23:18:01 $ */ public class JdbcConnectionPool extends AbstractLoggable 1.5 +2 -2 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/JdbcDataSource.java Index: JdbcDataSource.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/datasource/JdbcDataSource.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- JdbcDataSource.java 2001/03/15 04:34:50 1.4 +++ JdbcDataSource.java 2001/04/03 23:18:01 1.5 @@ -12,7 +12,7 @@ import org.apache.framework.configuration.Configuration; import org.apache.framework.configuration.ConfigurationException; import org.apache.framework.lifecycle.Disposable; -import org.apache.avalon.logger.AbstractLoggable; +import org.apache.framework.logger.AbstractLoggable; /** * The Default implementation for DataSources in Avalon. This uses the @@ -20,7 +20,7 @@ * <code>java.sql.DriverManager</code>. * * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> - * @version CVS $Revision: 1.4 $ $Date: 2001/03/15 04:34:50 $ + * @version CVS $Revision: 1.5 $ $Date: 2001/04/03 23:18:01 $ */ public class JdbcDataSource extends AbstractLoggable 1.4 +1 -1 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/thread/DefaultThreadPool.java Index: DefaultThreadPool.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/thread/DefaultThreadPool.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DefaultThreadPool.java 2001/04/03 04:41:44 1.3 +++ DefaultThreadPool.java 2001/04/03 23:18:01 1.4 @@ -11,7 +11,7 @@ import org.apache.avalon.pool.ObjectFactory; import org.apache.avalon.pool.Poolable; import org.apache.avalon.pool.ThreadSafePool; -import org.apache.framework.thread.ThreadPool; +import org.apache.avalon.thread.ThreadPool; import org.apache.log.Logger; /** 1.7 +2 -2 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/thread/WorkerThread.java Index: WorkerThread.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/thread/WorkerThread.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- WorkerThread.java 2001/04/03 04:41:45 1.6 +++ WorkerThread.java 2001/04/03 23:18:01 1.7 @@ -10,8 +10,8 @@ import org.apache.avalon.pool.Poolable; import org.apache.avalon.pool.ThreadSafePool; import org.apache.framework.logger.Loggable; -import org.apache.framework.thread.ThreadContext; -import org.apache.framework.thread.ThreadPool; +import org.apache.avalon.thread.ThreadContext; +import org.apache.avalon.thread.ThreadPool; import org.apache.log.Logger; /** 1.4 +0 -4 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/thread/ThreadContext.java 1.4 +0 -0 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/thread/ThreadManager.java 1.6 +0 -0 jakarta-avalon/proposal/4.0/src/java/org/apache/avalon/thread/ThreadPool.java 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/CascadingError.java Index: CascadingError.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework; /** * Class from which all exceptions should inherit. * Allows recording of nested exceptions. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public abstract class CascadingError extends Error implements CascadingThrowable { private final Throwable m_throwable; /** * Construct a new <code>CascadingError</code> instance. * * @param message The detail message for this exception. * @param throwable the root cause of the exception */ public CascadingError( final String message, final Throwable throwable ) { super( message ); m_throwable = throwable; } /** * Retrieve root cause of the exception. * * @return the root cause */ public final Throwable getCause() { return m_throwable; } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/CascadingException.java Index: CascadingException.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework; /** * Class from which all exceptions should inherit. * Allows recording of nested exceptions. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public class CascadingException extends Exception implements CascadingThrowable { private final Throwable m_throwable; /** * Construct a new <code>CascadingException</code> instance. * * @param message The detail message for this exception. */ public CascadingException( final String message ) { this( message, null ); } /** * Construct a new <code>CascadingException</code> instance. * * @param message The detail message for this exception. * @param throwable the root cause of the exception */ public CascadingException( final String message, final Throwable throwable ) { super( message ); m_throwable = throwable; } /** * Retrieve root cause of the exception. * * @return the root cause */ public final Throwable getCause() { return m_throwable; } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/CascadingRuntimeException.java Index: CascadingRuntimeException.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework; /** * Class from which all exceptions should inherit. * Allows recording of nested exceptions. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public abstract class CascadingRuntimeException extends RuntimeException implements CascadingThrowable { private final Throwable m_throwable; /** * Construct a new <code>CascadingRuntimeException</code> instance. * * @param message The detail message for this exception. * @param throwable the root cause of the exception */ public CascadingRuntimeException( final String message, final Throwable throwable ) { super( message ); m_throwable = throwable; } /** * Retrieve root cause of the exception. * * @return the root cause */ public final Throwable getCause() { return m_throwable; } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/CascadingThrowable.java Index: CascadingThrowable.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework; /** * Interface which all cascadign throwables should implement. * Allows recording of nested exceptions. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public interface CascadingThrowable { Throwable getCause(); } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/ExceptionUtil.java Index: ExceptionUtil.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework; import java.io.PrintWriter; import java.io.StringWriter; import java.util.ArrayList; import java.util.StringTokenizer; /** * This class provides basic facilities for manipulating exceptions. * * Some exception handling stuff thieved from Turbine... * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> * @author <a href="mailto:[EMAIL PROTECTED]">Rafal Krzewski</a> */ public final class ExceptionUtil { /** * Private constructor to prevent instantiation. */ private ExceptionUtil() { } public static String printStackTrace( final Throwable throwable ) { return printStackTrace( throwable, 0, true ); } public static String printStackTrace( final Throwable throwable, final boolean printCascading ) { return printStackTrace( throwable, 0, printCascading ); } public static String printStackTrace( final Throwable throwable, int depth ) { final String[] lines = captureStackTrace( throwable ); if( 0 == depth || depth > lines.length ) depth = lines.length; final StringBuffer sb = new StringBuffer(); for( int i = 0; i < depth; i++ ) { sb.append( lines[ i ] ); sb.append( '\n' ); } return sb.toString(); } public static String printStackTrace( Throwable throwable, final int depth, final boolean printCascading ) { final String result = printStackTrace( throwable, depth ); if( !printCascading || !(throwable instanceof CascadingThrowable) ) { return result; } else { final StringBuffer sb = new StringBuffer(); sb.append( result ); throwable = ((CascadingThrowable)throwable).getCause(); while( null != throwable ) { sb.append( "rethrown from\n" ); sb.append( printStackTrace( throwable, depth ) ); if( throwable instanceof CascadingThrowable ) { throwable = ((CascadingThrowable)throwable).getCause(); } else { throwable = null; } } return sb.toString(); } } /** * Captures the stack trace associated with this exception. * * @return an array of Strings describing stack frames. */ public static String[] captureStackTrace( final Throwable throwable ) { final StringWriter sw = new StringWriter(); throwable.printStackTrace( new PrintWriter( sw, true ) ); return splitString( sw.toString(), "\n" ); } /** * Splits the string on every token into an array of stack frames. * * @param string the string * @param onToken the token * @return the resultant array */ public static String[] splitString( final String string, final String onToken ) { final StringTokenizer tokenizer = new StringTokenizer( string, onToken ); final ArrayList lines = new ArrayList(); while( tokenizer.hasMoreTokens() ) { lines.add( tokenizer.nextToken() ); } return (String[])lines.toArray( new String[ 0 ] ); } } 1.2 +1 -1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/component/ComponentException.java Index: ComponentException.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/framework/component/ComponentException.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ComponentException.java 2001/03/15 04:35:01 1.1 +++ ComponentException.java 2001/04/03 23:18:02 1.2 @@ -7,7 +7,7 @@ */ package org.apache.framework.component; -import org.apache.aut.CascadingException; +import org.apache.framework.CascadingException; /** * This base class of exceptions thrown by ComponentManager. 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/component/DefaultComponentManager.java Index: DefaultComponentManager.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.component; import java.util.HashMap; import java.util.Iterator; /** * This class is a static implementation of a ComponentManager. Allow ineritance * and extention so you can generate a tree of ComponentManager each defining * Component scope. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public class DefaultComponentManager implements ComponentManager { protected final HashMap m_components = new HashMap(); protected final ComponentManager m_parent; public DefaultComponentManager() { this( null ); } public DefaultComponentManager( final ComponentManager parent ) { m_parent = parent; } public Component lookup( final String role ) throws ComponentException { final Component component = (Component)m_components.get( role ); if( null != component ) { return component; } else if( null != m_parent ) { return m_parent.lookup( role ); } else { throw new ComponentException("Unable to provide implementation for " + role); } } public void put( final String name, final Component component ) { m_components.put( name, component ); } public void release( final Component component ) { // if the ComponentManager handled pooling, it would be // returned to the pool here. } public String toString() { final StringBuffer buffer = new StringBuffer(); final Iterator components = m_components.keySet().iterator(); buffer.append( "Components:" ); while( components.hasNext() ) { buffer.append( "[" ); buffer.append( components.next() ); buffer.append( "]" ); } return buffer.toString(); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/component/DefaultComponentSelector.java Index: DefaultComponentSelector.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.component; import java.util.HashMap; /** * This is the default implementation of the ComponentSelector */ public class DefaultComponentSelector implements ComponentSelector { protected final HashMap components = new HashMap(); public DefaultComponentSelector() { // do nothing } /** * Select the desired component. It does not cascade, neither * should it. */ public Component select(Object hint) throws ComponentException { final Component component = (Component) components.get(hint); if ( component != null ) { return component; } else { throw new ComponentException( "Unable to provide implementation for " + hint.toString() ); } } public void release( final Component component ) { // if the ComponentManager handled pooling, it would be // returned to the pool here. } /** * Populate the ComponentSelector. */ public void put(final Object hint, final Component component) { this.components.put(hint, component); } } 1.2 +1 -1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/configuration/ConfigurationException.java Index: ConfigurationException.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/framework/configuration/ConfigurationException.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ConfigurationException.java 2001/03/15 04:35:02 1.1 +++ ConfigurationException.java 2001/04/03 23:18:02 1.2 @@ -7,7 +7,7 @@ */ package org.apache.framework.configuration; -import org.apache.aut.CascadingException; +import org.apache.framework.CascadingException; /** * Thrown when a <code>Configurable</code> component cannot be configured 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/configuration/AbstractConfiguration.java Index: AbstractConfiguration.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.configuration; import java.util.Iterator; /** * This is an abstract <code>Configuration</code> implementation that deals * with methods that can be abstracted away from underlying implementations. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * @version CVS $Revision: 1.1 $ $Date: 2001/04/03 23:18:02 $ * @deprecated This has been deprecated in favour of configuration interface in org.apache.avalon.configuration interface */ public abstract class AbstractConfiguration implements Configuration { private static int PREFIX = 2; /** * Returns the value of the configuration element as an <code>int</code>. */ public int getValueAsInt() throws ConfigurationException { final String value = getValue(); try { if( value.startsWith("0x") ) { return Integer.parseInt( value.substring(AbstractConfiguration.PREFIX), 16 ); } else if( value.startsWith("0o") ) { return Integer.parseInt( value.substring(AbstractConfiguration.PREFIX), 8 ); } else if( value.startsWith("0b") ) { return Integer.parseInt( value.substring(AbstractConfiguration.PREFIX), 2 ); } else { return Integer.parseInt( value ); } } catch( final Exception nfe ) { throw new ConfigurationException( "Cannot parse the value of the configuration " + "element \"" + getName() + "\" as an integer" ); } } /** * Returns the value of the configuration element as an <code>int</code>. */ public int getValueAsInt( final int defaultValue ) { try { return getValueAsInt(); } catch( final ConfigurationException ce ) { return defaultValue; } } /** * Returns the value of the configuration element as a <code>long</code>. */ public long getValueAsLong() throws ConfigurationException { final String value = getValue(); try { if( value.startsWith("0x") ) { return Long.parseLong( value.substring(2), 16 ); } else if( value.startsWith("0o") ) { return Long.parseLong( value.substring(2), 8); } else if( value.startsWith("0b") ) { return Long.parseLong(value.substring(2),2); } else return Integer.parseInt(value); } catch( final Exception nfe ) { throw new ConfigurationException( "Cannot parse the value of the " + "configuration element \"" + getName() + "\" as a long" ); } } /** * Returns the value of the configuration element as a <code>long</code>. */ public long getValueAsLong( final long defaultValue ) { try { return getValueAsLong(); } catch( final ConfigurationException ce ) { return defaultValue; } } /** * Returns the value of the configuration element as a <code>float</code>. */ public float getValueAsFloat() throws ConfigurationException { final String value = getValue(); try { return Float.parseFloat( value ); } catch( final Exception nfe ) { throw new ConfigurationException( "Cannot parse the value of the " + "configuration element \"" + getName() + "\" as a float" ); } } /** * Returns the value of the configuration element as a <code>float</code>. */ public float getValueAsFloat( final float defaultValue ) { try { return getValueAsFloat(); } catch( final ConfigurationException ce ) { return(defaultValue); } } /** * Returns the value of the configuration element as a <code>boolean</code>. */ public boolean getValueAsBoolean() throws ConfigurationException { final String value = getValue(); if( value.equals("true") ) return true; else if( value.equals("false") ) return false; else { throw new ConfigurationException( "Cannot parse the value of the " + "configuration element \"" + getName() + "\" as a boolean" ); } } /** * Returns the value of the configuration element as a <code>boolean</code>. */ public boolean getValueAsBoolean( final boolean defaultValue ) { try { return getValueAsBoolean(); } catch( final ConfigurationException ce ) { return defaultValue; } } /** * Returns the value of the configuration element as a <code>String</code>. */ public String getValue( final String defaultValue ) { try { return getValue(); } catch( final ConfigurationException ce ) { return defaultValue; } } /** * Returns the value of the attribute specified by its name as an * <code>int</code>. */ public int getAttributeAsInt( final String name ) throws ConfigurationException { final String value = getAttribute( name ); try { if( value.startsWith("0x") ) { return Integer.parseInt( value.substring(2), 16 ); } else if( value.startsWith("0o") ) { return Integer.parseInt( value.substring(2), 8); } else if( value.startsWith("0b") ) { return Integer.parseInt(value.substring(2),2); } else { return Integer.parseInt(value); } } catch( final Exception nfe ) { throw new ConfigurationException( "Cannot parse the value of the attribute \"" + name + "\" of the configuration element \"" + getName() + "\" as an integer" ); } } /** * Returns the value of the attribute specified by its name as an * <code>int</code>. */ public int getAttributeAsInt( final String name, final int defaultValue ) { try { return getAttributeAsInt( name ); } catch( final ConfigurationException ce ) { return defaultValue; } } /** * Returns the value of the attribute specified by its name as a * <code>long</code>. */ public long getAttributeAsLong( final String name ) throws ConfigurationException { final String value = getAttribute( name ); try { if( value.startsWith("0x") ) { return Long.parseLong( value.substring(2), 16 ); } else if( value.startsWith("0o") ) { return Long.parseLong( value.substring(2), 8 ); } else if( value.startsWith("0b") ) { return Long.parseLong( value.substring(2), 2); } else { return Integer.parseInt( value ); } } catch( final Exception nfe ) { throw new ConfigurationException( "Cannot parse the value of the attribute \"" + name + "\" of the configuration element \"" + getName() + "\" as a long" ); } } /** * Returns the value of the attribute specified by its name as a * <code>long</code>. */ public long getAttributeAsLong( final String name, final long defaultValue ) { try { return getAttributeAsLong( name ); } catch( final ConfigurationException ce ) { return defaultValue; } } /** * Returns the value of the attribute specified by its name as a * <code>float</code>. */ public float getAttributeAsFloat( final String name ) throws ConfigurationException { final String value = getAttribute( name ); try { return Float.parseFloat( value ); } catch( final Exception e ) { throw new ConfigurationException( "Cannot parse the value of the attribute \"" + name + "\" of the configuration element \"" + getName() + "\" as a float" ); } } /** * Returns the value of the attribute specified by its name as a * <code>float</code>. */ public float getAttributeAsFloat( final String name, final float defaultValue ) { try { return getAttributeAsFloat( name ); } catch( final ConfigurationException ce ) { return defaultValue; } } /** * Returns the value of the attribute specified by its name as a * <code>boolean</code>. */ public boolean getAttributeAsBoolean( final String name ) throws ConfigurationException { final String value = getAttribute( name ); if( value.equals("true") ) return true; else if( value.equals("false") ) return false; else { throw new ConfigurationException( "Cannot parse the value of the attribute \"" + name + "\" of the configuration element \"" + getName() + "\" as a boolean" ); } } /** * Returns the value of the attribute specified by its name as a * <code>boolean</code>. */ public boolean getAttributeAsBoolean( final String name, final boolean defaultValue ) { try { return getAttributeAsBoolean( name ); } catch( final ConfigurationException ce ) { return defaultValue; } } /** * Returns the value of the attribute specified by its name as a * <code>String</code>. */ public String getAttribute( final String name, final String defaultValue ) { try { return getAttribute( name ); } catch( final ConfigurationException ce ) { return defaultValue; } } /** * Return the first <code>Configuration</code> object child of this * associated with the given name. */ public Configuration getChild( final String name ) { final Iterator iterator = getChildren( name ); if( iterator.hasNext() ) { return (Configuration)iterator.next(); } else { return new DefaultConfiguration( name, "-" ); } } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/configuration/DefaultConfiguration.java Index: DefaultConfiguration.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.configuration; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; /** * This is the default <code>Configuration</code> implementation. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> * @deprecated This has been deprecated in favour of configuration interface in org.apache.avalon.configuration interface */ public class DefaultConfiguration extends AbstractConfiguration { protected final static Iterator EMPTY_ITERATOR = (new ArrayList(1)).iterator(); protected final String m_name; protected final String m_location; protected HashMap m_attributes; protected ArrayList m_children; protected String m_value; /** * Create a new <code>DefaultConfiguration</code> instance. */ public DefaultConfiguration( final String name, final String location ) { m_name = name; m_location = location; } /** * Returns the name of this configuration element. */ public String getName() { return m_name; } /** * Returns a description of location of element. */ public String getLocation() { return m_location; } /** * Returns the value of the configuration element as a <code>String</code>. * * @exception ConfigurationException If the value is not present. */ public String getValue() throws ConfigurationException { if( null != m_value ) return m_value; else { throw new ConfigurationException( "No value is associated with the "+ "configuration element \"" + getName() + "\"" ); } } /** * Returns the value of the attribute specified by its name as a * <code>String</code>. * * @exception ConfigurationException If the attribute is not present. */ public String getAttribute( final String name ) throws ConfigurationException { final String value = (null != m_attributes) ? (String)m_attributes.get( name ) : null; if( null != value ) return value; else { throw new ConfigurationException( "No attribute named \"" + name + "\" is " + "associated with the configuration element \"" + getName() + "\"" ); } } /** * Return the first <code>Configuration</code> object child of this * associated with the given name. If none exists a new one of that name is created. * * @param name The name of the required child <code>Configuration</code>. */ public Configuration getChild( final String name ) { if( null == m_children ) { return new DefaultConfiguration( name, "-" ); } else { final int size = m_children.size(); for( int i = 0; i < size; i++ ) { final Configuration configuration = (Configuration)m_children.get( i ); if( name.equals( configuration.getName() ) ) { return configuration; } } return new DefaultConfiguration( name, "-" ); } } /** * Return an <code>Enumeration</code> of <code>Configuration</code> objects * children of this associated with the given name. * <br> * The returned <code>Enumeration</code> may be empty. * * @param name The name of the required children <code>Configuration</code>. */ public Iterator getChildren( final String name ) { if( null == m_children ) return EMPTY_ITERATOR; else { final ArrayList children = new ArrayList(); final int size = m_children.size(); for( int i = 0; i < size; i++ ) { final Configuration configuration = (Configuration)m_children.get( i ); if( name.equals( configuration.getName() ) ) { children.add( configuration ); } } return children.iterator(); } } public Configuration[] getChildrenAsArray( final String name ) { if( null == m_children ) return new Configuration[0]; else { final ArrayList children = new ArrayList(); final int size = m_children.size(); for( int i = 0; i < size; i++ ) { final Configuration configuration = (Configuration)m_children.get( i ); if( name.equals( configuration.getName() ) ) { children.add( configuration ); } } Configuration[] response = new Configuration[children.size()]; for (int i = 0; i < children.size(); i++) { response[i] = (Configuration) children.get(i); } return response; } } /** * Append data to the value of this configuration element. */ public void appendValueData( final String value ) { if( null == m_value ) { m_value = value; } else { m_value = m_value + value; } } /** * Add an attribute to this configuration element, returning its old * value or <b>null</b>. */ public String addAttribute( final String name, String value ) { if( null == m_attributes ) m_attributes = new HashMap(); return (String) m_attributes.put( name, value ); } /** * Add a child <code>Configuration</code> to this configuration element. */ public void addChild( final Configuration configuration ) { if( null == m_children ) { m_children = new ArrayList(); } m_children.add( configuration ); } /** * Return count of children. */ public int getChildCount() { if( null == m_children ) { return 0; } return m_children.size(); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/configuration/DefaultConfigurationBuilder.java Index: DefaultConfigurationBuilder.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.configuration; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.Locator; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.XMLReaderFactory; /** * A SAXConfigurationBuilder builds configurations via SAX2 compliant parser. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public class DefaultConfigurationBuilder implements ConfigurationBuilder { protected final static String DEFAULT_PARSER = "org.apache.xerces.parsers.SAXParser"; protected final static String PARSER = System.getProperty("org.xml.sax.parser", DEFAULT_PARSER ); protected SAXConfigurationHandler m_handler; protected XMLReader m_parser; public DefaultConfigurationBuilder() { this( PARSER ); } public DefaultConfigurationBuilder( final String parserClass ) { //yaya the bugs with some compilers and final variables .. m_handler = getHandler(); try { m_parser = XMLReaderFactory.createXMLReader( parserClass ); //m_parser.setFeature("http://xml.org/sax/features/namespace-prefixes", true); m_parser.setContentHandler( m_handler ); m_parser.setErrorHandler( m_handler ); } catch( final SAXException se ) { throw new Error( "Unable to setup SAX parser" + se ); } } protected SAXConfigurationHandler getHandler() { return new SAXConfigurationHandler(); } public Configuration build( final String resource ) throws SAXException, IOException, ConfigurationException { final InputStream input = new FileInputStream( resource ); try { return build( input ); } finally { try { input.close(); } catch( final IOException ioe ) {} } } public Configuration build( final InputStream inputStream ) throws SAXException, IOException, ConfigurationException { final InputSource inputSource = new InputSource( inputStream ); return build( inputSource ); } public Configuration build( final InputSource input ) throws SAXException, IOException, ConfigurationException { m_handler.clear(); m_parser.parse( input ); return m_handler.getConfiguration(); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/configuration/SAXConfigurationHandler.java Index: SAXConfigurationHandler.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.configuration; import java.io.IOException; import java.util.ArrayList; import org.xml.sax.Attributes; import org.xml.sax.ErrorHandler; import org.xml.sax.Locator; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.helpers.DefaultHandler; /** * A SAXConfigurationHandler helps build Configurations out of sax events. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public class SAXConfigurationHandler extends DefaultHandler implements ErrorHandler { protected final ArrayList m_elements = new ArrayList(); protected Configuration m_configuration; protected Locator m_locator; public Configuration getConfiguration() { return m_configuration; } public void clear() { m_elements.clear(); m_locator = null; } public void setDocumentLocator( final Locator locator ) { m_locator = locator; } public void characters( final char[] ch, int start, int end ) throws SAXException { final String value = (new String( ch, start, end )).trim(); if( value.equals( "" ) ) return; final DefaultConfiguration configuration = (DefaultConfiguration)m_elements.get( m_elements.size() - 1 ); if( 0 != configuration.getChildCount() ) { throw new SAXException( "Not allowed to define mixed content in the " + "element " + configuration.getName() + " at " + configuration.getLocation() ); } configuration.appendValueData( value ); } public void endElement( final String namespaceURI, final String localName, final String rawName ) { final int location = m_elements.size() - 1; final Object object = m_elements.remove( location ); if( 0 == location ) { m_configuration = (Configuration)object; } } protected DefaultConfiguration createConfiguration( final String localName, final String location ) { return new DefaultConfiguration( localName, location ); } public void startElement( final String namespaceURI, final String localName, final String rawName, final Attributes attributes ) throws SAXException { final DefaultConfiguration configuration = createConfiguration( localName, getLocationString() ); final int size = m_elements.size() - 1; if( size > -1 ) { final DefaultConfiguration parent = (DefaultConfiguration)m_elements.get( size ); if( null != parent.getValue( null ) ) { throw new SAXException( "Not allowed to define mixed content in the " + "element " + parent.getName() + " at " + parent.getLocation() ); } parent.addChild( configuration ); } m_elements.add( configuration ); final int attributesSize = attributes.getLength(); for( int i = 0; i < attributesSize; i++ ) { final String name = attributes.getQName( i ); final String value = attributes.getValue( i ); configuration.addAttribute( name, value ); } } /** * This just throws an exception on a parse error. */ public void error( final SAXParseException exception ) throws SAXException { throw exception; } /** * This just throws an exception on a parse error. */ public void warning( final SAXParseException exception ) throws SAXException { throw exception; } /** * This just throws an exception on a parse error. */ public void fatalError( final SAXParseException exception ) throws SAXException { throw exception; } protected String getLocationString() { if( null == m_locator ) return "Unknown"; else { return m_locator.getSystemId() + ":" + m_locator.getLineNumber() + ":" + m_locator.getColumnNumber(); } } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/context/DefaultContext.java Index: DefaultContext.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.context; import java.util.Hashtable; import java.util.Map; import org.apache.framework.context.Context; /** * Default implementation of Context. * This implementation is a static hierarchial store. * * @author <a href="mailto:[EMAIL PROTECTED]">Federico Barbieri</a> * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public class DefaultContext implements Context { protected final Map m_contextData; protected final Context m_parent; public DefaultContext( final Map contextData, final Context parent ) { m_parent = parent; m_contextData = contextData; } public DefaultContext( final Map contextData ) { this( contextData, null ); } public DefaultContext( final Context parent ) { this( new Hashtable(), parent ); } public DefaultContext() { this( (Context)null ); } public Object get( final Object key ) { final Object data = m_contextData.get( key ); if( null == m_parent || null != data ) { return data; } return m_parent.get( key ); } public void put( final Object key, final Object value ) { m_contextData.put( key, value ); } } 1.1 jakarta-avalon/proposal/4.0/src/java/org/apache/framework/logger/AbstractLoggable.java Index: AbstractLoggable.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.framework.logger; import org.apache.framework.component.Component; import org.apache.framework.logger.Loggable; import org.apache.log.Logger; /** * Helper class to inherit from. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> */ public abstract class AbstractLoggable implements Component, Loggable { protected Logger m_logger; public void setLogger( final Logger logger ) { m_logger = logger; } protected final Logger getLogger() { return m_logger; } protected void setupLogger( final Object component ) { setupLogger( component, (String)null ); } protected void setupLogger( final Object component, final String subCategory ) { if( component instanceof Loggable ) { Logger logger = m_logger; if( null != subCategory ) { logger = m_logger.getChildLogger( subCategory ); } ((Loggable)component).setLogger( logger ); } } protected void setupLogger( final Object component, final Logger logger ) { if( component instanceof Loggable ) { ((Loggable)component).setLogger( logger ); } } } 1.2 +1 -1 jakarta-avalon/proposal/4.0/src/java/org/apache/log/format/AvalonLogFormatter.java Index: AvalonLogFormatter.java =================================================================== RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/log/format/AvalonLogFormatter.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- AvalonLogFormatter.java 2001/02/26 07:32:32 1.1 +++ AvalonLogFormatter.java 2001/04/03 23:18:04 1.2 @@ -8,7 +8,7 @@ package org.apache.log.format; import java.util.Date; -import org.apache.aut.ExceptionUtil; +import org.apache.framework.ExceptionUtil; import org.apache.log.format.PatternFormatter; /** --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]