@@ -504,9 +504,29 @@ def generate_builder(self, namespace, route, rtype, ret, outer):
504504 out = self .emit
505505 method_name = camelcase (route .name )
506506 exc_name = classname (route .name + '_exception' )
507- self .generate_doc ('The builder object for {@link #%s}' % method_name )
508507 builder_name = classname (method_name + 'Builder' )
509- out ('public final class %s' % builder_name )
508+ style = route .attrs .get ('style' , 'rpc' )
509+ if style == 'upload' :
510+ self .generate_doc (
511+ 'The {@link com.dropbox.core.v2.DbxUploadStyleBuilder} '
512+ 'returned by {@link #%s}.' % builder_name )
513+ result_name = maptype (namespace , route .response_data_type )
514+ error_name = maptype (namespace , route .error_data_type )
515+ resname = 'Object' if result_name == 'void' else result_name
516+ errname = 'Object' if error_name == 'void' else error_name
517+ out ('public final class %s extends DbxUploadStyleBuilder<%s,%s,%s>' %
518+ (builder_name , resname , errname , exc_name ))
519+ elif style == 'download' :
520+ self .generate_doc (
521+ 'The {@link com.dropbox.core.v2.DbxDownloadStyleBuilder} '
522+ 'returned by {@link #%s}.' % builder_name )
523+ result_name = maptype (namespace , route .response_data_type )
524+ resname = 'Object' if result_name == 'void' else result_name
525+ out ('public final class %s extends DbxDownloadStyleBuilder<%s>' %
526+ (builder_name , resname ))
527+ else :
528+ self .generate_doc ('The builder object returned by {@link #%s}' % builder_name )
529+ out ('public final class %s' % builder_name )
510530 with self .block ():
511531 # Generate a field for every argument.
512532 all_args = [
@@ -538,8 +558,8 @@ def generate_builder(self, namespace, route, rtype, ret, outer):
538558 with self .block ():
539559 out ('this.%s = %s;' % (arg_name , arg_name ))
540560 out ('return this;' )
541- # Create a run () method to use the builder.
542- out ('public %s run () throws %s, DbxException' % (rtype , exc_name ))
561+ # Create a start () method to use the builder.
562+ out ('public %s start () throws %s, DbxException' % (rtype , exc_name ))
543563 with self .block ():
544564 packed_class = maptype (namespace , route .request_data_type )
545565 prefix = '%s.this.' % outer
@@ -562,22 +582,24 @@ def generate_route_stuff(self, namespace, route, outer):
562582 if style == 'upload' :
563583 rtype = classname (route .name + '_uploader' )
564584 ret = 'return '
585+ self .generate_builder (namespace , route , rtype , ret , outer )
565586 elif style == 'download' :
566587 rtype = 'com.dropbox.core.DbxDownloader<%s>' % result_name
567588 ret = 'return '
589+ self .generate_builder (namespace , route , rtype , ret , outer )
568590 else :
569591 rtype = result_name
570592 ret = '' if rtype == 'void' else 'return '
571- # Generate a shortcut with required args.
572- self .generate_unpacked_method (namespace , route , rtype , ret , required_only = True )
573- # Generate a builder if there are two or more optional args.
574- # If there's only 1 optional argument then we might as well
575- # just offer two overloaded methods.
576- n_optional = len (route .request_data_type .all_optional_fields )
577- if n_optional == 1 :
578- self .generate_unpacked_method (namespace , route , rtype , ret )
579- elif n_optional > 1 :
580- self .generate_builder (namespace , route , rtype , ret , outer )
593+ # Generate a shortcut with required args.
594+ self .generate_unpacked_method (namespace , route , rtype , ret , required_only = True )
595+ # Generate a builder if there are two or more optional args.
596+ # If there's only 1 optional argument then we might as well
597+ # just offer two overloaded methods.
598+ n_optional = len (route .request_data_type .all_optional_fields )
599+ if n_optional == 1 :
600+ self .generate_unpacked_method (namespace , route , rtype , ret )
601+ elif n_optional > 1 :
602+ self .generate_builder (namespace , route , rtype , ret , outer )
581603
582604 def generate_field_assignment (self , namespace , field ):
583605 out = self .emit
0 commit comments