private String getClassName(TypeDeclaration type) { UnionTypeDeclaration objectType = (UnionTypeDeclaration) type; String name = StringUtils.capitalize(objectType.name()); // For mime types we need to take the type not the name try { MimeType.valueOf(name); name = objectType.type(); } catch (Exception ex) { // not a valid mimetype do nothing logger.debug("mime: " + name); } return name; }
Annotations.CLASS_NAME.get(Names.typeName(union.name()), unionTypeDeclaration)); TypeSpec.Builder builder = TypeSpec.classBuilder(name) .superclass(ParameterizedTypeName.get(ClassName.get(StdDeserializer.class), unionTypeName))
@Override public void onUnionType(CurrentBuild currentBuild, TypeSpec.Builder builder, V10GType typeDeclaration) { if (!(typeDeclaration.implementation() instanceof UnionTypeDeclaration)) { return; } UnionTypeDeclaration unionTypeDeclaration = (UnionTypeDeclaration) typeDeclaration.implementation(); ClassName deserializer = ClassName.get(currentBuild.getSupportPackage(), Names.typeName(unionTypeDeclaration.name(), "deserializer")); ClassName serializer = ClassName.get(currentBuild.getSupportPackage(), Names.typeName(unionTypeDeclaration.name(), "serializer")); builder.addAnnotation(AnnotationSpec.builder(JsonDeserialize.class) .addMember("using", "$T.class", deserializer).build()); builder.addAnnotation(AnnotationSpec.builder(JsonSerialize.class) .addMember("using", "$T.class", serializer).build()); currentBuild.newSupportGenerator(new UnionDeserializationGenerator(currentBuild, typeDeclaration, deserializer)); currentBuild.newSupportGenerator(new UnionSerializationGenerator(currentBuild, typeDeclaration, serializer)); } }
@Override public TypeSpec.Builder classCreated(UnionPluginContext unionPluginContext, UnionTypeDeclaration ramlType, TypeSpec.Builder incoming, EventType eventType) { ClassName deserializer = ClassName.get("", unionPluginContext.creationResult().getJavaName(EventType.INTERFACE).simpleName(), Names.typeName(ramlType.name(), "deserializer")); ClassName serializer = ClassName.get("", unionPluginContext.creationResult().getJavaName(EventType.INTERFACE).simpleName(), Names.typeName("serializer")); createSerializer(serializer, ramlType, incoming, eventType); createDeserializer(unionPluginContext, deserializer, ramlType, incoming, eventType); incoming.addAnnotation(AnnotationSpec.builder(JsonDeserialize.class) .addMember("using", "$T.class", deserializer).build()); incoming.addAnnotation(AnnotationSpec.builder(JsonSerialize.class) .addMember("using", "$T.class", serializer).build()); return incoming; }
@Override public TypeSpec.Builder classCreated(UnionPluginContext unionPluginContext, UnionTypeDeclaration ramlType, TypeSpec.Builder incoming, EventType eventType) { ClassName deserializer = ClassName.get("", unionPluginContext.creationResult().getJavaName(EventType.INTERFACE).simpleName(), Names.typeName(ramlType.name(), "deserializer")); ClassName serializer = ClassName.get("", unionPluginContext.creationResult().getJavaName(EventType.INTERFACE).simpleName(), Names.typeName("serializer")); createSerializer(serializer, ramlType, incoming, eventType); createDeserializer(unionPluginContext, deserializer, ramlType, incoming, eventType); incoming.addAnnotation(AnnotationSpec.builder(JsonDeserialize.class) .addMember("using", "$T.class", deserializer).build()); incoming.addAnnotation(AnnotationSpec.builder(JsonSerialize.class) .addMember("using", "$T.class", serializer).build()); return incoming; }
@Override public TypeSpec.Builder classCreated(UnionPluginContext unionPluginContext, UnionTypeDeclaration type, TypeSpec.Builder builder, EventType eventType) { String namespace = type.xml() != null && type.xml().namespace() != null ? type.xml().namespace() : "##default"; String name = type.xml() != null && type.xml().name() != null ? type.xml().name() : type.name(); if (eventType == EventType.IMPLEMENTATION) { builder.addAnnotation(AnnotationSpec.builder(XmlAccessorType.class) .addMember("value", "$T.$L", XmlAccessType.class, "FIELD").build()); AnnotationSpec.Builder annotation = AnnotationSpec.builder(XmlRootElement.class) .addMember("namespace", "$S", namespace) .addMember("name", "$S", name); builder.addAnnotation(annotation.build()); } else { builder.addAnnotation(AnnotationSpec.builder(XmlRootElement.class) .addMember("namespace", "$S", namespace) .addMember("name", "$S", name).build()); } return builder; }