package com.example.fragment_with_inline_fragment.fragment;
import com.apollographql.apollo.api.Field;
import com.apollographql.apollo.api.GraphqlFragment;
import com.apollographql.apollo.api.ResponseFieldMapper;
import com.apollographql.apollo.api.ResponseReader;
import com.apollographql.apollo.api.internal.Optional;
import java.io.IOException;
import java.lang.Integer;
import java.lang.Object;
import java.lang.Override;
import java.lang.String;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import javax.annotation.Generated;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@Generated("Apollo GraphQL")
public class HeroDetails implements GraphqlFragment {
public static final String FRAGMENT_DEFINITION = "fragment HeroDetails on Character {\n"
+ " __typename\n"
+ " name\n"
+ " friendsConnection {\n"
+ " __typename\n"
+ " totalCount\n"
+ " edges {\n"
+ " __typename\n"
+ " node {\n"
+ " __typename\n"
+ " name\n"
+ " }\n"
+ " }\n"
+ " }\n"
+ " ... on Droid {\n"
+ " __typename\n"
+ " name\n"
+ " primaryFunction\n"
+ " }\n"
+ "}";
public static final List<String> POSSIBLE_TYPES = Collections.unmodifiableList(Arrays.asList( "Human", "Droid"));
private final @Nonnull String __typename;
private final @Nonnull String name;
private final @Nonnull FriendsConnection friendsConnection;
private final Optional<AsDroid> asDroid;
private volatile String $toString;
private volatile int $hashCode;
private volatile boolean $hashCodeMemoized;
public HeroDetails(@Nonnull String __typename, @Nonnull String name,
@Nonnull FriendsConnection friendsConnection, @Nullable AsDroid asDroid) {
this.__typename = __typename;
this.name = name;
this.friendsConnection = friendsConnection;
this.asDroid = Optional.fromNullable(asDroid);
}
public @Nonnull String __typename() {
return this.__typename;
}
/**
* The name of the character
*/
public @Nonnull String name() {
return this.name;
}
/**
* The friends of the character exposed as a connection with edges
*/
public @Nonnull FriendsConnection friendsConnection() {
return this.friendsConnection;
}
public Optional<AsDroid> asDroid() {
return this.asDroid;
}
@Override
public String toString() {
if ($toString == null) {
$toString = "HeroDetails{"
+ "__typename=" + __typename + ", "
+ "name=" + name + ", "
+ "friendsConnection=" + friendsConnection + ", "
+ "asDroid=" + asDroid
+ "}";
}
return $toString;
}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (o instanceof HeroDetails) {
HeroDetails that = (HeroDetails) o;
return this.__typename.equals(that.__typename)
&& this.name.equals(that.name)
&& this.friendsConnection.equals(that.friendsConnection)
&& this.asDroid.equals(that.asDroid);
}
return false;
}
@Override
public int hashCode() {
if (!$hashCodeMemoized) {
int h = 1;
h *= 1000003;
h ^= __typename.hashCode();
h *= 1000003;
h ^= name.hashCode();
h *= 1000003;
h ^= friendsConnection.hashCode();
h *= 1000003;
h ^= asDroid.hashCode();
$hashCode = h;
$hashCodeMemoized = true;
}
return $hashCode;
}
public static final class Mapper implements ResponseFieldMapper<HeroDetails> {
final FriendsConnection.Mapper friendsConnectionFieldMapper = new FriendsConnection.Mapper();
final AsDroid.Mapper asDroidFieldMapper = new AsDroid.Mapper();
final Field[] fields = {
Field.forString("__typename", "__typename", null, false),
Field.forString("name", "name", null, false),
Field.forObject("friendsConnection", "friendsConnection", null, false, new Field.ObjectReader<FriendsConnection>() {
@Override public FriendsConnection read(final ResponseReader reader) throws IOException {
return friendsConnectionFieldMapper.map(reader);
}
}),
Field.forConditionalType("__typename", "__typename", new Field.ConditionalTypeReader<AsDroid>() {
@Override
public AsDroid read(String conditionalType, ResponseReader reader) throws IOException {
if (conditionalType.equals("Droid")) {
return asDroidFieldMapper.map(reader);
} else {
return null;
}
}
})
};
@Override
public HeroDetails map(ResponseReader reader) throws IOException {
final String __typename = reader.read(fields[0]);
final String name = reader.read(fields[1]);
final FriendsConnection friendsConnection = reader.read(fields[2]);
final AsDroid asDroid = reader.read(fields[3]);
return new HeroDetails(__typename, name, friendsConnection, asDroid);
}
}
public static class FriendsConnection {
private final @Nonnull String __typename;
private final Optional<Integer> totalCount;
private final Optional<List<Edge>> edges;
private volatile String $toString;
private volatile int $hashCode;
private volatile boolean $hashCodeMemoized;
public FriendsConnection(@Nonnull String __typename, @Nullable Integer totalCount,
@Nullable List<Edge> edges) {
this.__typename = __typename;
this.totalCount = Optional.fromNullable(totalCount);
this.edges = Optional.fromNullable(edges);
}
public @Nonnull String __typename() {
return this.__typename;
}
/**
* The total number of friends
*/
public Optional<Integer> totalCount() {
return this.totalCount;
}
/**
* The edges for each of the character's friends.
*/
public Optional<List<Edge>> edges() {
return this.edges;
}
@Override
public String toString() {
if ($toString == null) {
$toString = "FriendsConnection{"
+ "__typename=" + __typename + ", "
+ "totalCount=" + totalCount + ", "
+ "edges=" + edges
+ "}";
}
return $toString;
}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (o instanceof FriendsConnection) {
FriendsConnection that = (FriendsConnection) o;
return this.__typename.equals(that.__typename)
&& this.totalCount.equals(that.totalCount)
&& this.edges.equals(that.edges);
}
return false;
}
@Override
public int hashCode() {
if (!$hashCodeMemoized) {
int h = 1;
h *= 1000003;
h ^= __typename.hashCode();
h *= 1000003;
h ^= totalCount.hashCode();
h *= 1000003;
h ^= edges.hashCode();
$hashCode = h;
$hashCodeMemoized = true;
}
return $hashCode;
}
public static final class Mapper implements ResponseFieldMapper<FriendsConnection> {
final Edge.Mapper edgeFieldMapper = new Edge.Mapper();
final Field[] fields = {
Field.forString("__typename", "__typename", null, false),
Field.forInt("totalCount", "totalCount", null, true),
Field.forList("edges", "edges", null, true, new Field.ObjectReader<Edge>() {
@Override public Edge read(final ResponseReader reader) throws IOException {
return edgeFieldMapper.map(reader);
}
})
};
@Override
public FriendsConnection map(ResponseReader reader) throws IOException {
final String __typename = reader.read(fields[0]);
final Integer totalCount = reader.read(fields[1]);
final List<Edge> edges = reader.read(fields[2]);
return new FriendsConnection(__typename, totalCount, edges);
}
}
}
public static class Edge {
private final @Nonnull String __typename;
private final Optional<Node> node;
private volatile String $toString;
private volatile int $hashCode;
private volatile boolean $hashCodeMemoized;
public Edge(@Nonnull String __typename, @Nullable Node node) {
this.__typename = __typename;
this.node = Optional.fromNullable(node);
}
public @Nonnull String __typename() {
return this.__typename;
}
/**
* The character represented by this friendship edge
*/
public Optional<Node> node() {
return this.node;
}
@Override
public String toString() {
if ($toString == null) {
$toString = "Edge{"
+ "__typename=" + __typename + ", "
+ "node=" + node
+ "}";
}
return $toString;
}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (o instanceof Edge) {
Edge that = (Edge) o;
return this.__typename.equals(that.__typename)
&& this.node.equals(that.node);
}
return false;
}
@Override
public int hashCode() {
if (!$hashCodeMemoized) {
int h = 1;
h *= 1000003;
h ^= __typename.hashCode();
h *= 1000003;
h ^= node.hashCode();
$hashCode = h;
$hashCodeMemoized = true;
}
return $hashCode;
}
public static final class Mapper implements ResponseFieldMapper<Edge> {
final Node.Mapper nodeFieldMapper = new Node.Mapper();
final Field[] fields = {
Field.forString("__typename", "__typename", null, false),
Field.forObject("node", "node", null, true, new Field.ObjectReader<Node>() {
@Override public Node read(final ResponseReader reader) throws IOException {
return nodeFieldMapper.map(reader);
}
})
};
@Override
public Edge map(ResponseReader reader) throws IOException {
final String __typename = reader.read(fields[0]);
final Node node = reader.read(fields[1]);
return new Edge(__typename, node);
}
}
}
public static class Node {
private final @Nonnull String __typename;
private final @Nonnull String name;
private volatile String $toString;
private volatile int $hashCode;
private volatile boolean $hashCodeMemoized;
public Node(@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 = "Node{"
+ "__typename=" + __typename + ", "
+ "name=" + name
+ "}";
}
return $toString;
}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (o instanceof Node) {
Node that = (Node) 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<Node> {
final Field[] fields = {
Field.forString("__typename", "__typename", null, false),
Field.forString("name", "name", null, false)
};
@Override
public Node map(ResponseReader reader) throws IOException {
final String __typename = reader.read(fields[0]);
final String name = reader.read(fields[1]);
return new Node(__typename, name);
}
}
}
public static class AsDroid {
private final @Nonnull String __typename;
private final @Nonnull String name;
private final @Nonnull FriendsConnection1 friendsConnection;
private final Optional<String> primaryFunction;
private volatile String $toString;
private volatile int $hashCode;
private volatile boolean $hashCodeMemoized;
public AsDroid(@Nonnull String __typename, @Nonnull String name,
@Nonnull FriendsConnection1 friendsConnection, @Nullable String primaryFunction) {
this.__typename = __typename;
this.name = name;
this.friendsConnection = friendsConnection;
this.primaryFunction = Optional.fromNullable(primaryFunction);
}
public @Nonnull String __typename() {
return this.__typename;
}
/**
* What others call this droid
*/
public @Nonnull String name() {
return this.name;
}
/**
* The friends of the droid exposed as a connection with edges
*/
public @Nonnull FriendsConnection1 friendsConnection() {
return this.friendsConnection;
}
/**
* This droid's primary function
*/
public Optional<String> primaryFunction() {
return this.primaryFunction;
}
@Override
public String toString() {
if ($toString == null) {
$toString = "AsDroid{"
+ "__typename=" + __typename + ", "
+ "name=" + name + ", "
+ "friendsConnection=" + friendsConnection + ", "
+ "primaryFunction=" + primaryFunction
+ "}";
}
return $toString;
}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (o instanceof AsDroid) {
AsDroid that = (AsDroid) o;
return this.__typename.equals(that.__typename)
&& this.name.equals(that.name)
&& this.friendsConnection.equals(that.friendsConnection)
&& this.primaryFunction.equals(that.primaryFunction);
}
return false;
}
@Override
public int hashCode() {
if (!$hashCodeMemoized) {
int h = 1;
h *= 1000003;
h ^= __typename.hashCode();
h *= 1000003;
h ^= name.hashCode();
h *= 1000003;
h ^= friendsConnection.hashCode();
h *= 1000003;
h ^= primaryFunction.hashCode();
$hashCode = h;
$hashCodeMemoized = true;
}
return $hashCode;
}
public static final class Mapper implements ResponseFieldMapper<AsDroid> {
final FriendsConnection1.Mapper friendsConnection1FieldMapper = new FriendsConnection1.Mapper();
final Field[] fields = {
Field.forString("__typename", "__typename", null, false),
Field.forString("name", "name", null, false),
Field.forObject("friendsConnection", "friendsConnection", null, false, new Field.ObjectReader<FriendsConnection1>() {
@Override public FriendsConnection1 read(final ResponseReader reader) throws IOException {
return friendsConnection1FieldMapper.map(reader);
}
}),
Field.forString("primaryFunction", "primaryFunction", null, true)
};
@Override
public AsDroid map(ResponseReader reader) throws IOException {
final String __typename = reader.read(fields[0]);
final String name = reader.read(fields[1]);
final FriendsConnection1 friendsConnection = reader.read(fields[2]);
final String primaryFunction = reader.read(fields[3]);
return new AsDroid(__typename, name, friendsConnection, primaryFunction);
}
}
}
public static class FriendsConnection1 {
private final @Nonnull String __typename;
private final Optional<Integer> totalCount;
private final Optional<List<Edge1>> edges;
private volatile String $toString;
private volatile int $hashCode;
private volatile boolean $hashCodeMemoized;
public FriendsConnection1(@Nonnull String __typename, @Nullable Integer totalCount,
@Nullable List<Edge1> edges) {
this.__typename = __typename;
this.totalCount = Optional.fromNullable(totalCount);
this.edges = Optional.fromNullable(edges);
}
public @Nonnull String __typename() {
return this.__typename;
}
/**
* The total number of friends
*/
public Optional<Integer> totalCount() {
return this.totalCount;
}
/**
* The edges for each of the character's friends.
*/
public Optional<List<Edge1>> edges() {
return this.edges;
}
@Override
public String toString() {
if ($toString == null) {
$toString = "FriendsConnection1{"
+ "__typename=" + __typename + ", "
+ "totalCount=" + totalCount + ", "
+ "edges=" + edges
+ "}";
}
return $toString;
}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (o instanceof FriendsConnection1) {
FriendsConnection1 that = (FriendsConnection1) o;
return this.__typename.equals(that.__typename)
&& this.totalCount.equals(that.totalCount)
&& this.edges.equals(that.edges);
}
return false;
}
@Override
public int hashCode() {
if (!$hashCodeMemoized) {
int h = 1;
h *= 1000003;
h ^= __typename.hashCode();
h *= 1000003;
h ^= totalCount.hashCode();
h *= 1000003;
h ^= edges.hashCode();
$hashCode = h;
$hashCodeMemoized = true;
}
return $hashCode;
}
public static final class Mapper implements ResponseFieldMapper<FriendsConnection1> {
final Edge1.Mapper edge1FieldMapper = new Edge1.Mapper();
final Field[] fields = {
Field.forString("__typename", "__typename", null, false),
Field.forInt("totalCount", "totalCount", null, true),
Field.forList("edges", "edges", null, true, new Field.ObjectReader<Edge1>() {
@Override public Edge1 read(final ResponseReader reader) throws IOException {
return edge1FieldMapper.map(reader);
}
})
};
@Override
public FriendsConnection1 map(ResponseReader reader) throws IOException {
final String __typename = reader.read(fields[0]);
final Integer totalCount = reader.read(fields[1]);
final List<Edge1> edges = reader.read(fields[2]);
return new FriendsConnection1(__typename, totalCount, edges);
}
}
}
public static class Edge1 {
private final @Nonnull String __typename;
private final Optional<Node1> node;
private volatile String $toString;
private volatile int $hashCode;
private volatile boolean $hashCodeMemoized;
public Edge1(@Nonnull String __typename, @Nullable Node1 node) {
this.__typename = __typename;
this.node = Optional.fromNullable(node);
}
public @Nonnull String __typename() {
return this.__typename;
}
/**
* The character represented by this friendship edge
*/
public Optional<Node1> node() {
return this.node;
}
@Override
public String toString() {
if ($toString == null) {
$toString = "Edge1{"
+ "__typename=" + __typename + ", "
+ "node=" + node
+ "}";
}
return $toString;
}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (o instanceof Edge1) {
Edge1 that = (Edge1) o;
return this.__typename.equals(that.__typename)
&& this.node.equals(that.node);
}
return false;
}
@Override
public int hashCode() {
if (!$hashCodeMemoized) {
int h = 1;
h *= 1000003;
h ^= __typename.hashCode();
h *= 1000003;
h ^= node.hashCode();
$hashCode = h;
$hashCodeMemoized = true;
}
return $hashCode;
}
public static final class Mapper implements ResponseFieldMapper<Edge1> {
final Node1.Mapper node1FieldMapper = new Node1.Mapper();
final Field[] fields = {
Field.forString("__typename", "__typename", null, false),
Field.forObject("node", "node", null, true, new Field.ObjectReader<Node1>() {
@Override public Node1 read(final ResponseReader reader) throws IOException {
return node1FieldMapper.map(reader);
}
})
};
@Override
public Edge1 map(ResponseReader reader) throws IOException {
final String __typename = reader.read(fields[0]);
final Node1 node = reader.read(fields[1]);
return new Edge1(__typename, node);
}
}
}
public static class Node1 {
private final @Nonnull String __typename;
private final @Nonnull String name;
private volatile String $toString;
private volatile int $hashCode;
private volatile boolean $hashCodeMemoized;
public Node1(@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 = "Node1{"
+ "__typename=" + __typename + ", "
+ "name=" + name
+ "}";
}
return $toString;
}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (o instanceof Node1) {
Node1 that = (Node1) 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<Node1> {
final Field[] fields = {
Field.forString("__typename", "__typename", null, false),
Field.forString("name", "name", null, false)
};
@Override
public Node1 map(ResponseReader reader) throws IOException {
final String __typename = reader.read(fields[0]);
final String name = reader.read(fields[1]);
return new Node1(__typename, name);
}
}
}
}