Browse Source

Basic module that contains task essential to operation/bootstrapping of myrmidon/ant

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268599 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 24 years ago
parent
commit
d7b7bcc567
6 changed files with 400 additions and 0 deletions
  1. +101
    -0
      proposal/myrmidon/src/java/org/apache/ant/modules/core/AbstractResourceRegisterer.java
  2. +2
    -0
      proposal/myrmidon/src/java/org/apache/ant/modules/core/README
  3. +140
    -0
      proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java
  4. +43
    -0
      proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterDataType.java
  5. +43
    -0
      proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklet.java
  6. +71
    -0
      proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java

+ 101
- 0
proposal/myrmidon/src/java/org/apache/ant/modules/core/AbstractResourceRegisterer.java View File

@@ -0,0 +1,101 @@
/*
* 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.ant.modules.core;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.ant.AntException;
import org.apache.ant.tasklet.AbstractTasklet;
import org.apache.ant.tasklet.engine.TaskletEngine;
import org.apache.avalon.ComponentManager;
import org.apache.avalon.ComponentManagerException;
import org.apache.avalon.Composer;
import org.apache.avalon.camelot.RegistryException;

/**
* Method to register a single tasklet.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public abstract class AbstractResourceRegisterer
extends AbstractTasklet
implements Composer
{
protected String m_lib;
protected String m_name;
protected String m_classname;
protected TaskletEngine m_engine;
public void compose( final ComponentManager componentManager )
throws ComponentManagerException
{
m_engine = (TaskletEngine)componentManager.
lookup( "org.apache.ant.tasklet.engine.TaskletEngine" );
}

public void setLib( final String lib )
{
m_lib = lib;
}
public void setName( final String name )
{
m_name = name;
}
public void setClassname( final String classname )
{
m_classname = classname;
}

public void run()
throws AntException
{
if( null == m_name )
{
throw new AntException( "Must specify name parameter" );
}
else if( null == m_lib && null == m_classname )
{
throw new AntException( "Must specify classname if you don't specify " +
"lib parameter" );
}
final URL url = getURL( m_lib );

try
{
registerResource( m_name, m_classname, url );
}
catch( final RegistryException re )
{
throw new AntException( "Error registering resource", re );
}
}

protected URL getURL( final String libName )
{
if( null != libName )
{
final File lib = getContext().resolveFile( libName );
try { return lib.toURL(); }
catch( final MalformedURLException mue )
{
throw new AntException( "Malformed task-lib parameter " + m_lib, mue );
}
}
else
{
return null;
}
}

protected abstract void registerResource( String name, String classname, URL url )
throws AntException, RegistryException;
}

+ 2
- 0
proposal/myrmidon/src/java/org/apache/ant/modules/core/README View File

@@ -0,0 +1,2 @@
This package is required for operation. No task within this directory is allowed to
require parameters other than strings for converter.

+ 140
- 0
proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java View File

@@ -0,0 +1,140 @@
/*
* 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.ant.modules.core;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.ant.AntException;
import org.apache.ant.convert.ConverterEngine;
import org.apache.ant.convert.DefaultConverterInfo;
import org.apache.ant.tasklet.AbstractTasklet;
import org.apache.ant.tasklet.engine.TaskletEngine;
import org.apache.avalon.ComponentManager;
import org.apache.avalon.ComponentManagerException;
import org.apache.avalon.Composer;
import org.apache.avalon.camelot.DefaultLocator;
import org.apache.avalon.camelot.DeploymentException;
import org.apache.avalon.camelot.RegistryException;

/**
* Method to register a single converter.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public class RegisterConverter
extends AbstractTasklet
implements Composer
{
protected String m_sourceType;
protected String m_destinationType;
protected String m_lib;
protected String m_classname;
protected TaskletEngine m_engine;
public void compose( final ComponentManager componentManager )
throws ComponentManagerException
{
m_engine = (TaskletEngine)componentManager.
lookup( "org.apache.ant.tasklet.engine.TaskletEngine" );
}

public void setLib( final String lib )
{
m_lib = lib;
}
public void setClassname( final String classname )
{
m_classname = classname;
}

public void setSourceType( final String sourceType )
{
m_sourceType = sourceType;
}
public void setDestinationType( final String destinationType )
{
m_destinationType = destinationType;
}
public void run()
throws AntException
{
if( null == m_classname )
{
throw new AntException( "Must specify classname parameter" );
}
final URL url = getURL( m_lib );

boolean isFullyDefined = true;
if( null == m_sourceType && null == m_destinationType )
{
isFullyDefined = false;
}
else if( null == m_sourceType || null == m_destinationType )
{
throw new AntException( "Must specify the source-type and destination-type " +
"parameters when supplying a name" );
}

if( !isFullyDefined && null == url )
{
throw new AntException( "Must supply parameter if not fully specifying converter" );
}

if( !isFullyDefined )
{
try
{
m_engine.getTskDeployer().deployConverter( m_classname, url.toString(), url );
}
catch( final DeploymentException de )
{
throw new AntException( "Failed deploying " + m_classname +
" from " + url, de );
}
}
else
{
final DefaultConverterInfo info =
new DefaultConverterInfo( m_sourceType, m_destinationType );
final DefaultLocator locator = new DefaultLocator( m_classname, url );

try
{
m_engine.getConverterEngine().getInfoRegistry().register( m_classname, info );
m_engine.getConverterEngine().getRegistry().register( m_classname, locator );
}
catch( final RegistryException re )
{
throw new AntException( "Error registering resource", re );
}
}
}
protected URL getURL( final String libName )
{
if( null != libName )
{
final File lib = getContext().resolveFile( libName );
try { return lib.toURL(); }
catch( final MalformedURLException mue )
{
throw new AntException( "Malformed task-lib parameter " + m_lib, mue );
}
}
else
{
return null;
}
}
}

+ 43
- 0
proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterDataType.java View File

@@ -0,0 +1,43 @@
/*
* 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.ant.modules.core;

import java.net.URL;
import org.apache.ant.AntException;
import org.apache.avalon.camelot.DefaultLocator;
import org.apache.avalon.camelot.DeploymentException;
import org.apache.avalon.camelot.RegistryException;

/**
* Method to register a single datatype.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public class RegisterDataType
extends AbstractResourceRegisterer
{
protected void registerResource( final String name,
final String classname,
final URL url )
throws AntException, RegistryException
{
if( null == classname )
{
try { m_engine.getTskDeployer().deployDataType( name, url.toString(), url ); }
catch( final DeploymentException de )
{
throw new AntException( "Failed deploying " + name + " from " + url, de );
}
}
else
{
final DefaultLocator locator = new DefaultLocator( classname, url );
m_engine.getDataTypeEngine().getRegistry().register( name, locator );
}
}
}

+ 43
- 0
proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklet.java View File

@@ -0,0 +1,43 @@
/*
* 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.ant.modules.core;

import java.net.URL;
import org.apache.ant.AntException;
import org.apache.avalon.camelot.DefaultLocator;
import org.apache.avalon.camelot.DeploymentException;
import org.apache.avalon.camelot.RegistryException;

/**
* Method to register a single tasklet.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public class RegisterTasklet
extends AbstractResourceRegisterer
{
protected void registerResource( final String name,
final String classname,
final URL url )
throws AntException, RegistryException
{
if( null == classname )
{
try { m_engine.getTskDeployer().deployTasklet( name, url.toString(), url ); }
catch( final DeploymentException de )
{
throw new AntException( "Failed deploying " + name + " from " + url, de );
}
}
else
{
final DefaultLocator locator = new DefaultLocator( classname, url );
m_engine.getRegistry().register( name, locator );
}
}
}

+ 71
- 0
proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java View File

@@ -0,0 +1,71 @@
/*
* 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.ant.modules.core;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.ant.AntException;
import org.apache.ant.tasklet.AbstractTasklet;
import org.apache.ant.tasklet.engine.TaskletEngine;
import org.apache.avalon.ComponentManager;
import org.apache.avalon.ComponentManagerException;
import org.apache.avalon.Composer;
import org.apache.avalon.camelot.DeploymentException;

/**
* Method to register a tasklib.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public class RegisterTasklib
extends AbstractTasklet
implements Composer
{
protected String m_lib;
protected TaskletEngine m_engine;
public void compose( final ComponentManager componentManager )
throws ComponentManagerException
{
m_engine = (TaskletEngine)componentManager.
lookup( "org.apache.ant.tasklet.engine.TaskletEngine" );
}

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

public void run()
throws AntException
{
if( null == m_lib )
{
throw new AntException( "Must specify lib parameter" );
}
URL url = null;

final File lib = getContext().resolveFile( m_lib );
try { url = lib.toURL(); }
catch( final MalformedURLException mue )
{
throw new AntException( "Malformed task-lib parameter " + m_lib, mue );
}

try
{
m_engine.getTskDeployer().deploy( url.toString(), url );
}
catch( final DeploymentException de )
{
throw new AntException( "Error registering resource", de );
}
}
}

Loading…
Cancel
Save