ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dona...@apache.org
Subject cvs commit: jakarta-ant/proposal/myrmidon/src/java/org/apache/ant/modules/core AbstractResourceRegisterer.java README RegisterConverter.java RegisterDataType.java RegisterTasklet.java RegisterTasklib.java
Date Wed, 07 Feb 2001 05:36:22 GMT
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: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;
  }
  
  
  
  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: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;
          }
      }
  }
  
  
  
  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: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 ); 
          }
      }
  }
  
  
  
  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: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 ); 
          }
      }
  }
  
  
  
  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: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 );
          }
      }
  }
  
  
  

Mime
View raw message