public Message getMessageFromCanonicaName(String messageCanonicalName) { for (Message message : proto.getMessages()) { if (message.getCanonicalName().equals(messageCanonicalName)) { return message; } } return null; }
protected String generateCacheKey(Message message, JavaType javaType) { return message.getCanonicalName() + ":" + javaType.toCanonical(); }
private void addImports(Proto proto) { imports.add(proto.getFilename()); for (Message message : proto.getMessages()) { messages.add(message.getCanonicalName()); } }
public static boolean isAnyField(Field protoField) { return protoField.getType().getCanonicalName().equals(ProtoConst.ANY.getCanonicalName()); }
private SchemaWriter<Object> createEntryWriter(String actualTypeName, Object _value) { Message message = protoMapper.getProto().getMessage(actualTypeName); if (message == null) { // not standard, protobuf can not support or not define this type , just extend return this::jsonExtend; } // standard pack RootSerializer valueSerializer = protoMapper.createRootSerializer(message, _value.getClass()); String valueCanonicalName = message.getCanonicalName(); return (output, value) -> { standardPack(output, value, valueCanonicalName, valueSerializer); }; }
private void fillRequestType(Operation operation, ProtoMethod protoMethod) { List<Parameter> parameters = operation.getParameters(); if (parameters.isEmpty()) { addImports(ProtoConst.EMPTY_PROTO); protoMethod.setArgTypeName(ProtoConst.EMPTY.getCanonicalName()); return; } if (parameters.size() == 1) { String type = convertSwaggerType(parameters.get(0)); if (messages.contains(type)) { protoMethod.setArgTypeName(type); return; } } String wrapName = StringUtils.capitalize(operation.getOperationId()) + "RequestWrap"; createWrapArgs(wrapName, parameters); protoMethod.setArgTypeName(wrapName); }
private void createFieldMap() { DeserializerSchemaManager deserializerSchemaManager = protoMapper.getDeserializerSchemaManager(); BeanDescriptor beanDescriptor = protoMapper.getBeanDescriptorManager().getOrCreateBeanDescriptor(javaType); List<FieldSchema<T>> fieldSchemas = new ArrayList<>(); for (PropertyDescriptor propertyDescriptor : beanDescriptor.getPropertyDescriptors().values()) { Field protoField = message.getField(propertyDescriptor.getName()); if (protoField == null) { LOGGER.info("java field {}:{} not exist in proto message {}, ignore it.", beanDescriptor.getJavaType().getRawClass().getName(), propertyDescriptor.getName(), message.getCanonicalName()); continue; } if (propertyDescriptor.getSetter() == null) { LOGGER.info("no setter for java field {}:{} in proto message {}, ignore it.", beanDescriptor.getJavaType().getRawClass().getName(), propertyDescriptor.getName(), message.getCanonicalName()); continue; } FieldSchema<T> fieldSchema = deserializerSchemaManager.createSchemaField(protoField, propertyDescriptor); fieldSchemas.add(fieldSchema); } this.fieldMap = FieldMapEx.createFieldMap(fieldSchemas); }
return ProtoConst.EMPTY.getCanonicalName(); return ProtoConst.ANY.getCanonicalName();
@Override public String messageFullName() { return message.getCanonicalName(); }
public Message getMessageFromCanonicaName(String messageCanonicalName) { for (Message message : proto.getMessages()) { if (message.getCanonicalName().equals(messageCanonicalName)) { return message; } } return null; }
private void addImports(Proto proto) { imports.add(proto.getFilename()); for (Message message : proto.getMessages()) { messages.add(message.getCanonicalName()); } }
protected boolean isAnyField(Field protoField, boolean repeated) { return !repeated && protoField.getType().getCanonicalName().equals(ProtoConst.ANY.getCanonicalName()); }
protected void buildSchemas() { SchemaCreateContext context = new SchemaCreateContext(); for (Message message : proto.getMessages()) { RootSerializer rootSerializer = createRootSerializer(context, message); schemas.put(message.getName(), rootSerializer); canonicalSchemas.put(message.getCanonicalName(), rootSerializer); } }
private void fillRequestType(Operation operation, ProtoMethod protoMethod) { List<Parameter> parameters = operation.getParameters(); if (parameters.isEmpty()) { addImports(ProtoConst.EMPTY_PROTO); protoMethod.setArgTypeName(ProtoConst.EMPTY.getCanonicalName()); return; } if (parameters.size() == 1) { String type = convertSwaggerType(parameters.get(0)); if (messages.contains(type)) { protoMethod.setArgTypeName(type); return; } } String wrapName = operation.getOperationId() + "RequestWrap"; createWrapArgs(wrapName, parameters); protoMethod.setArgWrapped(true); protoMethod.setArgTypeName(wrapName); }
protected void standardPack(Output output, Object message, RootSerializer actualValueSerializer) throws IOException { output.writeString(1, ProtoConst.PACK_SCHEMA + actualValueSerializer.getSchema().getMessage().getCanonicalName(), false); byte[] bytes = actualValueSerializer.serialize(message); output.writeByteArray(2, bytes, false); }
private List<JsonTreeNode> processContainer(UserTypeContainer proto) { List<JsonTreeNode> result = new ArrayList<>(); proto.getEnums() .forEach(anEnum -> result.add(ImmutableJsonTreeNode.builder() .label(anEnum.getName()) .data(ImmutableNodeData.builder() .type(NodeType.ENUM) .ref(anEnum.getCanonicalName()) .build()) .build())); proto.getMessages().stream() .filter(message -> !message.isMapEntry()) .forEach(message -> { ImmutableJsonTreeNode.Builder builder = ImmutableJsonTreeNode.builder(); builder.label(message.getName()); builder.data(ImmutableNodeData.builder() .type(NodeType.MESSAGE) .ref(message.getCanonicalName()) .build()); List<JsonTreeNode> children = processContainer(message); if (!children.isEmpty()) { builder.children(children); } result.add(builder.build()); }); return result; } }
private List<JsonTreeNode> processContainer(UserTypeContainer proto) { List<JsonTreeNode> result = new ArrayList<>(); proto.getEnums() .forEach(anEnum -> result.add(ImmutableJsonTreeNode.builder() .label(anEnum.getName()) .data(ImmutableNodeData.builder() .type(NodeType.ENUM) .ref(anEnum.getCanonicalName()) .build()) .build())); proto.getMessages().stream() .filter(message -> !message.isMapEntry()) .forEach(message -> { ImmutableJsonTreeNode.Builder builder = ImmutableJsonTreeNode.builder(); builder.label(message.getName()); builder.data(ImmutableNodeData.builder() .type(NodeType.MESSAGE) .ref(message.getCanonicalName()) .build()); List<JsonTreeNode> children = processContainer(message); if (!children.isEmpty()) { builder.children(children); } result.add(builder.build()); }); return result; } }
private void process(Module module, Service service) { ImmutableServiceDescriptor descriptor = ImmutableServiceDescriptor.builder() .type(NodeType.SERVICE) .name(service.getName()) .canonicalName(service.getCanonicalName()) .description(markdownProcessor.toHtml(service.getComments())) .options(service.getOptions().toMap()) .addAllMethods(service.getMethods().stream() .map(method -> ImmutableServiceMethod.builder() .name(method.getName()) .argTypeId(method.getArgType().getCanonicalName()) .argStream(method.isArgStream()) .returnTypeId(method.getReturnType().getCanonicalName()) .returnStream(method.isReturnStream()) .description(markdownProcessor.toHtml(method.getComments())) .options(method.getOptions().toMap()) .build()) .collect(Collectors.toList())) .build(); String output = "data/type/" + service.getCanonicalName() + ".json"; write(module, output, descriptor); }
private void process(Module module, Service service) { ImmutableServiceDescriptor descriptor = ImmutableServiceDescriptor.builder() .type(NodeType.SERVICE) .name(service.getName()) .canonicalName(service.getCanonicalName()) .description(markdownProcessor.toHtml(service.getComments())) .options(service.getOptions().toMap()) .addAllMethods(service.getMethods().stream() .map(method -> ImmutableServiceMethod.builder() .name(method.getName()) .argTypeId(method.getArgType().getCanonicalName()) .argStream(method.isArgStream()) .returnTypeId(method.getReturnType().getCanonicalName()) .returnStream(method.isReturnStream()) .description(markdownProcessor.toHtml(method.getComments())) .options(method.getOptions().toMap()) .build()) .collect(Collectors.toList())) .build(); String output = "data/type/" + service.getCanonicalName() + ".json"; write(module, output, descriptor); }
.type(NodeType.MESSAGE) .name(message.getName()) .canonicalName(message.getCanonicalName()) .description(markdownProcessor.toHtml(message.getComments())) .options(message.getOptions().toMap()) .collect(Collectors.toList())) .build(); String output = "data/type/" + message.getCanonicalName() + ".json"; write(module, output, descriptor);