private static List<V10GType> getParents(TypeDeclaration typeDeclaration, final V10TypeRegistry registry) { return Lists.transform(typeDeclaration.parentTypes(), new Function<TypeDeclaration, V10GType>() { @Nullable @Override public V10GType apply(@Nullable TypeDeclaration input) { return registry.fetchType(input); } }); }
@Override public boolean isInline(TypeDeclaration typeDeclaration) { if (typeDeclaration == null) { return false; } else { return TypeUtils.shouldCreateNewClass(typeDeclaration, typeDeclaration.parentTypes().toArray(new TypeDeclaration[0])); } } };
@Override public boolean isInline() { return TypeUtils.shouldCreateNewClass(input, input.parentTypes() .toArray(new TypeDeclaration[0])); }
static public List<TypeDeclaration> allParents(TypeDeclaration target, List<TypeDeclaration> found) { found.add(target); for (TypeDeclaration typeDeclaration : target.parentTypes()) { allParents(typeDeclaration, found); } return found; } }
public boolean isInline() { return TypeUtils.shouldCreateNewClass(typeDeclaration, typeDeclaration.parentTypes().toArray(new TypeDeclaration[0])); }
@Override public boolean shouldCreateInlineType(TypeDeclaration declaration) { List<TypeDeclaration> extended = declaration.parentTypes(); if ( extended.size() > 1) { return true; } Set<String> allExtendedProps; if ( extended.size() == 1 && extended.get(0).name().equals("object")) { allExtendedProps = Collections.emptySet(); } else { allExtendedProps = FluentIterable.from(extended).filter(ObjectTypeDeclaration.class) .transformAndConcat(new Function<ObjectTypeDeclaration, Set<String>>() { @Nullable @Override public Set<String> apply(@Nullable ObjectTypeDeclaration input) { return pullNames(input); } }).toSet(); } Set<String> typePropertyNames = pullNames((ObjectTypeDeclaration) declaration); return !Sets.difference(typePropertyNames, allExtendedProps).isEmpty(); } },
public void setupTypeHierarchy(TypeDeclaration typeDeclaration) { List<TypeDeclaration> parents = typeDeclaration.parentTypes(); for (TypeDeclaration parent : parents) { setupTypeHierarchy(parent); childTypes.put(parent.name(), typeDeclaration.name()); } }
@Nullable @Override public GParameter apply(@Nullable TypeDeclaration input) { if (TypeUtils.shouldCreateNewClass(input, input.parentTypes().toArray(new TypeDeclaration[0]))) { return new V10PGParameter(input, currentBuild.fetchType(v10GResource.implementation(), method, input)); } else { return new V10PGParameter(input, currentBuild.fetchType(input.type(), input)); } } });
@Nullable @Override public GRequest apply(@Nullable TypeDeclaration input) { if (TypeUtils.shouldCreateNewClass(input, input.parentTypes().toArray(new TypeDeclaration[0]))) { return new V10GRequest(input, registry.fetchType(v10GResource.implementation(), method, input)); } else { return new V10GRequest(input, registry.fetchType(input.type(), input)); } } });
@Nullable @Override public GParameter apply(@Nullable TypeDeclaration input) { if (TypeUtils.shouldCreateNewClass(input, input.parentTypes().toArray(new TypeDeclaration[0]))) { return new V10PGParameter(input, currentBuild.fetchType(v10GResource.implementation(), method, input)); } else { return new V10PGParameter(input, currentBuild.fetchType(input.type(), input)); } } });
@Nullable @Override public GResponseType apply(@Nullable TypeDeclaration input) { if (TypeUtils.shouldCreateNewClass(input, input.parentTypes().toArray(new TypeDeclaration[0]))) { return new V10GResponseType(input, registry.fetchType(v10GResource.implementation(), method, response, input)); } else { // return new V10GResponseType(input, V10GTypeFactory // .createExplicitlyNamedType(registry, input.type(), input)); return new V10GResponseType(input, registry.fetchType(input.type(), input)); } } });
if (extending.parentTypes().size() > 1) {
if (extending.parentTypes().size() > 1) {
return interpret(document, type.parentTypes().get(0), builderModel, property);