| //:: import os |
| //:: for prop in msg.interface.members: |
| //:: getter_template_file_name = "%s/custom/%s_%s.java" % (template_dir, msg.name if not builder else msg.name + '.Builder', prop.getter_name) |
| //:: if os.path.exists(getter_template_file_name): |
| //:: include(getter_template_file_name, msg=msg, builder=builder, has_parent=has_parent) |
| |
| //:: else: |
| @Override |
| public ${prop.java_type.public_type} ${prop.getter_name}()${ "" if prop in msg.members else "throws UnsupportedOperationException"} { |
| //:: if prop in msg.members: |
| //:: version_prop = msg.get_member(prop.name) |
| //:: if version_prop.is_fixed_value: |
| return ${version_prop.enum_value}; |
| //:: elif version_prop.is_length_value: |
| // FIXME: Hacky and inperformant way to determine a message length. Should be replaced with something better |
| ChannelBuffer c = new LengthCountingPseudoChannelBuffer(); |
| WRITER.write(c, ${ "this" if not builder else "({0}) this.getMessage()".format(msg.name) }); |
| return c.writerIndex(); |
| //:: else: |
| return ${version_prop.name}; |
| //:: #endif |
| //:: else: |
| throw new UnsupportedOperationException("Property ${prop.name} not supported in version #{version}"); |
| //:: #endif |
| } |
| //:: #endif |
| |
| //:: if generate_setters and prop.is_writeable: |
| //:: setter_template_file_name = "%s/custom/%s_%s.java" % (template_dir, msg.name if not builder else msg.name + '.Builder', prop.setter_name) |
| //:: if os.path.exists(setter_template_file_name): |
| //:: include(setter_template_file_name, msg=msg, builder=builder, has_parent=has_parent) |
| |
| //:: else: |
| @Override |
| public ${msg.interface.name}.Builder ${prop.setter_name}(${prop.java_type.public_type} ${prop.name})${ "" if prop in msg.members else " throws UnsupportedOperationException"} { |
| //:: if prop in msg.members: |
| this.${prop.name} = ${prop.name}; |
| this.${prop.name}Set = true; |
| return this; |
| //:: else: |
| throw new UnsupportedOperationException("Property ${prop.name} not supported in version #{version}"); |
| //:: #endif |
| } |
| //:: #endif |
| //:: #endif |
| //:: #endfor |