package com.example.fragments_with_type_condition; 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.fragments_with_type_condition.fragment.DroidDetails; import com.example.fragments_with_type_condition.fragment.HumanDetails; import java.io.IOException; import java.lang.Object; import java.lang.Override; import java.lang.String; import javax.annotation.Generated; import javax.annotation.Nonnull; import javax.annotation.Nullable; @Generated("Apollo GraphQL") public final class TestQuery implements Query<TestQuery.Data, Optional<TestQuery.Data>, Operation.Variables> { public static final String OPERATION_DEFINITION = "query TestQuery {\n" + " r2: hero {\n" + " __typename\n" + " ...HumanDetails\n" + " ...DroidDetails\n" + " }\n" + " luke: hero {\n" + " __typename\n" + " ...HumanDetails\n" + " ...DroidDetails\n" + " }\n" + "}"; public static final String QUERY_DOCUMENT = OPERATION_DEFINITION + "\n" + HumanDetails.FRAGMENT_DEFINITION + "\n" + DroidDetails.FRAGMENT_DEFINITION; private static final OperationName OPERATION_NAME = new OperationName() { @Override public String name() { return "TestQuery"; } }; private final Operation.Variables variables; public TestQuery() { this.variables = Operation.EMPTY_VARIABLES; } @Override public String queryDocument() { return QUERY_DOCUMENT; } @Override public Optional<TestQuery.Data> wrapData(TestQuery.Data data) { return Optional.fromNullable(data); } @Override public Operation.Variables variables() { return variables; } @Override public ResponseFieldMapper<TestQuery.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 TestQuery build() { return new TestQuery(); } } public static class Data implements Operation.Data { private final Optional<R2> r2; private final Optional<Luke> luke; private volatile String $toString; private volatile int $hashCode; private volatile boolean $hashCodeMemoized; public Data(@Nullable R2 r2, @Nullable Luke luke) { this.r2 = Optional.fromNullable(r2); this.luke = Optional.fromNullable(luke); } public Optional<R2> r2() { return this.r2; } public Optional<Luke> luke() { return this.luke; } @Override public String toString() { if ($toString == null) { $toString = "Data{" + "r2=" + r2 + ", " + "luke=" + luke + "}"; } return $toString; } @Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof Data) { Data that = (Data) o; return this.r2.equals(that.r2) && this.luke.equals(that.luke); } return false; } @Override public int hashCode() { if (!$hashCodeMemoized) { int h = 1; h *= 1000003; h ^= r2.hashCode(); h *= 1000003; h ^= luke.hashCode(); $hashCode = h; $hashCodeMemoized = true; } return $hashCode; } public static final class Mapper implements ResponseFieldMapper<Data> { final R2.Mapper r2FieldMapper = new R2.Mapper(); final Luke.Mapper lukeFieldMapper = new Luke.Mapper(); final Field[] fields = { Field.forObject("r2", "hero", null, true, new Field.ObjectReader<R2>() { @Override public R2 read(final ResponseReader reader) throws IOException { return r2FieldMapper.map(reader); } }), Field.forObject("luke", "hero", null, true, new Field.ObjectReader<Luke>() { @Override public Luke read(final ResponseReader reader) throws IOException { return lukeFieldMapper.map(reader); } }) }; @Override public Data map(ResponseReader reader) throws IOException { final R2 r2 = reader.read(fields[0]); final Luke luke = reader.read(fields[1]); return new Data(r2, luke); } } } public static class R2 { private final @Nonnull String __typename; private final @Nonnull Fragments fragments; private volatile String $toString; private volatile int $hashCode; private volatile boolean $hashCodeMemoized; public R2(@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 = "R2{" + "__typename=" + __typename + ", " + "fragments=" + fragments + "}"; } return $toString; } @Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof R2) { R2 that = (R2) 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 HumanDetails humanDetails; private final @Nonnull DroidDetails droidDetails; private volatile String $toString; private volatile int $hashCode; private volatile boolean $hashCodeMemoized; public Fragments(@Nonnull HumanDetails humanDetails, @Nonnull DroidDetails droidDetails) { this.humanDetails = humanDetails; this.droidDetails = droidDetails; } public @Nonnull HumanDetails humanDetails() { return this.humanDetails; } public @Nonnull DroidDetails droidDetails() { return this.droidDetails; } @Override public String toString() { if ($toString == null) { $toString = "Fragments{" + "humanDetails=" + humanDetails + ", " + "droidDetails=" + droidDetails + "}"; } return $toString; } @Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof Fragments) { Fragments that = (Fragments) o; return this.humanDetails.equals(that.humanDetails) && this.droidDetails.equals(that.droidDetails); } return false; } @Override public int hashCode() { if (!$hashCodeMemoized) { int h = 1; h *= 1000003; h ^= humanDetails.hashCode(); h *= 1000003; h ^= droidDetails.hashCode(); $hashCode = h; $hashCodeMemoized = true; } return $hashCode; } public static final class Mapper implements FragmentResponseFieldMapper<Fragments> { final HumanDetails.Mapper humanDetailsFieldMapper = new HumanDetails.Mapper(); final DroidDetails.Mapper droidDetailsFieldMapper = new DroidDetails.Mapper(); @Override public @Nonnull Fragments map(ResponseReader reader, @Nonnull String conditionalType) throws IOException { HumanDetails humanDetails = null; DroidDetails droidDetails = null; if (HumanDetails.POSSIBLE_TYPES.contains(conditionalType)) { humanDetails = humanDetailsFieldMapper.map(reader); } if (DroidDetails.POSSIBLE_TYPES.contains(conditionalType)) { droidDetails = droidDetailsFieldMapper.map(reader); } return new Fragments(humanDetails, droidDetails); } } } public static final class Mapper implements ResponseFieldMapper<R2> { 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 R2 map(ResponseReader reader) throws IOException { final String __typename = reader.read(fields[0]); final Fragments fragments = reader.read(fields[1]); return new R2(__typename, fragments); } } } public static class Luke { private final @Nonnull String __typename; private final @Nonnull Fragments fragments; private volatile String $toString; private volatile int $hashCode; private volatile boolean $hashCodeMemoized; public Luke(@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 = "Luke{" + "__typename=" + __typename + ", " + "fragments=" + fragments + "}"; } return $toString; } @Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof Luke) { Luke that = (Luke) 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 HumanDetails humanDetails; private final @Nonnull DroidDetails droidDetails; private volatile String $toString; private volatile int $hashCode; private volatile boolean $hashCodeMemoized; public Fragments(@Nonnull HumanDetails humanDetails, @Nonnull DroidDetails droidDetails) { this.humanDetails = humanDetails; this.droidDetails = droidDetails; } public @Nonnull HumanDetails humanDetails() { return this.humanDetails; } public @Nonnull DroidDetails droidDetails() { return this.droidDetails; } @Override public String toString() { if ($toString == null) { $toString = "Fragments{" + "humanDetails=" + humanDetails + ", " + "droidDetails=" + droidDetails + "}"; } return $toString; } @Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof Fragments) { Fragments that = (Fragments) o; return this.humanDetails.equals(that.humanDetails) && this.droidDetails.equals(that.droidDetails); } return false; } @Override public int hashCode() { if (!$hashCodeMemoized) { int h = 1; h *= 1000003; h ^= humanDetails.hashCode(); h *= 1000003; h ^= droidDetails.hashCode(); $hashCode = h; $hashCodeMemoized = true; } return $hashCode; } public static final class Mapper implements FragmentResponseFieldMapper<Fragments> { final HumanDetails.Mapper humanDetailsFieldMapper = new HumanDetails.Mapper(); final DroidDetails.Mapper droidDetailsFieldMapper = new DroidDetails.Mapper(); @Override public @Nonnull Fragments map(ResponseReader reader, @Nonnull String conditionalType) throws IOException { HumanDetails humanDetails = null; DroidDetails droidDetails = null; if (HumanDetails.POSSIBLE_TYPES.contains(conditionalType)) { humanDetails = humanDetailsFieldMapper.map(reader); } if (DroidDetails.POSSIBLE_TYPES.contains(conditionalType)) { droidDetails = droidDetailsFieldMapper.map(reader); } return new Fragments(humanDetails, droidDetails); } } } public static final class Mapper implements ResponseFieldMapper<Luke> { 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 Luke map(ResponseReader reader) throws IOException { final String __typename = reader.read(fields[0]); final Fragments fragments = reader.read(fields[1]); return new Luke(__typename, fragments); } } } }