From 07088237160c3a9058b75d259a6a486aae502015 Mon Sep 17 00:00:00 2001 From: Peter Donald Date: Tue, 5 Jun 2001 04:33:03 +0000 Subject: [PATCH] Start of Ant1 task adapter. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269104 13f79535-47bb-0310-9956-ffa450edef68 --- .../myrmidon/framework/ant1/Ant1Project.java | 153 ++++++++++++++++++ .../myrmidon/framework/ant1/TaskAdapter.java | 77 +++++++++ 2 files changed, 230 insertions(+) create mode 100644 proposal/myrmidon/src/java/org/apache/myrmidon/framework/ant1/Ant1Project.java create mode 100644 proposal/myrmidon/src/java/org/apache/myrmidon/framework/ant1/TaskAdapter.java diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/ant1/Ant1Project.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/ant1/Ant1Project.java new file mode 100644 index 000000000..5d14460de --- /dev/null +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/ant1/Ant1Project.java @@ -0,0 +1,153 @@ +/* + * 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.framework.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.Loggable; +import org.apache.log.Logger; +import org.apache.myrmidon.api.TaskContext; +import org.apache.tools.ant.*; +import org.apache.tools.ant.Project; + +public class Ant1Project + extends Project + implements Loggable, Contextualizable +{ + private Logger m_logger; + + ///Variable to hold context for use by sub-classes + private TaskContext m_context; + + public void setLogger( 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 BuildException + { + 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 void setUserProperty( final String name, final String value ) + { + setProperty( name, value ); + } + + 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 BuildException + { + throw new UnsupportedOperationException(); + } + + public Object createDataType( final String typeName ) + throws BuildException + { + throw new UnsupportedOperationException(); + } + + public File resolveFile( final String fileName ) + { + try { return getContext().resolveFile( fileName ); } + catch( final Exception e ) + { + return null; + } + } + + protected void fireBuildStarted() {} + protected void fireBuildFinished(Throwable exception) {} + protected void fireTargetStarted(Target target) {} + protected void fireTargetFinished(Target target, Throwable exception) {} + protected void fireTaskStarted(Task task) {} + protected void fireTaskFinished(Task task, Throwable exception) {} + + private void fireMessageLoggedEvent(BuildEvent event, String message, int priority) + { + messageLogged( message, priority ); + } + + protected void fireMessageLogged(Project project, String message, int priority) + { + messageLogged( message, priority ); + } + + protected void fireMessageLogged(Target target, String message, int priority) + { + messageLogged( message, priority ); + } + + protected void fireMessageLogged(Task task, String message, int priority) + { + messageLogged( message, priority ); + } + + 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 ); + } + } +} diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/ant1/TaskAdapter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/ant1/TaskAdapter.java new file mode 100644 index 000000000..3a11cdfce --- /dev/null +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/ant1/TaskAdapter.java @@ -0,0 +1,77 @@ +/* + * 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.framework.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.DataType; +import org.apache.myrmidon.api.TaskContext; +import org.apache.myrmidon.api.TaskException; +import org.apache.myrmidon.components.type.TypeException; +import org.apache.myrmidon.components.type.TypeFactory; +import org.apache.myrmidon.components.type.TypeManager; +import org.apache.myrmidon.framework.AbstractContainerTask; +import org.apache.tools.ant.Task; + +/** + * This is the property "task" to declare a binding of a datatype to a name. + * + * @author Peter Donald + */ +public class TaskAdapter + extends AbstractContainerTask + implements Configurable +{ + private Task m_ant1Task; + private Ant1Project m_project = new Ant1Project(); + + public TaskAdapter( final Task ant1Task ) + { + m_ant1Task = ant1Task; + } + + protected final Task getTask() + { + return m_ant1Task; + } + + 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().setLogger( getLogger() ); + getProject().contextualize( getContext() ); + getProject().init(); + + //getTask().setProject( getProject() ); + + getTask().init(); + getTask().execute(); + } + catch( final Exception e ) + { + throw new TaskException( e.getMessage(), e ); + } + } +}