@@ -45,7 +45,7 @@ def java_constant_name(c):
4545 'timestamp' : 'Date'
4646 }
4747
48- javaTypesNeverNullInBuilder = set ([
48+ javaTypesToCheckForNull = set ([
4949 'String' ,
5050 'LongString' ,
5151 'Date'
@@ -113,22 +113,13 @@ def typeNameDefault(spec, a):
113113 java_field_default_value (java_field_type (spec , a .domain ),
114114 a .defaultvalue ))
115115
116- def mandatoryAndNullCheckedFields (spec , m ):
117- fieldsToNullCheckInBuild = set ([])
118- mandatoryFields = set ([])
119- if m .arguments :
120- for index , a in enumerate (m .arguments ):
121- (jfType , jfName , jfDefault ) = typeNameDefault (spec ,a )
122- if jfType in javaTypesNeverNullInBuilder :
123- fieldsToNullCheckInBuild .update ([jfName ])
124- if a .defaultvalue == None :
125- mandatoryFields .update ([(jfType ,jfName )])
126- return (fieldsToNullCheckInBuild , mandatoryFields )
127-
128- def builderCtorArgSignature (mandatoryFields ):
129- ctor_arg_signature_list = []
130- ctor_arg_signature_string = ", " .join (ctor_arg_signature_list )
131- return ctor_arg_signature_string
116+ def nullCheckedFields (spec , m ):
117+ fieldsToNullCheck = set ([])
118+ for a in m .arguments :
119+ (jfType , jfName , jfDefault ) = typeNameDefault (spec ,a )
120+ if jfType in javaTypesToCheckForNull :
121+ fieldsToNullCheck .add (jfName )
122+ return fieldsToNullCheck
132123
133124#---------------------------------------------------------------------------
134125
@@ -156,19 +147,19 @@ def printFileHeader():
156147def genJavaApi (spec ):
157148 def printHeader ():
158149 printFileHeader ()
159- print """ package com.rabbitmq.client;
160-
161- import java.io.IOException;
162- import java.util.Map;
163- import java.util.Date;
164-
165- import com.rabbitmq.client.impl.ContentHeaderPropertyWriter;
166- import com.rabbitmq.client.impl.ContentHeaderPropertyReader;
167- import com.rabbitmq.client.impl.LongString;
168- import com.rabbitmq.client.impl.LongStringHelper;
169-
170- public interface AMQP {
171- """
150+ print "package com.rabbitmq.client;"
151+ print
152+ print " import java.io.IOException;"
153+ print " import java.util.Map;"
154+ print " import java.util.Date;"
155+ print
156+ print " import com.rabbitmq.client.impl.ContentHeaderPropertyWriter;"
157+ print " import com.rabbitmq.client.impl.ContentHeaderPropertyReader;"
158+ print " import com.rabbitmq.client.impl.LongString;"
159+ print " import com.rabbitmq.client.impl.LongStringHelper;"
160+ print
161+ print " public interface AMQP {"
162+ print
172163 print " public static class PROTOCOL {"
173164 print " public static final int MAJOR = %i;" % spec .major
174165 print " public static final int MINOR = %i;" % spec .minor
@@ -182,66 +173,42 @@ def printConstants():
182173
183174 def builder (c ,m ):
184175 def ctorCall (c ,m ):
185- ctor_call = "return new com.rabbitmq.client.impl.AMQImpl.%s.%s(" % (java_class_name (c .name ),java_class_name (m .name ))
186- ctor_arg_list = []
187- if m .arguments :
188- for index , a in enumerate (m .arguments ):
189- ctor_arg_list .append ("{0}" .format (java_field_name (a .name )))
190- ctor_call += ", " .join (ctor_arg_list )
191- ctor_call += ");"
192- print " %s" % (ctor_call )
176+ ctor_call = "com.rabbitmq.client.impl.AMQImpl.%s.%s" % (java_class_name (c .name ),java_class_name (m .name ))
177+ ctor_arg_list = [ java_field_name (a .name ) for a in m .arguments ]
178+ print " return new %s(%s);" % (ctor_call , ", " .join (ctor_arg_list ))
193179
194180 def genFields (spec , m ):
195- (fieldsToNullCheckInBuild , mandatoryFields ) = mandatoryAndNullCheckedFields (spec , m )
196- if m .arguments :
197- for index , a in enumerate (m .arguments ):
198- (jfType , jfName , jfDefault ) = typeNameDefault (spec , a )
199- if a .defaultvalue != None :
200- print " private %s %s = %s;" % (jfType , jfName , jfDefault )
201- else :
202- print " private %s %s;" % (jfType , jfName )
203-
204- def genBuilderCtor (m , mandatoryFields ):
205- ctor_arg_signature_string = builderCtorArgSignature (mandatoryFields )
206- print " public Builder(%s) { }" % ctor_arg_signature_string
181+ for a in m .arguments :
182+ (jfType , jfName , jfDefault ) = typeNameDefault (spec , a )
183+ if a .defaultvalue != None :
184+ print " private %s %s = %s;" % (jfType , jfName , jfDefault )
185+ else :
186+ print " private %s %s;" % (jfType , jfName )
207187
208188 def genArgMethods (spec , m ):
209- if m .arguments :
210- for index , a in enumerate (m .arguments ):
211- (jfType , jfName , jfDefault ) = typeNameDefault (spec , a )
212- print " public final Builder %s(%s %s)" % (jfName , jfType , jfName )
213- print " { this.%s = %s; return this; }" % (jfName , jfName )
214- if jfType == "boolean" :
215- print " public final Builder %s()" % (jfName )
216- print " { this.%s = true; return this; }" % (jfName )
217-
218- def genBuildMethod (c ,m ,fieldsToNullCheckInBuild ):
189+ for a in m .arguments :
190+ (jfType , jfName , jfDefault ) = typeNameDefault (spec , a )
191+ print " public final Builder %s(%s %s)" % (jfName , jfType , jfName )
192+ print " { this.%s = %s; return this; }" % (jfName , jfName )
193+ if jfType == "boolean" :
194+ print " public final Builder %s()" % (jfName )
195+ print " { return this.%s(true); }" % (jfName )
196+
197+ def genBuildMethod (c ,m ):
219198 print " public final %s build() {" % (java_class_name (m .name ))
220-
221- if fieldsToNullCheckInBuild :
222- nullCheckClauses = []
223- for f in fieldsToNullCheckInBuild :
224- printGenNullCheckClause (f )
225199 ctorCall (c ,m )
226200 print " }"
227201
228- def printGenNullCheckClause (f ):
229- print " if(%s == null)" % (f )
230- print " { throw new IllegalStateException("
231- print " \" Invalid configuration: '%s' must be non-null.\" );" % (f )
232- print " }"
233-
234202 print
235203 print " // Builder for instances of %s.%s" % (java_class_name (c .name ), java_class_name (m .name ))
236204 print " public static class Builder"
237205 print " {"
238- (fieldsToNullCheckInBuild , mandatoryFields ) = mandatoryAndNullCheckedFields (spec , m )
239206 genFields (spec , m )
240207 print
241- genBuilderCtor ( m , mandatoryFields )
208+ print " public Builder() { }"
242209 print
243210 genArgMethods (spec , m )
244- genBuildMethod (c ,m , fieldsToNullCheckInBuild )
211+ genBuildMethod (c ,m )
245212 print " }"
246213
247214 def printClassInterfaces ():
@@ -281,18 +248,14 @@ def printWriteProperties(c):
281248 print " }"
282249
283250 def printPropertyDebug (c ):
251+ appendList = [ "%s=\" )\n .append(this.%s)\n .append(\" "
252+ % (f .name , java_field_name (f .name ))
253+ for f in c .fields ]
284254 print
285- print " public void appendPropertyDebugStringTo(StringBuffer acc) {"
286- print " acc.append(\" (\" );"
287- for index ,f in enumerate (c .fields ):
288- print " acc.append(\" %s=\" );" % (f .name )
289- print " acc.append(this.%s);" % (java_field_name (f .name ))
290- if not index == len (c .fields ) - 1 :
291- print " acc.append(\" , \" );"
292-
293- print " acc.append(\" )\" );"
255+ print " public void appendArgumentDebugStringTo(StringBuffer acc) {"
256+ print " acc.append(\" (%s)\" );" % ", " .join (appendList )
294257 print " }"
295-
258+
296259 def printClassProperties (c ):
297260 print
298261 print " public static class %(className)s extends %(parentClass)s {" % {'className' : java_class_name (c .name ) + 'Properties' , 'parentClass' : 'com.rabbitmq.client.impl.AMQ' + java_class_name (c .name ) + 'Properties' }
@@ -303,13 +266,10 @@ def printClassProperties(c):
303266 #constructor
304267 if c .fields :
305268 print
306- print " public %sProperties ( " % (java_class_name (c .name ))
307- for index ,f in enumerate (c .fields ):
308- sys .stdout .write ( " %s %s" % (java_property_type (spec ,f .domain ),java_field_name (f .name )))
309- if not index == len (c .fields ) - 1 :
310- print ","
311-
312- print ")"
269+ consParmList = [ "%s %s" % (java_property_type (spec ,f .domain ),java_field_name (f .name ))
270+ for f in c .fields ]
271+ print " public %sProperties(" % (java_class_name (c .name ))
272+ print " %s)" % (",\n " .join (consParmList ))
313273 print " {"
314274 for f in c .fields :
315275 print " this.%s = %s;" % (java_field_name (f .name ), java_field_name (f .name ))
@@ -349,17 +309,17 @@ def printClassProperties(c):
349309def genJavaImpl (spec ):
350310 def printHeader ():
351311 printFileHeader ()
352- print """ package com.rabbitmq.client.impl;
353-
354- import java.io.IOException;
355- import java.io.DataInputStream;
356- import java.util.Map;
357-
358- import com.rabbitmq.client.AMQP;
359- import com.rabbitmq.client.UnknownClassOrMethodId;
360- import com.rabbitmq.client.UnexpectedMethodError;
361-
362- public class AMQImpl implements AMQP {"" "
312+ print "package com.rabbitmq.client.impl;"
313+ print
314+ print " import java.io.IOException;"
315+ print " import java.io.DataInputStream;"
316+ print " import java.util.Map;"
317+ print
318+ print " import com.rabbitmq.client.AMQP;"
319+ print " import com.rabbitmq.client.UnknownClassOrMethodId;"
320+ print " import com.rabbitmq.client.UnexpectedMethodError;"
321+ print
322+ print " public class AMQImpl implements AMQP {"
363323
364324 def printClassMethods (spec , c ):
365325 print
@@ -377,10 +337,17 @@ def constructors():
377337 print
378338 argList = [ "%s %s" % (java_field_type (spec ,a .domain ),java_field_name (a .name )) for a in m .arguments ]
379339 print " public %s(%s) {" % (java_class_name (m .name ), ", " .join (argList ))
340+
341+ fieldsToNullCheckInCons = nullCheckedFields (spec , m )
342+
343+ for f in fieldsToNullCheckInCons :
344+ print " if(%s == null)" % (f )
345+ print " throw new IllegalStateException(\" Invalid configuration: '%s' must be non-null.\" );" % (f )
346+
380347 for a in m .arguments :
381348 print " this.%s = %s;" % (java_field_name (a .name ), java_field_name (a .name ))
382349 print " }"
383-
350+
384351 consArgs = [ "rdr.read%s()" % (java_class_name (spec .resolveDomain (a .domain ))) for a in m .arguments ]
385352 print " public %s(MethodArgumentReader rdr) throws IOException {" % (java_class_name (m .name ))
386353 print " this(%s);" % (", " .join (consArgs ))
@@ -393,36 +360,23 @@ def others():
393360 print " public String protocolMethodName() { return \" %s.%s\" ;}" % (c .name , m .name )
394361 print
395362 print " public boolean hasContent() { return %s; }" % (trueOrFalse (m .hasContent ))
396-
397363 print
398364 print " public Object visit(MethodVisitor visitor) throws IOException"
399365 print " { return visitor.visit(this); }"
400-
366+
401367 def trueOrFalse (truthVal ):
402368 if truthVal :
403369 return "true"
404370 else :
405371 return "false"
406372
407373 def argument_debug_string ():
374+ appendList = [ "%s=\" )\n .append(this.%s)\n .append(\" "
375+ % (a .name , java_field_name (a .name ))
376+ for a in m .arguments ]
408377 print
409378 print " public void appendArgumentDebugStringTo(StringBuffer acc) {"
410- print " acc.append(\" (\" );"
411- for index , a in enumerate (m .arguments ):
412- print " acc.append(\" %s=\" );" % (a .name )
413- print " acc.append(this.%s);" % (java_field_name (a .name ))
414- if not index == len (m .arguments ) - 1 :
415- print " acc.append(\" ,\" );"
416- print " acc.append(\" )\" );"
417- print " }"
418-
419- def read_arguments ():
420- print
421- print " public void readArgumentsFrom(MethodArgumentReader reader)"
422- print " throws IOException"
423- print " {"
424- for a in m .arguments :
425- print " this.%s = reader.read%s();" % (java_field_name (a .name ), java_class_name (spec .resolveDomain (a .domain )))
379+ print " acc.append(\" (%s)\" );" % ", " .join (appendList )
426380 print " }"
427381
428382 def write_arguments ():
@@ -441,17 +395,15 @@ def write_arguments():
441395 print " implements com.rabbitmq.client.AMQP.%s.%s" % (java_class_name (c .name ), java_class_name (m .name ))
442396 print " {"
443397 print " public static final int INDEX = %s;" % (m .index )
444- if m .arguments :
445- print
446- for a in m .arguments :
447- print " public %s %s;" % (java_field_type (spec , a .domain ), java_field_name (a .name ))
398+ print
399+ for a in m .arguments :
400+ print " private final %s %s;" % (java_field_type (spec , a .domain ), java_field_name (a .name ))
448401
449402 getters ()
450403 constructors ()
451404 others ()
452405
453406 argument_debug_string ()
454- read_arguments ()
455407 write_arguments ()
456408
457409 print " }"
0 commit comments