LinkedHashMap<String,OptionDescriptor> opts = new LinkedHashMap<String,OptionDescriptor>(); MessageDescriptor rc = new MessageDescriptor(proto, parent); OptionDescriptor optionD; ExtensionsDescriptor extensionsD=null; messages.put(messageD.getName(),messageD); break; case ENUM: rc.setName(name); rc.setFields(fields); rc.setMessages(messages); rc.setEnums(enums); rc.setExtensions(extensionsD); rc.setOptions(opts); {if (true) return rc;} throw new Error("Missing return statement in function");
private boolean isInBaseClass(MessageDescriptor m, FieldDescriptor field) { if( m.getBaseType() ==null ) return false; return m.getBaseType().getFields().containsKey(field.getName()); }
public void validate(List<String> errors) { String baseName = getOption(getOptions(), "base_type", null); if( baseName!=null ) { if( baseType==null ) { baseType = (MessageDescriptor) getType(baseName); baseType = (MessageDescriptor) getProtoDescriptor().getType(baseName); HashSet<String> baseFieldNames = new HashSet<String>(baseType.getFields().keySet()); baseFieldNames.removeAll(getFields().keySet()); errors.add("base_type "+baseName+" field "+fieldName+" not defined in "+getName()); o.validate(errors);
public TypeDescriptor getType(String t) { for (MessageDescriptor o : messages.values()) { if( t.equals(o.getName()) ) { return o; } if( t.startsWith(o.getName()+".") ) { return o.getType( t.substring(o.getName().length()+1) ); } } for (EnumDescriptor o : enums.values()) { if( t.equals(o.getName()) ) { return o; } } return null; }
private void generateMessageBean(MessageDescriptor m) { String className = uCamel(m.getName()); p(); if( multipleFiles && m.getParent()==null ) { staticOption=""; String javaImplements = getOption(m.getOptions(), "java_implments", null); baseClass = "org.apache.activemq.protobuf.DeferredDecodeMessage"; if( m.getBaseType()!=null ) { baseClass = javaType(m.getBaseType())+"Base"; for (EnumDescriptor enumType : m.getEnums().values()) { generateEnum(enumType); for (MessageDescriptor subMessage : m.getMessages().values()) { generateMessageBean(subMessage); for (FieldDescriptor field : m.getFields().values()) { if( isInBaseClass(m, field) ) { continue; for (FieldDescriptor field : m.getFields().values()) { if( isInBaseClass(m, field) ) { continue;
String className = uCamel(m.getName()); String beanClassName = className+"Bean"; String bufferClassName = className+"Buffer"; if( multipleFiles && m.getParent()==null ) { staticOption=""; for (EnumFieldDescriptor enumFeild : m.getAssociatedEnumFieldDescriptors()) { String name = uCamel(enumFeild.getParent().getName()); name = name+"."+name+"Creatable"; for (EnumDescriptor enumType : m.getEnums().values()) { generateEnum(enumType); for (MessageDescriptor subMessage : m.getMessages().values()) { generateMessageBean(subMessage); for (FieldDescriptor field : m.getFields().values()) { if( field.isGroup() ) { generateMessageBean(field.getGroup()); for (FieldDescriptor field : m.getFields().values()) { generateFieldGetterSignatures(field); for (FieldDescriptor field : m.getFields().values()) { generateFieldAccessor(beanClassName, field); for (EnumFieldDescriptor enumFeild : m.getAssociatedEnumFieldDescriptors()) { String enumName = uCamel(enumFeild.getParent().getName());
private void generateMethodType(MessageDescriptor m, String className) { String typeEnum = getOption(m.getOptions(), "java_type_method", null); if( typeEnum!=null ) { TypeDescriptor typeDescriptor = m.getType(typeEnum); if( typeDescriptor == null ) { typeDescriptor = m.getProtoDescriptor().getType(typeEnum); errors.add("The java_type_method option on the "+m.getName()+" message does not point to valid enum type"); return; EnumDescriptor enumDescriptor = (EnumDescriptor)typeDescriptor; if( enumDescriptor.getFields().get(constant) == null ) { errors.add("The java_type_method option on the "+m.getName()+" message does not points to the "+typeEnum+" enum but it does not have an entry for "+constant);
/** * @param m */ private void generateMethodClear(MessageDescriptor m) { p("public void clear() {"); indent(); for (FieldDescriptor field : m.getFields().values()) { String uname = uCamel(field.getName()); p("clear" + uname + "();"); } unindent(); p("}"); p(); }
FieldDescriptor fieldD; FieldDescriptor rc = new FieldDescriptor(parent); MessageDescriptor group = new MessageDescriptor(parent.getProtoDescriptor(), parent); rule = Rule(); if (jj_2_1(5)) { group.setName(name); group.setFields(fields); rc.setGroup(group); break;
final public MessageDescriptor ExtendDescriptor(ProtoDescriptor proto, MessageDescriptor parent) throws ParseException { String name; LinkedHashMap<String, FieldDescriptor> fields = new LinkedHashMap<String,FieldDescriptor>(); MessageDescriptor rc = new MessageDescriptor(proto, parent); FieldDescriptor fieldD; jj_consume_token(EXTEND); name = ID(); jj_consume_token(LBRACE); label_6: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case REQURIED: case OPTIONAL: case REPEATED: ; break; default: jj_la1[17] = jj_gen; break label_6; } fieldD = FieldDescriptor(rc); fields.put(fieldD.getName(), fieldD); } jj_consume_token(RBRACE); rc.setName(name); rc.setFields(fields); {if (true) return rc;} throw new Error("Missing return statement in function"); }
String className = uCamel(o.getName()); writeFile(className, new Closure(){ public void execute() throws CompilerException {
String javaVisitor = getOption(m.getOptions(), "java_visitor", null); if( javaVisitor!=null ) { String returns = "void";
private void generateMessageBean(MessageDescriptor m) { String className = uCamel(m.getName()); p(); if( multipleFiles && m.getParent()==null ) { staticOption=""; String javaImplements = getOption(m.getOptions(), "java_implments", null); baseClass = "org.apache.activemq.protobuf.DeferredDecodeMessage"; if( m.getBaseType()!=null ) { baseClass = javaType(m.getBaseType())+"Base"; for (EnumDescriptor enumType : m.getEnums().values()) { generateEnum(enumType); for (MessageDescriptor subMessage : m.getMessages().values()) { generateMessageBean(subMessage); for (FieldDescriptor field : m.getFields().values()) { if( isInBaseClass(m, field) ) { continue; for (FieldDescriptor field : m.getFields().values()) { if( isInBaseClass(m, field) ) { continue;
String className = uCamel(m.getName()); String beanClassName = className+"Bean"; String bufferClassName = className+"Buffer"; if( multipleFiles && m.getParent()==null ) { staticOption=""; for (EnumFieldDescriptor enumFeild : m.getAssociatedEnumFieldDescriptors()) { String name = uCamel(enumFeild.getParent().getName()); name = name+"."+name+"Creatable"; for (EnumDescriptor enumType : m.getEnums().values()) { generateEnum(enumType); for (MessageDescriptor subMessage : m.getMessages().values()) { generateMessageBean(subMessage); for (FieldDescriptor field : m.getFields().values()) { if( field.isGroup() ) { generateMessageBean(field.getGroup()); for (FieldDescriptor field : m.getFields().values()) { generateFieldGetterSignatures(field); for (FieldDescriptor field : m.getFields().values()) { generateFieldAccessor(beanClassName, field); for (EnumFieldDescriptor enumFeild : m.getAssociatedEnumFieldDescriptors()) { String enumName = uCamel(enumFeild.getParent().getName());
private void generateMethodType(MessageDescriptor m, String className) { String typeEnum = getOption(m.getOptions(), "java_type_method", null); if( typeEnum!=null ) { TypeDescriptor typeDescriptor = m.getType(typeEnum); if( typeDescriptor == null ) { typeDescriptor = m.getProtoDescriptor().getType(typeEnum); errors.add("The java_type_method option on the "+m.getName()+" message does not point to valid enum type"); return; EnumDescriptor enumDescriptor = (EnumDescriptor)typeDescriptor; if( enumDescriptor.getFields().get(constant) == null ) { errors.add("The java_type_method option on the "+m.getName()+" message does not points to the "+typeEnum+" enum but it does not have an entry for "+constant);
/** * @param m */ private void generateMethodClear(MessageDescriptor m) { p("public void clear() {"); indent(); for (FieldDescriptor field : m.getFields().values()) { String uname = uCamel(field.getName()); p("clear" + uname + "();"); } unindent(); p("}"); p(); }
FieldDescriptor fieldD; FieldDescriptor rc = new FieldDescriptor(parent); MessageDescriptor group = new MessageDescriptor(parent.getProtoDescriptor(), parent); rule = Rule(); if (jj_2_1(5)) { group.setName(name); group.setFields(fields); rc.setGroup(group); break;
final public MessageDescriptor ExtendDescriptor(ProtoDescriptor proto, MessageDescriptor parent) throws ParseException { String name; LinkedHashMap<String, FieldDescriptor> fields = new LinkedHashMap<String,FieldDescriptor>(); MessageDescriptor rc = new MessageDescriptor(proto, parent); FieldDescriptor fieldD; jj_consume_token(EXTEND); name = ID(); jj_consume_token(LBRACE); label_6: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case REQURIED: case OPTIONAL: case REPEATED: ; break; default: jj_la1[17] = jj_gen; break label_6; } fieldD = FieldDescriptor(rc); fields.put(fieldD.getName(), fieldD); } jj_consume_token(RBRACE); rc.setName(name); rc.setFields(fields); {if (true) return rc;} throw new Error("Missing return statement in function"); }
public TypeDescriptor getType(String t) { for (MessageDescriptor o : messages.values()) { if( t.equals(o.getName()) ) { return o; } if( t.startsWith(o.getName()+".") ) { return o.getType( t.substring(o.getName().length()+1) ); } } for (EnumDescriptor o : enums.values()) { if( t.equals(o.getName()) ) { return o; } } return null; }
String className = uCamel(o.getName()); writeFile(className, new Closure(){ public void execute() throws CompilerException {