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);
}
/*