private TyperefTemplateSpec generateTyperef(TyperefDataSchema schema) { final TyperefTemplateSpec typerefClass = new TyperefTemplateSpec(schema); typerefClass.setNamespace(schema.getNamespace()); typerefClass.setClassName(schema.getName()); typerefClass.setModifiers(ModifierSpec.PUBLIC); registerClassTemplateSpec(schema, typerefClass); return typerefClass; }
private ClassTemplateSpec generateUnion(UnionDataSchema schema, TyperefDataSchema typerefDataSchema) { assert typerefDataSchema.getRef() == schema; pushCurrentLocation(_schemaResolver.nameToDataSchemaLocations().get(typerefDataSchema.getFullName())); final UnionTemplateSpec unionClass = new UnionTemplateSpec(schema); unionClass.setNamespace(typerefDataSchema.getNamespace()); unionClass.setClassName(typerefDataSchema.getName()); unionClass.setModifiers(ModifierSpec.PUBLIC); registerClassTemplateSpec(typerefDataSchema, unionClass); final TyperefTemplateSpec typerefInfoClass = new TyperefTemplateSpec(typerefDataSchema); typerefInfoClass.setEnclosingClass(unionClass); typerefInfoClass.setClassName("UnionTyperefInfo"); typerefInfoClass.setModifiers(ModifierSpec.PRIVATE, ModifierSpec.STATIC, ModifierSpec.FINAL); final UnionTemplateSpec result = generateUnion(schema, unionClass); result.setTyperefClass(typerefInfoClass); popCurrentLocation(); return result; }
public static boolean isTypedDefinition(UnionTemplateSpec unionSpec) { TyperefTemplateSpec typerefClass = unionSpec.getTyperefClass(); return (typerefClass != null && typerefClass.getSchema().getProperties().containsKey("typedDefinition")); }
public static boolean isFlatTypedDefinition(UnionTemplateSpec unionSpec) { TyperefTemplateSpec typerefClass = unionSpec.getTyperefClass(); return (typerefClass != null && typerefClass.getSchema().getProperties().containsKey("flatTypedDefinition")); }
public static Map<String, String> getTypedDefinitionMapping(UnionTemplateSpec unionSpec, boolean flat) { String propertyName = flat ? "flatTypedDefinition" : "typedDefinition"; TyperefTemplateSpec typerefClass = unionSpec.getTyperefClass(); DataMap properties = (DataMap)typerefClass.getSchema().getProperties().get(propertyName); HashMap<String, String> results = new HashMap<String, String>(); for (String memberKey: properties.keySet()) { String typeName = properties.getString(memberKey); if (!memberKey.contains(".")) { String namespace = unionSpec.getNamespace(); if (namespace != null) { memberKey = unionSpec.getNamespace() + "." + memberKey; } } results.put(memberKey, typeName); } return results; } }
public String docString() { if (this._template.getTyperefClass() != null) { return new TSNamedTypeSyntax(this._template.getTyperefClass().getSchema()).docString(); } else { return ""; } }