donaldp 01/02/06 21:36:22
Added: proposal/myrmidon/src/java/org/apache/ant/modules/core
AbstractResourceRegisterer.java README
RegisterConverter.java RegisterDataType.java
RegisterTasklet.java RegisterTasklib.java
Log:
Basic module that contains task essential to operation/bootstrapping of
myrmidon/ant
Revision Changes Path
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/core/AbstractResourceRegisterer.java
Index: AbstractResourceRegisterer.java
===================================================================
/*
* 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:[EMAIL PROTECTED]">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;
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/core/README
Index: README
===================================================================
This package is required for operation. No task within this directory is
allowed to
require parameters other than strings for converter.
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java
Index: RegisterConverter.java
===================================================================
/*
* 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:[EMAIL PROTECTED]">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;
}
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterDataType.java
Index: RegisterDataType.java
===================================================================
/*
* 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:[EMAIL PROTECTED]">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 );
}
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklet.java
Index: RegisterTasklet.java
===================================================================
/*
* 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:[EMAIL PROTECTED]">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 );
}
}
}
1.1
jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java
Index: RegisterTasklib.java
===================================================================
/*
* 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:[EMAIL PROTECTED]">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 );
}
}
}