Browse Source

Starting to adapt to Cocoon2 style hierarchy as it fits Ant style.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269049 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 24 years ago
parent
commit
32dc44001f
9 changed files with 184 additions and 92 deletions
  1. +3
    -4
      proposal/myrmidon/src/java/org/apache/ant/Main.java
  2. +2
    -2
      proposal/myrmidon/src/java/org/apache/ant/modules/basic/Property.java
  3. +3
    -3
      proposal/myrmidon/src/java/org/apache/ant/runtime/DefaultAntEngine.java
  4. +31
    -31
      proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTaskletEngine.java
  5. +2
    -2
      proposal/myrmidon/src/java/org/apache/myrmidon/components/Configurer.java
  6. +60
    -50
      proposal/myrmidon/src/java/org/apache/myrmidon/components/configurer/DefaultConfigurer.java
  7. +28
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/framework/ItemSet.java
  8. +35
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/framework/Mapper.java
  9. +20
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/framework/Scanner.java

+ 3
- 4
proposal/myrmidon/src/java/org/apache/ant/Main.java View File

@@ -100,8 +100,8 @@ public class Main
QUIET_OPT, VERBOSE_OPT, LOG_LEVEL_OPT
};

protected ProjectListener m_listener;
protected File m_homeDir;
private ProjectListener m_listener;
private File m_homeDir;

/**
* Main entry point called to run standard Ant.
@@ -139,9 +139,8 @@ public class Main

/**
* Initialise the options for command line parser.
* This is called by super-class.
*/
protected CLOptionDescriptor[] createCLOptions()
private CLOptionDescriptor[] createCLOptions()
{
//TODO: localise
final CLOptionDescriptor[] options = new CLOptionDescriptor[ 11 ];


+ 2
- 2
proposal/myrmidon/src/java/org/apache/ant/modules/basic/Property.java View File

@@ -9,7 +9,7 @@ package org.apache.ant.modules.basic;

import java.util.Iterator;
import org.apache.ant.AntException;
import org.apache.ant.configuration.Configurer;
import org.apache.myrmidon.components.Configurer;
import org.apache.ant.convert.Converter;
import org.apache.ant.tasklet.DataType;
import org.apache.ant.tasklet.engine.DataTypeEngine;
@@ -44,7 +44,7 @@ public class Property
throws ComponentException
{
m_configurer = (Configurer)componentManager.
lookup( "org.apache.ant.configuration.Configurer" );
lookup( "org.apache.myrmidon.components.Configurer" );

m_engine = (DataTypeEngine)componentManager.
lookup( "org.apache.ant.tasklet.engine.DataTypeEngine" );


+ 3
- 3
proposal/myrmidon/src/java/org/apache/ant/runtime/DefaultAntEngine.java View File

@@ -10,7 +10,7 @@ package org.apache.ant.runtime;
import java.io.File;
import java.util.Properties;
import org.apache.ant.AntException;
import org.apache.ant.configuration.Configurer;
import org.apache.myrmidon.components.Configurer;
import org.apache.ant.convert.engine.ConverterEngine;
import org.apache.ant.project.ProjectBuilder;
import org.apache.ant.project.ProjectEngine;
@@ -170,7 +170,7 @@ public class DefaultAntEngine
defaults.setProperty( "ant.comp.deployer",
"org.apache.ant.tasklet.engine.DefaultTskDeployer" );
defaults.setProperty( "ant.comp.configurer",
"org.apache.ant.configuration.DefaultConfigurer" );
"org.apache.myrmidon.components.configurer.DefaultConfigurer" );

return defaults;
}
@@ -193,7 +193,7 @@ public class DefaultAntEngine
componentManager.put( "org.apache.ant.project.ProjectBuilder", m_builder );
componentManager.put( "org.apache.ant.tasklet.engine.TskDeployer", m_deployer );
componentManager.put( "org.apache.avalon.framework.camelot.Factory", m_factory );
componentManager.put( "org.apache.ant.configuration.Configurer", m_configurer );
componentManager.put( "org.apache.myrmidon.components.Configurer", m_configurer );

return componentManager;
}


+ 31
- 31
proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTaskletEngine.java View File

@@ -9,25 +9,9 @@ package org.apache.ant.tasklet.engine;

import java.util.HashMap;
import org.apache.ant.AntException;
import org.apache.ant.configuration.Configurer;
import org.apache.ant.configuration.DefaultConfigurer;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.ant.convert.engine.ConverterEngine;
import org.apache.myrmidon.api.Task;
import org.apache.myrmidon.api.TaskContext;
import org.apache.avalon.framework.logger.AbstractLoggable;
import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.DefaultComponentManager;
import org.apache.avalon.framework.component.ComponentException;
import org.apache.avalon.framework.component.Composable;
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.component.DefaultComponentManager;
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.logger.Loggable;
import org.apache.avalon.framework.camelot.DefaultFactory;
import org.apache.avalon.framework.camelot.DefaultRegistry;
import org.apache.avalon.framework.camelot.Factory;
@@ -35,7 +19,23 @@ import org.apache.avalon.framework.camelot.FactoryException;
import org.apache.avalon.framework.camelot.Locator;
import org.apache.avalon.framework.camelot.Registry;
import org.apache.avalon.framework.camelot.RegistryException;
import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.component.ComponentException;
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.Composable;
import org.apache.avalon.framework.component.DefaultComponentManager;
import org.apache.avalon.framework.component.DefaultComponentManager;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.logger.AbstractLoggable;
import org.apache.avalon.framework.logger.Loggable;
import org.apache.log.Logger;
import org.apache.myrmidon.api.Task;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.components.Configurer;
import org.apache.myrmidon.components.configurer.DefaultConfigurer;

public class DefaultTaskletEngine
extends AbstractLoggable
@@ -74,7 +74,7 @@ public class DefaultTaskletEngine
{
return m_dataTypeEngine;
}
/**
* Retrieve relevent services needed to deploy.
*
@@ -91,7 +91,7 @@ public class DefaultTaskletEngine
m_tskDeployer = (TskDeployer)componentManager.
lookup( "org.apache.ant.tasklet.engine.TskDeployer" );
m_configurer = (Configurer)componentManager.
lookup( "org.apache.ant.configuration.Configurer" );
lookup( "org.apache.myrmidon.components.Configurer" );
m_dataTypeEngine = (DataTypeEngine)componentManager.
lookup( "org.apache.ant.tasklet.engine.DataTypeEngine" );
m_converterEngine = (ConverterEngine)componentManager.
@@ -128,7 +128,7 @@ public class DefaultTaskletEngine
getLogger().debug( "Disposing" );
doDispose( task, taskData );
}
protected Task createTask( final String name )
throws AntException
{
@@ -147,7 +147,7 @@ public class DefaultTaskletEngine
}
}

protected void doConfigure( final Task task,
protected void doConfigure( final Task task,
final Configuration taskData,
final TaskContext context )
throws AntException
@@ -156,11 +156,11 @@ public class DefaultTaskletEngine
catch( final Throwable throwable )
{
throw new AntException( "Error configuring task " + taskData.getName() + " at " +
taskData.getLocation() + "(Reason: " +
taskData.getLocation() + "(Reason: " +
throwable.getMessage() + ")", throwable );
}
}
protected void doCompose( final Task task, final Configuration taskData )
throws AntException
{
@@ -170,29 +170,29 @@ public class DefaultTaskletEngine
catch( final Throwable throwable )
{
throw new AntException( "Error composing task " + taskData.getName() + " at " +
taskData.getLocation() + "(Reason: " +
throwable.getMessage() + ")", throwable );
taskData.getLocation() + "(Reason: " +
throwable.getMessage() + ")", throwable );
}
}
}

protected void doContextualize( final Task task,
protected void doContextualize( final Task task,
final Configuration taskData,
final TaskContext context )
throws AntException
{
try
{
try
{
if( task instanceof Contextualizable )
{
((Contextualizable)task).contextualize( context );
((Contextualizable)task).contextualize( context );
}
}
catch( final Throwable throwable )
{
throw new AntException( "Error contextualizing task " + taskData.getName() + " at " +
taskData.getLocation() + "(Reason: " +
throwable.getMessage() + ")", throwable );
taskData.getLocation() + "(Reason: " +
throwable.getMessage() + ")", throwable );
}
}

@@ -205,7 +205,7 @@ public class DefaultTaskletEngine
catch( final Throwable throwable )
{
throw new AntException( "Error disposing task " + taskData.getName() + " at " +
taskData.getLocation() + "(Reason: " +
taskData.getLocation() + "(Reason: " +
throwable.getMessage() + ")", throwable );
}
}


proposal/myrmidon/src/java/org/apache/ant/configuration/Configurer.java → proposal/myrmidon/src/java/org/apache/myrmidon/components/Configurer.java View File

@@ -5,11 +5,11 @@
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.ant.configuration;
package org.apache.myrmidon.components;

import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.context.Context;

/**

proposal/myrmidon/src/java/org/apache/ant/configuration/DefaultConfigurer.java → proposal/myrmidon/src/java/org/apache/myrmidon/components/configurer/DefaultConfigurer.java View File

@@ -5,7 +5,7 @@
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.ant.configuration;
package org.apache.myrmidon.components.configurer;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -18,13 +18,14 @@ import org.apache.avalon.excalibur.property.PropertyUtil;
import org.apache.avalon.framework.component.ComponentException;
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.Composable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.logger.AbstractLoggable;
import org.apache.avalon.framework.logger.Loggable;
import org.apache.log.Logger;
import org.apache.myrmidon.components.Configurer;

/**
* Class used to configure tasks.
@@ -35,18 +36,27 @@ public class DefaultConfigurer
extends AbstractLoggable
implements Configurer, Composable, Loggable
{
protected final static String RESERVED_ATTRIBUTES[] =
///Compile time constant to turn on extreme debugging
private final static boolean DEBUG = false;

/*
* TODO: Should reserved names be "configurable" ?
*/

///Attribute names that are reserved
private final static String RESERVED_ATTRIBUTES[] =
{
"id"
"id", "logger"
};

protected final static String RESERVED_ELEMENTS[] =
///Element names that are reserved
private final static String RESERVED_ELEMENTS[] =
{
"content"
};

protected final static boolean DEBUG = false;
protected Converter m_converter;
///Converter to use for converting between values
private Converter m_converter;

public void compose( final ComponentManager componentManager )
throws ComponentException
@@ -62,7 +72,7 @@ public class DefaultConfigurer
* and if it does will pass the task the configuration - else it will use
* ants rules to map configuration to types
*
* @param tasklet the tasklet
* @param object the object
* @param configuration the configuration
* @param context the Context
* @exception ConfigurationException if an error occurs
@@ -102,7 +112,7 @@ public class DefaultConfigurer
if( DEBUG )
{
getLogger().debug( "Configuring attribute name=" + name +
" value=" + value );
" value=" + value );
}

configureAttribute( object, name, value, context );
@@ -147,18 +157,18 @@ public class DefaultConfigurer
* @param context the Context
* @exception ConfigurationException if an error occurs
*/
protected void configureContent( final Object object,
final String content,
final Context context )
private void configureContent( final Object object,
final String content,
final Context context )
throws ConfigurationException
{
setValue( object, "addContent", content, context );
}

protected void configureAttribute( final Object object,
final String name,
final String value,
final Context context )
private void configureAttribute( final Object object,
final String name,
final String value,
final Context context )
throws ConfigurationException
{
for( int i = 0; i < RESERVED_ATTRIBUTES.length; i++ )
@@ -170,10 +180,10 @@ public class DefaultConfigurer
setValue( object, methodName, value, context );
}

protected void setValue( final Object object,
final String methodName,
final String value,
final Context context )
private void setValue( final Object object,
final String methodName,
final String value,
final Context context )
throws ConfigurationException
{
// OMFG the rest of this is soooooooooooooooooooooooooooooooo
@@ -192,10 +202,10 @@ public class DefaultConfigurer
setValue( object, value, context, methods );
}

protected void setValue( final Object object,
final String value,
final Context context,
final Method methods[] )
private void setValue( final Object object,
final String value,
final Context context,
final Method methods[] )
throws ConfigurationException
{
try
@@ -212,10 +222,10 @@ public class DefaultConfigurer
}
}

protected void setValue( final Object object,
Object value,
final Method methods[],
final Context context )
private void setValue( final Object object,
Object value,
final Method methods[],
final Context context )
throws ConfigurationException
{
final Class sourceClass = value.getClass();
@@ -234,12 +244,12 @@ public class DefaultConfigurer
source + " to a matching type" );
}

protected boolean setValue( final Object object,
Object value,
final Method method,
final Class sourceClass,
final String source,
final Context context )
private boolean setValue( final Object object,
Object value,
final Method method,
final Class sourceClass,
final String source,
final Context context )
throws ConfigurationException
{
Class parameterType = method.getParameterTypes()[ 0 ];
@@ -289,7 +299,7 @@ public class DefaultConfigurer
return true;
}

protected Class getComplexTypeFor( final Class clazz )
private Class getComplexTypeFor( final Class clazz )
{
if( String.class == clazz ) return String.class;
else if( Integer.TYPE.equals( clazz ) ) return Integer.class;
@@ -306,7 +316,7 @@ public class DefaultConfigurer
}
}

protected Method[] getMethodsFor( final Class clazz, final String methodName )
private Method[] getMethodsFor( final Class clazz, final String methodName )
{
final Method methods[] = clazz.getMethods();
final ArrayList matches = new ArrayList();
@@ -331,7 +341,7 @@ public class DefaultConfigurer
return (Method[])matches.toArray( new Method[0] );
}

protected Method[] getCreateMethodsFor( final Class clazz, final String methodName )
private Method[] getCreateMethodsFor( final Class clazz, final String methodName )
{
final Method methods[] = clazz.getMethods();
final ArrayList matches = new ArrayList();
@@ -358,12 +368,12 @@ public class DefaultConfigurer
return (Method[])matches.toArray( new Method[0] );
}

protected String getMethodNameFor( final String attribute )
private String getMethodNameFor( final String attribute )
{
return "set" + getJavaNameFor( attribute.toLowerCase() );
}

protected String getJavaNameFor( final String name )
private String getJavaNameFor( final String name )
{
final StringBuffer sb = new StringBuffer();

@@ -387,9 +397,9 @@ public class DefaultConfigurer
return sb.toString();
}

protected void configureElement( final Object object,
final Configuration configuration,
final Context context )
private void configureElement( final Object object,
final Configuration configuration,
final Context context )
throws ConfigurationException
{
final String name = configuration.getName();
@@ -427,10 +437,10 @@ public class DefaultConfigurer
}
}

protected void createElement( final Object object,
final Method method,
final Configuration configuration,
final Context context )
private void createElement( final Object object,
final Method method,
final Configuration configuration,
final Context context )
throws ConfigurationException
{
try
@@ -448,10 +458,10 @@ public class DefaultConfigurer
}
}

protected void addElement( final Object object,
final Method method,
final Configuration configuration,
final Context context )
private void addElement( final Object object,
final Method method,
final Configuration configuration,
final Context context )
throws ConfigurationException
{
try

+ 28
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/framework/ItemSet.java View File

@@ -0,0 +1,28 @@
/*
* 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;

import org.apache.ant.tasklet.DataType;

/**
* Interface for ItemSet.
* An item set contains a number of items. Example item sets include
* PatternSets, FileSets, FilterSets etc.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public interface ItemSet
extends DataType
{
/**
* Returns an array containing the items(s) contained within set.
*
* Question: should ItemSet be context sensitive????
*/
Object[] getItems( /* Context context??? */ );
}

+ 35
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/framework/Mapper.java View File

@@ -0,0 +1,35 @@
/*
* 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;

import org.apache.ant.tasklet.DataType;

/**
* Interface for Mappers.
* Mappers are responsible for mapping source items to targets items.
* Example mappers will map source files to destination files
* (ie A.java to A.class).
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
*/
public interface Mapper
extends DataType
{
/**
* Returns an array containing the target items(s) for the
* given source file.
*
* <p>if the given rule doesn't apply to the input item,
* implementation must return null. Scanner will then
* omit the item in question.</p>
*
* @param item the item to be mapped
*/
Object[] mapItem( Object item );
}

+ 20
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/framework/Scanner.java View File

@@ -0,0 +1,20 @@
/*
* 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;

import org.apache.avalon.framework.component.Component;

/**
* Interface for Scanners.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public interface Scanner
extends Component
{
}

Loading…
Cancel
Save