blob: b0b3b76c4d98ebe300f82ab2701e2a0bd4144904 [file] [log] [blame]
Yotam Harcholf25e8142013-09-09 14:30:13 -07001//:: import os
2
Andreas Wundsam27303462013-07-16 12:52:35 -07003//:: for prop in msg.interface.members:
Yotam Harcholf25e8142013-09-09 14:30:13 -07004
5//:: getter_template_file_name = "%s/custom/%s_%s.java" % (template_dir, msg.name if not builder else msg.name + '.Builder', prop.getter_name)
6//:: if os.path.exists(getter_template_file_name):
7//:: include(getter_template_file_name, msg=msg, builder=builder, has_parent=has_parent)
8//:: else:
9
Andreas Wundsam27303462013-07-16 12:52:35 -070010 @Override
Andreas Wundsam99e931d2013-08-22 07:53:53 -070011 public ${prop.java_type.public_type} ${prop.getter_name}()${ "" if prop in msg.members else "throws UnsupportedOperationException"} {
Andreas Wundsam27303462013-07-16 12:52:35 -070012//:: if prop in msg.members:
13//:: version_prop = msg.get_member(prop.name)
14//:: if version_prop.is_fixed_value:
15 return ${version_prop.enum_value};
16//:: elif version_prop.is_length_value:
17 // FIXME: Hacky and inperformant way to determine a message length. Should be replaced with something better
18 ChannelBuffer c = new LengthCountingPseudoChannelBuffer();
19 WRITER.write(c, ${ "this" if not builder else "({0}) this.getMessage()".format(msg.name) });
20 return c.writerIndex();
21//:: else:
22 return ${version_prop.name};
23//:: #endif
24//:: else:
25 throw new UnsupportedOperationException("Property ${prop.name} not supported in version #{version}");
26//:: #endif
27 }
Yotam Harcholf25e8142013-09-09 14:30:13 -070028//:: #endif
Andreas Wundsam27303462013-07-16 12:52:35 -070029
30//:: if generate_setters and prop.is_writeable:
Yotam Harcholf25e8142013-09-09 14:30:13 -070031 //:: setter_template_file_name = "%s/custom/%s_%s.java" % (template_dir, msg.name if not builder else msg.name + '.Builder', prop.setter_name)
32 //:: if os.path.exists(setter_template_file_name):
33 //:: include(setter_template_file_name, msg=msg, builder=builder, has_parent=has_parent)
34 //:: else:
Andreas Wundsam27303462013-07-16 12:52:35 -070035 @Override
Andreas Wundsam99e931d2013-08-22 07:53:53 -070036 public ${msg.interface.name}.Builder ${prop.setter_name}(${prop.java_type.public_type} ${prop.name})${ "" if prop in msg.members else " throws UnsupportedOperationException"} {
Yotam Harcholf25e8142013-09-09 14:30:13 -070037 //:: if prop in msg.members:
Andreas Wundsam27303462013-07-16 12:52:35 -070038 this.${prop.name} = ${prop.name};
39 this.${prop.name}Set = true;
40 return this;
Yotam Harcholf25e8142013-09-09 14:30:13 -070041 //:: else:
Andreas Wundsam27303462013-07-16 12:52:35 -070042 throw new UnsupportedOperationException("Property ${prop.name} not supported in version #{version}");
Yotam Harcholf25e8142013-09-09 14:30:13 -070043 //:: #endif
Andreas Wundsam27303462013-07-16 12:52:35 -070044 }
Yotam Harcholf25e8142013-09-09 14:30:13 -070045 //:: #endif
46 //:: #endif
Andreas Wundsam27303462013-07-16 12:52:35 -070047//:: #endfor