Browse Source

i18n-ized remaining components.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269642 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 24 years ago
parent
commit
c748e33dc5
15 changed files with 269 additions and 128 deletions
  1. +30
    -20
      proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java
  2. +7
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/Resources.properties
  3. +50
    -39
      proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/AspectAwareExecutor.java
  4. +64
    -30
      proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/DefaultExecutor.java
  5. +19
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/Resources.properties
  6. +9
    -4
      proposal/myrmidon/src/java/org/apache/myrmidon/components/model/DefaultProject.java
  7. +2
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/components/model/Resources.properties
  8. +9
    -4
      proposal/myrmidon/src/java/org/apache/myrmidon/components/role/DefaultRoleManager.java
  9. +2
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/components/role/Resources.properties
  10. +9
    -3
      proposal/myrmidon/src/java/org/apache/myrmidon/components/type/DefaultTypeFactory.java
  11. +7
    -2
      proposal/myrmidon/src/java/org/apache/myrmidon/components/type/DefaultTypeManager.java
  12. +12
    -6
      proposal/myrmidon/src/java/org/apache/myrmidon/components/type/MultiSourceTypeFactory.java
  13. +5
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/components/type/Resources.properties
  14. +33
    -20
      proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultWorkspace.java
  15. +11
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/Resources.properties

+ 30
- 20
proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java View File

@@ -10,6 +10,8 @@ package org.apache.myrmidon.components.embeddor;
import java.io.File;
import java.io.FilenameFilter;
import java.util.Map;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.avalon.excalibur.io.ExtensionFileFilter;
import org.apache.avalon.excalibur.io.FileUtil;
import org.apache.avalon.framework.activity.Initializable;
@@ -28,11 +30,11 @@ import org.apache.myrmidon.components.converter.MasterConverter;
import org.apache.myrmidon.components.deployer.Deployer;
import org.apache.myrmidon.components.deployer.DeploymentException;
import org.apache.myrmidon.components.executor.Executor;
import org.apache.myrmidon.components.workspace.Workspace;
import org.apache.myrmidon.components.model.Project;
import org.apache.myrmidon.components.role.RoleManager;
import org.apache.myrmidon.components.type.TypeFactory;
import org.apache.myrmidon.components.type.TypeManager;
import org.apache.myrmidon.components.workspace.Workspace;

/**
* Default implementation of Embeddor.
@@ -44,6 +46,9 @@ public class DefaultEmbeddor
extends AbstractLoggable
implements Embeddor
{
private static final Resources REZ =
ResourceManager.getPackageResources( DefaultEmbeddor.class );

private Deployer m_deployer;
private RoleManager m_roleManager;

@@ -75,8 +80,8 @@ public class DefaultEmbeddor
m_parameters = parameters;
}

public Project createProject( final String location,
String type,
public Project createProject( final String location,
String type,
final Parameters parameters )
throws Exception
{
@@ -94,7 +99,7 @@ public class DefaultEmbeddor
return FileUtil.getExtension( location );
}

private ProjectBuilder getProjectBuilder( final String type,
private ProjectBuilder getProjectBuilder( final String type,
final Parameters parameters )
throws Exception
{
@@ -112,12 +117,12 @@ public class DefaultEmbeddor
if( builder instanceof Parameterizable )
{
((Parameterizable)builder).parameterize( parameters );
}
}

if( builder instanceof Initializable )
{
((Initializable)builder).initialize();
}
}

return builder;
}
@@ -126,7 +131,7 @@ public class DefaultEmbeddor
throws Exception
{
final String component = getParameter( Workspace.ROLE );
final Workspace workspace =
final Workspace workspace =
(Workspace)createComponent( component, Workspace.class );

setupLogger( workspace );
@@ -140,12 +145,12 @@ public class DefaultEmbeddor
if( workspace instanceof Parameterizable )
{
((Parameterizable)workspace).parameterize( parameters );
}
}

if( workspace instanceof Initializable )
{
((Initializable)workspace).initialize();
}
}

return workspace;
}
@@ -416,11 +421,13 @@ public class DefaultEmbeddor
{
if( !file.exists() )
{
throw new Exception( name + " (" + file + ") does not exist" );
final String message = REZ.getString( "file-no-exist.error", name, file );
throw new Exception( message );
}
else if( !file.isDirectory() )
{
throw new Exception( name + " (" + file + ") is not a directory" );
final String message = REZ.getString( "file-not-dir.error", name, file );
throw new Exception( message );
}
}

@@ -464,28 +471,31 @@ public class DefaultEmbeddor

if( !clazz.isInstance( object ) )
{
throw new Exception( "Object " + component + " is not an instance of " +
clazz );
final String message = REZ.getString( "bad-type.error", component, clazz.getName() );
throw new Exception( message );
}

return object;
}
catch( final IllegalAccessException iae )
{
throw new Exception( "Non-public constructor for " + clazz + " " + component );
final String message = REZ.getString( "bad-ctor.error", clazz.getName(), component );
throw new Exception( message );
}
catch( final InstantiationException ie )
{
throw new Exception( "Error instantiating class for " + clazz + " " + component );
final String message =
REZ.getString( "no-instantiate.error", clazz.getName(), component );
throw new Exception( message );
}
catch( final ClassNotFoundException cnfe )
{
throw new Exception( "Could not find the class for " + clazz +
" (" + component + ")" );
final String message =
REZ.getString( "no-class.error", clazz.getName(), component );
throw new Exception( message );
}
}


private void deployFromDirectory( final Deployer deployer,
final File directory,
final FilenameFilter filter )
@@ -522,8 +532,8 @@ public class DefaultEmbeddor
}
catch( final Exception e )
{
throw new DeploymentException( "Unable to retrieve filename for file " +
files[ i ], e );
final String message = REZ.getString( "bad-filename.error", files[ i ] );
throw new DeploymentException( message, e );
}
}
}


+ 7
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/Resources.properties View File

@@ -0,0 +1,7 @@
file-no-exist.error={0} ({1}) does not exist.
file-not-dir.error={0} ({1}) is not a directory.
bad-type.error=Object {0} is not an instance of {1}.
bad-ctor.error=Non-public constructor for {0} {1}.
no-instantiate.error=Error instantiating class for {0} {1}.
no-class.error=Could not find the class for {0} ({1}).
bad-filename.error=Unable to retrieve filename for file {0}.

+ 50
- 39
proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/AspectAwareExecutor.java View File

@@ -7,13 +7,15 @@
*/
package org.apache.myrmidon.components.executor;

import java.util.HashMap;
import java.util.ArrayList;
import java.util.HashMap;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.avalon.framework.component.ComponentException;
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.configuration.DefaultConfiguration;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.log.Logger;
import org.apache.myrmidon.api.Task;
import org.apache.myrmidon.api.TaskContext;
@@ -24,6 +26,9 @@ import org.apache.myrmidon.components.aspect.AspectManager;
public class AspectAwareExecutor
extends DefaultExecutor
{
private static final Resources REZ =
ResourceManager.getPackageResources( AspectAwareExecutor.class );

private final static Parameters EMPTY_PARAMETERS;
private final static Configuration[] EMPTY_ELEMENTS = new Configuration[ 0 ];

@@ -71,33 +76,33 @@ public class AspectAwareExecutor
taskModel = getAspectManager().preCreate( taskModel );
taskModel = prepareAspects( taskModel );

getLogger().debug( "Pre-Create" );
debug( "creating.notice" );
final Task task = createTask( taskModel.getName(), frame );
getAspectManager().postCreate( task );

getLogger().debug( "Pre-Loggable" );
debug( "logger.notice" );
final Logger logger = frame.getLogger();
getAspectManager().preLoggable( logger );
doLoggable( task, taskModel, logger );

getLogger().debug( "Contextualizing" );
debug( "contextualizing.notice" );
doContextualize( task, taskModel, frame.getContext() );

getLogger().debug( "Composing" );
debug( "composing.notice" );
doCompose( task, taskModel, frame.getComponentManager() );

getLogger().debug( "Configuring" );
debug( "configuring.notice" );
getAspectManager().preConfigure( taskModel );
doConfigure( task, taskModel, frame.getContext() );

getLogger().debug( "Initializing" );
debug( "initializing.notice" );
doInitialize( task, taskModel );

getLogger().debug( "Executing" );
debug( "executing.notice" );
getAspectManager().preExecute();
doExecute( taskModel, task );

getLogger().debug( "Disposing" );
debug( "disposing.notice" );
getAspectManager().preDestroy();
doDispose( task, taskModel );
}
@@ -114,7 +119,7 @@ public class AspectAwareExecutor
private final Configuration prepareAspects( final Configuration taskModel )
throws TaskException
{
final DefaultConfiguration newTaskModel =
final DefaultConfiguration newTaskModel =
new DefaultConfiguration( taskModel.getName(), taskModel.getLocation() );
final HashMap parameterMap = new HashMap();
final HashMap elementMap = new HashMap();
@@ -128,12 +133,12 @@ public class AspectAwareExecutor
return newTaskModel;
}

private final void dispatchAspectsSettings( final HashMap parameterMap,
private final void dispatchAspectsSettings( final HashMap parameterMap,
final HashMap elementMap )
throws TaskException
{
final String[] names = getAspectManager().getNames();
for( int i = 0; i < names.length; i++ )
{
final ArrayList elementList = (ArrayList)elementMap.remove( names[ i ] );
@@ -147,18 +152,18 @@ public class AspectAwareExecutor
{
elements = (Configuration[])elementList.toArray( EMPTY_ELEMENTS );
}
dispatch( names[ i ], parameters, elements );
}
}

private final void checkForUnusedSettings( final HashMap parameterMap,
private final void checkForUnusedSettings( final HashMap parameterMap,
final HashMap elementMap )
throws TaskException
{
if( 0 != parameterMap.size() )
{
final String[] namespaces =
final String[] namespaces =
(String[])parameterMap.keySet().toArray( new String[ 0 ] );

for( int i = 0; i < namespaces.length; i++ )
@@ -166,48 +171,51 @@ public class AspectAwareExecutor
final String namespace = namespaces[ i ];
final Parameters parameters = (Parameters)parameterMap.get( namespace );
final ArrayList elementList = (ArrayList)elementMap.remove( namespace );
Configuration[] elements = null;
if( null == elementList ) elements = EMPTY_ELEMENTS;
else
{
elements = (Configuration[])elementList.toArray( EMPTY_ELEMENTS );
}
unusedSetting( namespace, parameters, elements );
}
}

if( 0 != elementMap.size() )
{
final String[] namespaces =
final String[] namespaces =
(String[])elementMap.keySet().toArray( new String[ 0 ] );
for( int i = 0; i < namespaces.length; i++ )
{
final String namespace = namespaces[ i ];
final ArrayList elementList = (ArrayList)elementMap.remove( namespace );
final Configuration[] elements =
final Configuration[] elements =
(Configuration[])elementList.toArray( EMPTY_ELEMENTS );
unusedSetting( namespace, EMPTY_PARAMETERS, elements );
}
}
}

private void unusedSetting( final String namespace,
final Parameters parameters,
private void unusedSetting( final String namespace,
final Parameters parameters,
final Configuration[] elements )
throws TaskException
{
throw new TaskException( "Unused aspect settings for namespace " + namespace +
" (parameterCount=" + parameters.getNames().length +
" elementCount=" + elements.length + ")" );
final String message =
REZ.getString( "unused-settings.error",
namespace,
Integer.toString( parameters.getNames().length ),
Integer.toString( elements.length ) );
throw new TaskException( message );
}

private void dispatch( final String namespace,
final Parameters parameters,
private void dispatch( final String namespace,
final Parameters parameters,
final Configuration[] elements )
throws TaskException
{
@@ -215,13 +223,16 @@ public class AspectAwareExecutor

if( getLogger().isDebugEnabled() )
{
getLogger().debug( "Dispatching Aspect Settings to: " + namespace +
" parameterCount=" + parameters.getNames().length +
" elementCount=" + elements.length );
final String message =
REZ.getString( "dispatch-settings.notice",
namespace,
Integer.toString( parameters.getNames().length ),
Integer.toString( elements.length ) );
getLogger().debug( message );
}
}

private final void processElements( final Configuration taskModel,
private final void processElements( final Configuration taskModel,
final DefaultConfiguration newTaskModel,
final HashMap map )
{
@@ -230,8 +241,8 @@ public class AspectAwareExecutor
{
final String name = elements[ i ].getName();
final int index = name.indexOf( ':' );
if( -1 == index )
if( -1 == index )
{
newTaskModel.addChild( elements[ i ] );
}
@@ -245,7 +256,7 @@ public class AspectAwareExecutor
}
}

private final void processAttributes( final Configuration taskModel,
private final void processAttributes( final Configuration taskModel,
final DefaultConfiguration newTaskModel,
final HashMap map )
{
@@ -256,8 +267,8 @@ public class AspectAwareExecutor
final String value = taskModel.getAttribute( name, null );

final int index = name.indexOf( ':' );
if( -1 == index )
if( -1 == index )
{
newTaskModel.setAttribute( name, value );
}


+ 64
- 30
proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/DefaultExecutor.java View File

@@ -7,6 +7,8 @@
*/
package org.apache.myrmidon.components.executor;

import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.component.Component;
@@ -34,6 +36,9 @@ public class DefaultExecutor
extends AbstractLoggable
implements Executor, Composable
{
private static final Resources REZ =
ResourceManager.getPackageResources( DefaultExecutor.class );

private Configurer m_configurer;

/**
@@ -51,30 +56,40 @@ public class DefaultExecutor
public void execute( final Configuration taskModel, final ExecutionFrame frame )
throws TaskException
{
getLogger().debug( "Creating" );
debug( "creating.notice" );
final Task task = createTask( taskModel.getName(), frame );

debug( "logger.notice" );
doLoggable( task, taskModel, frame.getLogger() );

getLogger().debug( "Contextualizing" );
debug( "contextualizing.notice" );
doContextualize( task, taskModel, frame.getContext() );

getLogger().debug( "Composing" );
debug( "composing.notice" );
doCompose( task, taskModel, frame.getComponentManager() );

getLogger().debug( "Configuring" );
debug( "configuring.notice" );
doConfigure( task, taskModel, frame.getContext() );

getLogger().debug( "Initializing" );
debug( "initializing.notice" );
doInitialize( task, taskModel );

getLogger().debug( "Running" );

debug( "executing.notice" );
task.execute();

getLogger().debug( "Disposing" );
debug( "disposing.notice" );
doDispose( task, taskModel );
}

protected final void debug( final String key )
{
if( getLogger().isDebugEnabled() )
{
final String message = REZ.getString( key );
getLogger().debug( message );
}
}

protected final Task createTask( final String name, final ExecutionFrame frame )
throws TaskException
{
@@ -85,7 +100,8 @@ public class DefaultExecutor
}
catch( final TypeException te )
{
throw new TaskException( "Unable to create task " + name, te );
final String message = REZ.getString( "no-create.error", name );
throw new TaskException( message, te );
}
}

@@ -97,13 +113,16 @@ public class DefaultExecutor
try { m_configurer.configure( task, taskModel, context ); }
catch( final Throwable throwable )
{
throw new TaskException( "Error configuring task " + taskModel.getName() + " at " +
taskModel.getLocation() + "(Reason: " +
throwable.getMessage() + ")", throwable );
final String message =
REZ.getString( "config.error",
taskModel.getName(),
taskModel.getLocation(),
throwable.getMessage() );
throw new TaskException( message, throwable );
}
}

protected final void doCompose( final Task task,
protected final void doCompose( final Task task,
final Configuration taskModel,
final ComponentManager componentManager )
throws TaskException
@@ -113,9 +132,12 @@ public class DefaultExecutor
try { ((Composable)task).compose( componentManager ); }
catch( final Throwable throwable )
{
throw new TaskException( "Error composing task " + taskModel.getName() + " at " +
taskModel.getLocation() + "(Reason: " +
throwable.getMessage() + ")", throwable );
final String message =
REZ.getString( "compose.error",
taskModel.getName(),
taskModel.getLocation(),
throwable.getMessage() );
throw new TaskException( message, throwable );
}
}
}
@@ -134,9 +156,12 @@ public class DefaultExecutor
}
catch( final Throwable throwable )
{
throw new TaskException( "Error contextualizing task " + taskModel.getName() + " at " +
taskModel.getLocation() + "(Reason: " +
throwable.getMessage() + ")", throwable );
final String message =
REZ.getString( "compose.error",
taskModel.getName(),
taskModel.getLocation(),
throwable.getMessage() );
throw new TaskException( message, throwable );
}
}

@@ -148,15 +173,18 @@ public class DefaultExecutor
try { ((Disposable)task).dispose(); }
catch( final Throwable throwable )
{
throw new TaskException( "Error disposing task " + taskModel.getName() + " at " +
taskModel.getLocation() + "(Reason: " +
throwable.getMessage() + ")", throwable );
final String message =
REZ.getString( "dispose.error",
taskModel.getName(),
taskModel.getLocation(),
throwable.getMessage() );
throw new TaskException( message, throwable );
}
}
}

protected final void doLoggable( final Task task,
final Configuration taskModel,
protected final void doLoggable( final Task task,
final Configuration taskModel,
final Logger logger )
throws TaskException
{
@@ -165,9 +193,12 @@ public class DefaultExecutor
try { ((Loggable)task).setLogger( logger ); }
catch( final Throwable throwable )
{
throw new TaskException( "Error setting logger for task " + taskModel.getName() +
" at " + taskModel.getLocation() + "(Reason: " +
throwable.getMessage() + ")", throwable );
final String message =
REZ.getString( "logger.error",
taskModel.getName(),
taskModel.getLocation(),
throwable.getMessage() );
throw new TaskException( message, throwable );
}
}
}
@@ -180,9 +211,12 @@ public class DefaultExecutor
try { ((Initializable)task).initialize(); }
catch( final Throwable throwable )
{
throw new TaskException( "Error initializing task " + taskModel.getName() + " at " +
taskModel.getLocation() + "(Reason: " +
throwable.getMessage() + ")", throwable );
final String message =
REZ.getString( "init.error",
taskModel.getName(),
taskModel.getLocation(),
throwable.getMessage() );
throw new TaskException( message, throwable );
}
}
}


+ 19
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/Resources.properties View File

@@ -0,0 +1,19 @@
creating.notice=Creating.
logger.notice=Setting Logger.
contextualizing.notice=Contextualizing.
composing.notice=Composing.
configuring.notice=Configuring.
initializing.notice=Initializing.
executing.notice=Executing.
disposing.notice=Disposing.

no-create.error=Unable to create task {0}.
config.error=Error configuring task {0} at {1} (Reason: {2}).
compose.error=Error composing task {0} at {1} (Reason: {2}).
context.error=Error contextualizing task {0} at {1} (Reason: {2}).
dispose.error=Error disposing task {0} at {1} (Reason: {2}).
init.error=Error initializing task {0} at {1} (Reason: {2}).
logger.error=Error setting logger for task {0} at {1} (Reason: {2}).

unused-settings.error=Unused aspect settings for namespace {0} (parameterCount={1} elementCount={2}).
dispatch-settings.notice=Dispatching Aspect Settings to namespace {0} (parameterCount={1} elementCount={2}).

+ 9
- 4
proposal/myrmidon/src/java/org/apache/myrmidon/components/model/DefaultProject.java View File

@@ -11,6 +11,8 @@ import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;

/**
* Default project implementation.
@@ -20,6 +22,9 @@ import java.util.HashMap;
public class DefaultProject
implements Project
{
private static final Resources REZ =
ResourceManager.getPackageResources( DefaultProject.class );

///The imports
private final ArrayList m_imports = new ArrayList();

@@ -167,8 +172,8 @@ public class DefaultProject
{
if( null != m_targets.get( name ) )
{
throw new IllegalArgumentException( "Can not have two targets in a " +
"file with the name " + name );
final String message = REZ.getString( "duplicate-target.error", name );
throw new IllegalArgumentException( message );
}
else
{
@@ -187,8 +192,8 @@ public class DefaultProject
{
if( null != m_projects.get( name ) )
{
throw new IllegalArgumentException( "Can not have two projects referenced in a " +
"file with the name " + name );
final String message = REZ.getString( "duplicate-project.error", name );
throw new IllegalArgumentException( message );
}
else
{


+ 2
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/components/model/Resources.properties View File

@@ -0,0 +1,2 @@
duplicate-project.error=Can not have two projects referenced in a file with the name {0}.
duplicate-target.error=Can not have two targets in a file with the name {0}.

+ 9
- 4
proposal/myrmidon/src/java/org/apache/myrmidon/components/role/DefaultRoleManager.java View File

@@ -12,6 +12,8 @@ import java.util.Enumeration;
import java.util.HashMap;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
@@ -28,6 +30,9 @@ import org.xml.sax.XMLReader;
public class DefaultRoleManager
implements RoleManager, Initializable
{
private static final Resources REZ =
ResourceManager.getPackageResources( DefaultRoleManager.class );

private final static String ROLE_DESCRIPTOR = "META-INF/ant-roles.xml";

/** Parent <code>RoleManager</code> for nested resolution */
@@ -152,15 +157,15 @@ public class DefaultRoleManager
final String oldRole = (String)m_names.get( name );
if( null != oldRole && oldRole.equals( role ) )
{
throw new IllegalArgumentException( "Name already mapped to another role (" +
oldRole + ")" );
final String message = REZ.getString( "duplicate-name.error", oldRole );
throw new IllegalArgumentException( message );
}

final String oldName = (String)m_roles.get( role );
if( null != oldName && oldName.equals( name ) )
{
throw new IllegalArgumentException( "Role already mapped to another name (" +
oldName + ")" );
final String message = REZ.getString( "duplicate-role.error", oldName );
throw new IllegalArgumentException( message );
}

m_names.put( name, role );


+ 2
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/components/role/Resources.properties View File

@@ -0,0 +1,2 @@
duplicate-name.error=Name already mapped to another role ({0}).
duplicate-role.error=Role already mapped to another name ({0}).

+ 9
- 3
proposal/myrmidon/src/java/org/apache/myrmidon/components/type/DefaultTypeFactory.java View File

@@ -10,6 +10,8 @@ package org.apache.myrmidon.components.type;
import java.net.URL;
import java.util.HashMap;
import java.net.URLClassLoader;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;

/**
* Create a type instance based on name.
@@ -20,6 +22,9 @@ import java.net.URLClassLoader;
public class DefaultTypeFactory
implements TypeFactory
{
private static final Resources REZ =
ResourceManager.getPackageResources( DefaultTypeFactory.class );

///A Map of shortnames to classnames
private final HashMap m_classNames = new HashMap();

@@ -77,7 +82,8 @@ public class DefaultTypeFactory
}
catch( final Exception e )
{
throw new TypeException( "Unable to instantiate '" + name + "'", e );
final String message = REZ.getString( "no-instantiate.error", name );
throw new TypeException( message, e );
}
}

@@ -88,8 +94,8 @@ public class DefaultTypeFactory

if( null == className )
{
throw new TypeException( "Malconfigured factory, no clasname for '" +
name + "'" );
final String message = REZ.getString( "no-mapping.error", name );
throw new TypeException( message );
}
return className;


+ 7
- 2
proposal/myrmidon/src/java/org/apache/myrmidon/components/type/DefaultTypeManager.java View File

@@ -8,6 +8,8 @@
package org.apache.myrmidon.components.type;

import java.util.HashMap;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;

/**
* The interface that is used to manage types.
@@ -17,6 +19,9 @@ import java.util.HashMap;
public class DefaultTypeManager
implements TypeManager
{
private static final Resources REZ =
ResourceManager.getPackageResources( DefaultTypeManager.class );

///Parent type manager to inherit values from.
private final DefaultTypeManager m_parent;

@@ -92,8 +97,8 @@ public class DefaultTypeManager
}
catch( final Exception e )
{
throw new TypeException( "Role '" + role + "' does not specify " +
"accessible work interface" );
final String message = REZ.getString( "no-work-interface.error", role );
throw new TypeException( message );
}
}



+ 12
- 6
proposal/myrmidon/src/java/org/apache/myrmidon/components/type/MultiSourceTypeFactory.java View File

@@ -8,6 +8,8 @@
package org.apache.myrmidon.components.type;

import java.util.HashMap;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;

/**
* This factory acts as a proxy to set of object factorys.
@@ -15,8 +17,11 @@ import java.util.HashMap;
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public class MultiSourceTypeFactory
implements TypeFactory
implements TypeFactory
{
private static final Resources REZ =
ResourceManager.getPackageResources( MultiSourceTypeFactory.class );

///Parent Selector
private final MultiSourceTypeFactory m_parent;

@@ -58,14 +63,15 @@ public class MultiSourceTypeFactory
{
TypeFactory factory = getTypeFactory( name );

if( null == factory && null != m_parent )
if( null == factory && null != m_parent )
{
factory = m_parent.getTypeFactory( name );
}

if( null == factory )
if( null == factory )
{
throw new TypeException( "Failed to locate factory for '" + name + "'" );
final String message = REZ.getString( "no-factory.error", name );
throw new TypeException( message );
}
else
{
@@ -73,8 +79,8 @@ public class MultiSourceTypeFactory

if( !m_type.isInstance( object ) )
{
throw new TypeException( "Object '" + name + "' is not of " +
"correct Type (" + m_type.getName() + ")" );
final String message = REZ.getString( "no-factory.error", name, m_type.getName() );
throw new TypeException( message );
}

return object;


+ 5
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/components/type/Resources.properties View File

@@ -0,0 +1,5 @@
no-instantiate.error=Unable to instantiate ({0}).
no-mapping.error=Malconfigured factory, no clasname for ({0}).
no-factory.error=Failed to locate factory for {0}.
bad-type.error=Object {0} is not of correct Type ({1}).
no-work-interface.error=Role {0} does not specify accessible work interface.

+ 33
- 20
proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/DefaultWorkspace.java View File

@@ -12,21 +12,22 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.context.ContextException;
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.configuration.Configuration;
import org.apache.avalon.framework.context.ContextException;
import org.apache.avalon.framework.logger.AbstractLoggable;
import org.apache.avalon.framework.parameters.ParameterException;
import org.apache.avalon.framework.parameters.Parameterizable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.log.Hierarchy;
import org.apache.log.Logger;
import org.apache.log.LogTarget;
import org.apache.myrmidon.api.DefaultTaskContext;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
@@ -52,6 +53,9 @@ public class DefaultWorkspace
extends AbstractLoggable
implements Workspace, Composable, Parameterizable, Initializable
{
private static final Resources REZ =
ResourceManager.getPackageResources( DefaultWorkspace.class );

private Executor m_executor;
private ProjectListenerSupport m_listenerSupport = new ProjectListenerSupport();
private ComponentManager m_componentManager;
@@ -109,7 +113,7 @@ public class DefaultWorkspace

m_hierarchy = new Hierarchy();

final LogTarget target = new LogTargetToListenerAdapter( m_listenerSupport );
final LogTargetToListenerAdapter target = new LogTargetToListenerAdapter( m_listenerSupport );
m_hierarchy.setDefaultLogTarget( target );
}

@@ -158,21 +162,22 @@ public class DefaultWorkspace
throws TaskException
{
//TODO: In future this will be expanded to allow
//users to specify search path or automagically
//add entries to lib path (like user specific or
//users to specify search path or automagically
//add entries to lib path (like user specific or
//workspace specific)
final String name = libraryName.replace( '/', File.separatorChar ) + ".atl";

final String home = System.getProperty( "myrmidon.home" );
final File homeDir = new File( home + File.separatorChar + "ext" );
final File library = new File( homeDir, name );

if( library.exists() )
{
if( !library.canRead() )
{
throw new TaskException( "Unable to read library at " + library );
final String message = REZ.getString( "no-read.error", library );
throw new TaskException( message );
}
else
{
@@ -180,7 +185,8 @@ public class DefaultWorkspace
}
}

throw new TaskException( "Unable to locate Type Library " + libraryName );
final String message = REZ.getString( "no-library.error", libraryName );
throw new TaskException( message );
}

private void deployTypeLib( final Deployer deployer, final Project project )
@@ -206,8 +212,8 @@ public class DefaultWorkspace
}
catch( final DeploymentException de )
{
throw new TaskException( "Error deploying type library " +
typeLib + " at " + file, de );
final String message = REZ.getString( "no-deploy.error", typeLib, file );
throw new TaskException( message, de );
}
}
}
@@ -235,7 +241,8 @@ public class DefaultWorkspace
try { deployer.compose( componentManager ); }
catch( final ComponentException ce )
{
throw new TaskException( "Error configuring deployer", ce );
final String message = REZ.getString( "bad-deployer-config.error" );
throw new TaskException( message, ce );
}

//HACK: Didn't call initialize because Deployer contained in Embeddor
@@ -272,7 +279,8 @@ public class DefaultWorkspace
}
catch( final Exception e )
{
throw new TaskException( "Error setting up ExecutionFrame", e );
final String message = REZ.getString( "bad-frame.error" );
throw new TaskException( message, e );
}

return frame;
@@ -301,7 +309,8 @@ public class DefaultWorkspace
if( null == other )
{
//TODO: Fix this so location information included in description
throw new TaskException( "Project '" + name + "' not found." );
final String message = REZ.getString( "no-project.error", name );
throw new TaskException( message );
}

return other;
@@ -338,7 +347,8 @@ public class DefaultWorkspace
final Target target = project.getTarget( targetName );
if( null == target )
{
throw new TaskException( "Unable to find target " + targetName );
final String message = REZ.getString( "no-target.error", targetName );
throw new TaskException( message );
}

//add target to list of targets executed
@@ -385,19 +395,20 @@ public class DefaultWorkspace
{
if( false == condition.evaluate( frame.getContext() ) )
{
getLogger().debug( "Skipping target " + name +
" as it does not satisfy condition" );
final String message = REZ.getString( "skip-target.notice", name );
getLogger().debug( message );
return;
}
}
catch( final ContextException ce )
{
throw new TaskException( "Error evaluating Condition for target " +
name, ce );
final String message = REZ.getString( "condition-eval.error", name );
throw new TaskException( message, ce );
}
}

getLogger().debug( "Executing target " + name );
final String message = REZ.getString( "exec-target.notice", name );
getLogger().debug( message );

//frame.getContext().setProperty( Project.TARGET, target );

@@ -420,7 +431,9 @@ public class DefaultWorkspace
throws TaskException
{
final String name = task.getName();
getLogger().debug( "Executing task " + name );

final String message = REZ.getString( "exec-task.notice", name );
getLogger().debug( message );

//is setting name even necessary ???
frame.getContext().setProperty( TaskContext.NAME, name );


+ 11
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/components/workspace/Resources.properties View File

@@ -0,0 +1,11 @@
no-read.error=Unable to read library at {0}.
no-library.error=Unable to locate Type Library {0}.
no-deploy.error=Error deploying type library {0} at {1}.
bad-deployer-config.error=Error configuring deployer.
bad-frame.error=Error setting up ExecutionFrame.
no-project.error=Project {0} not found.
no-target.error=Target {0} not found.
skip-target.notice=Skipping target {0} as it does not satisfy condition.
condition-eval.error=Error evaluating Condition for target {0}.
exec-target.notice=Executing target {0}.
exec-task.notice=Executing task {0}.

Loading…
Cancel
Save