git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271825 13f79535-47bb-0310-9956-ffa450edef68master
@@ -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 ) | |||
{ | |||
@@ -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 = | |||
@@ -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 <a href="mailto:peter@apache.org">Peter Donald</a> | |||
* @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() ); | |||
} | |||
} |
@@ -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 <a href="mailto:peter@apache.org">Peter Donald</a> | |||
* @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 ); | |||
} | |||
} |
@@ -16,7 +16,7 @@ import org.apache.avalon.framework.logger.Logger; | |||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||
* @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 ) | |||