Author: rhs
Date: Tue Jul 24 12:25:43 2007
New Revision: 559167

URL: http://svn.apache.org/viewvc?view=rev&rev=559167
Log:
Switched over to using enums instead of booleans for fields of type bit.

Modified:
    incubator/qpid/trunk/qpid/java/common/generate
    
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Stub.java

Modified: incubator/qpid/trunk/qpid/java/common/generate
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/generate?view=diff&rev=559167&r1=559166&r2=559167
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/generate (original)
+++ incubator/qpid/trunk/qpid/java/common/generate Tue Jul 24 12:25:43 2007
@@ -71,6 +71,9 @@
 def dromedary(s):
   return s[0].lower() + s[1:]
 
+def scream(*args):
+  return "_".join([a.replace("-", "_").upper() for a in args])
+
 DOMAINS = {}
 
 for d in spec.query["amqp/domain"]:
@@ -82,6 +85,8 @@
   else:
     return type
 
+OPTIONS = {}
+
 class Struct:
 
   def __init__(self, type, name):
@@ -123,8 +128,26 @@
 
     out.line()
     out.line("    %s%s(%s) {" % (self.name, isfx, self.parameters()))
+    opts = False
     for type, name in self.fields:
-      out.line("    this.%s = %s;" % (name, name))
+      if not OPTIONS.has_key(name):
+        out.line("        this.%s = %s;" % (name, name))
+      else:
+        opts = True
+    if opts:
+      for type, name in self.fields:
+        if OPTIONS.has_key(name):
+          out.line("        boolean _%s = false;" % name)
+      out.line("        for (int i=0; i < _options.length; i++) {")
+      out.line("            switch (_options[i]) {")
+      for type, name in self.fields:
+        if OPTIONS.has_key(name):
+          out.line("            case %s: _%s=true; break;" % (OPTIONS[name], 
name))
+      out.line("            }")
+      out.line("        }")
+      for type, name in self.fields:
+        if OPTIONS.has_key(name):
+          out.line("        this.%s = _%s;" % (name, name))
     out.line("    }")
 
     out.line()
@@ -148,23 +171,54 @@
 
 
   def parameters(self):
-    return ", ".join(["%s %s" % (TYPES[type], name) for type, name in 
self.fields])
+    params = []
+    var = False
+    for type, name in self.fields:
+      if OPTIONS.has_key(name):
+        var = True
+      else:
+        params.append("%s %s" % (TYPES[type], name))
+    if var:
+      params.append("Option ... _options")
+    return ", ".join(params)
 
   def arguments(self):
-    return ", ".join([name for (type, name) in self.fields])
+    args = []
+    var = False
+    for type, name in self.fields:
+      if OPTIONS.has_key(name):
+        var = True
+      else:
+        args.append(name)
+    if var:
+      args.append("_options")
+    return ", ".join(args)
 
+opts = Output(out_dir, out_pkg, "Option")
+opts.line("public enum Option {")
 structs = []
 for m in spec.query["amqp/class/method"]:
   struct = Struct(int(m.parent["@index"])*256 + int(m["@index"]),
                   camel(0, m.parent["@name"], m["@name"]))
   for f in m.query["field"]:
-    struct.field(resolve(f["@domain"]), camel(1, f["@name"]))
+    type = resolve(f["@domain"])
+    name = camel(1, f["@name"])
+    struct.field(type, name)
+    if type == "bit":
+      opt_name = scream(f["@name"])
+      if not OPTIONS.has_key(name):
+        OPTIONS[name] = opt_name
+        opts.line("    %s," % opt_name)
   structs.append(struct)
-  out = Output(out_dir, out_pkg, struct.name)
-  struct.interface(out)
+opts.line("}")
+opts.write()
+
+for s in structs:
+  out = Output(out_dir, out_pkg, s.name)
+  s.interface(out)
   out.write()
-  iout = Output(out_dir, out_pkg, struct.name + isfx)
-  struct.impl(iout)
+  iout = Output(out_dir, out_pkg, s.name + isfx)
+  s.impl(iout)
   iout.write()
 
 fct = Output(out_dir, out_pkg, "StructFactory")
@@ -181,7 +235,7 @@
 ifct = Output(out_dir, out_pkg, ifct_name)
 ifct.line("class %s implements StructFactory {" % ifct_name)
 ifct.line("    public Struct create(int type, Decoder dec) {")
-ifct.line("        switch(type) {")
+ifct.line("        switch (type) {")
 for s in structs:
   ifct.line("        case %s.TYPE:" % s.name)
   ifct.line("            return new %s%s(dec);" % (s.name, isfx))

Modified: 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Stub.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Stub.java?view=diff&rev=559167&r1=559166&r2=559167
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Stub.java
 (original)
+++ 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Stub.java
 Tue Jul 24 12:25:43 2007
@@ -4,6 +4,8 @@
 import java.util.*;
 import java.lang.annotation.*;
 
+import static org.apache.qpidity.Option.*;
+
 public class Stub {
 
     private static Connection conn = new Connection();
@@ -26,9 +28,11 @@
     public static final void main(String[] args) {
         StructFactory f = new StructFactory_v0_10();
         frame(Frame.L2, Frame.METHOD, true, true, f.newSessionOpen(0));
-        frame(Frame.L4, Frame.METHOD, true, false, f.newQueueDeclare((short) 
0, "asdf", "alternate", false, false, false, false, false, null));
+        frame(Frame.L4, Frame.METHOD, true, false,
+              f.newQueueDeclare((short) 0, "asdf", "alternate",  null, 
DURABLE));
         frame(Frame.L4, Frame.METHOD, false, false);
-        frame(Frame.L3, Frame.METHOD, true, true, f.newExchangeDeclare((short) 
0, "exchange", "type", "alternate", false, false, false, null));
+        frame(Frame.L3, Frame.METHOD, true, true,
+              f.newExchangeDeclare((short) 0, "exchange", "type", "alternate", 
null));
         frame(Frame.L4, Frame.METHOD, false, true);
         frame(Frame.L4, Frame.HEADER, true, false);
         frame(Frame.L4, Frame.HEADER, false, false);
@@ -36,7 +40,8 @@
         frame(Frame.L4, Frame.BODY, true, false);
         frame(Frame.L4, Frame.BODY, false, false);
         frame(Frame.L4, Frame.BODY, false, false);
-        frame(Frame.L1, Frame.METHOD, true, true, f.newExchangeDeclare((short) 
0, "exchange", "type", "alternate", false, false, false, null));
+        frame(Frame.L1, Frame.METHOD, true, true,
+              f.newExchangeDeclare((short) 0, "exchange", "type", "alternate", 
null));
         frame(Frame.L4, Frame.BODY, false, false);
         frame(Frame.L4, Frame.BODY, false, true);
     }
@@ -63,7 +68,7 @@
 
     public @Override void exchangeDeclare(Session session, ExchangeDeclare ed) 
{
         System.out.println("got an exchange declare: " + ed.getExchange() + ", 
" + ed.getType());
-        session.queueDeclare((short) 0, "asdf", "alternate", false, false, 
false, false, false, null);
+        session.queueDeclare((short) 0, "asdf", "alternate", null);
     }
 
     /*


Reply via email to