Browse Source

Remote support for the Ant1 wrapper for the timebeing. Will re-add it in later if needed.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270238 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 23 years ago
parent
commit
3dabe909b6
4 changed files with 0 additions and 361 deletions
  1. +0
    -138
      proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/Ant1Project.java
  2. +0
    -92
      proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/Ant1Tasklib.java
  3. +0
    -57
      proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/Ant1TypeFactory.java
  4. +0
    -74
      proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/TaskAdapter.java

+ 0
- 138
proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/Ant1Project.java View File

@@ -1,138 +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 file.
*/
package org.apache.myrmidon.libs.ant1;

import java.io.File;
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.logger.LogEnabled;
import org.apache.avalon.framework.logger.Logger;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;

public class Ant1Project
extends Project
implements LogEnabled, Contextualizable
{
private Logger m_logger;

///Variable to hold context for use by sub-classes
private TaskContext m_context;

public void enableLogging( final Logger logger )
{
m_logger = logger;
}

protected final Logger getLogger()
{
return m_logger;
}

/**
* Retrieve context from container.
*
* @param context the context
*/
public void contextualize( final Context context )
{
m_context = (TaskContext)context;
}

protected final TaskContext getContext()
{
return m_context;
}

/**
* Initialise the project.
*/
public void init()
throws TaskException
{
setJavaVersionProperty();
}

public void setProperty( final String name, final String value )
{
try
{
getContext().setProperty( name, value );
}
catch( final Exception e )
{
getLogger().warn( "Failed to set property " + name + " to " + value, e );
}
}

public String getProperty( final String name )
{
return "" + getContext().getProperty( name );
}

public String getUserProperty( final String name )
{
return getProperty( name );
}

public String getName()
{
return "Ant1 Project";
}

public Task createTask( final String taskType )
throws TaskException
{
throw new UnsupportedOperationException();
}

public Object createDataType( final String typeName )
throws TaskException
{
throw new UnsupportedOperationException();
}

public File resolveFile( final String fileName )
{
try
{
return getContext().resolveFile( fileName );
}
catch( final Exception e )
{
return null;
}
}

private void messageLogged( String message, int priority )
{
switch( priority )
{
case MSG_ERR:
getLogger().error( message );
break;
case MSG_WARN:
getLogger().warn( message );
break;
case MSG_INFO:
getLogger().info( message );
break;
case MSG_VERBOSE:
getLogger().debug( message );
break;
case MSG_DEBUG:
getLogger().debug( message );
break;

default:
getLogger().debug( message );
}
}
}

+ 0
- 92
proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/Ant1Tasklib.java View File

@@ -1,92 +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 file.
*/
package org.apache.myrmidon.libs.ant1;

import java.io.File;
import java.io.InputStream;
import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;
import java.util.Properties;
import org.apache.myrmidon.api.AbstractTask;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.api.Task;
import org.apache.avalon.framework.component.ComponentException;
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.Composable;
import org.apache.myrmidon.interfaces.type.TypeManager;

/**
* Method to register a tasklib.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
*/
public class Ant1Tasklib
extends AbstractTask
implements Composable
{
private String m_prefix = "";
private File m_lib;
private TypeManager m_typeManager;

public void compose( final ComponentManager componentManager )
throws ComponentException
{
m_typeManager = (TypeManager)componentManager.lookup( TypeManager.ROLE );
}

public void setLib( final File lib )
{
m_lib = lib;
}

public void setPrefix( final String prefix )
{
m_prefix = prefix;
}

public void execute()
throws TaskException
{
if( null == m_lib )
{
throw new TaskException( "Must specify lib parameter" );
}


try
{
final String location = "jar:" + m_lib.toURL() +
"!/org/apache/tools/ant/taskdefs/defaults.properties";
final URL url = new URL( location );
final InputStream input = url.openStream();

final Properties tasks = new Properties();
tasks.load( input );
input.close();

final Ant1TypeFactory factory = new Ant1TypeFactory( m_lib.toURL() );

final Enumeration enum = tasks.propertyNames();
while( enum.hasMoreElements() )
{
final String rawName = (String)enum.nextElement();
final String className = tasks.getProperty( rawName );
final String name = m_prefix + rawName;

factory.addNameClassMapping( name, className );
m_typeManager.registerType( Task.ROLE, name, factory );
}
}
catch( final Exception e )
{
throw new TaskException( "Failed to load task definitions", e );
}
}
}

+ 0
- 57
proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/Ant1TypeFactory.java View File

@@ -1,57 +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 file.
*/
package org.apache.myrmidon.libs.ant1;

import java.net.URL;
import org.apache.myrmidon.interfaces.type.DefaultTypeFactory;
import org.apache.myrmidon.interfaces.type.TypeException;
import org.apache.tools.ant.Task;

/**
* Factory used to create adaptors for Ant1 tasks.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
*/
public class Ant1TypeFactory
extends DefaultTypeFactory
{
public Ant1TypeFactory( final URL url )
{
super( url );
}

public Ant1TypeFactory( final URL[] urls )
{
super( urls );
}

public Ant1TypeFactory( final URL[] urls, final ClassLoader parent )
{
super( urls, parent );
}

public Ant1TypeFactory( final ClassLoader classLoader )
{
super( classLoader );
}

public Object create( final String name )
throws TypeException
{
final Object object = super.create( name );

if( !(object instanceof Task) )
{
throw new TypeException( "Expected an Ant1 task but received an " +
"object of type : " + object.getClass().getName() );
}

return new TaskAdapter( (Task)object );
}
}


+ 0
- 74
proposal/myrmidon/src/java/org/apache/myrmidon/libs/ant1/TaskAdapter.java View File

@@ -1,74 +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 file.
*/
package org.apache.myrmidon.libs.ant1;

import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.interfaces.type.TypeException;
import org.apache.myrmidon.interfaces.type.TypeFactory;
import org.apache.myrmidon.interfaces.type.TypeManager;
import org.apache.myrmidon.framework.AbstractContainerTask;
import org.apache.tools.ant.Task;

/**
* Adapter of Ant1 tasks to myrmidon.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
*/
public class TaskAdapter
extends AbstractContainerTask
implements Configurable
{
private Task m_task;
private Ant1Project m_project = new Ant1Project();

public TaskAdapter( final Task task )
{
m_task = task;
}

protected final Task getTask()
{
return m_task;
}

protected final Ant1Project getProject()
{
return m_project;
}

public void configure( final Configuration configuration )
throws ConfigurationException
{
//getTask().setTaskName( configuration.getName() );

//do configuration
configure( getTask(), configuration );
}

public void execute()
throws TaskException
{
try
{
getProject().enableLogging( getLogger() );
getProject().contextualize( getContext() );
getProject().init();

getTask().setProject( getProject() );
getTask().execute();
}
catch( final Exception e )
{
throw new TaskException( e.getMessage(), e );
}
}
}

Loading…
Cancel
Save