diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultTaskContext.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultTaskContext.java
index f4467d8a1..0343eef0c 100644
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultTaskContext.java
+++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultTaskContext.java
@@ -15,9 +15,9 @@ import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.avalon.excalibur.io.FileUtil;
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.interfaces.model.DefaultNameValidator;
@@ -36,18 +36,18 @@ public class DefaultTaskContext
ResourceManager.getPackageResources( DefaultTaskContext.class );
// Property name validator allows digits, but no internal whitespace.
- private static DefaultNameValidator m_propertyNameValidator = new DefaultNameValidator();
+ private static DefaultNameValidator c_propertyNameValidator = new DefaultNameValidator();
static
{
- m_propertyNameValidator.setAllowInternalWhitespace( false );
+ c_propertyNameValidator.setAllowInternalWhitespace( false );
}
private final Map m_contextData = new Hashtable();
private final TaskContext m_parent;
- private ServiceManager m_serviceManager;
- private Logger m_logger;
- private PropertyResolver m_propertyResolver;
+ private final ServiceManager m_serviceManager;
+ private final Logger m_logger;
+ private final PropertyResolver m_propertyResolver;
/**
* Constructor that takes both parent context and a service directory.
@@ -55,10 +55,12 @@ public class DefaultTaskContext
public DefaultTaskContext( final TaskContext parent,
final ServiceManager serviceManager,
final Logger logger )
+ throws TaskException
{
m_parent = parent;
m_serviceManager = serviceManager;
m_logger = logger;
+ m_propertyResolver = (PropertyResolver)getService( PropertyResolver.class );
}
/**
@@ -96,7 +98,7 @@ public class DefaultTaskContext
{
// Try this context first
final String name = serviceClass.getName();
- if( m_serviceManager != null && m_serviceManager.hasService( name ) )
+ if( null != m_serviceManager && m_serviceManager.hasService( name ) )
{
try
{
@@ -148,15 +150,8 @@ public class DefaultTaskContext
{
try
{
- // Lazy lookup of the PropertyResolver
- if( m_propertyResolver == null )
- {
- m_propertyResolver = (PropertyResolver)getService( PropertyResolver.class );
- }
-
final Object object =
m_propertyResolver.resolveProperties( value, this );
-
if( null == object )
{
final String message = REZ.getString( "null-resolved-value.error", value );
@@ -347,9 +342,8 @@ public class DefaultTaskContext
public TaskContext createSubContext( final String name )
throws TaskException
{
- final Logger logger = m_logger.getChildLogger( name );
final DefaultTaskContext context =
- new DefaultTaskContext( this, m_serviceManager, logger );
+ new DefaultTaskContext( this, m_serviceManager, m_logger );
context.setProperty( TaskContext.NAME, getName() + "." + name );
context.setProperty( TaskContext.BASE_DIRECTORY, getBaseDirectory() );
@@ -378,7 +372,7 @@ public class DefaultTaskContext
{
try
{
- m_propertyNameValidator.validate( name );
+ c_propertyNameValidator.validate( name );
}
catch( Exception e )
{
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultWorkspace.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultWorkspace.java
index 0aac4ed8c..d500de173 100644
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultWorkspace.java
+++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultWorkspace.java
@@ -16,7 +16,6 @@ import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.LogKitLogger;
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.parameters.ParameterException;
import org.apache.avalon.framework.parameters.Parameterizable;
@@ -25,7 +24,6 @@ import org.apache.avalon.framework.service.DefaultServiceManager;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
-import org.apache.log.Hierarchy;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.conditions.Condition;
@@ -62,8 +60,6 @@ public class DefaultWorkspace
private HashMap m_entries = new HashMap();
private TypeManager m_typeManager;
private Deployer m_deployer;
- private Hierarchy m_hierarchy;
- private int m_projectID;
/**
* Add a listener to project events.
@@ -110,11 +106,6 @@ public class DefaultWorkspace
throws Exception
{
m_baseContext = createBaseContext();
-
- m_hierarchy = new Hierarchy();
-
- final LogTargetToListenerAdapter target = new LogTargetToListenerAdapter( m_listenerSupport );
- m_hierarchy.setDefaultLogTarget( target );
}
/**
@@ -258,8 +249,7 @@ public class DefaultWorkspace
// Create a logger
final Logger logger =
- new LogKitLogger( m_hierarchy.getLoggerFor( "project" + m_projectID ) );
- m_projectID++;
+ new RoutingLogger( RoutingLogger.LEVEL_DEBUG, m_listenerSupport );
// Create and configure the context
final DefaultTaskContext context =
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/LogTargetToListenerAdapter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/LogTargetToListenerAdapter.java
deleted file mode 100644
index c62e470f3..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/LogTargetToListenerAdapter.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.txt file.
- */
-package org.apache.myrmidon.components.workspace;
-
-import org.apache.log.LogEvent;
-import org.apache.log.LogTarget;
-
-/**
- * Adapter between Avalon LogKit and Project listener interfaces.
- *
- * @author Peter Donald
- * @version $Revision$ $Date$
- */
-public class LogTargetToListenerAdapter
- implements LogTarget
-{
- private final ProjectListenerSupport m_listenerSupport;
-
- /**
- * Constructor taking listener to convert to.
- *
- * @param listenerSupport the ProjectListener
- */
- public LogTargetToListenerAdapter( final ProjectListenerSupport listenerSupport )
- {
- m_listenerSupport = listenerSupport;
- }
-
- /**
- * Process a log event.
- *
- * @param event the event
- */
- public void processEvent( final LogEvent event )
- {
- m_listenerSupport.log( event.getMessage(), event.getThrowable() );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/RoutingLogger.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/RoutingLogger.java
new file mode 100644
index 000000000..d4d7e843a
--- /dev/null
+++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/RoutingLogger.java
@@ -0,0 +1,44 @@
+/*
+ * 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.txt file.
+ */
+package org.apache.myrmidon.components.workspace;
+
+import org.apache.myrmidon.frontends.BasicLogger;
+
+/**
+ * A basic logger that just routes the messages to the ProjectListenerSupport.
+ *
+ * @author Peter Donald
+ * @version $Revision$ $Date$
+ */
+final class RoutingLogger
+ extends BasicLogger
+{
+ /**
+ * The endpoint of all the logging messages.
+ */
+ private final ProjectListenerSupport m_listenerSupport;
+
+ /**
+ * Create a Logger that routes messages at specified level
+ * to specified support.
+ */
+ public RoutingLogger( final int logLevel,
+ final ProjectListenerSupport listenerSupport )
+ {
+ super( null, logLevel );
+ m_listenerSupport = listenerSupport;
+ }
+
+ /**
+ * Utility method to output messages.
+ */
+ protected void output( final String message, final Throwable throwable )
+ {
+ m_listenerSupport.log( message, throwable );
+ }
+}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/BasicLogger.java b/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/BasicLogger.java
index 5fe6cb84a..46f68ed7b 100644
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/BasicLogger.java
+++ b/proposal/myrmidon/src/java/org/apache/myrmidon/frontends/BasicLogger.java
@@ -16,7 +16,7 @@ import org.apache.avalon.framework.logger.Logger;
* @author Peter Donald
* @version $Revision$ $Date$
*/
-class BasicLogger
+public class BasicLogger
implements Logger
{
public final static int LEVEL_DEBUG = 0;
@@ -246,7 +246,7 @@ class BasicLogger
/**
* Utility method to output messages.
*/
- private void output( final String message, final Throwable throwable )
+ protected void output( final String message, final Throwable throwable )
{
final StringBuffer sb = new StringBuffer( m_prefix );
if( null != message )