use of com.squareup.wire.Syntax in project apicurio-registry by Apicurio.
the class FileDescriptorUtils method toFileDescriptorProto.
private static FileDescriptorProto toFileDescriptorProto(String schemaDefinition, String protoFileName, Optional<String> optionalPackageName) {
final ProtobufSchemaLoader.ProtobufSchemaLoaderContext protobufSchemaLoaderContext;
try {
protobufSchemaLoaderContext = ProtobufSchemaLoader.loadSchema(optionalPackageName, protoFileName, schemaDefinition);
} catch (Exception e) {
throw new RuntimeException(e);
}
FileDescriptorProto.Builder schema = FileDescriptorProto.newBuilder();
ProtoFile element = protobufSchemaLoaderContext.getProtoFile();
Schema schemaContext = protobufSchemaLoaderContext.getSchema();
schema.setName(protoFileName);
Syntax syntax = element.getSyntax();
if (Syntax.PROTO_3.equals(syntax)) {
schema.setSyntax(syntax.toString());
}
if (element.getPackageName() != null) {
schema.setPackage(element.getPackageName());
}
for (ProtoType protoType : schemaContext.getTypes()) {
if (!isParentLevelType(protoType, optionalPackageName)) {
continue;
}
Type type = schemaContext.getType(protoType);
if (type instanceof MessageType) {
DescriptorProto message = messageElementToDescriptorProto((MessageType) type, schemaContext, element);
schema.addMessageType(message);
} else if (type instanceof EnumType) {
EnumDescriptorProto message = enumElementToProto((EnumType) type);
schema.addEnumType(message);
}
}
for (Service service : element.getServices()) {
ServiceDescriptorProto serviceDescriptorProto = serviceElementToProto(service);
schema.addService(serviceDescriptorProto);
}
// dependencies on protobuf default types are always added
for (String ref : element.getImports()) {
schema.addDependency(ref);
}
for (String ref : element.getPublicImports()) {
boolean add = true;
for (int i = 0; i < schema.getDependencyCount(); i++) {
if (schema.getDependency(i).equals(ref)) {
schema.addPublicDependency(i);
add = false;
}
}
if (add) {
schema.addDependency(ref);
schema.addPublicDependency(schema.getDependencyCount() - 1);
}
}
String javaPackageName = findOptionString(JAVA_PACKAGE_OPTION, element.getOptions());
if (javaPackageName != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setJavaPackage(javaPackageName).build();
schema.mergeOptions(options);
}
String javaOuterClassname = findOptionString(JAVA_OUTER_CLASSNAME_OPTION, element.getOptions());
if (javaOuterClassname != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setJavaOuterClassname(javaOuterClassname).build();
schema.mergeOptions(options);
}
Boolean javaMultipleFiles = findOptionBoolean(JAVA_MULTIPLE_FILES_OPTION, element.getOptions());
if (javaMultipleFiles != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setJavaMultipleFiles(javaMultipleFiles).build();
schema.mergeOptions(options);
}
Boolean javaStringCheckUtf8 = findOptionBoolean(JAVA_STRING_CHECK_UTF8_OPTION, element.getOptions());
if (javaStringCheckUtf8 != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setJavaStringCheckUtf8(javaStringCheckUtf8).build();
schema.mergeOptions(options);
}
Boolean javaGenericServices = findOptionBoolean(JAVA_GENERIC_SERVICES_OPTION, element.getOptions());
if (javaGenericServices != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setJavaGenericServices(javaGenericServices).build();
schema.mergeOptions(options);
}
Boolean ccGenericServices = findOptionBoolean(CC_GENERIC_SERVICES_OPTION, element.getOptions());
if (ccGenericServices != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setCcGenericServices(ccGenericServices).build();
schema.mergeOptions(options);
}
Boolean ccEnableArenas = findOptionBoolean(CC_ENABLE_ARENAS_OPTION, element.getOptions());
if (ccEnableArenas != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setCcEnableArenas(ccEnableArenas).build();
schema.mergeOptions(options);
}
String csharpNamespace = findOptionString(CSHARP_NAMESPACE_OPTION, element.getOptions());
if (csharpNamespace != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setCsharpNamespace(csharpNamespace).build();
schema.mergeOptions(options);
}
String goPackageName = findOptionString(GO_PACKAGE_OPTION, element.getOptions());
if (goPackageName != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setGoPackage(goPackageName).build();
schema.mergeOptions(options);
}
String objcClassPrefix = findOptionString(OBJC_CLASS_PREFIX_OPTION, element.getOptions());
if (objcClassPrefix != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setObjcClassPrefix(objcClassPrefix).build();
schema.mergeOptions(options);
}
Boolean phpGenericServices = findOptionBoolean(PHP_GENERIC_SERVICES_OPTION, element.getOptions());
if (phpGenericServices != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setPhpGenericServices(phpGenericServices).build();
schema.mergeOptions(options);
}
String phpClassPrefix = findOptionString(PHP_CLASS_PREFIX_OPTION, element.getOptions());
if (phpClassPrefix != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setPhpClassPrefix(phpClassPrefix).build();
schema.mergeOptions(options);
}
String phpMetadataNamespace = findOptionString(PHP_METADATA_NAMESPACE_OPTION, element.getOptions());
if (phpMetadataNamespace != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setPhpMetadataNamespace(phpMetadataNamespace).build();
schema.mergeOptions(options);
}
String phpNamespace = findOptionString(PHP_NAMESPACE_OPTION, element.getOptions());
if (phpNamespace != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setPhpNamespace(phpNamespace).build();
schema.mergeOptions(options);
}
Boolean pyGenericServices = findOptionBoolean(PY_GENERIC_SERVICES_OPTION, element.getOptions());
if (pyGenericServices != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setPyGenericServices(pyGenericServices).build();
schema.mergeOptions(options);
}
String rubyPackage = findOptionString(RUBY_PACKAGE_OPTION, element.getOptions());
if (rubyPackage != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setRubyPackage(rubyPackage).build();
schema.mergeOptions(options);
}
String swiftPrefix = findOptionString(SWIFT_PREFIX_OPTION, element.getOptions());
if (swiftPrefix != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setSwiftPrefix(swiftPrefix).build();
schema.mergeOptions(options);
}
FileOptions.OptimizeMode optimizeFor = findOption(OPTIMIZE_FOR_OPTION, element.getOptions()).map(o -> FileOptions.OptimizeMode.valueOf(o.getValue().toString())).orElse(null);
if (optimizeFor != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setOptimizeFor(optimizeFor).build();
schema.mergeOptions(options);
}
return schema.build();
}
use of com.squareup.wire.Syntax in project apicurio-registry by Apicurio.
the class FileDescriptorUtils method fileDescriptorToProtoFile.
public static ProtoFileElement fileDescriptorToProtoFile(FileDescriptorProto file) {
String packageName = file.getPackage();
if ("".equals(packageName)) {
packageName = null;
}
Syntax syntax = null;
switch(file.getSyntax()) {
case PROTO2:
syntax = Syntax.PROTO_2;
break;
case PROTO3:
syntax = Syntax.PROTO_3;
break;
default:
break;
}
ImmutableList.Builder<TypeElement> types = ImmutableList.builder();
for (DescriptorProto md : file.getMessageTypeList()) {
MessageElement message = toMessage(file, md);
types.add(message);
}
for (EnumDescriptorProto ed : file.getEnumTypeList()) {
EnumElement enumer = toEnum(ed);
types.add(enumer);
}
ImmutableList.Builder<ServiceElement> services = ImmutableList.builder();
for (ServiceDescriptorProto sv : file.getServiceList()) {
ServiceElement service = toService(sv);
services.add(service);
}
ImmutableList.Builder<String> imports = ImmutableList.builder();
ImmutableList.Builder<String> publicImports = ImmutableList.builder();
List<String> dependencyList = file.getDependencyList();
Set<Integer> publicDependencyList = new HashSet<>(file.getPublicDependencyList());
for (int i = 0; i < dependencyList.size(); i++) {
String depName = dependencyList.get(i);
if (publicDependencyList.contains(i)) {
publicImports.add(depName);
} else {
imports.add(depName);
}
}
ImmutableList.Builder<OptionElement> options = ImmutableList.builder();
if (file.getOptions().hasJavaPackage()) {
OptionElement option = new OptionElement(JAVA_PACKAGE_OPTION, stringKind, file.getOptions().getJavaPackage(), false);
options.add(option);
}
if (file.getOptions().hasJavaOuterClassname()) {
OptionElement option = new OptionElement(JAVA_OUTER_CLASSNAME_OPTION, stringKind, file.getOptions().getJavaOuterClassname(), false);
options.add(option);
}
if (file.getOptions().hasJavaMultipleFiles()) {
OptionElement option = new OptionElement(JAVA_MULTIPLE_FILES_OPTION, booleanKind, file.getOptions().getJavaMultipleFiles(), false);
options.add(option);
}
if (file.getOptions().hasJavaGenericServices()) {
OptionElement option = new OptionElement(JAVA_GENERIC_SERVICES_OPTION, booleanKind, file.getOptions().getJavaGenericServices(), false);
options.add(option);
}
if (file.getOptions().hasJavaStringCheckUtf8()) {
OptionElement option = new OptionElement(JAVA_STRING_CHECK_UTF8_OPTION, booleanKind, file.getOptions().getJavaStringCheckUtf8(), false);
options.add(option);
}
if (file.getOptions().hasCcGenericServices()) {
OptionElement option = new OptionElement(CC_GENERIC_SERVICES_OPTION, booleanKind, file.getOptions().getCcGenericServices(), false);
options.add(option);
}
if (file.getOptions().hasCcEnableArenas()) {
OptionElement option = new OptionElement(CC_ENABLE_ARENAS_OPTION, booleanKind, file.getOptions().getCcEnableArenas(), false);
options.add(option);
}
if (file.getOptions().hasCsharpNamespace()) {
OptionElement option = new OptionElement(CSHARP_NAMESPACE_OPTION, stringKind, file.getOptions().getCsharpNamespace(), false);
options.add(option);
}
if (file.getOptions().hasGoPackage()) {
OptionElement option = new OptionElement(GO_PACKAGE_OPTION, stringKind, file.getOptions().getGoPackage(), false);
options.add(option);
}
if (file.getOptions().hasObjcClassPrefix()) {
OptionElement option = new OptionElement(OBJC_CLASS_PREFIX_OPTION, stringKind, file.getOptions().getObjcClassPrefix(), false);
options.add(option);
}
if (file.getOptions().hasPhpClassPrefix()) {
OptionElement option = new OptionElement(PHP_CLASS_PREFIX_OPTION, stringKind, file.getOptions().getPhpClassPrefix(), false);
options.add(option);
}
if (file.getOptions().hasPhpGenericServices()) {
OptionElement option = new OptionElement(PHP_GENERIC_SERVICES_OPTION, booleanKind, file.getOptions().getPhpGenericServices(), false);
options.add(option);
}
if (file.getOptions().hasPhpMetadataNamespace()) {
OptionElement option = new OptionElement(PHP_METADATA_NAMESPACE_OPTION, stringKind, file.getOptions().getPhpMetadataNamespace(), false);
options.add(option);
}
if (file.getOptions().hasPhpNamespace()) {
OptionElement option = new OptionElement(PHP_NAMESPACE_OPTION, stringKind, file.getOptions().getPhpNamespace(), false);
options.add(option);
}
if (file.getOptions().hasPyGenericServices()) {
OptionElement option = new OptionElement(PY_GENERIC_SERVICES_OPTION, booleanKind, file.getOptions().getPyGenericServices(), false);
options.add(option);
}
if (file.getOptions().hasRubyPackage()) {
OptionElement option = new OptionElement(RUBY_PACKAGE_OPTION, stringKind, file.getOptions().getRubyPackage(), false);
options.add(option);
}
if (file.getOptions().hasSwiftPrefix()) {
OptionElement option = new OptionElement(SWIFT_PREFIX_OPTION, stringKind, file.getOptions().getSwiftPrefix(), false);
options.add(option);
}
if (file.getOptions().hasOptimizeFor()) {
OptionElement option = new OptionElement(OPTIMIZE_FOR_OPTION, enumKind, file.getOptions().getOptimizeFor(), false);
options.add(option);
}
return new ProtoFileElement(DEFAULT_LOCATION, packageName, syntax, imports.build(), publicImports.build(), types.build(), services.build(), Collections.emptyList(), options.build());
}
use of com.squareup.wire.Syntax in project apicurio-registry by Apicurio.
the class FileDescriptorUtils method toDynamicSchema.
/*
* DynamicSchema is used as a temporary helper class and should not be exposed in the API.
*/
private static DynamicSchema toDynamicSchema(String name, ProtoFileElement rootElem, Map<String, ProtoFileElement> dependencies) {
DynamicSchema.Builder schema = DynamicSchema.newBuilder();
try {
Syntax syntax = rootElem.getSyntax();
if (syntax != null) {
schema.setSyntax(syntax.toString());
}
if (rootElem.getPackageName() != null) {
schema.setPackage(rootElem.getPackageName());
}
for (TypeElement typeElem : rootElem.getTypes()) {
if (typeElem instanceof MessageElement) {
MessageDefinition message = toDynamicMessage((MessageElement) typeElem);
schema.addMessageDefinition(message);
} else if (typeElem instanceof EnumElement) {
EnumDefinition enumer = toDynamicEnum((EnumElement) typeElem);
schema.addEnumDefinition(enumer);
}
}
for (String ref : rootElem.getImports()) {
ProtoFileElement dep = dependencies.get(ref);
if (dep != null) {
schema.addDependency(ref);
schema.addSchema(toDynamicSchema(ref, dep, dependencies));
}
}
for (String ref : rootElem.getPublicImports()) {
ProtoFileElement dep = dependencies.get(ref);
if (dep != null) {
schema.addPublicDependency(ref);
schema.addSchema(toDynamicSchema(ref, dep, dependencies));
}
}
String javaPackageName = findOption("java_package", rootElem.getOptions()).map(o -> o.getValue().toString()).orElse(null);
if (javaPackageName != null) {
schema.setJavaPackage(javaPackageName);
}
String javaOuterClassname = findOption("java_outer_classname", rootElem.getOptions()).map(o -> o.getValue().toString()).orElse(null);
if (javaOuterClassname != null) {
schema.setJavaOuterClassname(javaOuterClassname);
}
Boolean javaMultipleFiles = findOption("java_multiple_files", rootElem.getOptions()).map(o -> Boolean.valueOf(o.getValue().toString())).orElse(null);
if (javaMultipleFiles != null) {
schema.setJavaMultipleFiles(javaMultipleFiles);
}
schema.setName(name);
return schema.build();
} catch (Descriptors.DescriptorValidationException e) {
throw new IllegalStateException(e);
}
}
use of com.squareup.wire.Syntax in project aws-glue-schema-registry by awslabs.
the class FileDescriptorUtils method fileDescriptorToProtoFile.
public static ProtoFileElement fileDescriptorToProtoFile(FileDescriptorProto file) {
String packageName = file.getPackage();
if ("".equals(packageName)) {
packageName = null;
}
Syntax syntax = null;
switch(file.getSyntax()) {
case PROTO2:
syntax = Syntax.PROTO_2;
break;
case PROTO3:
syntax = Syntax.PROTO_3;
break;
default:
break;
}
ImmutableList.Builder<TypeElement> types = ImmutableList.builder();
for (DescriptorProto md : file.getMessageTypeList()) {
MessageElement message = toMessage(file, md);
types.add(message);
}
for (EnumDescriptorProto ed : file.getEnumTypeList()) {
EnumElement enumer = toEnum(ed);
types.add(enumer);
}
ImmutableList.Builder<ServiceElement> services = ImmutableList.builder();
for (ServiceDescriptorProto sv : file.getServiceList()) {
ServiceElement service = toService(sv);
services.add(service);
}
ImmutableList.Builder<String> imports = ImmutableList.builder();
ImmutableList.Builder<String> publicImports = ImmutableList.builder();
List<String> dependencyList = file.getDependencyList();
Set<Integer> publicDependencyList = new HashSet<>(file.getPublicDependencyList());
for (int i = 0; i < dependencyList.size(); i++) {
String depName = dependencyList.get(i);
if (publicDependencyList.contains(i)) {
publicImports.add(depName);
} else {
imports.add(depName);
}
}
ImmutableList.Builder<OptionElement> options = ImmutableList.builder();
if (file.getOptions().hasJavaPackage()) {
OptionElement option = new OptionElement(JAVA_PACKAGE_OPTION, stringKind, file.getOptions().getJavaPackage(), false);
options.add(option);
}
if (file.getOptions().hasJavaOuterClassname()) {
OptionElement option = new OptionElement(JAVA_OUTER_CLASSNAME_OPTION, stringKind, file.getOptions().getJavaOuterClassname(), false);
options.add(option);
}
if (file.getOptions().hasJavaMultipleFiles()) {
OptionElement option = new OptionElement(JAVA_MULTIPLE_FILES_OPTION, booleanKind, file.getOptions().getJavaMultipleFiles(), false);
options.add(option);
}
if (file.getOptions().hasJavaGenericServices()) {
OptionElement option = new OptionElement(JAVA_GENERIC_SERVICES_OPTION, booleanKind, file.getOptions().getJavaGenericServices(), false);
options.add(option);
}
if (file.getOptions().hasJavaStringCheckUtf8()) {
OptionElement option = new OptionElement(JAVA_STRING_CHECK_UTF8_OPTION, booleanKind, file.getOptions().getJavaStringCheckUtf8(), false);
options.add(option);
}
if (file.getOptions().hasCcGenericServices()) {
OptionElement option = new OptionElement(CC_GENERIC_SERVICES_OPTION, booleanKind, file.getOptions().getCcGenericServices(), false);
options.add(option);
}
if (file.getOptions().hasCcEnableArenas()) {
OptionElement option = new OptionElement(CC_ENABLE_ARENAS_OPTION, booleanKind, file.getOptions().getCcEnableArenas(), false);
options.add(option);
}
if (file.getOptions().hasCsharpNamespace()) {
OptionElement option = new OptionElement(CSHARP_NAMESPACE_OPTION, stringKind, file.getOptions().getCsharpNamespace(), false);
options.add(option);
}
if (file.getOptions().hasGoPackage()) {
OptionElement option = new OptionElement(GO_PACKAGE_OPTION, stringKind, file.getOptions().getGoPackage(), false);
options.add(option);
}
if (file.getOptions().hasObjcClassPrefix()) {
OptionElement option = new OptionElement(OBJC_CLASS_PREFIX_OPTION, stringKind, file.getOptions().getObjcClassPrefix(), false);
options.add(option);
}
if (file.getOptions().hasPhpClassPrefix()) {
OptionElement option = new OptionElement(PHP_CLASS_PREFIX_OPTION, stringKind, file.getOptions().getPhpClassPrefix(), false);
options.add(option);
}
if (file.getOptions().hasPhpGenericServices()) {
OptionElement option = new OptionElement(PHP_GENERIC_SERVICES_OPTION, booleanKind, file.getOptions().getPhpGenericServices(), false);
options.add(option);
}
if (file.getOptions().hasPhpMetadataNamespace()) {
OptionElement option = new OptionElement(PHP_METADATA_NAMESPACE_OPTION, stringKind, file.getOptions().getPhpMetadataNamespace(), false);
options.add(option);
}
if (file.getOptions().hasPhpNamespace()) {
OptionElement option = new OptionElement(PHP_NAMESPACE_OPTION, stringKind, file.getOptions().getPhpNamespace(), false);
options.add(option);
}
if (file.getOptions().hasPyGenericServices()) {
OptionElement option = new OptionElement(PY_GENERIC_SERVICES_OPTION, booleanKind, file.getOptions().getPyGenericServices(), false);
options.add(option);
}
if (file.getOptions().hasRubyPackage()) {
OptionElement option = new OptionElement(RUBY_PACKAGE_OPTION, stringKind, file.getOptions().getRubyPackage(), false);
options.add(option);
}
if (file.getOptions().hasSwiftPrefix()) {
OptionElement option = new OptionElement(SWIFT_PREFIX_OPTION, stringKind, file.getOptions().getSwiftPrefix(), false);
options.add(option);
}
if (file.getOptions().hasOptimizeFor()) {
OptionElement option = new OptionElement(OPTIMIZE_FOR_OPTION, enumKind, file.getOptions().getOptimizeFor(), false);
options.add(option);
}
return new ProtoFileElement(DEFAULT_LOCATION, packageName, syntax, imports.build(), publicImports.build(), types.build(), services.build(), Collections.emptyList(), options.build());
}
use of com.squareup.wire.Syntax in project aws-glue-schema-registry by awslabs.
the class FileDescriptorUtils method toFileDescriptorProto.
private static FileDescriptorProto toFileDescriptorProto(String schemaDefinition, String protoFileName, Optional<String> optionalPackageName) {
final ProtobufSchemaLoader.ProtobufSchemaLoaderContext protobufSchemaLoaderContext;
try {
protobufSchemaLoaderContext = ProtobufSchemaLoader.loadSchema(optionalPackageName, protoFileName, schemaDefinition);
} catch (Exception e) {
throw new RuntimeException(e);
}
FileDescriptorProto.Builder schema = FileDescriptorProto.newBuilder();
ProtoFile element = protobufSchemaLoaderContext.getProtoFile();
Schema schemaContext = protobufSchemaLoaderContext.getSchema();
schema.setName(protoFileName);
Syntax syntax = element.getSyntax();
if (Syntax.PROTO_3.equals(syntax)) {
schema.setSyntax(syntax.toString());
}
if (element.getPackageName() != null) {
schema.setPackage(element.getPackageName());
}
for (ProtoType protoType : schemaContext.getTypes()) {
if (!isParentLevelType(protoType, optionalPackageName)) {
continue;
}
Type type = schemaContext.getType(protoType);
if (type instanceof MessageType) {
DescriptorProto message = messageElementToDescriptorProto((MessageType) type, schemaContext, element);
schema.addMessageType(message);
} else if (type instanceof EnumType) {
EnumDescriptorProto message = enumElementToProto((EnumType) type);
schema.addEnumType(message);
}
}
for (Service service : element.getServices()) {
ServiceDescriptorProto serviceDescriptorProto = serviceElementToProto(service);
schema.addService(serviceDescriptorProto);
}
// dependencies on protobuf default types are always added
for (String ref : element.getImports()) {
schema.addDependency(ref);
}
for (String ref : element.getPublicImports()) {
boolean add = true;
for (int i = 0; i < schema.getDependencyCount(); i++) {
if (schema.getDependency(i).equals(ref)) {
schema.addPublicDependency(i);
add = false;
}
}
if (add) {
schema.addDependency(ref);
schema.addPublicDependency(schema.getDependencyCount() - 1);
}
}
String javaPackageName = findOptionString(JAVA_PACKAGE_OPTION, element.getOptions());
if (javaPackageName != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setJavaPackage(javaPackageName).build();
schema.mergeOptions(options);
}
String javaOuterClassname = findOptionString(JAVA_OUTER_CLASSNAME_OPTION, element.getOptions());
if (javaOuterClassname != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setJavaOuterClassname(javaOuterClassname).build();
schema.mergeOptions(options);
}
Boolean javaMultipleFiles = findOptionBoolean(JAVA_MULTIPLE_FILES_OPTION, element.getOptions());
if (javaMultipleFiles != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setJavaMultipleFiles(javaMultipleFiles).build();
schema.mergeOptions(options);
}
Boolean javaStringCheckUtf8 = findOptionBoolean(JAVA_STRING_CHECK_UTF8_OPTION, element.getOptions());
if (javaStringCheckUtf8 != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setJavaStringCheckUtf8(javaStringCheckUtf8).build();
schema.mergeOptions(options);
}
Boolean javaGenericServices = findOptionBoolean(JAVA_GENERIC_SERVICES_OPTION, element.getOptions());
if (javaGenericServices != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setJavaGenericServices(javaGenericServices).build();
schema.mergeOptions(options);
}
Boolean ccGenericServices = findOptionBoolean(CC_GENERIC_SERVICES_OPTION, element.getOptions());
if (ccGenericServices != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setCcGenericServices(ccGenericServices).build();
schema.mergeOptions(options);
}
Boolean ccEnableArenas = findOptionBoolean(CC_ENABLE_ARENAS_OPTION, element.getOptions());
if (ccEnableArenas != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setCcEnableArenas(ccEnableArenas).build();
schema.mergeOptions(options);
}
String csharpNamespace = findOptionString(CSHARP_NAMESPACE_OPTION, element.getOptions());
if (csharpNamespace != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setCsharpNamespace(csharpNamespace).build();
schema.mergeOptions(options);
}
String goPackageName = findOptionString(GO_PACKAGE_OPTION, element.getOptions());
if (goPackageName != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setGoPackage(goPackageName).build();
schema.mergeOptions(options);
}
String objcClassPrefix = findOptionString(OBJC_CLASS_PREFIX_OPTION, element.getOptions());
if (objcClassPrefix != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setObjcClassPrefix(objcClassPrefix).build();
schema.mergeOptions(options);
}
Boolean phpGenericServices = findOptionBoolean(PHP_GENERIC_SERVICES_OPTION, element.getOptions());
if (phpGenericServices != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setPhpGenericServices(phpGenericServices).build();
schema.mergeOptions(options);
}
String phpClassPrefix = findOptionString(PHP_CLASS_PREFIX_OPTION, element.getOptions());
if (phpClassPrefix != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setPhpClassPrefix(phpClassPrefix).build();
schema.mergeOptions(options);
}
String phpMetadataNamespace = findOptionString(PHP_METADATA_NAMESPACE_OPTION, element.getOptions());
if (phpMetadataNamespace != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setPhpMetadataNamespace(phpMetadataNamespace).build();
schema.mergeOptions(options);
}
String phpNamespace = findOptionString(PHP_NAMESPACE_OPTION, element.getOptions());
if (phpNamespace != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setPhpNamespace(phpNamespace).build();
schema.mergeOptions(options);
}
Boolean pyGenericServices = findOptionBoolean(PY_GENERIC_SERVICES_OPTION, element.getOptions());
if (pyGenericServices != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setPyGenericServices(pyGenericServices).build();
schema.mergeOptions(options);
}
String rubyPackage = findOptionString(RUBY_PACKAGE_OPTION, element.getOptions());
if (rubyPackage != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setRubyPackage(rubyPackage).build();
schema.mergeOptions(options);
}
String swiftPrefix = findOptionString(SWIFT_PREFIX_OPTION, element.getOptions());
if (swiftPrefix != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setSwiftPrefix(swiftPrefix).build();
schema.mergeOptions(options);
}
FileOptions.OptimizeMode optimizeFor = findOption(OPTIMIZE_FOR_OPTION, element.getOptions()).map(o -> FileOptions.OptimizeMode.valueOf(o.getValue().toString())).orElse(null);
if (optimizeFor != null) {
FileOptions options = DescriptorProtos.FileOptions.newBuilder().setOptimizeFor(optimizeFor).build();
schema.mergeOptions(options);
}
return schema.build();
}
Aggregations