You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by do...@apache.org on 2002/02/26 12:15:49 UTC

cvs commit: jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/tools/xdoclet BlockInfoSubTask.java ManifestSubTask.java PhoenixXDoclet.java blockinfo.j manifest.j

donaldp     02/02/26 03:15:49

  Added:       src/java/org/apache/avalon/phoenix/tools/xdoclet
                        BlockInfoSubTask.java ManifestSubTask.java
                        PhoenixXDoclet.java blockinfo.j manifest.j
  Log:
  Started to integrate XDoclet into the build process.
  Committed a task that generates the manifest and blockinfo from a properly decorated source file.
  
  based on work originally Submitted By: vinay nair <vi...@yahoo.com>
  
  Revision  Changes    Path
  1.1                  jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/tools/xdoclet/BlockInfoSubTask.java
  
  Index: BlockInfoSubTask.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.txt file.
   */
  package org.apache.avalon.phoenix.tools.xdoclet;
  
  import com.sun.javadoc.ClassDoc;
  import java.io.File;
  import xdoclet.TemplateSubTask;
  import xdoclet.XDocletException;
  
  /**
   * Generates BlockInfo 'xinfo' for Blocks
   *
   * @author <a href="mailto:vinay_chandran@users.sourceforge.net">Vinay Chandrasekharan</a>
   * @author <a href="mailto:peter@apache.org">Peter Donald</a>
   * @version $Revision: 1.1 $ $Date: 2002/02/26 11:15:48 $
   */
  public class BlockInfoSubTask 
      extends TemplateSubTask
  {
      public final static String SUBTASK_NAME = "blockinfo";
  
      private static final String GENERATED_FILE_NAME = "{0}.xinfo";
      private static final String DEFAULT_TEMPLATE_FILE = 
          "/org/apache/avalon/phoenix/tools/xdoclet/blockinfo.j";
  
      private static String c_classPattern;
  
      private String m_templatePath;
  
      public BlockInfoSubTask ()
      {
          setTemplateFile( new File( DEFAULT_TEMPLATE_FILE) );
          setDestinationFile( GENERATED_FILE_NAME );
          setOfType( "org.apache.avalon.phoenix.Block" );
  
          final TemplateSubTask.ExtentTypes extent = new TemplateSubTask.ExtentTypes();
          extent.setValue( "hierarchy" );
          setExtent( extent );
      }
  
      public void setTemplatePath( final String templatePath )
      {
          m_templatePath = templatePath;
          setTemplateFile( new File( templatePath ) );
      }
  
      public static String getClassPattern()
      {
          return c_classPattern;
      }
  
      public String getSubTaskName()
      {
          return SUBTASK_NAME;
      }
  
      public void setPattern( final String classPattern )
      {
          c_classPattern = classPattern;
      }
  
      /**
       * Called to validate configuration parameters.
       */
      public void validateOptions() 
          throws XDocletException
      {
          super.validateOptions();
  
          if( null == m_templatePath )
          {
              throw new XDocletException( "'templatePath' attribute is missing ." );
          }
  
          if( null == getTemplateFile() || 
              !(getTemplateFile().exists()) || getTemplateFile().isDirectory())
          {
              throw new XDocletException( "'template' file is missing parameter missing ." );
          }
  
  
          if( null == getClassPattern() || getClassPattern().trim().equals( "" ) )
          {
              throw new XDocletException( "'pattern' parameter missing or empty." );
          }
  
          if( -1 == getClassPattern().indexOf( "{0}" ) )
          {
              throw new XDocletException( "'pattern' parameter does not have a " + 
                                          "'{0}' in it. '{0}' is replaced by Block " + 
                                          "name of the class under processing." );
          }
      }
  
      protected boolean matchesGenerationRules( final ClassDoc clazz )
          throws XDocletException
      {
          if( !super.matchesGenerationRules( clazz ) )
          {
              return false;
          }
          else if( clazz.isAbstract() )
          {
              return false;
          }
          else
          {
              return true;
          }
      }
  }
  
  
  
  1.1                  jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/tools/xdoclet/ManifestSubTask.java
  
  Index: ManifestSubTask.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.txt file.
   */
  package org.apache.avalon.phoenix.tools.xdoclet;
  
  import com.sun.javadoc.ClassDoc;
  import java.io.File;
  import xdoclet.TemplateSubTask;
  import xdoclet.XDocletException;
  
  /**
   * Generates Manifest file for Blocks
   *
   * @author <a href="mailto:vinay_chandran@users.sourceforge.net">Vinay Chandrasekharan</a>
   * @author <a href="mailto:peter@apache.org">Peter Donald</a>
   * @version $Revision: 1.1 $ $Date: 2002/02/26 11:15:48 $
   */
  public class ManifestSubTask
      extends TemplateSubTask
  {
      public static final String SUBTASK_NAME = "manifest";
  
      private static final String GENERATED_FILE_NAME = "manifest.mf";
      private static final String DEFAULT_TEMPLATE_FILE =
          "/org/apache/avalon/phoenix/tools/xdoclet/manifest.j";
  
      private static String c_classPattern;
  
      private String m_templatePath;
      private String m_manifestFile;
  
      public ManifestSubTask()
      {
          setTemplateFile( new File( DEFAULT_TEMPLATE_FILE) );
          setDestinationFile( GENERATED_FILE_NAME );
          setOfType( "org.apache.avalon.phoenix.Block" );
  
          final TemplateSubTask.ExtentTypes extent  = new TemplateSubTask.ExtentTypes();
          extent.setValue( "hierarchy" );
          setExtent( extent );
      }
  
      public void setTemplatePath( final String templatePath )
      {
          m_templatePath = templatePath;
          setTemplateFile(  new File( templatePath ) );
      }
  
      public void setManifestFile( final String manifestFile )
      {
          m_manifestFile = manifestFile;
          setDestinationFile( m_manifestFile );
      }
  
      public static String getClassPattern()
      {
          return c_classPattern;
      }
  
      public String getSubTaskName()
      {
          return SUBTASK_NAME;
      }
  
      public void setPattern( final String classPattern )
      {
          c_classPattern = classPattern;
      }
  
      /**
       * Called to validate configuration parameters.
       */
      public void validateOptions()
          throws XDocletException
      {
          super.validateOptions();
  
          if( null == m_manifestFile )
          {
              throw new XDocletException( "'manifestFile' attribute is missing ." );
          }
  
          if( null == getDestinationFile() ||
              getDestinationFile().trim().equals( "" ) )
          {
              throw new XDocletException( "Error with the 'manifestFile' attribute." );
          }
  
  
          if( null == getClassPattern() ||
              getClassPattern().trim().equals( "" ) )
          {
              throw new XDocletException( "'pattern' parameter missing or empty." );
          }
  
          if( -1 == getClassPattern().indexOf( "{0}" ) )
          {
              throw new XDocletException( "'pattern' parameter does not have a '{0}' in it. " );
          }
      }
  
      protected boolean matchesGenerationRules( final ClassDoc clazz )
          throws XDocletException
      {
          if( !super.matchesGenerationRules( clazz ) )
          {
              return false;
          }
          else if( clazz.isAbstract() )
          {
              return false;
          }
          else
          {
              return true;
          }
      }
  }
  
  
  
  1.1                  jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/tools/xdoclet/PhoenixXDoclet.java
  
  Index: PhoenixXDoclet.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.txt file.
   */
  package org.apache.avalon.phoenix.tools.xdoclet;
  
  import java.util.Vector;
  import xdoclet.DocletTask;
  
  /**
   *
   * @author <a href="mailto:vinay_chandran@users.sourceforge.net">Vinay Chandrasekharan</a>
   * @version $Revision: 1.1 $ $Date: 2002/02/26 11:15:48 $
   */
  public class PhoenixXDoclet 
      extends DocletTask
  {
      private BlockInfoSubTask m_blockInfoSubTask;
      private ManifestSubTask m_manifestSubTask;
  
      public BlockInfoSubTask createBlockinfo()
      {
          m_blockInfoSubTask = new BlockInfoSubTask();
          return m_blockInfoSubTask;
      }
  
      public ManifestSubTask createManifest()
      {
          m_manifestSubTask = new ManifestSubTask();
          return m_manifestSubTask;
      }
  
        
      protected Vector getSubTasks()
      {
          final Vector subtasks = super.getSubTasks();
          subtasks.addElement( m_blockInfoSubTask );
          subtasks.addElement( m_manifestSubTask );
          return subtasks;
      }
  }
  
  
  
  
  1.1                  jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/tools/xdoclet/blockinfo.j
  
  Index: blockinfo.j
  ===================================================================
  <?xml version="1.0"?>
  <!DOCTYPE blockinfo PUBLIC "-//PHOENIX/Block Info DTD Version 1.0//EN" 
                    "http://jakarta.apache.org/phoenix/blockinfo_1_0.dtd">
  
  <blockinfo>
  
    <!-- section to describe block -->
    <block>
      <version><XDtClass:classTagValue tagName="phoenix:version" default="1.0"/></version>
    </block>
  
    <!-- services that are offered by this block -->
    <services>
      <XDtClass:forAllClassTags tagName="phoenix:service">
        <service name="<XDtClass:classTagValue tagName="phoenix:service" paramName="name"/>"
                 version="<XDtClass:classTagValue tagName="phoenix:service" paramName="version" default="1.0"/>" />
      </XDtClass:forAllClassTags>
    </services>
  
    <!-- services that are required by this block -->
    <dependencies>
      <XDtMethod:ifHasMethod name="compose" 
                             parameters="org.apache.avalon.framework.component.ComponentManager">
        <XDtMethod:setCurrentMethod name="compose"
                                    parameters="org.apache.avalon.framework.component.ComponentManager">
        <dependency>
          <service name="<XDtMethod:methodTagValue tagName="phoenix:dependency" paramName="name"/>" 
                   version="<XDtMethod:methodTagValue tagName="phoenix:dependency" paramName="version" default="1.0"/>"/>
        </dependency>
        </XDtMethod:setCurrentMethod>
      </XDtMethod:ifHasMethod>
    </dependencies>
  
  </blockinfo>
  
  
  
  1.1                  jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/tools/xdoclet/manifest.j
  
  Index: manifest.j
  ===================================================================
  Manifest-Version: 1.0
  Created-By: Apache Avalon Project
  
  <XDtClass:forAllClasses abstract="false" type="org.apache.avalon.phoenix.Block">
  Name:	<XDtPackage:packageNameAsPath/>/<XDtClass:className/>.class
  Avalon-Block: true
  </XDtClass:forAllClasses>
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>