Browse Source

Add in a basic example of the interface via which Service *could* be loaded into the runtime.

Added in a sample config file and a sample factory aswell.


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270866 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 23 years ago
parent
commit
04a0ceea6f
5 changed files with 144 additions and 0 deletions
  1. +62
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/framework/factorys/ExecManagerFactory.java
  2. +1
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/framework/factorys/Resources.properties
  3. +50
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/services/ServiceException.java
  4. +27
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/services/ServiceFactory.java
  5. +4
    -0
      proposal/myrmidon/src/manifest/core-services.xml

+ 62
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/framework/factorys/ExecManagerFactory.java View File

@@ -0,0 +1,62 @@
/*
* 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.txt file.
*/
package org.apache.myrmidon.framework.factorys;

import java.io.File;
import org.apache.aut.nativelib.ExecException;
import org.apache.aut.nativelib.impl.DefaultExecManager;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.myrmidon.services.ServiceException;
import org.apache.myrmidon.services.ServiceFactory;

/**
* A Factory responsible for creating the ExecManager service.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class ExecManagerFactory
implements ServiceFactory
{
private static final Resources REZ =
ResourceManager.getPackageResources( ExecManagerFactory.class );

/**
* Create the ExecManager Service.
*/
public Object createService()
throws ServiceException
{
final File home = getHomeDirectory();
try
{
return new DefaultExecManager( home );
}
catch( final ExecException ee )
{
throw new ServiceException( ee.getMessage(), ee );
}
}

/**
* Utility method to retrieve home directory.
*/
private static File getHomeDirectory()
throws ServiceException
{
final String home = System.getProperty( "myrmidon.home" );
if( null == home )
{
final String message = REZ.getString( "missing-home-dir.error" );
throw new ServiceException( message );
}

return new File( home );
}
}

+ 1
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/framework/factorys/Resources.properties View File

@@ -0,0 +1 @@
missing-home-dir.error=Cannot locate antRun scripts: Property 'myrmidon.home' not specified

+ 50
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/services/ServiceException.java View File

@@ -0,0 +1,50 @@
/*
* 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.txt file.
*/
package org.apache.myrmidon.services;

import org.apache.avalon.framework.CascadingException;

/**
* ServiceException thrown when a service can not be created for
* some reason.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
*/
public class ServiceException
extends CascadingException
{
/**
* Basic constructor for exception that does not specify a message
*/
public ServiceException()
{
this( "", null );
}

/**
* Basic constructor with a message
*
* @param message the message
*/
public ServiceException( final String message )
{
this( message, null );
}

/**
* Constructor that builds cascade so that other exception information can be retained.
*
* @param message the message
* @param throwable the throwable
*/
public ServiceException( final String message, final Throwable throwable )
{
super( message, throwable );
}
}


+ 27
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/services/ServiceFactory.java View File

@@ -0,0 +1,27 @@
/*
* 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.txt file.
*/
package org.apache.myrmidon.services;

/**
* A ServiceFactory is used to create a service for use in the
* Myrmidon runtime. The factory is responsible for creating and
* preparing the service for use.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public interface ServiceFactory
{
/**
* Create a service that coresponds to this factory.
* This method is usually called after the factory has been
* prepared and configured as appropriate.
*/
Object createService()
throws ServiceException;
}

+ 4
- 0
proposal/myrmidon/src/manifest/core-services.xml View File

@@ -0,0 +1,4 @@
<services>
<service role="org.apache.aut.nativelib.ExecManager"
factory="org.apache.myrmidon.framework.factorys.ExecManagerFactory"/>
</services>

Loading…
Cancel
Save