package com.example.unique_type_name; import com.apollographql.apollo.api.Field; import com.apollographql.apollo.api.FragmentResponseFieldMapper; import com.apollographql.apollo.api.Operation; import com.apollographql.apollo.api.OperationName; import com.apollographql.apollo.api.Query; import com.apollographql.apollo.api.ResponseFieldMapper; import com.apollographql.apollo.api.ResponseReader; import com.apollographql.apollo.api.internal.Optional; import com.example.unique_type_name.fragment.HeroDetails; import com.example.unique_type_name.type.Episode; import java.io.IOException; import java.lang.Double; import java.lang.Object; import java.lang.Override; import java.lang.String; import java.util.List; import javax.annotation.Generated; import javax.annotation.Nonnull; import javax.annotation.Nullable; @Generated("Apollo GraphQL") public final class HeroDetailQuery implements Query<HeroDetailQuery.Data, Optional<HeroDetailQuery.Data>, Operation.Variables> { public static final String OPERATION_DEFINITION = "query HeroDetailQuery {\n" + " heroDetailQuery {\n" + " __typename\n" + " name\n" + " friends {\n" + " __typename\n" + " name\n" + " }\n" + " ... on Human {\n" + " __typename\n" + " height\n" + " friends {\n" + " __typename\n" + " appearsIn\n" + " friends {\n" + " __typename\n" + " ...HeroDetails\n" + " }\n" + " }\n" + " }\n" + " }\n" + "}"; public static final String QUERY_DOCUMENT = OPERATION_DEFINITION + "\n" + HeroDetails.FRAGMENT_DEFINITION; private static final OperationName OPERATION_NAME = new OperationName() { @Override public String name() { return "HeroDetailQuery"; } }; private final Operation.Variables variables; public HeroDetailQuery() { this.variables = Operation.EMPTY_VARIABLES; } @Override public String queryDocument() { return QUERY_DOCUMENT; } @Override public Optional<HeroDetailQuery.Data> wrapData(HeroDetailQuery.Data data) { return Optional.fromNullable(data); } @Override public Operation.Variables variables() { return variables; } @Override public ResponseFieldMapper<HeroDetailQuery.Data> responseFieldMapper() { return new Data.Mapper(); } public static Builder builder() { return new Builder(); } @Override public OperationName name() { return OPERATION_NAME; } public static final class Builder { Builder() { } public HeroDetailQuery build() { return new HeroDetailQuery(); } } public static class Data implements Operation.Data { private final Optional<HeroDetailQuery1> heroDetailQuery; private volatile String $toString; private volatile int $hashCode; private volatile boolean $hashCodeMemoized; public Data(@Nullable HeroDetailQuery1 heroDetailQuery) { this.heroDetailQuery = Optional.fromNullable(heroDetailQuery); } public Optional<HeroDetailQuery1> heroDetailQuery() { return this.heroDetailQuery; } @Override public String toString() { if ($toString == null) { $toString = "Data{" + "heroDetailQuery=" + heroDetailQuery + "}"; } return $toString; } @Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof Data) { Data that = (Data) o; return this.heroDetailQuery.equals(that.heroDetailQuery); } return false; } @Override public int hashCode() { if (!$hashCodeMemoized) { int h = 1; h *= 1000003; h ^= heroDetailQuery.hashCode(); $hashCode = h; $hashCodeMemoized = true; } return $hashCode; } public static final class Mapper implements ResponseFieldMapper<Data> { final HeroDetailQuery1.Mapper heroDetailQuery1FieldMapper = new HeroDetailQuery1.Mapper(); final Field[] fields = { Field.forObject("heroDetailQuery", "heroDetailQuery", null, true, new Field.ObjectReader<HeroDetailQuery1>() { @Override public HeroDetailQuery1 read(final ResponseReader reader) throws IOException { return heroDetailQuery1FieldMapper.map(reader); } }) }; @Override public Data map(ResponseReader reader) throws IOException { final HeroDetailQuery1 heroDetailQuery = reader.read(fields[0]); return new Data(heroDetailQuery); } } } public static class HeroDetailQuery1 { private final @Nonnull String __typename; private final @Nonnull String name; private final Optional<List<Friend>> friends; private final Optional<AsHuman> asHuman; private volatile String $toString; private volatile int $hashCode; private volatile boolean $hashCodeMemoized; public HeroDetailQuery1(@Nonnull String __typename, @Nonnull String name, @Nullable List<Friend> friends, @Nullable AsHuman asHuman) { this.__typename = __typename; this.name = name; this.friends = Optional.fromNullable(friends); this.asHuman = Optional.fromNullable(asHuman); } public @Nonnull String __typename() { return this.__typename; } /** * The name of the character */ public @Nonnull String name() { return this.name; } /** * The friends of the character, or an empty list if they have none */ public Optional<List<Friend>> friends() { return this.friends; } public Optional<AsHuman> asHuman() { return this.asHuman; } @Override public String toString() { if ($toString == null) { $toString = "HeroDetailQuery1{" + "__typename=" + __typename + ", " + "name=" + name + ", " + "friends=" + friends + ", " + "asHuman=" + asHuman + "}"; } return $toString; } @Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof HeroDetailQuery1) { HeroDetailQuery1 that = (HeroDetailQuery1) o; return this.__typename.equals(that.__typename) && this.name.equals(that.name) && this.friends.equals(that.friends) && this.asHuman.equals(that.asHuman); } return false; } @Override public int hashCode() { if (!$hashCodeMemoized) { int h = 1; h *= 1000003; h ^= __typename.hashCode(); h *= 1000003; h ^= name.hashCode(); h *= 1000003; h ^= friends.hashCode(); h *= 1000003; h ^= asHuman.hashCode(); $hashCode = h; $hashCodeMemoized = true; } return $hashCode; } public static final class Mapper implements ResponseFieldMapper<HeroDetailQuery1> { final Friend.Mapper friendFieldMapper = new Friend.Mapper(); final AsHuman.Mapper asHumanFieldMapper = new AsHuman.Mapper(); final Field[] fields = { Field.forString("__typename", "__typename", null, false), Field.forString("name", "name", null, false), Field.forList("friends", "friends", null, true, new Field.ObjectReader<Friend>() { @Override public Friend read(final ResponseReader reader) throws IOException { return friendFieldMapper.map(reader); } }), Field.forConditionalType("__typename", "__typename", new Field.ConditionalTypeReader<AsHuman>() { @Override public AsHuman read(String conditionalType, ResponseReader reader) throws IOException { if (conditionalType.equals("Human")) { return asHumanFieldMapper.map(reader); } else { return null; } } }) }; @Override public HeroDetailQuery1 map(ResponseReader reader) throws IOException { final String __typename = reader.read(fields[0]); final String name = reader.read(fields[1]); final List<Friend> friends = reader.read(fields[2]); final AsHuman asHuman = reader.read(fields[3]); return new HeroDetailQuery1(__typename, name, friends, asHuman); } } } public static class Friend { private final @Nonnull String __typename; private final @Nonnull String name; private volatile String $toString; private volatile int $hashCode; private volatile boolean $hashCodeMemoized; public Friend(@Nonnull String __typename, @Nonnull String name) { this.__typename = __typename; this.name = name; } public @Nonnull String __typename() { return this.__typename; } /** * The name of the character */ public @Nonnull String name() { return this.name; } @Override public String toString() { if ($toString == null) { $toString = "Friend{" + "__typename=" + __typename + ", " + "name=" + name + "}"; } return $toString; } @Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof Friend) { Friend that = (Friend) o; return this.__typename.equals(that.__typename) && this.name.equals(that.name); } return false; } @Override public int hashCode() { if (!$hashCodeMemoized) { int h = 1; h *= 1000003; h ^= __typename.hashCode(); h *= 1000003; h ^= name.hashCode(); $hashCode = h; $hashCodeMemoized = true; } return $hashCode; } public static final class Mapper implements ResponseFieldMapper<Friend> { final Field[] fields = { Field.forString("__typename", "__typename", null, false), Field.forString("name", "name", null, false) }; @Override public Friend map(ResponseReader reader) throws IOException { final String __typename = reader.read(fields[0]); final String name = reader.read(fields[1]); return new Friend(__typename, name); } } } public static class AsHuman { private final @Nonnull String __typename; private final @Nonnull String name; private final Optional<List<Friend1>> friends; private final Optional<Double> height; private volatile String $toString; private volatile int $hashCode; private volatile boolean $hashCodeMemoized; public AsHuman(@Nonnull String __typename, @Nonnull String name, @Nullable List<Friend1> friends, @Nullable Double height) { this.__typename = __typename; this.name = name; this.friends = Optional.fromNullable(friends); this.height = Optional.fromNullable(height); } public @Nonnull String __typename() { return this.__typename; } /** * What this human calls themselves */ public @Nonnull String name() { return this.name; } /** * This human's friends, or an empty list if they have none */ public Optional<List<Friend1>> friends() { return this.friends; } /** * Height in the preferred unit, default is meters */ public Optional<Double> height() { return this.height; } @Override public String toString() { if ($toString == null) { $toString = "AsHuman{" + "__typename=" + __typename + ", " + "name=" + name + ", " + "friends=" + friends + ", " + "height=" + height + "}"; } return $toString; } @Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof AsHuman) { AsHuman that = (AsHuman) o; return this.__typename.equals(that.__typename) && this.name.equals(that.name) && this.friends.equals(that.friends) && this.height.equals(that.height); } return false; } @Override public int hashCode() { if (!$hashCodeMemoized) { int h = 1; h *= 1000003; h ^= __typename.hashCode(); h *= 1000003; h ^= name.hashCode(); h *= 1000003; h ^= friends.hashCode(); h *= 1000003; h ^= height.hashCode(); $hashCode = h; $hashCodeMemoized = true; } return $hashCode; } public static final class Mapper implements ResponseFieldMapper<AsHuman> { final Friend1.Mapper friend1FieldMapper = new Friend1.Mapper(); final Field[] fields = { Field.forString("__typename", "__typename", null, false), Field.forString("name", "name", null, false), Field.forList("friends", "friends", null, true, new Field.ObjectReader<Friend1>() { @Override public Friend1 read(final ResponseReader reader) throws IOException { return friend1FieldMapper.map(reader); } }), Field.forDouble("height", "height", null, true) }; @Override public AsHuman map(ResponseReader reader) throws IOException { final String __typename = reader.read(fields[0]); final String name = reader.read(fields[1]); final List<Friend1> friends = reader.read(fields[2]); final Double height = reader.read(fields[3]); return new AsHuman(__typename, name, friends, height); } } } public static class Friend1 { private final @Nonnull String __typename; private final @Nonnull String name; private final @Nonnull List<Episode> appearsIn; private final Optional<List<Friend2>> friends; private volatile String $toString; private volatile int $hashCode; private volatile boolean $hashCodeMemoized; public Friend1(@Nonnull String __typename, @Nonnull String name, @Nonnull List<Episode> appearsIn, @Nullable List<Friend2> friends) { this.__typename = __typename; this.name = name; this.appearsIn = appearsIn; this.friends = Optional.fromNullable(friends); } public @Nonnull String __typename() { return this.__typename; } /** * The name of the character */ public @Nonnull String name() { return this.name; } /** * The movies this character appears in */ public @Nonnull List<Episode> appearsIn() { return this.appearsIn; } /** * The friends of the character, or an empty list if they have none */ public Optional<List<Friend2>> friends() { return this.friends; } @Override public String toString() { if ($toString == null) { $toString = "Friend1{" + "__typename=" + __typename + ", " + "name=" + name + ", " + "appearsIn=" + appearsIn + ", " + "friends=" + friends + "}"; } return $toString; } @Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof Friend1) { Friend1 that = (Friend1) o; return this.__typename.equals(that.__typename) && this.name.equals(that.name) && this.appearsIn.equals(that.appearsIn) && this.friends.equals(that.friends); } return false; } @Override public int hashCode() { if (!$hashCodeMemoized) { int h = 1; h *= 1000003; h ^= __typename.hashCode(); h *= 1000003; h ^= name.hashCode(); h *= 1000003; h ^= appearsIn.hashCode(); h *= 1000003; h ^= friends.hashCode(); $hashCode = h; $hashCodeMemoized = true; } return $hashCode; } public static final class Mapper implements ResponseFieldMapper<Friend1> { final Friend2.Mapper friend2FieldMapper = new Friend2.Mapper(); final Field[] fields = { Field.forString("__typename", "__typename", null, false), Field.forString("name", "name", null, false), Field.forList("appearsIn", "appearsIn", null, false, new Field.ListReader<Episode>() { @Override public Episode read(final Field.ListItemReader reader) throws IOException { return Episode.valueOf(reader.readString()); } }), Field.forList("friends", "friends", null, true, new Field.ObjectReader<Friend2>() { @Override public Friend2 read(final ResponseReader reader) throws IOException { return friend2FieldMapper.map(reader); } }) }; @Override public Friend1 map(ResponseReader reader) throws IOException { final String __typename = reader.read(fields[0]); final String name = reader.read(fields[1]); final List<Episode> appearsIn = reader.read(fields[2]); final List<Friend2> friends = reader.read(fields[3]); return new Friend1(__typename, name, appearsIn, friends); } } } public static class Friend2 { private final @Nonnull String __typename; private final @Nonnull Fragments fragments; private volatile String $toString; private volatile int $hashCode; private volatile boolean $hashCodeMemoized; public Friend2(@Nonnull String __typename, @Nonnull Fragments fragments) { this.__typename = __typename; this.fragments = fragments; } public @Nonnull String __typename() { return this.__typename; } public @Nonnull Fragments fragments() { return this.fragments; } @Override public String toString() { if ($toString == null) { $toString = "Friend2{" + "__typename=" + __typename + ", " + "fragments=" + fragments + "}"; } return $toString; } @Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof Friend2) { Friend2 that = (Friend2) o; return this.__typename.equals(that.__typename) && this.fragments.equals(that.fragments); } return false; } @Override public int hashCode() { if (!$hashCodeMemoized) { int h = 1; h *= 1000003; h ^= __typename.hashCode(); h *= 1000003; h ^= fragments.hashCode(); $hashCode = h; $hashCodeMemoized = true; } return $hashCode; } public static class Fragments { private final @Nonnull HeroDetails heroDetails; private volatile String $toString; private volatile int $hashCode; private volatile boolean $hashCodeMemoized; public Fragments(@Nonnull HeroDetails heroDetails) { this.heroDetails = heroDetails; } public @Nonnull HeroDetails heroDetails() { return this.heroDetails; } @Override public String toString() { if ($toString == null) { $toString = "Fragments{" + "heroDetails=" + heroDetails + "}"; } return $toString; } @Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof Fragments) { Fragments that = (Fragments) o; return this.heroDetails.equals(that.heroDetails); } return false; } @Override public int hashCode() { if (!$hashCodeMemoized) { int h = 1; h *= 1000003; h ^= heroDetails.hashCode(); $hashCode = h; $hashCodeMemoized = true; } return $hashCode; } public static final class Mapper implements FragmentResponseFieldMapper<Fragments> { final HeroDetails.Mapper heroDetailsFieldMapper = new HeroDetails.Mapper(); @Override public @Nonnull Fragments map(ResponseReader reader, @Nonnull String conditionalType) throws IOException { HeroDetails heroDetails = null; if (HeroDetails.POSSIBLE_TYPES.contains(conditionalType)) { heroDetails = heroDetailsFieldMapper.map(reader); } return new Fragments(heroDetails); } } } public static final class Mapper implements ResponseFieldMapper<Friend2> { final Fragments.Mapper fragmentsFieldMapper = new Fragments.Mapper(); final Field[] fields = { Field.forString("__typename", "__typename", null, false), Field.forConditionalType("__typename", "__typename", new Field.ConditionalTypeReader<Fragments>() { @Override public Fragments read(String conditionalType, ResponseReader reader) throws IOException { return fragmentsFieldMapper.map(reader, conditionalType); } }) }; @Override public Friend2 map(ResponseReader reader) throws IOException { final String __typename = reader.read(fields[0]); final Fragments fragments = reader.read(fields[1]); return new Friend2(__typename, fragments); } } } }