/** * Get the slug for the given type definition. * * @param typeDefinition The type definition. * @return The slug for the type definition. */ public String getSlug(TypeDefinition typeDefinition) { String[] qualifiedNameTokens = typeDefinition.getQualifiedName().toString().split("\\."); String slug = ""; for (int i = qualifiedNameTokens.length - 1; i >= 0; i--) { slug = slug.isEmpty() ? qualifiedNameTokens[i] : slug + "_" + qualifiedNameTokens[i]; TypeDefinition entry = this.typeDefinitionsBySlug.get(slug); if (entry == null) { entry = typeDefinition; this.typeDefinitionsBySlug.put(slug, entry); } if (entry.getQualifiedName().toString().equals(typeDefinition.getQualifiedName().toString())) { return slug; } } return slug; }
/** * Get the slug for the given type definition. * * @param typeDefinition The type definition. * @return The slug for the type definition. */ public String getSlug(TypeDefinition typeDefinition) { String[] qualifiedNameTokens = typeDefinition.getQualifiedName().toString().split("\\."); String slug = ""; for (int i = qualifiedNameTokens.length - 1; i >= 0; i--) { slug = slug.isEmpty() ? qualifiedNameTokens[i] : slug + "_" + qualifiedNameTokens[i]; TypeDefinition entry = this.typeDefinitionsBySlug.get(slug); if (entry == null) { entry = typeDefinition; this.typeDefinitionsBySlug.put(slug, entry); } if (entry.getQualifiedName().toString().equals(typeDefinition.getQualifiedName().toString())) { return slug; } } return slug; }
public static List<String> findConflictingAccessorNamingErrors(EnunciateJackson1Context context) { List<String> errors = (List<String>) context.getContext().getProperty(CONFLICTING_JAXB_ACCESSOR_NAMING_ERRORS_PROPERTY); if (errors == null) { errors = new ArrayList<String>(); context.getContext().setProperty(CONFLICTING_JAXB_ACCESSOR_NAMING_ERRORS_PROPERTY, errors); for (TypeDefinition typeDefinition : context.getTypeDefinitions()) { Map<String, Accessor> accessorsBySimpleName = new HashMap<String, Accessor>(); for (Accessor accessor : typeDefinition.getAllAccessors()) { String name = accessor.getClientSimpleName(); Accessor conflict = accessorsBySimpleName.get(name); if (conflict != null) { errors.add(String.format("%s: accessor \"%s\" conflicts with accessor \"%s\" of %s: both are named \"%s\".", typeDefinition.getQualifiedName(), accessor, conflict, conflict.getTypeDefinition().getQualifiedName(), name)); } else { accessorsBySimpleName.put(name, accessor); } } } } return errors; } }
public static List<String> findConflictingAccessorNamingErrors(EnunciateJackson1Context context) { List<String> errors = (List<String>) context.getContext().getProperty(CONFLICTING_JAXB_ACCESSOR_NAMING_ERRORS_PROPERTY); if (errors == null) { errors = new ArrayList<String>(); context.getContext().setProperty(CONFLICTING_JAXB_ACCESSOR_NAMING_ERRORS_PROPERTY, errors); for (TypeDefinition typeDefinition : context.getTypeDefinitions()) { Map<String, Accessor> accessorsBySimpleName = new HashMap<String, Accessor>(); for (Accessor accessor : typeDefinition.getAllAccessors()) { String name = accessor.getClientSimpleName(); Accessor conflict = accessorsBySimpleName.get(name); if (conflict != null) { errors.add(String.format("%s: accessor \"%s\" conflicts with accessor \"%s\" of %s: both are named \"%s\".", typeDefinition.getQualifiedName(), accessor, conflict, conflict.getTypeDefinition().getQualifiedName(), name)); } else { accessorsBySimpleName.put(name, accessor); } } } } return errors; } }
@Override public List<DataTypeReference> getSubtypes() { ArrayList<DataTypeReference> subtypes = new ArrayList<DataTypeReference>(); for (TypeDefinition td : this.typeDefinition.getContext().getTypeDefinitions()) { if (td instanceof ObjectTypeDefinition && !td.getQualifiedName().contentEquals(this.typeDefinition.getQualifiedName()) && ((DecoratedTypeMirror) td.asType()).isInstanceOf(this.typeDefinition)) { subtypes.add(new DataTypeReferenceImpl(JsonTypeFactory.getJsonType(td.asType(), this.typeDefinition.getContext()), registrationContext)); } } return subtypes.isEmpty() ? null : subtypes; }
@Override public List<DataTypeReference> getSubtypes() { ArrayList<DataTypeReference> subtypes = new ArrayList<DataTypeReference>(); for (TypeDefinition td : this.typeDefinition.getContext().getTypeDefinitions()) { if (td instanceof ObjectTypeDefinition && !td.getQualifiedName().contentEquals(this.typeDefinition.getQualifiedName()) && ((DecoratedTypeMirror) td.asType()).isInstanceOf(this.typeDefinition)) { subtypes.add(new DataTypeReferenceImpl(JsonTypeFactory.getJsonType(td.asType(), this.typeDefinition.getContext()), registrationContext)); } } return subtypes.isEmpty() ? null : subtypes; }
public void add(TypeDefinition typeDef, LinkedList<Element> stack) { if (findTypeDefinition(typeDef) == null && !isKnownType(typeDef)) { this.typeDefinitions.put(typeDef.getQualifiedName().toString(), typeDef); warn("Added %s as a Jackson type definition even though is was supposed to be excluded according to configuration. It was referenced from %s%s, so it had to be included to prevent broken references.", typeDef.getQualifiedName(), stack.size() > 0 ? stack.get(0) : "an unknown location", stack.size() > 1 ? " of " + stack.get(1) : ""); debug("Added %s as a Jackson type definition.", typeDef.getQualifiedName()); debug("Unable to find source file for %s.", typeDef.getQualifiedName());
public void add(TypeDefinition typeDef, LinkedList<Element> stack) { if (findTypeDefinition(typeDef) == null && !isKnownType(typeDef)) { this.typeDefinitions.put(typeDef.getQualifiedName().toString(), typeDef); warn("Added %s as a Jackson type definition even though is was supposed to be excluded according to configuration. It was referenced from %s%s, so it had to be included to prevent broken references.", typeDef.getQualifiedName(), stack.size() > 0 ? stack.get(0) : "an unknown location", stack.size() > 1 ? " of " + stack.get(1) : ""); debug("Added %s as a Jackson type definition.", typeDef.getQualifiedName()); debug("Unable to find source file for %s.", typeDef.getQualifiedName());
if (typeDefinition instanceof ObjectTypeDefinition) { ObjectNode objectNode = JsonNodeFactory.instance.objectNode(); if (!context.stack.contains(typeDefinition.getQualifiedName().toString())) { context.stack.push(typeDefinition.getQualifiedName().toString()); try { final ObjectTypeDefinition objTypeDef = (ObjectTypeDefinition) typeDefinition;
if (typeDefinition instanceof ObjectTypeDefinition) { ObjectNode objectNode = JsonNodeFactory.instance.objectNode(); if (!context.stack.contains(typeDefinition.getQualifiedName().toString())) { context.stack.push(typeDefinition.getQualifiedName().toString()); try { final ObjectTypeDefinition objTypeDef = (ObjectTypeDefinition) typeDefinition;
if (isValue(accessor)) { if (value != null) { throw new EnunciateException("Accessor " + accessor.getSimpleName() + " of " + getQualifiedName() + ": a type definition cannot have more than one json value.");
if (isValue(accessor)) { if (value != null) { throw new EnunciateException("Accessor " + accessor.getSimpleName() + " of " + getQualifiedName() + ": a type definition cannot have more than one json value.");