Example usage for com.google.gson.stream JsonReader peek

List of usage examples for com.google.gson.stream JsonReader peek

Introduction

In this page you can find the example usage for com.google.gson.stream JsonReader peek.

Prototype

public JsonToken peek() throws IOException 

Source Link

Document

Returns the type of the next token without consuming it.

Usage

From source file:org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.ModuleMetadataParser.java

License:Apache License

public void parse(final LocallyAvailableExternalResource resource,
        final MutableModuleComponentResolveMetadata metadata) {
    resource.withContent(new Transformer<Void, InputStream>() {
        @Override//from  w w w. ja  v  a2s  .c  om
        public Void transform(InputStream inputStream) {
            try {
                JsonReader reader = new JsonReader(new InputStreamReader(inputStream, "utf-8"));
                reader.beginObject();
                if (reader.peek() != JsonToken.NAME) {
                    throw new RuntimeException("Module metadata should contain a 'formatVersion' value.");
                }
                String name = reader.nextName();
                if (!name.equals("formatVersion")) {
                    throw new RuntimeException(String.format(
                            "The 'formatVersion' value should be the first value in a module metadata. Found '%s' instead.",
                            name));
                }
                if (reader.peek() != JsonToken.STRING) {
                    throw new RuntimeException("The 'formatVersion' value should have a string value.");
                }
                String version = reader.nextString();
                if (!version.equals(FORMAT_VERSION)) {
                    throw new RuntimeException(String.format(
                            "Unsupported format version '%s' specified in module metadata. This version of Gradle supports format version %s only.",
                            version, FORMAT_VERSION));
                }
                consumeTopLevelElements(reader, metadata);
                return null;
            } catch (Exception e) {
                throw new MetaDataParseException("module metadata", resource, e);
            }
        }
    });
}

From source file:org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.ModuleMetadataParser.java

License:Apache License

private void consumeTopLevelElements(JsonReader reader, MutableModuleComponentResolveMetadata metadata)
        throws IOException {
    while (reader.peek() != END_OBJECT) {
        String name = reader.nextName();
        if ("variants".equals(name)) {
            consumeVariants(reader, metadata);
        } else if ("component".equals(name)) {
            consumeComponent(reader, metadata);
        } else {//from   w  w w .j a  v  a 2s .  c o m
            consumeAny(reader);
        }
    }
}

From source file:org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.ModuleMetadataParser.java

License:Apache License

private void consumeComponent(JsonReader reader, MutableModuleComponentResolveMetadata metadata)
        throws IOException {
    reader.beginObject();/*from   ww  w.  j  av  a 2 s .  c  o m*/
    while (reader.peek() != END_OBJECT) {
        String name = reader.nextName();
        if ("attributes".equals(name)) {
            metadata.setAttributes(consumeAttributes(reader));
        } else {
            consumeAny(reader);
        }
    }
    reader.endObject();
}

From source file:org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.ModuleMetadataParser.java

License:Apache License

private void consumeVariants(JsonReader reader, MutableModuleComponentResolveMetadata metadata)
        throws IOException {
    reader.beginArray();//from www .  j  a  va 2  s  . c  om
    while (reader.peek() != JsonToken.END_ARRAY) {
        consumeVariant(reader, metadata);
    }
    reader.endArray();
}

From source file:org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.ModuleMetadataParser.java

License:Apache License

private void consumeVariant(JsonReader reader, MutableModuleComponentResolveMetadata metadata)
        throws IOException {
    reader.beginObject();//from w  w w. ja va 2 s . c o  m
    String variantName = null;
    ImmutableAttributes attributes = ImmutableAttributes.EMPTY;
    List<ModuleFile> files = Collections.emptyList();
    List<ModuleDependency> dependencies = Collections.emptyList();
    List<ModuleDependencyConstraint> dependencyConstraints = Collections.emptyList();
    List<VariantCapability> capabilities = Collections.emptyList();
    while (reader.peek() != END_OBJECT) {
        String name = reader.nextName();
        if (name.equals("name")) {
            variantName = reader.nextString();
        } else if (name.equals("attributes")) {
            attributes = consumeAttributes(reader);
        } else if (name.equals("files")) {
            files = consumeFiles(reader);
        } else if (name.equals("dependencies")) {
            dependencies = consumeDependencies(reader);
        } else if (name.equals("dependencyConstraints")) {
            dependencyConstraints = consumeDependencyConstraints(reader);
        } else if (name.equals("capabilities")) {
            capabilities = consumeCapabilities(reader);
        } else if (name.equals("available-at")) {
            // For now just collect this as another dependency
            // TODO - collect this information and merge the metadata from the other module
            dependencies = consumeVariantLocation(reader);
        } else {
            consumeAny(reader);
        }
    }
    reader.endObject();

    MutableComponentVariant variant = metadata.addVariant(variantName, attributes);
    for (ModuleFile file : files) {
        variant.addFile(file.name, file.uri);
    }
    for (ModuleDependency dependency : dependencies) {
        variant.addDependency(dependency.group, dependency.module, dependency.versionConstraint,
                dependency.excludes, dependency.reason, dependency.attributes);
    }
    for (ModuleDependencyConstraint dependencyConstraint : dependencyConstraints) {
        variant.addDependencyConstraint(dependencyConstraint.group, dependencyConstraint.module,
                dependencyConstraint.versionConstraint, dependencyConstraint.reason,
                dependencyConstraint.attributes);
    }
    for (VariantCapability capability : capabilities) {
        variant.addCapability(capability.group, capability.name, capability.version);
    }
}

From source file:org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.ModuleMetadataParser.java

License:Apache License

private List<ModuleDependency> consumeVariantLocation(JsonReader reader) throws IOException {
    String group = null;//from  w ww. j  a  v  a  2  s . co  m
    String module = null;
    String version = null;
    reader.beginObject();
    while (reader.peek() != END_OBJECT) {
        String name = reader.nextName();
        if (name.equals("group")) {
            group = reader.nextString();
        } else if (name.equals("module")) {
            module = reader.nextString();
        } else if (name.equals("version")) {
            version = reader.nextString();
        } else {
            consumeAny(reader);
        }
    }
    reader.endObject();
    return ImmutableList.of(new ModuleDependency(group, module, new DefaultImmutableVersionConstraint(version),
            ImmutableList.<ExcludeMetadata>of(), null, ImmutableAttributes.EMPTY));
}

From source file:org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.ModuleMetadataParser.java

License:Apache License

private List<ModuleDependency> consumeDependencies(JsonReader reader) throws IOException {
    List<ModuleDependency> dependencies = new ArrayList<ModuleDependency>();
    reader.beginArray();//from  w  ww  .j av a 2  s.com
    while (reader.peek() != END_ARRAY) {
        reader.beginObject();
        String group = null;
        String module = null;
        String reason = null;
        ImmutableAttributes attributes = ImmutableAttributes.EMPTY;
        VersionConstraint version = DefaultImmutableVersionConstraint.of();
        ImmutableList<ExcludeMetadata> excludes = ImmutableList.of();
        while (reader.peek() != END_OBJECT) {
            String name = reader.nextName();
            if (name.equals("group")) {
                group = reader.nextString();
            } else if (name.equals("module")) {
                module = reader.nextString();
            } else if (name.equals("version")) {
                version = consumeVersion(reader);
            } else if (name.equals("excludes")) {
                excludes = consumeExcludes(reader);
            } else if (name.equals("reason")) {
                reason = reader.nextString();
            } else if (name.equals("attributes")) {
                attributes = consumeAttributes(reader);
            } else {
                consumeAny(reader);
            }
        }
        dependencies.add(new ModuleDependency(group, module, version, excludes, reason, attributes));
        reader.endObject();
    }
    reader.endArray();
    return dependencies;
}

From source file:org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.ModuleMetadataParser.java

License:Apache License

private List<VariantCapability> consumeCapabilities(JsonReader reader) throws IOException {
    ImmutableList.Builder<VariantCapability> capabilities = ImmutableList.builder();
    reader.beginArray();/*from w  ww. j  a  v  a  2s.  c om*/
    while (reader.peek() != END_ARRAY) {
        reader.beginObject();
        String group = null;
        String name = null;
        String version = null;
        while (reader.peek() != END_OBJECT) {
            String val = reader.nextName();
            if (val.equals("group")) {
                group = reader.nextString();
            } else if (val.equals("name")) {
                name = reader.nextString();
            } else if (val.equals("version")) {
                version = reader.nextString();
            }
        }
        capabilities.add(new VariantCapability(group, name, version));
        reader.endObject();
    }
    reader.endArray();
    return capabilities.build();
}

From source file:org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.ModuleMetadataParser.java

License:Apache License

private List<ModuleDependencyConstraint> consumeDependencyConstraints(JsonReader reader) throws IOException {
    List<ModuleDependencyConstraint> dependencies = new ArrayList<ModuleDependencyConstraint>();
    reader.beginArray();//from  w  w w .  j  a v  a2 s .c  o m
    while (reader.peek() != END_ARRAY) {
        reader.beginObject();
        String group = null;
        String module = null;
        String reason = null;
        VersionConstraint version = null;
        ImmutableAttributes attributes = ImmutableAttributes.EMPTY;
        while (reader.peek() != END_OBJECT) {
            String name = reader.nextName();
            if (name.equals("group")) {
                group = reader.nextString();
            } else if (name.equals("module")) {
                module = reader.nextString();
            } else if (name.equals("version")) {
                version = consumeVersion(reader);
            } else if (name.equals("reason")) {
                reason = reader.nextString();
            } else if (name.equals("attributes")) {
                attributes = consumeAttributes(reader);
            } else {
                consumeAny(reader);
            }
        }
        dependencies.add(new ModuleDependencyConstraint(group, module, version, reason, attributes));
        reader.endObject();
    }
    reader.endArray();
    return dependencies;
}

From source file:org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.ModuleMetadataParser.java

License:Apache License

private ImmutableVersionConstraint consumeVersion(JsonReader reader) throws IOException {
    reader.beginObject();/*  w  ww  . j a  va2s  . co m*/
    String requiredVersion = "";
    String preferredVersion = "";
    String strictVersion = "";
    List<String> rejects = Lists.newArrayList();
    while (reader.peek() != END_OBJECT) {
        // At this stage, 'requires' implies 'prefers', 'strictly' implies 'requires'.
        String cst = reader.nextName();
        if ("prefers".equals(cst)) {
            preferredVersion = reader.nextString();
        } else if ("requires".equals(cst)) {
            requiredVersion = reader.nextString();
            preferredVersion = requiredVersion;
        } else if ("strictly".equals(cst)) {
            strictVersion = reader.nextString();
            requiredVersion = strictVersion;
            preferredVersion = strictVersion;
        } else if ("rejects".equals(cst)) {
            reader.beginArray();
            while (reader.peek() != END_ARRAY) {
                rejects.add(reader.nextString());
            }
            reader.endArray();
        }
    }
    reader.endObject();
    return DefaultImmutableVersionConstraint.of(preferredVersion, requiredVersion, strictVersion, rejects);
}