avalon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hamm...@apache.org
Subject cvs commit: jakarta-avalon-excalibur/metagenerate/src/test/org/apache/avalon/excalibur/metagenerate IntegrationTestCase.java
Date Sun, 29 Sep 2002 00:19:13 GMT
hammant     2002/09/28 17:19:13

  Modified:    metagenerate default.properties
               metagenerate/src/java/org/apache/avalon/excalibur/metagenerate
                        MxinfoFactory.java MxinfoHelper.java
               metagenerate/src/test/org/apache/avalon/excalibur/metagenerate
                        IntegrationTestCase.java
  Added:       metagenerate/src/java/org/apache/avalon/excalibur/metagenerate
                        Attribute.java Operation.java
  Log:
  Tested aginst Phoenix's mxinfos.  Sorting needed.
  
  Revision  Changes    Path
  1.2       +2 -2      jakarta-avalon-excalibur/metagenerate/default.properties
  
  Index: default.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/metagenerate/default.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- default.properties	28 Sep 2002 10:37:50 -0000	1.1
  +++ default.properties	29 Sep 2002 00:19:13 -0000	1.2
  @@ -8,8 +8,8 @@
   name=excalibur-meta-generate
   Name=Excalibur MetaGenerate
   dir-name=metagenerate
  -version=0.7
  -package-version=0.7
  +version=0.8
  +package-version=0.8
   year=2002
   
   # --------------------------------------------------
  
  
  
  1.2       +104 -54   jakarta-avalon-excalibur/metagenerate/src/java/org/apache/avalon/excalibur/metagenerate/MxinfoFactory.java
  
  Index: MxinfoFactory.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/metagenerate/src/java/org/apache/avalon/excalibur/metagenerate/MxinfoFactory.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MxinfoFactory.java	28 Sep 2002 21:43:39 -0000	1.1
  +++ MxinfoFactory.java	29 Sep 2002 00:19:13 -0000	1.2
  @@ -15,6 +15,11 @@
   
   import java.io.IOException;
   import java.io.File;
  +import java.util.Vector;
  +import java.util.List;
  +import java.util.Collections;
  +import java.util.ArrayList;
  +import java.util.Iterator;
   
   /**
    * A Mxinfo Factory
  @@ -25,6 +30,9 @@
   
       private JavaClass m_javaClass;
       private File m_destDir;
  +    private ArrayList m_attributes = new ArrayList();
  +    private ArrayList m_operations = new ArrayList();
  +    private MxinfoHelper m_mxinfo;
   
       /**
        * Construct a factory for a class.
  @@ -38,7 +46,7 @@
       }
   
       /**
  -     * Generate the mxinfo file
  +     * Generate the m_mxinfo file
        * @throws IOException If a problem writing output
        */
       public void generate() throws IOException
  @@ -46,71 +54,108 @@
           File file = new File(m_destDir,
                   m_javaClass.getFullyQualifiedName().replace('.', File.separatorChar) +
".mxinfo");
           file.getParentFile().mkdirs();
  -        MxinfoHelper mxinfo = new MxinfoHelper(file);
  -        mxinfo.writeHeader(m_javaClass.getTagByName("phoenix:mx-topic").getNamedParameter("name"));
  -        // attributes
  +        m_mxinfo = new MxinfoHelper(file);
  +        m_mxinfo.writeHeader(m_javaClass.getTagByName("phoenix:mx-topic").getNamedParameter("name"));
  +        // m_attributes
           JavaMethod[] methods = m_javaClass.getMethods();
           for (int j = 0; j < methods.length; j++)
           {
  -            JavaMethod method = methods[j];
  -            DocletTag attribute = method.getTagByName("phoenix:mx-attribute");
  -            if (attribute != null)
  -            {
  -                String attributeName = getName(method.getName());
  -                DocletTag tag = method.getTagByName("phoenix:mx-description");
  -                String comment;
  -                if (tag == null)
  -                {
  -                    comment = method.getComment();
  -                }
  -                else
  -                {
  -                    comment = tag.getValue();
  -                }
  -
  -                mxinfo.writeAttrLines(attributeName,
  -                        "\"" + comment + "\"",
  -                        method.getReturns().getValue());
  -            }
  +            makeAttribute(methods[j], m_mxinfo);
           }
  -        mxinfo.writeOperationsHeader();
  +        writeAttributes();
  +        m_mxinfo.writeOperationsHeader();
           // operations
           methods = m_javaClass.getMethods();
           for (int j = 0; j < methods.length; j++)
           {
  -            JavaMethod method = methods[j];
  -            DocletTag attribute = method.getTagByName("phoenix:mx-operation");
  -            if (attribute != null)
  +            makeOperation(methods[j], m_mxinfo);
  +        }
  +        writeOperations();
  +        m_mxinfo.writeFooter();
  +        m_mxinfo.close();
  +    }
  +
  +    private void writeOperations() throws IOException
  +    {
  +        m_mxinfo.writeOperations(m_operations);
  +    }
  +
  +    private void makeAttribute(JavaMethod method, MxinfoHelper mxinfo) throws IOException
  +    {
  +
  +        DocletTag attribute = method.getTagByName("phoenix:mx-attribute");
  +        if (attribute != null)
  +        {
  +            String attributeName = getName(method.getName());
  +            DocletTag tag = method.getTagByName("phoenix:mx-description");
  +            String comment;
  +            if (tag == null)
  +            {
  +                comment = method.getComment();
  +            }
  +            else
               {
  -                String operationName = method.getName();
  -                String description = method.getComment();
  -                String type = method.getReturns().getValue();
  -                mxinfo.writeOperationHeader(operationName, description, type);
  -                JavaParameter[] params = method.getParameters();
  -                for (int i = 0; i < params.length; i++)
  -                {
  -                    JavaParameter param = params[i];
  -                    String paramName = param.getName();
  -                    DocletTag[] paramTags = method.getTagsByName("param");
  -                    String paramDescription = "";
  -                    for (int k = 0; k < paramTags.length; k++)
  -                    {
  -                        String paramTagValue = paramTags[k].getValue().trim();
  -                        if (paramTagValue.startsWith(paramName))
  -                        {
  -                            paramDescription = paramTagValue.substring(
  -                                    paramTagValue.indexOf(" ") + 1, paramTagValue.length());
  -                        }
  -                    }
  -                    String paramType = param.getType().getValue();
  -                    mxinfo.writeOperationParameter(paramName, paramDescription, paramType);
  +                comment = tag.getValue();
  +            }
  +            Type attributeType = method.getReturns();
  +            String attributeTypeString = attributeType.getValue() + (attributeType.isArray()
? "[]" : "");
  +
  +            Attribute attr = mxinfo.makeAttrLines(attributeName,
  +                    "\"" + comment + "\"",
  +                    attributeTypeString);
  +            m_attributes.add(attr);
  +        }
  +    }
   
  -                }
  -                mxinfo.writeOperationFooter();
  +    private void writeAttributes() throws IOException
  +    {
  +        m_mxinfo.writeAttributes(m_attributes);
  +    }
  +
  +    private String makeOperation(JavaMethod method, MxinfoHelper mxinfo) throws IOException
  +    {
  +        String xml = "";
  +        DocletTag attribute = method.getTagByName("phoenix:mx-operation");
  +        if (attribute != null)
  +        {
  +            String operationName = method.getName();
  +            String description = method.getComment();
  +            Type type = method.getReturns();
  +
  +            String typeString = type.getValue() + (type.isArray() ? "[]" : "");
  +
  +            xml = xml + mxinfo.makeOperationHeader(operationName, description, typeString);
  +            JavaParameter[] params = method.getParameters();
  +            for (int i = 0; i < params.length; i++)
  +            {
  +                xml = xml + makeOperationParameter(params[i], method, mxinfo);
  +
  +            }
  +            xml = xml + mxinfo.makeOperationFooter();
  +            Operation operation = new Operation(operationName,xml);
  +            m_operations.add(operation);
  +        }
  +        return xml;
  +    }
  +
  +    private String makeOperationParameter(JavaParameter param, JavaMethod method,
  +                                         MxinfoHelper mxinfo) throws IOException
  +    {
  +        String paramName = param.getName();
  +        DocletTag[] paramTags = method.getTagsByName("param");
  +        String paramDescription = "";
  +        for (int k = 0; k < paramTags.length; k++)
  +        {
  +            String paramTagValue = paramTags[k].getValue().trim();
  +            if (paramTagValue.startsWith(paramName))
  +            {
  +                paramDescription = paramTagValue.substring(
  +                        paramTagValue.indexOf(" ") + 1, paramTagValue.length());
               }
           }
  -        mxinfo.writeFooter();
  -        mxinfo.close();
  +        Type paramType = param.getType();
  +        String paramTypeString = paramType.getValue() + (paramType.isArray() ? "[]" : "");
  +        return mxinfo.makeOperationParameter(paramName, paramDescription, paramTypeString);
       }
   
       private String getName(final String name)
  @@ -119,6 +164,11 @@
           if (retval.startsWith("set") || retval.startsWith("get"))
           {
               retval = retval.substring(3, retval.length());
  +            retval = retval.substring(0, 1).toLowerCase() + retval.substring(1, retval.length());
  +        }
  +        else if (retval.startsWith("is"))
  +        {
  +            retval = retval.substring(2, retval.length());
               retval = retval.substring(0, 1).toLowerCase() + retval.substring(1, retval.length());
           }
           return retval;
  
  
  
  1.2       +57 -16    jakarta-avalon-excalibur/metagenerate/src/java/org/apache/avalon/excalibur/metagenerate/MxinfoHelper.java
  
  Index: MxinfoHelper.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/metagenerate/src/java/org/apache/avalon/excalibur/metagenerate/MxinfoHelper.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MxinfoHelper.java	28 Sep 2002 21:43:39 -0000	1.1
  +++ MxinfoHelper.java	29 Sep 2002 00:19:13 -0000	1.2
  @@ -10,6 +10,9 @@
   import java.io.FileWriter;
   import java.io.IOException;
   import java.io.File;
  +import java.util.Collections;
  +import java.util.Iterator;
  +import java.util.List;
   
   /**
    * A Xinfo Helper.
  @@ -23,7 +26,7 @@
       private static final String HEADER[] = new String[]{
           "<?xml version=\"1.0\"?>",
           "<!DOCTYPE mxinfo PUBLIC \"-//PHOENIX/Mx Info DTD Version 1.0//EN\"",
  -        "                  \"http://jakarta.apache.org/phoenix/mxinfo_1_0.dtd\">",
  +        "                  \"http://jakarta.apache.org/avalon/dtds/phoenix/mxinfo_1_0.dtd\">",
           "",
           "<mxinfo>",
           ""};
  @@ -54,11 +57,11 @@
           "        type=\"@RETURN@\">" };
   
       private static final String PARAMETER[] = new String[]{
  -        "<param",
  -        "   name=\"@NAME@\"",
  -        "   description=\"@DESCRIPTION@\"",
  -        "   type=\"@TYPE@\"",
  -        "/>" };
  +        "        <param",
  +        "           name=\"@NAME@\"",
  +        "           description=\"@DESCRIPTION@\"",
  +        "           type=\"@TYPE@\"",
  +        "        />" };
   
       private static final String OPERATION_FOOTER[] = new String[]{
           "      </operation>" };
  @@ -112,19 +115,37 @@
        * @param type The type
        * @throws IOException If a problem writing output
        */
  -    public void writeAttrLines(String attrName, String description, String type) throws
IOException
  +    public Attribute makeAttrLines(String attrName, String description, String type) throws
IOException
       {
  +        String xml = "";
           for (int i = 0; i < ATTRIBUTE.length; i++)
           {
               String line = ATTRIBUTE[i];
               line = replaceString(line, "@NAME@", attrName);
               line = replaceString(line, "\"@DESCRIPTION@\"", description);
               line = replaceString(line, "@RETURN@", type);
  -            m_output.write(line + "\n");
  +            xml = xml + line + "\n";
           }
  +        return new Attribute(attrName, xml);
       }
   
       /**
  +     * Write attributes.
  +     * @param attributes A list of attributes
  +     * @throws IOException If a problem writing output
  +     */
  +    public void writeAttributes(List attributes) throws IOException
  +    {
  +        Collections.sort(attributes);
  +        for (Iterator iterator = attributes.iterator(); iterator.hasNext();)
  +        {
  +            Attribute attribute = (Attribute) iterator.next();
  +            m_output.write(attribute.getXml());
  +        }
  +    }
  +
  +
  +    /**
        * Write the operations headers
        * @throws IOException If a problem writing output
        */
  @@ -143,48 +164,68 @@
        * @param type The type
        * @throws IOException If a problem writing output
        */
  -    public void writeOperationHeader(String operName, String description, String type)
throws IOException
  +    public String makeOperationHeader(String operName, String description, String type)
throws IOException
       {
  +        String xml = "";
           for (int i = 0; i < OPERATION_HEADER.length; i++)
           {
               String line = OPERATION_HEADER[i];
               line = replaceString(line, "@NAME@", operName);
               line = replaceString(line, "@DESCRIPTION@", description);
               line = replaceString(line, "@RETURN@", type);
  -            m_output.write(line + "\n");
  +            xml = xml + line + "\n";
           }
  +        return xml;
       }
   
       /**
        * Write the operation footer
        * @throws IOException If a problem writing output
        */
  -    public void writeOperationFooter() throws IOException
  +    public String makeOperationFooter() throws IOException
       {
  +        String xml = "";
           for (int i = 0; i < OPERATION_FOOTER.length; i++)
           {
  -            m_output.write(OPERATION_FOOTER[i] + "\n");
  +            xml = xml + OPERATION_FOOTER[i] + "\n";
           }
  +        return xml;
       }
   
       /**
  -     * Write a parameter for an operation
  +     * Make a parameter for an operation
        * @param paramName The attribute name
        * @param description The description
        * @param type The type
  -
        * @throws IOException If a problem writing output
        */
  -    public void writeOperationParameter(String paramName, String description, String type)
  +    public String makeOperationParameter(String paramName, String description, String type)
               throws IOException
       {
  +        String xml = "";
           for (int i = 0; i < PARAMETER.length; i++)
           {
               String line = PARAMETER[i];
               line = replaceString(line, "@NAME@", paramName);
               line = replaceString(line, "@DESCRIPTION@", description);
               line = replaceString(line, "@TYPE@", type);
  -            m_output.write(line + "\n");
  +            xml = xml + line + "\n";
  +        }
  +        return xml;
  +    }
  +
  +    /**
  +     * Write operations
  +     * @param operations A list of operations
  +     * @throws IOException If a problem writing output
  +     */
  +    public void writeOperations(List operations) throws IOException
  +    {
  +        Collections.sort(operations);
  +        for (Iterator iterator = operations.iterator(); iterator.hasNext();)
  +        {
  +            Operation operation = (Operation) iterator.next();
  +            m_output.write(operation.getXml());
           }
       }
   
  
  
  
  1.1                  jakarta-avalon-excalibur/metagenerate/src/java/org/apache/avalon/excalibur/metagenerate/Attribute.java
  
  Index: Attribute.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.excalibur.metagenerate;
  
  public class Attribute implements Comparable
  {
      private String m_attributeName;
      private String m_xml;
  
      /**
       * Construct an Attribute
       * @param attributeName The attribute name
       * @param xml the XML
       */
      public Attribute(String attributeName, String xml)
      {
          this.m_attributeName = attributeName;
          this.m_xml = xml;
      }
  
      /**
       * Get the attribute
       * @return The attribute
       */
      public String getAttributeName()
      {
          return m_attributeName;
      }
  
      /**
       * Get the XML
       * @return The XML
       */
      public String getXml()
      {
          return m_xml;
      }
  
      /**
       * From comparable
       * @param object The object to compare to.
       * @return whichever is order precidence
       */
      public int compareTo(Object object)
      {
          Attribute attr = (Attribute) object;
          return m_attributeName.compareTo(attr.getAttributeName());
      }
  }
  
  
  
  1.1                  jakarta-avalon-excalibur/metagenerate/src/java/org/apache/avalon/excalibur/metagenerate/Operation.java
  
  Index: Operation.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.excalibur.metagenerate;
  
  public class Operation implements Comparable
  {
      private String m_operationName;
      private String m_xml;
  
      /**
       * Construct an Operation
       * @param operationName The attribute name
       * @param xml the XML
       */
      public Operation(String operationName, String xml)
      {
          this.m_operationName = operationName;
          this.m_xml = xml;
      }
  
      /**
       * Get the Operation
       * @return The Operation
       */
      public String getOperationName()
      {
          return m_operationName;
      }
  
      /**
       * Get the XML
       * @return The XML
       */
      public String getXml()
      {
          return m_xml;
      }
  
      /**
       * From comparable
       * @param object The object to compare to.
       * @return whichever is order precidence
       */
      public int compareTo(Object object)
      {
          Operation attr = (Operation) object;
          return m_operationName.compareTo(attr.getOperationName());
      }
  }
  
  
  
  1.4       +1 -1      jakarta-avalon-excalibur/metagenerate/src/test/org/apache/avalon/excalibur/metagenerate/IntegrationTestCase.java
  
  Index: IntegrationTestCase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/metagenerate/src/test/org/apache/avalon/excalibur/metagenerate/IntegrationTestCase.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- IntegrationTestCase.java	28 Sep 2002 22:12:44 -0000	1.3
  +++ IntegrationTestCase.java	29 Sep 2002 00:19:13 -0000	1.4
  @@ -153,7 +153,7 @@
       private static final String MXINFO[] = new String[] {
       "<?xml version=\"1.0\"?>",
       "<!DOCTYPE mxinfo PUBLIC \"-//PHOENIX/Mx Info DTD Version 1.0//EN\"",
  -    "                  \"http://jakarta.apache.org/phoenix/mxinfo_1_0.dtd\">",
  +    "                  \"http://jakarta.apache.org/avalon/dtds/phoenix/mxinfo_1_0.dtd\">",
       "",
       "<mxinfo>",
       "",
  
  
  

--
To unsubscribe, e-mail:   <mailto:avalon-cvs-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:avalon-cvs-help@jakarta.apache.org>


Mime
View raw message