Browse Source

Remove LogKit dependencies from workspace package by introducing alternate logger implementation to do routing.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271825 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 23 years ago
parent
commit
3678b44d38
5 changed files with 58 additions and 73 deletions
  1. +11
    -17
      proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultTaskContext.java
  2. +1
    -11
      proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultWorkspace.java
  3. +0
    -43
      proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/LogTargetToListenerAdapter.java
  4. +44
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/RoutingLogger.java
  5. +2
    -2
      proposal/myrmidon/src/java/org/apache/myrmidon/frontends/BasicLogger.java

+ 11
- 17
proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultTaskContext.java View File

@@ -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 )
{


+ 1
- 11
proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultWorkspace.java View File

@@ -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 =


+ 0
- 43
proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/LogTargetToListenerAdapter.java View File

@@ -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() );
}
}

+ 44
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/RoutingLogger.java View File

@@ -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 );
}
}

+ 2
- 2
proposal/myrmidon/src/java/org/apache/myrmidon/frontends/BasicLogger.java View File

@@ -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 )


Loading…
Cancel
Save