private void checkTyperef(TyperefDataSchema older, TyperefDataSchema newer) { checkName(older, newer); _path.addLast(DataSchemaConstants.REF_KEY); check(older.getDereferencedDataSchema(), newer.getDereferencedDataSchema()); _path.removeLast(); }
private static DataSchema dereferenceIfTyperef(DataSchema schema) { final DataSchema.Type type = schema.getType(); return type == DataSchema.Type.TYPEREF ? ((TyperefDataSchema) schema).getRef() : null; }
private TyperefDataSchema parseTyperef( NamedTypeDeclarationContext context, TyperefDeclarationContext typeref) throws ParseException { Name name = toName(typeref.name); TyperefDataSchema schema = new TyperefDataSchema(name); bindNameToSchema(name, schema); DataSchema refSchema = toDataSchema(typeref.ref); schema.setReferencedType(refSchema); schema.setRefDeclaredInline(isDeclaredInline(typeref.ref)); setProperties(context, schema); return schema; }
private void writeTyperef(TyperefDataSchema schema) throws IOException { writeDoc(schema.getDoc()); writeProperties(schema.getProperties()); write("typeref "); write(toTypeIdentifier(schema)); write(" = "); DataSchema ref = schema.getRef(); writeReferenceOrInline(ref, schema.isRefDeclaredInline()); }
private TyperefDataSchema parseTyperef( NamedTypeDeclarationContext context, TyperefDeclarationContext typeref) throws ParseException { Name name = toName(typeref.name); TyperefDataSchema schema = new TyperefDataSchema(name); bindNameToSchema(name, schema); DataSchema refSchema = toDataSchema(typeref.ref); schema.setReferencedType(refSchema); setProperties(context, schema); return schema; }
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; }
if (typerefDataSchema.getDereferencedDataSchema().getType() != DataSchema.Type.UNION) binding.valueClass = getJavaBindingType(typerefDataSchema.getRef(), enclosingClass).valueClass;
_path.addLast(typerefDataSchema.getFullName()); _path.addLast(DataSchemaConstants.REF_KEY); pathCount++; newer = typerefDataSchema.getRef(); _path.addLast(((TyperefDataSchema) newer).getFullName());
while ((referencedDataSchema = typerefDataSchema.getDereferencedDataSchema()) != dereferencedDataSchema) return new ClassInfo(typerefDataSchema.getNamespace(), CodeUtil.capitalize(typerefDataSchema.getName()));
computeImports(typerefSchema.getRef(), typerefSchema.isRefDeclaredInline(), importsAcc);
DataSchema.Type schemaType = typerefSchema.getDereferencedType(); Class<?>[] validTypes = RestModelConstants.PRIMITIVE_DATA_SCHEMA_TYPE_ALLOWED_TYPES.get(schemaType); DataSchema derefSchema = typerefSchema.getDereferencedDataSchema(); if (inferredSchema.equals(derefSchema))
public static boolean isTypedDefinition(UnionTemplateSpec unionSpec) { TyperefTemplateSpec typerefClass = unionSpec.getTyperefClass(); return (typerefClass != null && typerefClass.getSchema().getProperties().containsKey("typedDefinition")); }
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; }
if (dataSchema instanceof TyperefDataSchema) return ((TyperefDataSchema)dataSchema).getFullName(); return unionRef.getSchema().getFullName();
public String typeName() { // Have to use _dataSchema.getName() instead of _template.getClassName() here because otherwise // generics will return strings like Array<null> instead of Array<CustomTyperefName>. Not sure why?? return escapeKeyword(_dataSchema.getName(), EscapeStrategy.MANGLE); }
_builder.writeFieldName(REF_KEY); TyperefDataSchema typerefDataSchema = (TyperefDataSchema) schema; encode(typerefDataSchema.getRef(), typerefDataSchema.isRefDeclaredInline()); break; case ENUM:
public static boolean isFlatTypedDefinition(UnionTemplateSpec unionSpec) { TyperefTemplateSpec typerefClass = unionSpec.getTyperefClass(); return (typerefClass != null && typerefClass.getSchema().getProperties().containsKey("flatTypedDefinition")); }
private static DataSchema dereferenceIfTyperef(DataSchema schema) { final DataSchema.Type type = schema.getType(); return type == DataSchema.Type.TYPEREF ? ((TyperefDataSchema) schema).getRef() : null; }
break; case TYPEREF: TyperefDataSchema typerefSchema = new TyperefDataSchema(name); schema = namedSchema = typerefSchema; DataSchema referencedTypeSchema = getSchemaData(map, REF_KEY); typerefSchema.setReferencedType(referencedTypeSchema); typerefSchema.setRefDeclaredInline(isDeclaredInline(map.get(REF_KEY)));
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; } }