Author: kpvdr
Date: Wed Jan  3 12:15:19 2007
New Revision: 492280

URL: http://svn.apache.org/viewvc?view=rev&rev=492280
Log:
Added ability for code generator to omit elements from the XML specification

Modified:
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpClass.java
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpConstantSet.java
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpDomainMap.java
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpDomainVersionMap.java
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpField.java
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpFieldMap.java
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpFlagMap.java
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpMethod.java
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpMethodMap.java
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpModel.java
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpOrdinalVersionMap.java
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpVersion.java
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpVersionSet.java
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Generator.java
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/JavaGenerator.java
    
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/NodeAware.java
    incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Utils.java

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpClass.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpClass.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpClass.java 
(original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpClass.java 
Wed Jan  3 12:15:19 2007
@@ -25,7 +25,7 @@
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
-public class AmqpClass implements Printable, NodeAware
+public class AmqpClass implements Printable, NodeAware 
 {
        public LanguageConverter converter;
        public AmqpVersionSet versionSet;
@@ -44,50 +44,82 @@
                indexMap = new AmqpOrdinalVersionMap();
        }
 
-       public void addFromNode(Node classNode, int ordinal, AmqpVersion 
version)
+       public boolean addFromNode(Node classNode, int ordinal, AmqpVersion 
version)
                throws AmqpParseException, AmqpTypeMappingException
        {
                versionSet.add(version);
                int index = Utils.getNamedIntegerAttribute(classNode, "index");
-               AmqpVersionSet versionSet = indexMap.get(index);
-               if (versionSet != null)
-                       versionSet.add(version);
+               AmqpVersionSet indexVersionSet = indexMap.get(index);
+               if (indexVersionSet != null)
+                       indexVersionSet.add(version);
                else
                {
-                       versionSet = new AmqpVersionSet();
-                       versionSet.add(version);
-                       indexMap.put(index, versionSet);
+                       indexVersionSet = new AmqpVersionSet();
+                       indexVersionSet.add(version);
+                       indexMap.put(index, indexVersionSet);
                }
                NodeList nList = classNode.getChildNodes();
                int fieldCntr = 0;
-               int methodCntr = 0;
                for (int i=0; i<nList.getLength(); i++)
                {
                        Node child = nList.item(i);
                        if (child.getNodeName().compareTo(Utils.ELEMENT_FIELD) 
== 0)
                        {
-                               String fieldName = 
converter.prepareDomainName(Utils.getNamedAttribute(child, 
Utils.ATTRIBUTE_NAME));
+                               String fieldName = 
converter.prepareDomainName(Utils.getNamedAttribute(child,
+                                               Utils.ATTRIBUTE_NAME));
                                AmqpField thisField = fieldMap.get(fieldName);
                                if (thisField == null)
                                {
                                        thisField = new AmqpField(fieldName, 
converter);
                                        fieldMap.put(fieldName, thisField);
                                }
-                               thisField.addFromNode(child, fieldCntr, 
version);
+                               if (!thisField.addFromNode(child, fieldCntr++, 
version))
+                               {
+                                       String className = 
converter.prepareClassName(Utils.getNamedAttribute(classNode,
+                                                       Utils.ATTRIBUTE_NAME));
+                                       System.out.println("INFO: Generation 
supression tag found for field " +
+                                                       className + "." + 
fieldName + " - removing.");
+                                       thisField.removeVersion(version);
+                                       fieldMap.remove(fieldName);
+                               }
                                fieldCntr++;
                        }
                        else if 
(child.getNodeName().compareTo(Utils.ELEMENT_METHOD) == 0)
                        {
-                               String methodName = 
converter.prepareMethodName(Utils.getNamedAttribute(child, 
Utils.ATTRIBUTE_NAME));
+                               String methodName = 
converter.prepareMethodName(Utils.getNamedAttribute(child,
+                                               Utils.ATTRIBUTE_NAME));
                                AmqpMethod thisMethod = 
methodMap.get(methodName);
                                if (thisMethod == null)
                                {
                                        thisMethod = new AmqpMethod(methodName, 
converter);
                                        methodMap.put(methodName, thisMethod);
                                }                       
-                               thisMethod.addFromNode(child, methodCntr++, 
version);                           
+                               if (!thisMethod.addFromNode(child, fieldCntr++, 
version))
+                               {
+                                       String className = 
converter.prepareClassName(Utils.getNamedAttribute(classNode,
+                                                       Utils.ATTRIBUTE_NAME));
+                                       System.out.println("INFO: Generation 
supression tag found for method " +
+                                                       className + "." + 
methodName + " - removing.");
+                                       thisMethod.removeVersion(version);
+                                       methodMap.remove(methodName);
+                               }
+                       }
+                       else if 
(child.getNodeName().compareTo(Utils.ELEMENT_CODEGEN) == 0)
+                       {
+                               String value = Utils.getNamedAttribute(child, 
Utils.ATTRIBUTE_VALUE);
+                               if (value.compareTo("no-gen") == 0)
+                                       return false;
                        }
                }
+               return true;
+       }
+       
+       public void removeVersion(AmqpVersion version)
+       {
+               indexMap.removeVersion(version);
+               fieldMap.removeVersion(version);
+               methodMap.removeVersion(version);
+               versionSet.remove(version);
        }
        
        public void print(PrintStream out, int marginSize, int tabSize)

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpConstantSet.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpConstantSet.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpConstantSet.java
 (original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpConstantSet.java
 Wed Jan  3 12:15:19 2007
@@ -48,7 +48,7 @@
    /* (non-Javadoc)
      * @see org.apache.qpid.gentools.NodeAware#addFromNode(org.w3c.dom.Node, 
int, org.apache.qpid.gentools.AmqpVersion)
      */
-    public void addFromNode(Node node, int ordinal, AmqpVersion version)
+    public boolean addFromNode(Node node, int ordinal, AmqpVersion version)
         throws AmqpParseException, AmqpTypeMappingException
     {
         NodeList nodeList = node.getChildNodes();
@@ -95,6 +95,7 @@
                 }
            }
         }
+        return true;
     }
     
     /* (non-Javadoc)

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpDomainMap.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpDomainMap.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpDomainMap.java
 (original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpDomainMap.java
 Wed Jan  3 12:15:19 2007
@@ -37,7 +37,7 @@
                this.converter.setDomainMap(this);
        }
        
-       public void addFromNode(Node n, int o, AmqpVersion v)
+       public boolean addFromNode(Node n, int o, AmqpVersion v)
                throws AmqpParseException, AmqpTypeMappingException
        {
                NodeList nl = n.getChildNodes();
@@ -81,7 +81,8 @@
                        {
                                addFromNode(c, 0, v);
                        }
-               }       
+               }
+               return true;
        }
 
        public String getDomainType(String domainName, AmqpVersion version)

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpDomainVersionMap.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpDomainVersionMap.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpDomainVersionMap.java
 (original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpDomainVersionMap.java
 Wed Jan  3 12:15:19 2007
@@ -20,6 +20,7 @@
  */
 package org.apache.qpid.gentools;
 
+import java.util.ArrayList;
 import java.util.TreeMap;
 
 @SuppressWarnings("serial")
@@ -30,5 +31,28 @@
                if (size() != 1)
                        return false;
                return get(firstKey()).equals(globalVersionSet);
+       }
+       
+       public boolean removeVersion(AmqpVersion version)
+       {
+               Boolean res = false;
+               ArrayList<String> removeList = new ArrayList<String>();
+               for (String domainName : keySet())
+               {
+                       AmqpVersionSet versionSet = get(domainName);
+                       if (versionSet.contains(version))
+                       {
+                               versionSet.remove(version);
+                               if (versionSet.isEmpty())
+                                       removeList.add(domainName);
+                               res = true;
+                       }
+               }
+               // Get rid of domains no longer in use
+               for (String domainName : removeList)
+               {
+                       remove(domainName);
+               }
+               return res;
        }
 }

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpField.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpField.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpField.java 
(original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpField.java 
Wed Jan  3 12:15:19 2007
@@ -24,6 +24,7 @@
 import java.util.ArrayList;
 
 import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 public class AmqpField implements Printable, NodeAware, VersionConsistencyCheck
 {
@@ -42,7 +43,7 @@
                ordinalMap = new AmqpOrdinalVersionMap();
        }
 
-       public void addFromNode(Node fieldNode, int ordinal, AmqpVersion 
version)
+       public boolean addFromNode(Node fieldNode, int ordinal, AmqpVersion 
version)
                throws AmqpParseException, AmqpTypeMappingException
        {
                versionSet.add(version);
@@ -70,6 +71,25 @@
                        ordinalMap.put(ordinal, thisVersionList);
                }
                thisVersionList.add(version);
+               NodeList nList = fieldNode.getChildNodes();
+               for (int i=0; i<nList.getLength(); i++)
+               {
+                       Node child = nList.item(i);
+                       if 
(child.getNodeName().compareTo(Utils.ELEMENT_CODEGEN) == 0)
+                       {
+                               String value = Utils.getNamedAttribute(child, 
Utils.ATTRIBUTE_VALUE);
+                               if (value.compareTo("no-gen") == 0)
+                                       return false;
+                       }
+               }
+               return true;
+       }
+       
+       public void removeVersion(AmqpVersion version)
+       {
+               domainMap.removeVersion(version);
+               ordinalMap.removeVersion(version);
+               versionSet.remove(version);
        }
        
        public boolean isCodeTypeConsistent(LanguageConverter converter)

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpFieldMap.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpFieldMap.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpFieldMap.java
 (original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpFieldMap.java
 Wed Jan  3 12:15:19 2007
@@ -29,6 +29,17 @@
 @SuppressWarnings("serial")
 public class AmqpFieldMap extends TreeMap<String, AmqpField> implements 
VersionConsistencyCheck
 {
+       public void removeVersion(AmqpVersion version)
+       {
+               String[] fieldNameArray = new String[size()];
+               keySet().toArray(fieldNameArray);
+               for (String fieldName : fieldNameArray)
+               {
+                       get(fieldName).removeVersion(version);
+                       remove(fieldName);
+               }
+       }
+       
        public AmqpFieldMap getFieldMapForOrdinal(int ordinal)
        {
                AmqpFieldMap newMap = new AmqpFieldMap();

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpFlagMap.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpFlagMap.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpFlagMap.java
 (original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpFlagMap.java
 Wed Jan  3 12:15:19 2007
@@ -20,6 +20,7 @@
  */
 package org.apache.qpid.gentools;
 
+import java.util.ArrayList;
 import java.util.TreeMap;
 
 @SuppressWarnings("serial")
@@ -43,5 +44,28 @@
                if (size() != 1)
                        return false;
                return get(firstKey()).equals(globalVersionSet);
+       }
+       
+       public boolean removeVersion(AmqpVersion version)
+       {
+               Boolean res = false;
+               ArrayList<Boolean> removeList = new ArrayList<Boolean>();
+               for (Boolean flag : keySet())
+               {
+                       AmqpVersionSet versionSet = get(flag);
+                       if (versionSet.contains(version))
+                       {
+                               versionSet.remove(version);
+                               if (versionSet.isEmpty())
+                                       removeList.add(flag);
+                               res = true;
+                       }
+               }
+               // Get rid of flags no longer in use
+               for (Boolean flag : removeList)
+               {
+                       remove(flag);
+               }
+               return res;
        }
 }

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpMethod.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpMethod.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpMethod.java 
(original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpMethod.java 
Wed Jan  3 12:15:19 2007
@@ -46,21 +46,21 @@
                serverMethodFlagMap = new AmqpFlagMap();
        }
 
-       public void addFromNode(Node methodNode, int ordinal, AmqpVersion 
version)
+       public boolean addFromNode(Node methodNode, int ordinal, AmqpVersion 
version)
                throws AmqpParseException, AmqpTypeMappingException
        {
+               versionSet.add(version);
                boolean serverChassisFlag = false;
                boolean clientChassisFlag = false;
-               versionSet.add(version);
                int index = Utils.getNamedIntegerAttribute(methodNode, "index");
-               AmqpVersionSet versionSet = indexMap.get(index);
-               if (versionSet != null)
-                       versionSet.add(version);
+               AmqpVersionSet indexVersionSet = indexMap.get(index);
+               if (indexVersionSet != null)
+                       indexVersionSet.add(version);
                else
                {
-                       versionSet = new AmqpVersionSet();
-                       versionSet.add(version);
-                       indexMap.put(index, versionSet);
+                       indexVersionSet = new AmqpVersionSet();
+                       indexVersionSet.add(version);
+                       indexMap.put(index, indexVersionSet);
                }
                NodeList nList = methodNode.getChildNodes();
                int fieldCntr = 0;
@@ -69,16 +69,27 @@
                        Node child = nList.item(i);
                        if (child.getNodeName().compareTo(Utils.ELEMENT_FIELD) 
== 0)
                        {
-                               String fieldName = 
converter.prepareDomainName(Utils.getNamedAttribute(child, 
Utils.ATTRIBUTE_NAME));
+                               String fieldName = 
converter.prepareDomainName(Utils.getNamedAttribute(child,
+                                               Utils.ATTRIBUTE_NAME));
                                AmqpField thisField = fieldMap.get(fieldName);
                                if (thisField == null)
                                {
                                        thisField = new AmqpField(fieldName, 
converter);
                                        fieldMap.put(fieldName, thisField);
                                }
-                               thisField.addFromNode(child, fieldCntr++, 
version);                             
+                               if (!thisField.addFromNode(child, fieldCntr++, 
version))
+                               {
+                                       String className = 
converter.prepareClassName(Utils.getNamedAttribute(methodNode.getParentNode(),
+                                                       Utils.ATTRIBUTE_NAME));
+                                       String methodName = 
converter.prepareMethodName(Utils.getNamedAttribute(methodNode,
+                                                       Utils.ATTRIBUTE_NAME));
+                                       System.out.println("INFO: Generation 
supression tag found for field " +
+                                                       className + "." + 
methodName + "." + fieldName + " - removing.");
+                                       thisField.removeVersion(version);
+                                       fieldMap.remove(fieldName);
+                               }
                        }
-                       if 
(child.getNodeName().compareTo(Utils.ELEMENT_CHASSIS) == 0)
+                       else if 
(child.getNodeName().compareTo(Utils.ELEMENT_CHASSIS) == 0)
                        {
                                String chassisName = 
Utils.getNamedAttribute(child, Utils.ATTRIBUTE_NAME);
                                if (chassisName.compareTo("server") == 0)
@@ -86,8 +97,24 @@
                                else if (chassisName.compareTo("client") == 0)
                                        clientChassisFlag = true;
                        }
+                       else if 
(child.getNodeName().compareTo(Utils.ELEMENT_CODEGEN) == 0)
+                       {
+                               String value = Utils.getNamedAttribute(child, 
Utils.ATTRIBUTE_VALUE);
+                               if (value.compareTo("no-gen") == 0)
+                                       return false;
+                       }
                }
                processChassisFlags(serverChassisFlag, clientChassisFlag, 
version);
+               return true;
+       }
+       
+       public void removeVersion(AmqpVersion version)
+       {
+               clientMethodFlagMap.removeVersion(version);
+               serverMethodFlagMap.removeVersion(version);
+               indexMap.removeVersion(version);
+               fieldMap.removeVersion(version);
+               versionSet.remove(version);
        }
        
        public void print(PrintStream out, int marginSize, int tabSize)
@@ -96,7 +123,8 @@
                String tab = Utils.createSpaces(tabSize);
                out.println(margin + "[M] " + name + " {" + 
(serverMethodFlagMap.isSet() ? "S " +
                        serverMethodFlagMap + (clientMethodFlagMap.isSet() ? ", 
" : "") : "") +
-                       (clientMethodFlagMap.isSet() ? "C " + 
clientMethodFlagMap : "") + "}" + ": " + versionSet);
+                       (clientMethodFlagMap.isSet() ? "C " + 
clientMethodFlagMap : "") + "}" + ": " +
+                       versionSet);
                
                for (Integer thisIndex : indexMap.keySet())
                {

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpMethodMap.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpMethodMap.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpMethodMap.java
 (original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpMethodMap.java
 Wed Jan  3 12:15:19 2007
@@ -25,5 +25,12 @@
 @SuppressWarnings("serial")
 public class AmqpMethodMap extends TreeMap<String, AmqpMethod>
 {
+       public void removeVersion(AmqpVersion version)
+       {
+               for (String methodName : keySet())
+               {
+                       get(methodName).removeVersion(version);
+               }
+       }
 
 }

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpModel.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpModel.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpModel.java 
(original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpModel.java 
Wed Jan  3 12:15:19 2007
@@ -37,7 +37,7 @@
                classMap = new AmqpClassMap();
        }
 
-       public void addFromNode(Node n, int o, AmqpVersion v)
+       public boolean addFromNode(Node n, int o, AmqpVersion v)
                throws AmqpParseException, AmqpTypeMappingException
        {
                NodeList nList = n.getChildNodes();
@@ -54,9 +54,15 @@
                                        thisClass = new AmqpClass(className, 
converter);
                                        classMap.put(className, thisClass);
                                }
-                               thisClass.addFromNode(c, eCntr++, v);           
                
+                               if (!thisClass.addFromNode(c, eCntr++, v))
+                               {
+                                       System.out.println("INFO: Generation 
supression tag found for class " + className + " - removing.");
+                                       thisClass.removeVersion(v);
+                                       classMap.remove(className);
+                               }
                        }
-               }       
+               }
+               return true;
        }
        
        public void print(PrintStream out, int marginSize, int tabSize)

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpOrdinalVersionMap.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpOrdinalVersionMap.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpOrdinalVersionMap.java
 (original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpOrdinalVersionMap.java
 Wed Jan  3 12:15:19 2007
@@ -20,6 +20,7 @@
  */
 package org.apache.qpid.gentools;
 
+import java.util.ArrayList;
 import java.util.TreeMap;
 
 @SuppressWarnings("serial")
@@ -43,4 +44,29 @@
         }
         throw new AmqpTypeMappingException("Unable to locate version " + 
version + " in ordianl version map.");
     }
+       
+       public boolean removeVersion(AmqpVersion version)
+       {
+               Boolean res = false;
+               ArrayList<Integer> removeList = new ArrayList<Integer>();
+               for (Integer ordinal : keySet())
+               {
+                       AmqpVersionSet versionSet = get(ordinal);
+                       if (versionSet.contains(version))
+                       {
+                               versionSet.remove(version);
+                               if (versionSet.isEmpty())
+                               {
+                                       removeList.add(ordinal);
+                               }
+                               res = true;
+                       }
+               }
+               // Get rid of ordinals no longer in use
+               for (Integer ordinal : removeList)
+               {
+                       remove(ordinal);
+               }
+               return res;
+       }
 }

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpVersion.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpVersion.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpVersion.java
 (original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpVersion.java
 Wed Jan  3 12:15:19 2007
@@ -30,6 +30,12 @@
                this.major = major;
                this.minor = minor;
        }
+
+       public AmqpVersion(AmqpVersion version)
+       {
+               this.major = version.major;
+               this.minor = version.minor;
+       }
        
        public int getMajor()
        {

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpVersionSet.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpVersionSet.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpVersionSet.java
 (original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/AmqpVersionSet.java
 Wed Jan  3 12:15:19 2007
@@ -30,11 +30,23 @@
 {
     public AmqpVersionSet()
     {
+       super();
     }
     
     public AmqpVersionSet(AmqpVersion version)
     {
+       super();
         add(version);
+    }
+    
+    public AmqpVersion find(AmqpVersion version)
+    {
+       for (AmqpVersion v : this)
+       {
+               if (v.compareTo(version) == 0)
+                       return v;
+       }
+       return null;
     }
     
        public void print(PrintStream out, int marginSize, int tabSize)

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Generator.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Generator.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Generator.java 
(original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Generator.java 
Wed Jan  3 12:15:19 2007
@@ -28,7 +28,6 @@
 import java.io.LineNumberReader;
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
-import java.util.Iterator;
 
 public abstract class Generator implements LanguageConverter
 {
@@ -185,38 +184,29 @@
                }
                
                // Cycle through classes
-               Iterator<String> citr = model.classMap.keySet().iterator();
-               while (citr.hasNext())
+               for (String className : model.classMap.keySet())
                {
-                       String className = citr.next();
                        AmqpClass thisClass = model.classMap.get(className);
-                       
                        // Use all class-level templates
                        for (String[] ct : classTemplateList)
                        {
                                processTemplateB(ct, thisClass);
                        }
-                       
+
                        // Cycle through all methods
-                       Iterator<String> mitr = 
thisClass.methodMap.keySet().iterator();
-                       while (mitr.hasNext())
+                       for (String methodName : thisClass.methodMap.keySet())
                        {
-                               String methodName = mitr.next();
                                AmqpMethod method = 
thisClass.methodMap.get(methodName);
-                               
                                // Use all method-level templates
                                for (String[] mt : methodTemplateList)
                                {
                                        processTemplateC(mt, thisClass, method);
                                }
-                               
+
                                // Cycle through all fields
-                               Iterator<String> fitr = 
method.fieldMap.keySet().iterator();
-                               while (fitr.hasNext())
+                               for (String fieldName : 
method.fieldMap.keySet())
                                {
-                                       String fieldName = fitr.next();
                                        AmqpField field = 
method.fieldMap.get(fieldName);
-                                       
                                        // Use all field-level templates
                                        for (String[] ft : fieldTemplateList)
                                        {

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/JavaGenerator.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/JavaGenerator.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/JavaGenerator.java
 (original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/JavaGenerator.java
 Wed Jan  3 12:15:19 2007
@@ -733,14 +733,12 @@
                String tab = Utils.createSpaces(tabSize);
                StringBuffer sb = new StringBuffer();
                
-               Iterator<String> cItr = model.classMap.keySet().iterator();
-               while (cItr.hasNext())
+               for (String className : model.classMap.keySet())
                {
-                       AmqpClass thisClass = model.classMap.get(cItr.next());
-                       Iterator<String> mItr = 
thisClass.methodMap.keySet().iterator();
-                       while (mItr.hasNext())
+                       AmqpClass thisClass = model.classMap.get(className);
+                       for (String methodName : thisClass.methodMap.keySet())
                        {
-                               AmqpMethod method = 
thisClass.methodMap.get(mItr.next());
+                               AmqpMethod method = 
thisClass.methodMap.get(methodName);
                                for (AmqpVersion version : globalVersionSet)
                                {
                                        // Find class and method index for this 
version (if it exists)
@@ -750,10 +748,10 @@
                                                int methodIndex = 
findIndex(method.indexMap, version);
                                                sb.append(indent + 
"classIDMethodIDVersionBodyMap.put(" + cr);
                                                sb.append(indent + tab + 
"createMapKey((short)" + classIndex +
-                                                       ", (short)" + 
methodIndex + ", (byte)" + version.getMajor() +
-                                                       ", (byte)" + 
version.getMinor() + "), " + cr);
+                                                               ", (short)" + 
methodIndex + ", (byte)" + version.getMajor() +
+                                                               ", (byte)" + 
version.getMinor() + "), " + cr);
                                                sb.append(indent + tab + 
Utils.firstUpper(thisClass.name) +
-                                                       
Utils.firstUpper(method.name) + "Body.class);" + cr);
+                                                               
Utils.firstUpper(method.name) + "Body.class);" + cr);
                                        }
                                        catch (Exception e) {} // Ignore
                                }

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/NodeAware.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/NodeAware.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/NodeAware.java 
(original)
+++ 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/NodeAware.java 
Wed Jan  3 12:15:19 2007
@@ -39,7 +39,8 @@
         * @param v Verion of the DOM from which the node comes.
         * @throws AmqpParseException
         * @throws AmqpTypeMappingException
+        * @returns true if a node was added, false if not
         */
-       public void addFromNode(Node n, int o, AmqpVersion v)
+       public boolean addFromNode(Node n, int o, AmqpVersion v)
                throws AmqpParseException, AmqpTypeMappingException;
 }

Modified: 
incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Utils.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Utils.java?view=diff&rev=492280&r1=492279&r2=492280
==============================================================================
--- incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Utils.java 
(original)
+++ incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Utils.java 
Wed Jan  3 12:15:19 2007
@@ -46,6 +46,7 @@
        public final static String ELEMENT_AMQP = "amqp";
        public final static String ELEMENT_CHASSIS = "chassis";
        public final static String ELEMENT_CLASS = "class";
+       public final static String ELEMENT_CODEGEN = "codegen";
     public final static String ELEMENT_CONSTANT = "constant";
        public final static String ELEMENT_DOMAIN = "domain";
        public final static String ELEMENT_METHOD = "method";


Reply via email to