diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLParametrizedInput.java b/src/main/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLParametrizedInput.java index aca3d7992..b3bbf9030 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLParametrizedInput.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLParametrizedInput.java @@ -5,4 +5,6 @@ */ public interface GraphQLParametrizedInput { + GraphQLParametrizedInput deepCopy(); + } diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLResponseField.java b/src/main/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLResponseField.java index e42a5099b..9ca1cad2d 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLResponseField.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLResponseField.java @@ -86,4 +86,23 @@ public boolean equals(Object obj) { public int hashCode() { return Objects.hash(name, alias, parameters, projection); } + + /** + * Returns a clone of the instance, having a deep copy of the parameters and projection. + * + * @return a clone (deep copy) + */ + public GraphQLResponseField deepCopy() { + GraphQLResponseField deepCopy = new GraphQLResponseField(this.name); + if (this.alias != null) { + deepCopy.alias = this.alias; + } + if (this.parameters != null) { + deepCopy.parameters = this.parameters.deepCopy(); + } + if (this.projection != null) { + deepCopy.projection = this.projection.deepCopy$(); + } + return deepCopy; + } } diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLResponseProjection.java b/src/main/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLResponseProjection.java index 4162b1e1b..27e95978b 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLResponseProjection.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLResponseProjection.java @@ -1,16 +1,79 @@ package com.kobylynskyi.graphql.codegen.model.graphql; -import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.StringJoiner; /** - * The implementation class should basically contain the fields of the particular type which - * should be returned back to the client. + * The implementation class should contain the fields of the particular type that should be returned to the client. */ public abstract class GraphQLResponseProjection { - protected final List fields = new ArrayList<>(); + /** + * Contains all response projection fields, where: + * key - is the name+alias pair (where alias is nullable) + * value - is GraphQLResponseField which represents the response projection field + */ + protected final Map, GraphQLResponseField> fields = new LinkedHashMap<>(); + + protected GraphQLResponseProjection() { + } + + protected GraphQLResponseProjection(GraphQLResponseProjection projection) { + if (projection == null) { + return; + } + projection.fields.values().forEach(this::add$); + } + + protected GraphQLResponseProjection(List projections) { + if (projections == null) { + return; + } + for (GraphQLResponseProjection projection : projections) { + if (projection == null) { + continue; + } + projection.fields.values().forEach(this::add$); + } + } + + @SuppressWarnings({"checkstyle:MethodName", "java:S100"}) + public abstract GraphQLResponseProjection deepCopy$(); + + @SuppressWarnings({"checkstyle:MethodName", "java:S100", "java:S3824"}) + protected void add$(GraphQLResponseField responseField) { + Pair nameAndAlias = new Pair<>(responseField.getName(), responseField.getAlias()); + GraphQLResponseField existingResponseField = fields.get(nameAndAlias); + if (existingResponseField == null) { + fields.put(nameAndAlias, responseField.deepCopy()); + return; + } + + if (!Objects.equals(responseField.getParameters(), existingResponseField.getParameters())) { + throw new IllegalArgumentException( + String.format("Field '%s' has an argument conflict", existingResponseField.getName())); + } + + if (responseField.getAlias() != null) { + existingResponseField.alias(responseField.getAlias()); + } + if (responseField.getParameters() != null) { + existingResponseField.parameters(responseField.getParameters().deepCopy()); + } + if (responseField.getProjection() != null) { + GraphQLResponseProjection projectionCopy = responseField.getProjection().deepCopy$(); + if (existingResponseField.getProjection() != null) { + for (GraphQLResponseField field : projectionCopy.fields.values()) { + existingResponseField.getProjection().add$(field); + } + } else { + existingResponseField.projection(projectionCopy); + } + } + } @Override public String toString() { @@ -18,7 +81,10 @@ public String toString() { return ""; } StringJoiner joiner = new StringJoiner(" ", "{ ", " }"); - fields.forEach(field -> joiner.add(field.toString())); + for (GraphQLResponseField value : fields.values()) { + joiner.add(value.toString()); + } return joiner.toString(); } + } diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/model/graphql/Pair.java b/src/main/java/com/kobylynskyi/graphql/codegen/model/graphql/Pair.java new file mode 100644 index 000000000..3b9bba27e --- /dev/null +++ b/src/main/java/com/kobylynskyi/graphql/codegen/model/graphql/Pair.java @@ -0,0 +1,50 @@ +package com.kobylynskyi.graphql.codegen.model.graphql; + +import java.util.Objects; + +/** + * Class that represents a key-value pair. + * + * @param key + * @param value + */ +public class Pair { + + private final K key; + private final V value; + + public K getKey() { + return key; + } + + public V getValue() { + return value; + } + + public Pair(K key, V value) { + this.key = key; + this.value = value; + } + + @Override + public String toString() { + return key + "=" + value; + } + + @Override + public int hashCode() { + return key.hashCode() * 13 + (value == null ? 0 : value.hashCode()); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o instanceof Pair) { + Pair pair = (Pair) o; + return Objects.equals(key, pair.key) && Objects.equals(value, pair.value); + } + return false; + } +} diff --git a/src/main/resources/templates/java-lang/parametrized_input.ftl b/src/main/resources/templates/java-lang/parametrized_input.ftl index 3b2927154..97eb06fd2 100644 --- a/src/main/resources/templates/java-lang/parametrized_input.ftl +++ b/src/main/resources/templates/java-lang/parametrized_input.ftl @@ -70,6 +70,17 @@ public class ${className} implements GraphQLParametrizedInput { + @Override + public ${className} deepCopy() { + ${className} parametrizedInput = new ${className}(); + <#if fields?has_content> + <#list fields as field> + parametrizedInput.${field.name}(this.${field.name}); + + + return parametrizedInput; + } + <#if equalsAndHashCode> @Override public boolean equals(Object obj) { diff --git a/src/main/resources/templates/java-lang/response_projection.ftl b/src/main/resources/templates/java-lang/response_projection.ftl index 939d21ec5..7f23e48c9 100644 --- a/src/main/resources/templates/java-lang/response_projection.ftl +++ b/src/main/resources/templates/java-lang/response_projection.ftl @@ -8,6 +8,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; <#if equalsAndHashCode> import java.util.Objects; @@ -36,6 +37,14 @@ public class ${className} extends GraphQLResponseProjection { public ${className}() { } + + public ${className}(${className} projection) { + super(projection); + } + + public ${className}(List<${className}> projections) { + super(projections); + } <#if fields?has_content && generateAllMethodInProjection> public ${className} all$() { @@ -76,7 +85,7 @@ public class ${className} extends GraphQLResponseProjection { } public ${className} ${field.methodName}(String alias<#if field.type?has_content>, ${field.type} subProjection) { - fields.add(new GraphQLResponseField("${field.name}").alias(alias)<#if field.type?has_content>.projection(subProjection)); + add$(new GraphQLResponseField("${field.name}").alias(alias)<#if field.type?has_content>.projection(subProjection)); return this; } @@ -86,13 +95,18 @@ public class ${className} extends GraphQLResponseProjection { } public ${className} ${field.methodName}(String alias, ${field.parametrizedInputClassName} input<#if field.type?has_content>, ${field.type} subProjection) { - fields.add(new GraphQLResponseField("${field.name}").alias(alias).parameters(input)<#if field.type?has_content>.projection(subProjection)); + add$(new GraphQLResponseField("${field.name}").alias(alias).parameters(input)<#if field.type?has_content>.projection(subProjection)); return this; } + @Override + public ${className} deepCopy$() { + return new ${className}(this); + } + <#if equalsAndHashCode> @Override public boolean equals(Object obj) { diff --git a/src/main/resources/templates/kotlin-lang/parametrized_input.ftl b/src/main/resources/templates/kotlin-lang/parametrized_input.ftl index 7d11b654b..6057672bd 100755 --- a/src/main/resources/templates/kotlin-lang/parametrized_input.ftl +++ b/src/main/resources/templates/kotlin-lang/parametrized_input.ftl @@ -38,6 +38,19 @@ data class ${className}( ) : GraphQLParametrizedInput { + override fun deepCopy(): ${className} { + <#if fields?has_content> + return ${className}( + <#list fields as field> + this.${field.name}<#if field_has_next>, + + ) + <#else> + return ${className}() + + + } + override fun toString(): String { val joiner = StringJoiner(", ", "( ", " )") <#list fields as field> diff --git a/src/main/resources/templates/kotlin-lang/response_projection.ftl b/src/main/resources/templates/kotlin-lang/response_projection.ftl index c4f501116..8c76cb09b 100755 --- a/src/main/resources/templates/kotlin-lang/response_projection.ftl +++ b/src/main/resources/templates/kotlin-lang/response_projection.ftl @@ -24,7 +24,13 @@ import java.util.Objects <#list annotations as annotation> @${annotation} -open class ${className} : GraphQLResponseProjection() { +open class ${className} : GraphQLResponseProjection { + + constructor(): super() + + constructor(projection: ${className}): super(projection) + + constructor(projections: List<${className}>): super(projections) <#if fields?has_content && generateAllMethodInProjection> private val projectionDepthOnFields: MutableMap by lazy { mutableMapOf() } @@ -63,7 +69,7 @@ open class ${className} : GraphQLResponseProjection() { fun ${field.methodName}(<#if field.type?has_content>subProjection: ${field.type}): ${className} = ${field.methodName}(<#if field.parametrizedInputClassName?has_content>null<#if field.type?has_content>, subProjection) fun ${field.methodName}(alias: String?<#if field.type?has_content>, subProjection: ${field.type}): ${className} { - fields.add(GraphQLResponseField("${field.name}").alias(alias)<#if field.type?has_content>.projection(subProjection)) + `add$`(GraphQLResponseField("${field.name}").alias(alias)<#if field.type?has_content>.projection(subProjection)) return this } @@ -71,13 +77,15 @@ open class ${className} : GraphQLResponseProjection() { fun ${field.methodName}(input: ${field.parametrizedInputClassName}<#if field.type?has_content>, subProjection: ${field.type}): ${className} = ${field.methodName}(null, input<#if field.type?has_content>, subProjection) fun ${field.methodName}(alias: String?, input: ${field.parametrizedInputClassName}<#if field.type?has_content>, subProjection: ${field.type}): ${className} { - fields.add(GraphQLResponseField("${field.name}").alias(alias).parameters(input)<#if field.type?has_content>.projection(subProjection)) + `add$`(GraphQLResponseField("${field.name}").alias(alias).parameters(input)<#if field.type?has_content>.projection(subProjection)) return this } + override fun `deepCopy$`(): ${className} = ${className}(this) + <#if equalsAndHashCode> override fun equals(other: Any?): Boolean { if (this === other) { diff --git a/src/main/resources/templates/scala-lang/parametrized_input.ftl b/src/main/resources/templates/scala-lang/parametrized_input.ftl index 71103289d..c6fd907a0 100644 --- a/src/main/resources/templates/scala-lang/parametrized_input.ftl +++ b/src/main/resources/templates/scala-lang/parametrized_input.ftl @@ -54,6 +54,18 @@ case class ${className}( ) extends GraphQLParametrizedInput { + override def deepCopy(): ${className} = { + <#if fields?has_content> + ${className}( + <#list fields as field> + this.${field.name}<#if field_has_next>, + + ) + <#else> + ${className}() + + } + override def toString(): String = {<#--There is no Option[Seq[T]], Format is not supported in the generated code, so it is very difficult to write template for this format.--> <#if fields?has_content> scala.Seq(<#list fields as field><#assign getMethod = ".get"><#assign asJava = ".asJava"> diff --git a/src/main/resources/templates/scala-lang/response_projection.ftl b/src/main/resources/templates/scala-lang/response_projection.ftl index a52fa69a2..42e4c3a14 100644 --- a/src/main/resources/templates/scala-lang/response_projection.ftl +++ b/src/main/resources/templates/scala-lang/response_projection.ftl @@ -10,6 +10,7 @@ import java.util.Objects <#if fields?has_content && generateAllMethodInProjection> import scala.collection.mutable.HashMap +import scala.collection.JavaConverters._ <#if javaDoc?has_content> /** @@ -27,7 +28,29 @@ import scala.collection.mutable.HashMap <#list annotations as annotation> @${annotation} -class ${className} extends GraphQLResponseProjection { +class ${className}() extends GraphQLResponseProjection() { + + def this(projection: ${className}) = { + this() + if (projection != null) { + for (field <- projection.fields.values.asScala) { + add$(field) + } + } + } + + def this(projections: scala.Seq[${className}]) = { + this() + if (projections != null) { + for (projection <- projections) { + if (projection != null) { + for (field <- projection.fields.values.asScala) { + add$(field) + } + } + } + } + } <#if fields?has_content && generateAllMethodInProjection> private final lazy val projectionDepthOnFields = new HashMap[String, Int] @@ -68,7 +91,7 @@ class ${className} extends GraphQLResponseProjection { } def ${field.methodName}(alias: String<#if field.type?has_content>, subProjection: ${field.type}): ${className} = { - fields.add(new GraphQLResponseField("${field.name}").alias(alias)<#if field.type?has_content>.projection(subProjection)) + add$(new GraphQLResponseField("${field.name}").alias(alias)<#if field.type?has_content>.projection(subProjection)) this } @@ -78,13 +101,15 @@ class ${className} extends GraphQLResponseProjection { } def ${field.methodName}(alias: String, input: ${field.parametrizedInputClassName} <#if field.type?has_content>, subProjection: ${field.type}): ${className} = { - fields.add(new GraphQLResponseField("${field.name}").alias(alias).parameters(input)<#if field.type?has_content>.projection(subProjection)) + add$(new GraphQLResponseField("${field.name}").alias(alias).parameters(input)<#if field.type?has_content>.projection(subProjection)) this } + override def deepCopy$(): ${className} = new ${className}(this) + <#if equalsAndHashCode> override def equals(obj: Any): Boolean = { if (this == obj) { diff --git a/src/main/resources/templates/templates.properties b/src/main/resources/templates/templates.properties deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLResponseProjectionTest.java b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLResponseProjectionTest.java new file mode 100644 index 000000000..67335f8c6 --- /dev/null +++ b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLResponseProjectionTest.java @@ -0,0 +1,209 @@ +package com.kobylynskyi.graphql.codegen.model.graphql; + +import com.kobylynskyi.graphql.codegen.model.graphql.data.EventPropertyChildParametrizedInput; +import com.kobylynskyi.graphql.codegen.model.graphql.data.EventPropertyResponseProjection; +import com.kobylynskyi.graphql.codegen.model.graphql.data.EventResponseProjection; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +import static java.util.Arrays.asList; +import static java.util.Collections.singletonList; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; + +class GraphQLResponseProjectionTest { + + @Test + public void deepCopy_empty() { + EventResponseProjection original = new EventResponseProjection(); + EventResponseProjection deepCopy = original.deepCopy$(); + assertTrue(deepCopy.fields.isEmpty()); + } + + @Test + public void deepCopy_null() { + assertTrue(new EventResponseProjection((EventResponseProjection) null).fields.isEmpty()); + } + + @Test + public void deepCopy_null_list() { + assertTrue(new EventResponseProjection((List) null).fields.isEmpty()); + } + + @Test + public void deepCopy_empty_list() { + assertTrue(new EventResponseProjection(new ArrayList<>()).fields.isEmpty()); + } + + @Test + public void deepCopy_list_with_null_element() { + assertTrue(new EventResponseProjection(new ArrayList<>(singletonList(null))).fields.isEmpty()); + } + + @Test + public void deepCopy() { + EventResponseProjection original = new EventResponseProjection(); + original.id(); + original.status("state"); + original.properties(new EventPropertyResponseProjection() + .intVal() + .stringVal() + .child(new EventPropertyChildParametrizedInput(1, 2), + new EventPropertyResponseProjection() + .booleanVal())); + + EventResponseProjection deepCopy = original.deepCopy$(); + + assertEquals("{ id state : status properties { intVal stringVal child (first: 1, last: 2) { booleanVal } } }", + original.toString()); + assertEquals("{ id state : status properties { intVal stringVal child (first: 1, last: 2) { booleanVal } } }", + deepCopy.toString()); + + // check that original and deepcopy are not modified + + original.active(); + deepCopy.rating(); + + assertEquals( + "{ id state : status properties { intVal stringVal child (first: 1, last: 2) { booleanVal } } active }", + original.toString()); + assertEquals( + "{ id state : status properties { intVal stringVal child (first: 1, last: 2) { booleanVal } } rating }", + deepCopy.toString()); + } + + @Test + public void join() { + EventResponseProjection projection1 = new EventResponseProjection(); + projection1.id(); + projection1.status("state"); + projection1.rating(); + projection1.properties(new EventPropertyResponseProjection() + .intVal() + .stringVal() + .child("child12", new EventPropertyChildParametrizedInput(1, 2), + new EventPropertyResponseProjection() + .booleanVal())); + + EventResponseProjection projection2 = new EventResponseProjection(); + projection2.id("uid"); + projection2.status(); + projection2.active(); + projection2.properties(new EventPropertyResponseProjection() + .floatVal() + .child("child34", new EventPropertyChildParametrizedInput(3, 4), + new EventPropertyResponseProjection() + .intVal())); + + EventResponseProjection projection12 = new EventResponseProjection(asList(projection1, projection2)); + assertEquals("{ id state : status rating " + + "properties { intVal stringVal child12 : child (first: 1, last: 2) { booleanVal } " + + "floatVal child34 : child (first: 3, last: 4) { intVal } } uid : id status active }", + projection12.toString()); + } + + @Test + public void join_same_aliases_different_inputs() { + EventResponseProjection projection1 = new EventResponseProjection() + .properties(new EventPropertyResponseProjection() + .child(new EventPropertyChildParametrizedInput(1, 2), + new EventPropertyResponseProjection().intVal())); + + EventResponseProjection projection2 = new EventResponseProjection() + .properties(new EventPropertyResponseProjection() + .child(new EventPropertyChildParametrizedInput(3, 4), + new EventPropertyResponseProjection().intVal())); + + try { + new EventResponseProjection(asList(projection1, projection2)); + fail(); + } catch (IllegalArgumentException e) { + assertEquals("Field 'child' has an argument conflict", e.getMessage()); + } + } + + @Test + public void join_same_aliases_different_inputs2() { + EventResponseProjection projection1 = new EventResponseProjection() + .properties(new EventPropertyResponseProjection() + .child("children", new EventPropertyChildParametrizedInput(1, 2), + new EventPropertyResponseProjection().intVal())); + + EventResponseProjection projection2 = new EventResponseProjection() + .properties(new EventPropertyResponseProjection() + .child("children", new EventPropertyChildParametrizedInput(3, 4), + new EventPropertyResponseProjection().intVal())); + + try { + new EventResponseProjection(asList(projection1, projection2)); + fail(); + } catch (IllegalArgumentException e) { + assertEquals("Field 'child' has an argument conflict", e.getMessage()); + } + } + + @Test + public void join_same_aliases_different_inputs3() { + EventResponseProjection projection1 = new EventResponseProjection() + .properties(new EventPropertyResponseProjection() + .child("children", new EventPropertyChildParametrizedInput(1, 2), + null)); + + EventResponseProjection projection2 = new EventResponseProjection() + .properties(new EventPropertyResponseProjection() + .child("children", new EventPropertyChildParametrizedInput(3, 4), + new EventPropertyResponseProjection().intVal())); + + try { + new EventResponseProjection(asList(projection1, projection2)); + fail(); + } catch (IllegalArgumentException e) { + assertEquals("Field 'child' has an argument conflict", e.getMessage()); + } + } + + @Test + public void join_same_aliases_different_inputs4() { + EventResponseProjection projection1 = new EventResponseProjection() + .properties(new EventPropertyResponseProjection() + .child("children", new EventPropertyChildParametrizedInput(1, 2), + new EventPropertyResponseProjection().intVal())); + + EventResponseProjection projection2 = new EventResponseProjection() + .properties(new EventPropertyResponseProjection() + .child("children", new EventPropertyChildParametrizedInput(3, 4), + null)); + + try { + new EventResponseProjection(asList(projection1, projection2)); + fail(); + } catch (IllegalArgumentException e) { + assertEquals("Field 'child' has an argument conflict", e.getMessage()); + } + } + + @Test + public void join_null_values() { + EventResponseProjection projection1 = new EventResponseProjection(); + projection1.id(null); + projection1.properties(null); + + EventResponseProjection projection2 = new EventResponseProjection(); + projection2.properties(new EventPropertyResponseProjection() + .child(null)); + + EventResponseProjection projection3 = new EventResponseProjection(); + projection2.properties(new EventPropertyResponseProjection() + .child(null, null, new EventPropertyResponseProjection() + .child(null))); + + EventResponseProjection projection123 = new EventResponseProjection( + asList(projection1, projection2, projection3)); + assertEquals("{ id properties { child { child } } }", + projection123.toString()); + } + +} \ No newline at end of file diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventPropertyChildParametrizedInput.java b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventPropertyChildParametrizedInput.java index b8a4f6f26..2179eff54 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventPropertyChildParametrizedInput.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventPropertyChildParametrizedInput.java @@ -62,4 +62,11 @@ public String toString() { return joiner.toString(); } + @Override + public EventPropertyChildParametrizedInput deepCopy() { + EventPropertyChildParametrizedInput parametrizedInput = new EventPropertyChildParametrizedInput(); + parametrizedInput.first(this.first); + parametrizedInput.last(this.last); + return parametrizedInput; + } } \ No newline at end of file diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventPropertyParentParametrizedInput.java b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventPropertyParentParametrizedInput.java index c07845db8..5f40cb22c 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventPropertyParentParametrizedInput.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventPropertyParentParametrizedInput.java @@ -62,4 +62,11 @@ public String toString() { return joiner.toString(); } + @Override + public EventPropertyParentParametrizedInput deepCopy() { + EventPropertyParentParametrizedInput parametrizedInput = new EventPropertyParentParametrizedInput(); + parametrizedInput.withStatus(this.withStatus); + parametrizedInput.createdAfter(this.createdAfter); + return parametrizedInput; + } } diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventPropertyResponseProjection.java b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventPropertyResponseProjection.java index 16eefa0b7..12b64815f 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventPropertyResponseProjection.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventPropertyResponseProjection.java @@ -3,12 +3,27 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * Response projection for EventProperty */ public class EventPropertyResponseProjection extends GraphQLResponseProjection { + private final Map projectionDepthOnFields = new HashMap<>(); + public EventPropertyResponseProjection() { + super(); + } + + public EventPropertyResponseProjection(EventPropertyResponseProjection projection) { + super(projection); + } + + public EventPropertyResponseProjection(List projections) { + super(projections); } public EventPropertyResponseProjection floatVal() { @@ -16,7 +31,7 @@ public EventPropertyResponseProjection floatVal() { } public EventPropertyResponseProjection floatVal(String alias) { - fields.add(new GraphQLResponseField("floatVal").alias(alias)); + add$(new GraphQLResponseField("floatVal").alias(alias)); return this; } @@ -25,7 +40,7 @@ public EventPropertyResponseProjection booleanVal() { } public EventPropertyResponseProjection booleanVal(String alias) { - fields.add(new GraphQLResponseField("booleanVal").alias(alias)); + add$(new GraphQLResponseField("booleanVal").alias(alias)); return this; } @@ -34,7 +49,7 @@ public EventPropertyResponseProjection intVal() { } public EventPropertyResponseProjection intVal(String alias) { - fields.add(new GraphQLResponseField("intVal").alias(alias)); + add$(new GraphQLResponseField("intVal").alias(alias)); return this; } @@ -43,7 +58,7 @@ public EventPropertyResponseProjection stringVal() { } public EventPropertyResponseProjection stringVal(String alias) { - fields.add(new GraphQLResponseField("stringVal").alias(alias)); + add$(new GraphQLResponseField("stringVal").alias(alias)); return this; } @@ -52,7 +67,7 @@ public EventPropertyResponseProjection child(EventPropertyResponseProjection sub } public EventPropertyResponseProjection child(String alias, EventPropertyResponseProjection subProjection) { - fields.add(new GraphQLResponseField("child").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("child").alias(alias).projection(subProjection)); return this; } @@ -63,7 +78,7 @@ public EventPropertyResponseProjection child(EventPropertyChildParametrizedInput public EventPropertyResponseProjection child(String alias, EventPropertyChildParametrizedInput input, EventPropertyResponseProjection subProjection) { - fields.add(new GraphQLResponseField("child").alias(alias).parameters(input).projection(subProjection)); + add$(new GraphQLResponseField("child").alias(alias).parameters(input).projection(subProjection)); return this; } @@ -72,7 +87,7 @@ public EventPropertyResponseProjection parent(EventResponseProjection subProject } public EventPropertyResponseProjection parent(String alias, EventResponseProjection subProjection) { - fields.add(new GraphQLResponseField("parent").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("parent").alias(alias).projection(subProjection)); return this; } @@ -83,7 +98,7 @@ public EventPropertyResponseProjection parent(EventPropertyParentParametrizedInp public EventPropertyResponseProjection parent(String alias, EventPropertyParentParametrizedInput input, EventResponseProjection subProjection) { - fields.add(new GraphQLResponseField("parent").alias(alias).parameters(input).projection(subProjection)); + add$(new GraphQLResponseField("parent").alias(alias).parameters(input).projection(subProjection)); return this; } @@ -94,4 +109,9 @@ public EventPropertyResponseProjection parent(String alias, EventPropertyParentP public GraphQLResponseProjection all$(int maxDepth) { return null; } + + @Override + public GraphQLResponseProjection deepCopy$() { + return new EventPropertyResponseProjection(this); + } } diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventResponseProjection.java b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventResponseProjection.java index e45a94cef..f7693102a 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventResponseProjection.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventResponseProjection.java @@ -3,6 +3,8 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; +import java.util.List; + /** * Response projection for Event */ @@ -11,12 +13,20 @@ public class EventResponseProjection extends GraphQLResponseProjection { public EventResponseProjection() { } + public EventResponseProjection(EventResponseProjection projection) { + super(projection); + } + + public EventResponseProjection(List projections) { + super(projections); + } + public EventResponseProjection id() { return id(null); } public EventResponseProjection id(String alias) { - fields.add(new GraphQLResponseField("id").alias(alias)); + add$(new GraphQLResponseField("id").alias(alias)); return this; } @@ -25,7 +35,7 @@ public EventResponseProjection categoryId() { } public EventResponseProjection categoryId(String alias) { - fields.add(new GraphQLResponseField("categoryId").alias(alias)); + add$(new GraphQLResponseField("categoryId").alias(alias)); return this; } @@ -34,7 +44,7 @@ public EventResponseProjection properties(EventPropertyResponseProjection subPro } public EventResponseProjection properties(String alias, EventPropertyResponseProjection subProjection) { - fields.add(new GraphQLResponseField("properties").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("properties").alias(alias).projection(subProjection)); return this; } @@ -43,7 +53,7 @@ public EventResponseProjection status() { } public EventResponseProjection status(String alias) { - fields.add(new GraphQLResponseField("status").alias(alias)); + add$(new GraphQLResponseField("status").alias(alias)); return this; } @@ -52,7 +62,7 @@ public EventResponseProjection createdBy() { } public EventResponseProjection createdBy(String alias) { - fields.add(new GraphQLResponseField("createdBy").alias(alias)); + add$(new GraphQLResponseField("createdBy").alias(alias)); return this; } @@ -61,7 +71,7 @@ public EventResponseProjection createdDateTime() { } public EventResponseProjection createdDateTime(String alias) { - fields.add(new GraphQLResponseField("createdDateTime").alias(alias)); + add$(new GraphQLResponseField("createdDateTime").alias(alias)); return this; } @@ -70,7 +80,7 @@ public EventResponseProjection active() { } public EventResponseProjection active(String alias) { - fields.add(new GraphQLResponseField("active").alias(alias)); + add$(new GraphQLResponseField("active").alias(alias)); return this; } @@ -79,7 +89,7 @@ public EventResponseProjection rating() { } public EventResponseProjection rating(String alias) { - fields.add(new GraphQLResponseField("rating").alias(alias)); + add$(new GraphQLResponseField("rating").alias(alias)); return this; } @@ -90,4 +100,9 @@ public EventResponseProjection rating(String alias) { public GraphQLResponseProjection all$(int maxDepth) { return null; } + + @Override + public EventResponseProjection deepCopy$() { + return new EventResponseProjection(this); + } } diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/IssueResponseProjection.java b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/IssueResponseProjection.java index ff698abab..ddaa5cc9e 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/IssueResponseProjection.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/IssueResponseProjection.java @@ -3,17 +3,27 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; +import java.util.List; + public class IssueResponseProjection extends GraphQLResponseProjection { public IssueResponseProjection() { } + public IssueResponseProjection(IssueResponseProjection projection) { + super(projection); + } + + public IssueResponseProjection(List projections) { + super(projections); + } + public IssueResponseProjection activeLockReason() { return activeLockReason(null); } public IssueResponseProjection activeLockReason(String alias) { - fields.add(new GraphQLResponseField("activeLockReason").alias(alias)); + add$(new GraphQLResponseField("activeLockReason").alias(alias)); return this; } @@ -24,6 +34,12 @@ public IssueResponseProjection activeLockReason(String alias) { public GraphQLResponseProjection all$(int maxDepth) { return null; } + + @Override + public IssueResponseProjection deepCopy$() { + return new IssueResponseProjection(this); + } + // REST OF THE STUFF WAS REMOVED } diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/OrganizationResponseProjection.java b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/OrganizationResponseProjection.java index a7340e2c3..29e0cdc02 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/OrganizationResponseProjection.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/OrganizationResponseProjection.java @@ -3,17 +3,27 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; +import java.util.List; + public class OrganizationResponseProjection extends GraphQLResponseProjection { public OrganizationResponseProjection() { } + public OrganizationResponseProjection(OrganizationResponseProjection projection) { + super(projection); + } + + public OrganizationResponseProjection(List projections) { + super(projections); + } + public OrganizationResponseProjection name() { return name(null); } public OrganizationResponseProjection name(String alias) { - fields.add(new GraphQLResponseField("name").alias(alias)); + add$(new GraphQLResponseField("name").alias(alias)); return this; } @@ -24,6 +34,12 @@ public OrganizationResponseProjection name(String alias) { public GraphQLResponseProjection all$(int maxDepth) { return null; } + + @Override + public GraphQLResponseProjection deepCopy$() { + return new OrganizationResponseProjection(this); + } + // REST OF THE STUFF WAS REMOVED } diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/UpdateIssuePayloadResponseProjection.java b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/UpdateIssuePayloadResponseProjection.java index b59f0e878..f8481e02e 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/UpdateIssuePayloadResponseProjection.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/UpdateIssuePayloadResponseProjection.java @@ -3,17 +3,27 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; +import java.util.List; + public class UpdateIssuePayloadResponseProjection extends GraphQLResponseProjection { public UpdateIssuePayloadResponseProjection() { } + public UpdateIssuePayloadResponseProjection(UpdateIssuePayloadResponseProjection projection) { + super(projection); + } + + public UpdateIssuePayloadResponseProjection(List projections) { + super(projections); + } + public UpdateIssuePayloadResponseProjection clientMutationId() { return clientMutationId(null); } public UpdateIssuePayloadResponseProjection clientMutationId(String alias) { - fields.add(new GraphQLResponseField("clientMutationId").alias(alias)); + add$(new GraphQLResponseField("clientMutationId").alias(alias)); return this; } @@ -22,7 +32,7 @@ public UpdateIssuePayloadResponseProjection issue(IssueResponseProjection subPro } public UpdateIssuePayloadResponseProjection issue(String alias, IssueResponseProjection subProjection) { - fields.add(new GraphQLResponseField("issue").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("issue").alias(alias).projection(subProjection)); return this; } @@ -31,7 +41,7 @@ public UpdateIssuePayloadResponseProjection union(UpdateNodeUnionResponseProject } public UpdateIssuePayloadResponseProjection union(String alias, UpdateNodeUnionResponseProjection subProjection) { - fields.add(new GraphQLResponseField("union").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("union").alias(alias).projection(subProjection)); return this; } @@ -42,4 +52,11 @@ public UpdateIssuePayloadResponseProjection union(String alias, UpdateNodeUnionR public GraphQLResponseProjection all$(int maxDepth) { return null; } + + + @Override + public UpdateIssuePayloadResponseProjection deepCopy$() { + return new UpdateIssuePayloadResponseProjection(this); + } + } diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/UpdateNodeUnionResponseProjection.java b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/UpdateNodeUnionResponseProjection.java index df12f818e..447f983f8 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/UpdateNodeUnionResponseProjection.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/UpdateNodeUnionResponseProjection.java @@ -3,6 +3,8 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; +import java.util.List; + /** * Response projection for SearchResultItem */ @@ -11,12 +13,20 @@ public class UpdateNodeUnionResponseProjection extends GraphQLResponseProjection public UpdateNodeUnionResponseProjection() { } + public UpdateNodeUnionResponseProjection(UpdateNodeUnionResponseProjection projection) { + super(projection); + } + + public UpdateNodeUnionResponseProjection(List projections) { + super(projections); + } + public UpdateNodeUnionResponseProjection onIssue(IssueResponseProjection subProjection) { return onIssue(null, subProjection); } public UpdateNodeUnionResponseProjection onIssue(String alias, IssueResponseProjection subProjection) { - fields.add(new GraphQLResponseField("...on Issue").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("...on Issue").alias(alias).projection(subProjection)); return this; } @@ -26,7 +36,7 @@ public UpdateNodeUnionResponseProjection onOrganization(OrganizationResponseProj public UpdateNodeUnionResponseProjection onOrganization(String alias, OrganizationResponseProjection subProjection) { - fields.add(new GraphQLResponseField("...on Organization").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("...on Organization").alias(alias).projection(subProjection)); return this; } @@ -36,7 +46,7 @@ public UpdateNodeUnionResponseProjection typename() { } public UpdateNodeUnionResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } @@ -47,4 +57,10 @@ public UpdateNodeUnionResponseProjection typename(String alias) { public GraphQLResponseProjection all$(int maxDepth) { return null; } + + @Override + public UpdateNodeUnionResponseProjection deepCopy$() { + return new UpdateNodeUnionResponseProjection(this); + } + } diff --git a/src/test/resources/expected-classes/empty/EventResponseProjection.java.txt b/src/test/resources/expected-classes/empty/EventResponseProjection.java.txt index 6a3b27772..ffcd71920 100644 --- a/src/test/resources/expected-classes/empty/EventResponseProjection.java.txt +++ b/src/test/resources/expected-classes/empty/EventResponseProjection.java.txt @@ -2,6 +2,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; /** * Response projection for Event @@ -17,6 +18,14 @@ public class EventResponseProjection extends GraphQLResponseProjection { public EventResponseProjection() { } + public EventResponseProjection(EventResponseProjection projection) { + super(projection); + } + + public EventResponseProjection(List projections) { + super(projections); + } + public EventResponseProjection all$() { return all$(3); } @@ -31,9 +40,14 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public EventResponseProjection deepCopy$() { + return new EventResponseProjection(this); + } + -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/extend/request/AssetResponseProjection.java.txt b/src/test/resources/expected-classes/extend/request/AssetResponseProjection.java.txt index a6a8bb3b2..f4d26b019 100644 --- a/src/test/resources/expected-classes/extend/request/AssetResponseProjection.java.txt +++ b/src/test/resources/expected-classes/extend/request/AssetResponseProjection.java.txt @@ -2,6 +2,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; /** * Response projection for Asset @@ -17,6 +18,14 @@ public class AssetResponseProjection extends GraphQLResponseProjection { public AssetResponseProjection() { } + public AssetResponseProjection(AssetResponseProjection projection) { + super(projection); + } + + public AssetResponseProjection(List projections) { + super(projections); + } + public AssetResponseProjection all$() { return all$(3); } @@ -35,7 +44,7 @@ public class AssetResponseProjection extends GraphQLResponseProjection { } public AssetResponseProjection name(String alias) { - fields.add(new GraphQLResponseField("name").alias(alias)); + add$(new GraphQLResponseField("name").alias(alias)); return this; } @@ -44,7 +53,7 @@ public class AssetResponseProjection extends GraphQLResponseProjection { } public AssetResponseProjection status(String alias) { - fields.add(new GraphQLResponseField("status").alias(alias)); + add$(new GraphQLResponseField("status").alias(alias)); return this; } @@ -53,7 +62,7 @@ public class AssetResponseProjection extends GraphQLResponseProjection { } public AssetResponseProjection id(String alias) { - fields.add(new GraphQLResponseField("id").alias(alias)); + add$(new GraphQLResponseField("id").alias(alias)); return this; } @@ -62,7 +71,7 @@ public class AssetResponseProjection extends GraphQLResponseProjection { } public AssetResponseProjection createdBy(String alias) { - fields.add(new GraphQLResponseField("createdBy").alias(alias)); + add$(new GraphQLResponseField("createdBy").alias(alias)); return this; } @@ -71,9 +80,14 @@ public class AssetResponseProjection extends GraphQLResponseProjection { } public AssetResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public AssetResponseProjection deepCopy$() { + return new AssetResponseProjection(this); + } + -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/extend/request/EventResponseProjection.java.txt b/src/test/resources/expected-classes/extend/request/EventResponseProjection.java.txt index ee75de8c3..e2a104929 100644 --- a/src/test/resources/expected-classes/extend/request/EventResponseProjection.java.txt +++ b/src/test/resources/expected-classes/extend/request/EventResponseProjection.java.txt @@ -2,6 +2,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; /** * Response projection for Event @@ -17,6 +18,14 @@ public class EventResponseProjection extends GraphQLResponseProjection { public EventResponseProjection() { } + public EventResponseProjection(EventResponseProjection projection) { + super(projection); + } + + public EventResponseProjection(List projections) { + super(projections); + } + public EventResponseProjection all$() { return all$(3); } @@ -39,7 +48,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection status(String alias) { - fields.add(new GraphQLResponseField("status").alias(alias)); + add$(new GraphQLResponseField("status").alias(alias)); return this; } @@ -48,7 +57,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection createdDateTime(String alias) { - fields.add(new GraphQLResponseField("createdDateTime").alias(alias)); + add$(new GraphQLResponseField("createdDateTime").alias(alias)); return this; } @@ -57,7 +66,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection assets(String alias, AssetResponseProjection subProjection) { - fields.add(new GraphQLResponseField("assets").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("assets").alias(alias).projection(subProjection)); return this; } @@ -66,7 +75,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection id(String alias) { - fields.add(new GraphQLResponseField("id").alias(alias)); + add$(new GraphQLResponseField("id").alias(alias)); return this; } @@ -75,7 +84,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection createdBy(String alias) { - fields.add(new GraphQLResponseField("createdBy").alias(alias)); + add$(new GraphQLResponseField("createdBy").alias(alias)); return this; } @@ -84,9 +93,14 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public EventResponseProjection deepCopy$() { + return new EventResponseProjection(this); + } + -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/from-introspection-result/ProductResponseProjection.java.txt b/src/test/resources/expected-classes/from-introspection-result/ProductResponseProjection.java.txt index 35a0a4b1c..e8f81f34c 100644 --- a/src/test/resources/expected-classes/from-introspection-result/ProductResponseProjection.java.txt +++ b/src/test/resources/expected-classes/from-introspection-result/ProductResponseProjection.java.txt @@ -4,6 +4,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; /** * Response projection for Product @@ -19,6 +20,14 @@ public class ProductResponseProjection extends GraphQLResponseProjection { public ProductResponseProjection() { } + public ProductResponseProjection(ProductResponseProjection projection) { + super(projection); + } + + public ProductResponseProjection(List projections) { + super(projections); + } + public ProductResponseProjection all$() { return all$(3); } @@ -40,7 +49,7 @@ public class ProductResponseProjection extends GraphQLResponseProjection { } public ProductResponseProjection id(String alias) { - fields.add(new GraphQLResponseField("id").alias(alias)); + add$(new GraphQLResponseField("id").alias(alias)); return this; } @@ -49,7 +58,7 @@ public class ProductResponseProjection extends GraphQLResponseProjection { } public ProductResponseProjection title(String alias) { - fields.add(new GraphQLResponseField("title").alias(alias)); + add$(new GraphQLResponseField("title").alias(alias)); return this; } @@ -58,7 +67,7 @@ public class ProductResponseProjection extends GraphQLResponseProjection { } public ProductResponseProjection description(String alias) { - fields.add(new GraphQLResponseField("description").alias(alias)); + add$(new GraphQLResponseField("description").alias(alias)); return this; } @@ -67,7 +76,7 @@ public class ProductResponseProjection extends GraphQLResponseProjection { } public ProductResponseProjection price(String alias) { - fields.add(new GraphQLResponseField("price").alias(alias)); + add$(new GraphQLResponseField("price").alias(alias)); return this; } @@ -76,7 +85,7 @@ public class ProductResponseProjection extends GraphQLResponseProjection { } public ProductResponseProjection sku(String alias) { - fields.add(new GraphQLResponseField("sku").alias(alias)); + add$(new GraphQLResponseField("sku").alias(alias)); return this; } @@ -85,7 +94,7 @@ public class ProductResponseProjection extends GraphQLResponseProjection { } public ProductResponseProjection stockStatus(String alias) { - fields.add(new GraphQLResponseField("stockStatus").alias(alias)); + add$(new GraphQLResponseField("stockStatus").alias(alias)); return this; } @@ -94,7 +103,7 @@ public class ProductResponseProjection extends GraphQLResponseProjection { } public ProductResponseProjection addedDateTime(String alias) { - fields.add(new GraphQLResponseField("addedDateTime").alias(alias)); + add$(new GraphQLResponseField("addedDateTime").alias(alias)); return this; } @@ -103,9 +112,14 @@ public class ProductResponseProjection extends GraphQLResponseProjection { } public ProductResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public ProductResponseProjection deepCopy$() { + return new ProductResponseProjection(this); + } + -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/kt/SearchResultItemConnectionResponseProjection.kt.txt b/src/test/resources/expected-classes/kt/SearchResultItemConnectionResponseProjection.kt.txt index b21735ecc..cdaf038e7 100644 --- a/src/test/resources/expected-classes/kt/SearchResultItemConnectionResponseProjection.kt.txt +++ b/src/test/resources/expected-classes/kt/SearchResultItemConnectionResponseProjection.kt.txt @@ -11,7 +11,13 @@ import java.util.Objects value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"], date = "2020-12-31T23:59:59-0500" ) -open class SearchResultItemConnectionResponseProjection : GraphQLResponseProjection() { +open class SearchResultItemConnectionResponseProjection : GraphQLResponseProjection { + + constructor(): super() + + constructor(projection: SearchResultItemConnectionResponseProjection): super(projection) + + constructor(projections: List): super(projections) private val projectionDepthOnFields: MutableMap by lazy { mutableMapOf() } @@ -42,66 +48,68 @@ open class SearchResultItemConnectionResponseProjection : GraphQLResponseProject fun codeCount(): SearchResultItemConnectionResponseProjection = codeCount(null) fun codeCount(alias: String?): SearchResultItemConnectionResponseProjection { - fields.add(GraphQLResponseField("codeCount").alias(alias)) + `add$`(GraphQLResponseField("codeCount").alias(alias)) return this } fun edges(subProjection: SearchResultItemEdgeResponseProjection): SearchResultItemConnectionResponseProjection = edges(null, subProjection) fun edges(alias: String?, subProjection: SearchResultItemEdgeResponseProjection): SearchResultItemConnectionResponseProjection { - fields.add(GraphQLResponseField("edges").alias(alias).projection(subProjection)) + `add$`(GraphQLResponseField("edges").alias(alias).projection(subProjection)) return this } fun issueCount(): SearchResultItemConnectionResponseProjection = issueCount(null) fun issueCount(alias: String?): SearchResultItemConnectionResponseProjection { - fields.add(GraphQLResponseField("issueCount").alias(alias)) + `add$`(GraphQLResponseField("issueCount").alias(alias)) return this } fun nodes(subProjection: SearchResultItemResponseProjection): SearchResultItemConnectionResponseProjection = nodes(null, subProjection) fun nodes(alias: String?, subProjection: SearchResultItemResponseProjection): SearchResultItemConnectionResponseProjection { - fields.add(GraphQLResponseField("nodes").alias(alias).projection(subProjection)) + `add$`(GraphQLResponseField("nodes").alias(alias).projection(subProjection)) return this } fun pageInfo(subProjection: PageInfoResponseProjection): SearchResultItemConnectionResponseProjection = pageInfo(null, subProjection) fun pageInfo(alias: String?, subProjection: PageInfoResponseProjection): SearchResultItemConnectionResponseProjection { - fields.add(GraphQLResponseField("pageInfo").alias(alias).projection(subProjection)) + `add$`(GraphQLResponseField("pageInfo").alias(alias).projection(subProjection)) return this } fun repositoryCount(): SearchResultItemConnectionResponseProjection = repositoryCount(null) fun repositoryCount(alias: String?): SearchResultItemConnectionResponseProjection { - fields.add(GraphQLResponseField("repositoryCount").alias(alias)) + `add$`(GraphQLResponseField("repositoryCount").alias(alias)) return this } fun userCount(): SearchResultItemConnectionResponseProjection = userCount(null) fun userCount(alias: String?): SearchResultItemConnectionResponseProjection { - fields.add(GraphQLResponseField("userCount").alias(alias)) + `add$`(GraphQLResponseField("userCount").alias(alias)) return this } fun wikiCount(): SearchResultItemConnectionResponseProjection = wikiCount(null) fun wikiCount(alias: String?): SearchResultItemConnectionResponseProjection { - fields.add(GraphQLResponseField("wikiCount").alias(alias)) + `add$`(GraphQLResponseField("wikiCount").alias(alias)) return this } fun typename(): SearchResultItemConnectionResponseProjection = typename(null) fun typename(alias: String?): SearchResultItemConnectionResponseProjection { - fields.add(GraphQLResponseField("__typename").alias(alias)) + `add$`(GraphQLResponseField("__typename").alias(alias)) return this } + override fun `deepCopy$`(): SearchResultItemConnectionResponseProjection = SearchResultItemConnectionResponseProjection(this) + override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -115,4 +123,4 @@ open class SearchResultItemConnectionResponseProjection : GraphQLResponseProject override fun hashCode(): Int = Objects.hash(fields) -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/kt/SearchResultItemResponseProjection.kt.txt b/src/test/resources/expected-classes/kt/SearchResultItemResponseProjection.kt.txt index 615a7f878..4585bafe1 100644 --- a/src/test/resources/expected-classes/kt/SearchResultItemResponseProjection.kt.txt +++ b/src/test/resources/expected-classes/kt/SearchResultItemResponseProjection.kt.txt @@ -11,7 +11,13 @@ import java.util.Objects value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"], date = "2020-12-31T23:59:59-0500" ) -open class SearchResultItemResponseProjection : GraphQLResponseProjection() { +open class SearchResultItemResponseProjection : GraphQLResponseProjection { + + constructor(): super() + + constructor(projection: SearchResultItemResponseProjection): super(projection) + + constructor(projections: List): super(projections) private val projectionDepthOnFields: MutableMap by lazy { mutableMapOf() } @@ -25,59 +31,61 @@ open class SearchResultItemResponseProjection : GraphQLResponseProjection() { fun onApp(subProjection: AppResponseProjection): SearchResultItemResponseProjection = onApp(null, subProjection) fun onApp(alias: String?, subProjection: AppResponseProjection): SearchResultItemResponseProjection { - fields.add(GraphQLResponseField("...on App").alias(alias).projection(subProjection)) + `add$`(GraphQLResponseField("...on App").alias(alias).projection(subProjection)) return this } fun onRepository(subProjection: RepositoryResponseProjection): SearchResultItemResponseProjection = onRepository(null, subProjection) fun onRepository(alias: String?, subProjection: RepositoryResponseProjection): SearchResultItemResponseProjection { - fields.add(GraphQLResponseField("...on Repository").alias(alias).projection(subProjection)) + `add$`(GraphQLResponseField("...on Repository").alias(alias).projection(subProjection)) return this } fun onIssue(subProjection: IssueResponseProjection): SearchResultItemResponseProjection = onIssue(null, subProjection) fun onIssue(alias: String?, subProjection: IssueResponseProjection): SearchResultItemResponseProjection { - fields.add(GraphQLResponseField("...on Issue").alias(alias).projection(subProjection)) + `add$`(GraphQLResponseField("...on Issue").alias(alias).projection(subProjection)) return this } fun onOrganization(subProjection: OrganizationResponseProjection): SearchResultItemResponseProjection = onOrganization(null, subProjection) fun onOrganization(alias: String?, subProjection: OrganizationResponseProjection): SearchResultItemResponseProjection { - fields.add(GraphQLResponseField("...on Organization").alias(alias).projection(subProjection)) + `add$`(GraphQLResponseField("...on Organization").alias(alias).projection(subProjection)) return this } fun onUser(subProjection: UserResponseProjection): SearchResultItemResponseProjection = onUser(null, subProjection) fun onUser(alias: String?, subProjection: UserResponseProjection): SearchResultItemResponseProjection { - fields.add(GraphQLResponseField("...on User").alias(alias).projection(subProjection)) + `add$`(GraphQLResponseField("...on User").alias(alias).projection(subProjection)) return this } fun onMarketplaceListing(subProjection: MarketplaceListingResponseProjection): SearchResultItemResponseProjection = onMarketplaceListing(null, subProjection) fun onMarketplaceListing(alias: String?, subProjection: MarketplaceListingResponseProjection): SearchResultItemResponseProjection { - fields.add(GraphQLResponseField("...on MarketplaceListing").alias(alias).projection(subProjection)) + `add$`(GraphQLResponseField("...on MarketplaceListing").alias(alias).projection(subProjection)) return this } fun onPullRequest(subProjection: PullRequestResponseProjection): SearchResultItemResponseProjection = onPullRequest(null, subProjection) fun onPullRequest(alias: String?, subProjection: PullRequestResponseProjection): SearchResultItemResponseProjection { - fields.add(GraphQLResponseField("...on PullRequest").alias(alias).projection(subProjection)) + `add$`(GraphQLResponseField("...on PullRequest").alias(alias).projection(subProjection)) return this } fun typename(): SearchResultItemResponseProjection = typename(null) fun typename(alias: String?): SearchResultItemResponseProjection { - fields.add(GraphQLResponseField("__typename").alias(alias)) + `add$`(GraphQLResponseField("__typename").alias(alias)) return this } + override fun `deepCopy$`(): SearchResultItemResponseProjection = SearchResultItemResponseProjection(this) + override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -91,4 +99,4 @@ open class SearchResultItemResponseProjection : GraphQLResponseProjection() { override fun hashCode(): Int = Objects.hash(fields) -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/kt/empty/EventResponseProjection.kt.txt b/src/test/resources/expected-classes/kt/empty/EventResponseProjection.kt.txt index 75c42178b..f60516975 100644 --- a/src/test/resources/expected-classes/kt/empty/EventResponseProjection.kt.txt +++ b/src/test/resources/expected-classes/kt/empty/EventResponseProjection.kt.txt @@ -8,7 +8,13 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"], date = "2020-12-31T23:59:59-0500" ) -open class EventResponseProjection : GraphQLResponseProjection() { +open class EventResponseProjection : GraphQLResponseProjection { + + constructor(): super() + + constructor(projection: EventResponseProjection): super(projection) + + constructor(projections: List): super(projections) private val projectionDepthOnFields: MutableMap by lazy { mutableMapOf() } @@ -22,9 +28,11 @@ open class EventResponseProjection : GraphQLResponseProjection() { fun typename(): EventResponseProjection = typename(null) fun typename(alias: String?): EventResponseProjection { - fields.add(GraphQLResponseField("__typename").alias(alias)) + `add$`(GraphQLResponseField("__typename").alias(alias)) return this } + override fun `deepCopy$`(): EventResponseProjection = EventResponseProjection(this) + -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/kt/restricted-words/CharResponseProjection.kt.txt b/src/test/resources/expected-classes/kt/restricted-words/CharResponseProjection.kt.txt index 42d33e7fe..73519c1a3 100644 --- a/src/test/resources/expected-classes/kt/restricted-words/CharResponseProjection.kt.txt +++ b/src/test/resources/expected-classes/kt/restricted-words/CharResponseProjection.kt.txt @@ -11,7 +11,13 @@ import java.util.Objects value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"], date = "2020-12-31T23:59:59-0500" ) -open class CharResponseProjection : GraphQLResponseProjection() { +open class CharResponseProjection : GraphQLResponseProjection { + + constructor(): super() + + constructor(projection: CharResponseProjection): super(projection) + + constructor(projections: List): super(projections) private val projectionDepthOnFields: MutableMap by lazy { mutableMapOf() } @@ -25,10 +31,12 @@ open class CharResponseProjection : GraphQLResponseProjection() { fun typename(): CharResponseProjection = typename(null) fun typename(alias: String?): CharResponseProjection { - fields.add(GraphQLResponseField("__typename").alias(alias)) + `add$`(GraphQLResponseField("__typename").alias(alias)) return this } + override fun `deepCopy$`(): CharResponseProjection = CharResponseProjection(this) + override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -42,4 +50,4 @@ open class CharResponseProjection : GraphQLResponseProjection() { override fun hashCode(): Int = Objects.hash(fields) -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/kt/restricted-words/QueryFunParametrizedInput.kt.txt b/src/test/resources/expected-classes/kt/restricted-words/QueryFunParametrizedInput.kt.txt index 1ff7dae2f..44fa206e5 100644 --- a/src/test/resources/expected-classes/kt/restricted-words/QueryFunParametrizedInput.kt.txt +++ b/src/test/resources/expected-classes/kt/restricted-words/QueryFunParametrizedInput.kt.txt @@ -14,6 +14,13 @@ data class QueryFunParametrizedInput( val final: Int? ) : GraphQLParametrizedInput { + override fun deepCopy(): QueryFunParametrizedInput { + return QueryFunParametrizedInput( + this.final + ) + + } + override fun toString(): String { val joiner = StringJoiner(", ", "( ", " )") if (final != null) { diff --git a/src/test/resources/expected-classes/kt/restricted-words/QueryPrivateParametrizedInput.kt.txt b/src/test/resources/expected-classes/kt/restricted-words/QueryPrivateParametrizedInput.kt.txt index 63367fbb4..70abf58d6 100644 --- a/src/test/resources/expected-classes/kt/restricted-words/QueryPrivateParametrizedInput.kt.txt +++ b/src/test/resources/expected-classes/kt/restricted-words/QueryPrivateParametrizedInput.kt.txt @@ -17,6 +17,16 @@ data class QueryPrivateParametrizedInput( val createdAfter: java.time.ZonedDateTime? ) : GraphQLParametrizedInput { + override fun deepCopy(): QueryPrivateParametrizedInput { + return QueryPrivateParametrizedInput( + this.int, + this.new, + this.enum, + this.createdAfter + ) + + } + override fun toString(): String { val joiner = StringJoiner(", ", "( ", " )") if (int != null) { diff --git a/src/test/resources/expected-classes/projection-with-selectAll/LocationResponseProjection.java.txt b/src/test/resources/expected-classes/projection-with-selectAll/LocationResponseProjection.java.txt index 09147b077..0a31b1522 100644 --- a/src/test/resources/expected-classes/projection-with-selectAll/LocationResponseProjection.java.txt +++ b/src/test/resources/expected-classes/projection-with-selectAll/LocationResponseProjection.java.txt @@ -4,6 +4,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; /** * Response projection for Location @@ -19,6 +20,14 @@ public class LocationResponseProjection extends GraphQLResponseProjection { public LocationResponseProjection() { } + public LocationResponseProjection(LocationResponseProjection projection) { + super(projection); + } + + public LocationResponseProjection(List projections) { + super(projections); + } + public LocationResponseProjection all$() { return all$(3); } @@ -35,7 +44,7 @@ public class LocationResponseProjection extends GraphQLResponseProjection { } public LocationResponseProjection id(String alias) { - fields.add(new GraphQLResponseField("id").alias(alias)); + add$(new GraphQLResponseField("id").alias(alias)); return this; } @@ -44,7 +53,7 @@ public class LocationResponseProjection extends GraphQLResponseProjection { } public LocationResponseProjection locationType(String alias) { - fields.add(new GraphQLResponseField("locationType").alias(alias)); + add$(new GraphQLResponseField("locationType").alias(alias)); return this; } @@ -53,7 +62,7 @@ public class LocationResponseProjection extends GraphQLResponseProjection { } public LocationResponseProjection onCustomerLocation(String alias, CustomerLocationResponseProjection subProjection) { - fields.add(new GraphQLResponseField("...on CustomerLocation").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("...on CustomerLocation").alias(alias).projection(subProjection)); return this; } @@ -62,7 +71,7 @@ public class LocationResponseProjection extends GraphQLResponseProjection { } public LocationResponseProjection onDealerLocation(String alias, DealerLocationResponseProjection subProjection) { - fields.add(new GraphQLResponseField("...on DealerLocation").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("...on DealerLocation").alias(alias).projection(subProjection)); return this; } @@ -71,9 +80,14 @@ public class LocationResponseProjection extends GraphQLResponseProjection { } public LocationResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public LocationResponseProjection deepCopy$() { + return new LocationResponseProjection(this); + } + -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/projection-with-selectAll/VehicleResponseProjection.java.txt b/src/test/resources/expected-classes/projection-with-selectAll/VehicleResponseProjection.java.txt index b8027a9f8..40831cca3 100644 --- a/src/test/resources/expected-classes/projection-with-selectAll/VehicleResponseProjection.java.txt +++ b/src/test/resources/expected-classes/projection-with-selectAll/VehicleResponseProjection.java.txt @@ -4,6 +4,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; /** * Response projection for Vehicle @@ -19,6 +20,14 @@ public class VehicleResponseProjection extends GraphQLResponseProjection { public VehicleResponseProjection() { } + public VehicleResponseProjection(VehicleResponseProjection projection) { + super(projection); + } + + public VehicleResponseProjection(List projections) { + super(projections); + } + public VehicleResponseProjection all$() { return all$(3); } @@ -39,7 +48,7 @@ public class VehicleResponseProjection extends GraphQLResponseProjection { } public VehicleResponseProjection vehicleId(String alias) { - fields.add(new GraphQLResponseField("vehicleId").alias(alias)); + add$(new GraphQLResponseField("vehicleId").alias(alias)); return this; } @@ -48,7 +57,7 @@ public class VehicleResponseProjection extends GraphQLResponseProjection { } public VehicleResponseProjection registrationNumber(String alias) { - fields.add(new GraphQLResponseField("registrationNumber").alias(alias)); + add$(new GraphQLResponseField("registrationNumber").alias(alias)); return this; } @@ -57,7 +66,7 @@ public class VehicleResponseProjection extends GraphQLResponseProjection { } public VehicleResponseProjection location(String alias, LocationResponseProjection subProjection) { - fields.add(new GraphQLResponseField("location").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("location").alias(alias).projection(subProjection)); return this; } @@ -66,9 +75,14 @@ public class VehicleResponseProjection extends GraphQLResponseProjection { } public VehicleResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public VehicleResponseProjection deepCopy$() { + return new VehicleResponseProjection(this); + } + -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/request/ClientDataParametrizedInput.java.txt b/src/test/resources/expected-classes/request/ClientDataParametrizedInput.java.txt index 3bc9a2b8e..3f57ec7b4 100644 --- a/src/test/resources/expected-classes/request/ClientDataParametrizedInput.java.txt +++ b/src/test/resources/expected-classes/request/ClientDataParametrizedInput.java.txt @@ -28,6 +28,13 @@ public class ClientDataParametrizedInput implements GraphQLParametrizedInput { return this; } + @Override + public ClientDataParametrizedInput deepCopy() { + ClientDataParametrizedInput parametrizedInput = new ClientDataParametrizedInput(); + parametrizedInput.ID(this.ID); + return parametrizedInput; + } + @Override public boolean equals(Object obj) { if (this == obj) { @@ -52,4 +59,4 @@ public class ClientDataParametrizedInput implements GraphQLParametrizedInput { return joiner.toString(); } -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/request/CodeOfConductResponseProjection.java.txt b/src/test/resources/expected-classes/request/CodeOfConductResponseProjection.java.txt index dd838e951..f82517af5 100644 --- a/src/test/resources/expected-classes/request/CodeOfConductResponseProjection.java.txt +++ b/src/test/resources/expected-classes/request/CodeOfConductResponseProjection.java.txt @@ -4,6 +4,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; import java.util.Objects; /** @@ -20,6 +21,14 @@ public class CodeOfConductResponseProjection extends GraphQLResponseProjection { public CodeOfConductResponseProjection() { } + public CodeOfConductResponseProjection(CodeOfConductResponseProjection projection) { + super(projection); + } + + public CodeOfConductResponseProjection(List projections) { + super(projections); + } + public CodeOfConductResponseProjection all$() { return all$(3); } @@ -40,7 +49,7 @@ public class CodeOfConductResponseProjection extends GraphQLResponseProjection { } public CodeOfConductResponseProjection body(String alias) { - fields.add(new GraphQLResponseField("body").alias(alias)); + add$(new GraphQLResponseField("body").alias(alias)); return this; } @@ -49,7 +58,7 @@ public class CodeOfConductResponseProjection extends GraphQLResponseProjection { } public CodeOfConductResponseProjection id(String alias) { - fields.add(new GraphQLResponseField("id").alias(alias)); + add$(new GraphQLResponseField("id").alias(alias)); return this; } @@ -58,7 +67,7 @@ public class CodeOfConductResponseProjection extends GraphQLResponseProjection { } public CodeOfConductResponseProjection key(String alias) { - fields.add(new GraphQLResponseField("key").alias(alias)); + add$(new GraphQLResponseField("key").alias(alias)); return this; } @@ -67,7 +76,7 @@ public class CodeOfConductResponseProjection extends GraphQLResponseProjection { } public CodeOfConductResponseProjection name(String alias) { - fields.add(new GraphQLResponseField("name").alias(alias)); + add$(new GraphQLResponseField("name").alias(alias)); return this; } @@ -76,7 +85,7 @@ public class CodeOfConductResponseProjection extends GraphQLResponseProjection { } public CodeOfConductResponseProjection resourcePath(String alias) { - fields.add(new GraphQLResponseField("resourcePath").alias(alias)); + add$(new GraphQLResponseField("resourcePath").alias(alias)); return this; } @@ -85,7 +94,7 @@ public class CodeOfConductResponseProjection extends GraphQLResponseProjection { } public CodeOfConductResponseProjection url(String alias) { - fields.add(new GraphQLResponseField("url").alias(alias)); + add$(new GraphQLResponseField("url").alias(alias)); return this; } @@ -94,10 +103,15 @@ public class CodeOfConductResponseProjection extends GraphQLResponseProjection { } public CodeOfConductResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public CodeOfConductResponseProjection deepCopy$() { + return new CodeOfConductResponseProjection(this); + } + @Override public boolean equals(Object obj) { if (this == obj) { @@ -115,4 +129,4 @@ public class CodeOfConductResponseProjection extends GraphQLResponseProjection { return Objects.hash(fields); } -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/request/EventPropertyChildParametrizedInput.java.txt b/src/test/resources/expected-classes/request/EventPropertyChildParametrizedInput.java.txt index 428f0fbc7..269788aef 100644 --- a/src/test/resources/expected-classes/request/EventPropertyChildParametrizedInput.java.txt +++ b/src/test/resources/expected-classes/request/EventPropertyChildParametrizedInput.java.txt @@ -35,6 +35,14 @@ public class EventPropertyChildParametrizedInput implements GraphQLParametrizedI return this; } + @Override + public EventPropertyChildParametrizedInput deepCopy() { + EventPropertyChildParametrizedInput parametrizedInput = new EventPropertyChildParametrizedInput(); + parametrizedInput.first(this.first); + parametrizedInput.last(this.last); + return parametrizedInput; + } + @Override public boolean equals(Object obj) { if (this == obj) { diff --git a/src/test/resources/expected-classes/request/EventPropertyChildParametrizedInput_withoutPrimitives.java.txt b/src/test/resources/expected-classes/request/EventPropertyChildParametrizedInput_withoutPrimitives.java.txt index 428f0fbc7..269788aef 100644 --- a/src/test/resources/expected-classes/request/EventPropertyChildParametrizedInput_withoutPrimitives.java.txt +++ b/src/test/resources/expected-classes/request/EventPropertyChildParametrizedInput_withoutPrimitives.java.txt @@ -35,6 +35,14 @@ public class EventPropertyChildParametrizedInput implements GraphQLParametrizedI return this; } + @Override + public EventPropertyChildParametrizedInput deepCopy() { + EventPropertyChildParametrizedInput parametrizedInput = new EventPropertyChildParametrizedInput(); + parametrizedInput.first(this.first); + parametrizedInput.last(this.last); + return parametrizedInput; + } + @Override public boolean equals(Object obj) { if (this == obj) { diff --git a/src/test/resources/expected-classes/request/EventPropertyParentParametrizedInput.java.txt b/src/test/resources/expected-classes/request/EventPropertyParentParametrizedInput.java.txt index aa04aac82..0de644fae 100644 --- a/src/test/resources/expected-classes/request/EventPropertyParentParametrizedInput.java.txt +++ b/src/test/resources/expected-classes/request/EventPropertyParentParametrizedInput.java.txt @@ -35,6 +35,14 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized return this; } + @Override + public EventPropertyParentParametrizedInput deepCopy() { + EventPropertyParentParametrizedInput parametrizedInput = new EventPropertyParentParametrizedInput(); + parametrizedInput.withStatus(this.withStatus); + parametrizedInput.createdAfter(this.createdAfter); + return parametrizedInput; + } + @Override public boolean equals(Object obj) { if (this == obj) { @@ -65,4 +73,4 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized return joiner.toString(); } -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/request/EventPropertyParentParametrizedInput_withModelSuffix.java.txt b/src/test/resources/expected-classes/request/EventPropertyParentParametrizedInput_withModelSuffix.java.txt index 9b9604ab5..2014ecffa 100644 --- a/src/test/resources/expected-classes/request/EventPropertyParentParametrizedInput_withModelSuffix.java.txt +++ b/src/test/resources/expected-classes/request/EventPropertyParentParametrizedInput_withModelSuffix.java.txt @@ -35,6 +35,14 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized return this; } + @Override + public EventPropertyParentParametrizedInput deepCopy() { + EventPropertyParentParametrizedInput parametrizedInput = new EventPropertyParentParametrizedInput(); + parametrizedInput.withStatus(this.withStatus); + parametrizedInput.createdAfter(this.createdAfter); + return parametrizedInput; + } + @Override public boolean equals(Object obj) { if (this == obj) { @@ -65,4 +73,4 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized return joiner.toString(); } -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/request/EventPropertyResponseProjection.java.txt b/src/test/resources/expected-classes/request/EventPropertyResponseProjection.java.txt index 4b3f05622..0c0442ed0 100644 --- a/src/test/resources/expected-classes/request/EventPropertyResponseProjection.java.txt +++ b/src/test/resources/expected-classes/request/EventPropertyResponseProjection.java.txt @@ -4,6 +4,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; import java.util.Objects; /** @@ -20,6 +21,14 @@ public class EventPropertyResponseProjection extends GraphQLResponseProjection { public EventPropertyResponseProjection() { } + public EventPropertyResponseProjection(EventPropertyResponseProjection projection) { + super(projection); + } + + public EventPropertyResponseProjection(List projections) { + super(projections); + } + public EventPropertyResponseProjection all$() { return all$(3); } @@ -47,7 +56,7 @@ public class EventPropertyResponseProjection extends GraphQLResponseProjection { } public EventPropertyResponseProjection floatVal(String alias) { - fields.add(new GraphQLResponseField("floatVal").alias(alias)); + add$(new GraphQLResponseField("floatVal").alias(alias)); return this; } @@ -56,7 +65,7 @@ public class EventPropertyResponseProjection extends GraphQLResponseProjection { } public EventPropertyResponseProjection booleanVal(String alias) { - fields.add(new GraphQLResponseField("booleanVal").alias(alias)); + add$(new GraphQLResponseField("booleanVal").alias(alias)); return this; } @@ -65,7 +74,7 @@ public class EventPropertyResponseProjection extends GraphQLResponseProjection { } public EventPropertyResponseProjection intVal(String alias) { - fields.add(new GraphQLResponseField("intVal").alias(alias)); + add$(new GraphQLResponseField("intVal").alias(alias)); return this; } @@ -74,7 +83,7 @@ public class EventPropertyResponseProjection extends GraphQLResponseProjection { } public EventPropertyResponseProjection intVals(String alias) { - fields.add(new GraphQLResponseField("intVals").alias(alias)); + add$(new GraphQLResponseField("intVals").alias(alias)); return this; } @@ -83,7 +92,7 @@ public class EventPropertyResponseProjection extends GraphQLResponseProjection { } public EventPropertyResponseProjection stringVal(String alias) { - fields.add(new GraphQLResponseField("stringVal").alias(alias)); + add$(new GraphQLResponseField("stringVal").alias(alias)); return this; } @@ -92,7 +101,7 @@ public class EventPropertyResponseProjection extends GraphQLResponseProjection { } public EventPropertyResponseProjection child(String alias, EventPropertyResponseProjection subProjection) { - fields.add(new GraphQLResponseField("child").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("child").alias(alias).projection(subProjection)); return this; } @@ -101,7 +110,7 @@ public class EventPropertyResponseProjection extends GraphQLResponseProjection { } public EventPropertyResponseProjection child(String alias, EventPropertyChildParametrizedInput input, EventPropertyResponseProjection subProjection) { - fields.add(new GraphQLResponseField("child").alias(alias).parameters(input).projection(subProjection)); + add$(new GraphQLResponseField("child").alias(alias).parameters(input).projection(subProjection)); return this; } @@ -110,7 +119,7 @@ public class EventPropertyResponseProjection extends GraphQLResponseProjection { } public EventPropertyResponseProjection parent(String alias, EventResponseProjection subProjection) { - fields.add(new GraphQLResponseField("parent").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("parent").alias(alias).projection(subProjection)); return this; } @@ -119,7 +128,7 @@ public class EventPropertyResponseProjection extends GraphQLResponseProjection { } public EventPropertyResponseProjection parent(String alias, EventPropertyParentParametrizedInput input, EventResponseProjection subProjection) { - fields.add(new GraphQLResponseField("parent").alias(alias).parameters(input).projection(subProjection)); + add$(new GraphQLResponseField("parent").alias(alias).parameters(input).projection(subProjection)); return this; } @@ -128,10 +137,15 @@ public class EventPropertyResponseProjection extends GraphQLResponseProjection { } public EventPropertyResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public EventPropertyResponseProjection deepCopy$() { + return new EventPropertyResponseProjection(this); + } + @Override public boolean equals(Object obj) { if (this == obj) { @@ -149,4 +163,4 @@ public class EventPropertyResponseProjection extends GraphQLResponseProjection { return Objects.hash(fields); } -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/request/EventResponseProjection.java.txt b/src/test/resources/expected-classes/request/EventResponseProjection.java.txt index 710bae7c1..d5280c7c7 100644 --- a/src/test/resources/expected-classes/request/EventResponseProjection.java.txt +++ b/src/test/resources/expected-classes/request/EventResponseProjection.java.txt @@ -4,6 +4,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; import java.util.Objects; /** @@ -20,6 +21,14 @@ public class EventResponseProjection extends GraphQLResponseProjection { public EventResponseProjection() { } + public EventResponseProjection(EventResponseProjection projection) { + super(projection); + } + + public EventResponseProjection(List projections) { + super(projections); + } + public EventResponseProjection all$() { return all$(3); } @@ -45,7 +54,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection id(String alias) { - fields.add(new GraphQLResponseField("id").alias(alias)); + add$(new GraphQLResponseField("id").alias(alias)); return this; } @@ -54,7 +63,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection categoryId(String alias) { - fields.add(new GraphQLResponseField("categoryId").alias(alias)); + add$(new GraphQLResponseField("categoryId").alias(alias)); return this; } @@ -63,7 +72,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection properties(String alias, EventPropertyResponseProjection subProjection) { - fields.add(new GraphQLResponseField("properties").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("properties").alias(alias).projection(subProjection)); return this; } @@ -72,7 +81,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection status(String alias) { - fields.add(new GraphQLResponseField("status").alias(alias)); + add$(new GraphQLResponseField("status").alias(alias)); return this; } @@ -81,7 +90,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection createdBy(String alias) { - fields.add(new GraphQLResponseField("createdBy").alias(alias)); + add$(new GraphQLResponseField("createdBy").alias(alias)); return this; } @@ -90,7 +99,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection createdDateTime(String alias) { - fields.add(new GraphQLResponseField("createdDateTime").alias(alias)); + add$(new GraphQLResponseField("createdDateTime").alias(alias)); return this; } @@ -99,7 +108,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection active(String alias) { - fields.add(new GraphQLResponseField("active").alias(alias)); + add$(new GraphQLResponseField("active").alias(alias)); return this; } @@ -108,7 +117,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection rating(String alias) { - fields.add(new GraphQLResponseField("rating").alias(alias)); + add$(new GraphQLResponseField("rating").alias(alias)); return this; } @@ -117,10 +126,15 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public EventResponseProjection deepCopy$() { + return new EventResponseProjection(this); + } + @Override public boolean equals(Object obj) { if (this == obj) { @@ -138,4 +152,4 @@ public class EventResponseProjection extends GraphQLResponseProjection { return Objects.hash(fields); } -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/request/EventResponseProjection.java_withoutAll.txt b/src/test/resources/expected-classes/request/EventResponseProjection.java_withoutAll.txt index 53dcfe6fc..772d3eccc 100644 --- a/src/test/resources/expected-classes/request/EventResponseProjection.java_withoutAll.txt +++ b/src/test/resources/expected-classes/request/EventResponseProjection.java_withoutAll.txt @@ -2,6 +2,7 @@ package com.github.graphql; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; +import java.util.List; import java.util.Objects; /** @@ -16,12 +17,20 @@ public class EventResponseProjection extends GraphQLResponseProjection { public EventResponseProjection() { } + public EventResponseProjection(EventResponseProjection projection) { + super(projection); + } + + public EventResponseProjection(List projections) { + super(projections); + } + public EventResponseProjection id() { return id(null); } public EventResponseProjection id(String alias) { - fields.add(new GraphQLResponseField("id").alias(alias)); + add$(new GraphQLResponseField("id").alias(alias)); return this; } @@ -30,7 +39,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection categoryId(String alias) { - fields.add(new GraphQLResponseField("categoryId").alias(alias)); + add$(new GraphQLResponseField("categoryId").alias(alias)); return this; } @@ -39,7 +48,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection properties(String alias, EventPropertyResponseProjection subProjection) { - fields.add(new GraphQLResponseField("properties").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("properties").alias(alias).projection(subProjection)); return this; } @@ -48,7 +57,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection status(String alias) { - fields.add(new GraphQLResponseField("status").alias(alias)); + add$(new GraphQLResponseField("status").alias(alias)); return this; } @@ -57,7 +66,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection createdBy(String alias) { - fields.add(new GraphQLResponseField("createdBy").alias(alias)); + add$(new GraphQLResponseField("createdBy").alias(alias)); return this; } @@ -66,7 +75,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection createdDateTime(String alias) { - fields.add(new GraphQLResponseField("createdDateTime").alias(alias)); + add$(new GraphQLResponseField("createdDateTime").alias(alias)); return this; } @@ -75,7 +84,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection active(String alias) { - fields.add(new GraphQLResponseField("active").alias(alias)); + add$(new GraphQLResponseField("active").alias(alias)); return this; } @@ -84,7 +93,7 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection rating(String alias) { - fields.add(new GraphQLResponseField("rating").alias(alias)); + add$(new GraphQLResponseField("rating").alias(alias)); return this; } @@ -93,10 +102,15 @@ public class EventResponseProjection extends GraphQLResponseProjection { } public EventResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public EventResponseProjection deepCopy$() { + return new EventResponseProjection(this); + } + @Override public boolean equals(Object obj) { if (this == obj) { @@ -114,4 +128,4 @@ public class EventResponseProjection extends GraphQLResponseProjection { return Objects.hash(fields); } -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/request/ProductLinkCodeParametrizedInput.java.txt b/src/test/resources/expected-classes/request/ProductLinkCodeParametrizedInput.java.txt index 6f51a4c69..2e415922c 100644 --- a/src/test/resources/expected-classes/request/ProductLinkCodeParametrizedInput.java.txt +++ b/src/test/resources/expected-classes/request/ProductLinkCodeParametrizedInput.java.txt @@ -28,6 +28,13 @@ public class ProductLinkCodeParametrizedInput implements GraphQLParametrizedInpu return this; } + @Override + public ProductLinkCodeParametrizedInput deepCopy() { + ProductLinkCodeParametrizedInput parametrizedInput = new ProductLinkCodeParametrizedInput(); + parametrizedInput.pid(this.pid); + return parametrizedInput; + } + @Override public String toString() { diff --git a/src/test/resources/expected-classes/response/LocationResponseProjection.java.txt b/src/test/resources/expected-classes/response/LocationResponseProjection.java.txt index 09147b077..0a31b1522 100644 --- a/src/test/resources/expected-classes/response/LocationResponseProjection.java.txt +++ b/src/test/resources/expected-classes/response/LocationResponseProjection.java.txt @@ -4,6 +4,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; /** * Response projection for Location @@ -19,6 +20,14 @@ public class LocationResponseProjection extends GraphQLResponseProjection { public LocationResponseProjection() { } + public LocationResponseProjection(LocationResponseProjection projection) { + super(projection); + } + + public LocationResponseProjection(List projections) { + super(projections); + } + public LocationResponseProjection all$() { return all$(3); } @@ -35,7 +44,7 @@ public class LocationResponseProjection extends GraphQLResponseProjection { } public LocationResponseProjection id(String alias) { - fields.add(new GraphQLResponseField("id").alias(alias)); + add$(new GraphQLResponseField("id").alias(alias)); return this; } @@ -44,7 +53,7 @@ public class LocationResponseProjection extends GraphQLResponseProjection { } public LocationResponseProjection locationType(String alias) { - fields.add(new GraphQLResponseField("locationType").alias(alias)); + add$(new GraphQLResponseField("locationType").alias(alias)); return this; } @@ -53,7 +62,7 @@ public class LocationResponseProjection extends GraphQLResponseProjection { } public LocationResponseProjection onCustomerLocation(String alias, CustomerLocationResponseProjection subProjection) { - fields.add(new GraphQLResponseField("...on CustomerLocation").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("...on CustomerLocation").alias(alias).projection(subProjection)); return this; } @@ -62,7 +71,7 @@ public class LocationResponseProjection extends GraphQLResponseProjection { } public LocationResponseProjection onDealerLocation(String alias, DealerLocationResponseProjection subProjection) { - fields.add(new GraphQLResponseField("...on DealerLocation").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("...on DealerLocation").alias(alias).projection(subProjection)); return this; } @@ -71,9 +80,14 @@ public class LocationResponseProjection extends GraphQLResponseProjection { } public LocationResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public LocationResponseProjection deepCopy$() { + return new LocationResponseProjection(this); + } + -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/response/SearchResultItemConnectionResponseProjection.java.txt b/src/test/resources/expected-classes/response/SearchResultItemConnectionResponseProjection.java.txt index 953291fe4..05adac560 100644 --- a/src/test/resources/expected-classes/response/SearchResultItemConnectionResponseProjection.java.txt +++ b/src/test/resources/expected-classes/response/SearchResultItemConnectionResponseProjection.java.txt @@ -4,6 +4,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; /** * Response projection for SearchResultItemConnection @@ -19,6 +20,14 @@ public class SearchResultItemConnectionResponseProjection extends GraphQLRespons public SearchResultItemConnectionResponseProjection() { } + public SearchResultItemConnectionResponseProjection(SearchResultItemConnectionResponseProjection projection) { + super(projection); + } + + public SearchResultItemConnectionResponseProjection(List projections) { + super(projections); + } + public SearchResultItemConnectionResponseProjection all$() { return all$(3); } @@ -50,7 +59,7 @@ public class SearchResultItemConnectionResponseProjection extends GraphQLRespons } public SearchResultItemConnectionResponseProjection codeCount(String alias) { - fields.add(new GraphQLResponseField("codeCount").alias(alias)); + add$(new GraphQLResponseField("codeCount").alias(alias)); return this; } @@ -59,7 +68,7 @@ public class SearchResultItemConnectionResponseProjection extends GraphQLRespons } public SearchResultItemConnectionResponseProjection edges(String alias, SearchResultItemEdgeResponseProjection subProjection) { - fields.add(new GraphQLResponseField("edges").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("edges").alias(alias).projection(subProjection)); return this; } @@ -68,7 +77,7 @@ public class SearchResultItemConnectionResponseProjection extends GraphQLRespons } public SearchResultItemConnectionResponseProjection issueCount(String alias) { - fields.add(new GraphQLResponseField("issueCount").alias(alias)); + add$(new GraphQLResponseField("issueCount").alias(alias)); return this; } @@ -77,7 +86,7 @@ public class SearchResultItemConnectionResponseProjection extends GraphQLRespons } public SearchResultItemConnectionResponseProjection nodes(String alias, SearchResultItemResponseProjection subProjection) { - fields.add(new GraphQLResponseField("nodes").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("nodes").alias(alias).projection(subProjection)); return this; } @@ -86,7 +95,7 @@ public class SearchResultItemConnectionResponseProjection extends GraphQLRespons } public SearchResultItemConnectionResponseProjection pageInfo(String alias, PageInfoResponseProjection subProjection) { - fields.add(new GraphQLResponseField("pageInfo").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("pageInfo").alias(alias).projection(subProjection)); return this; } @@ -95,7 +104,7 @@ public class SearchResultItemConnectionResponseProjection extends GraphQLRespons } public SearchResultItemConnectionResponseProjection repositoryCount(String alias) { - fields.add(new GraphQLResponseField("repositoryCount").alias(alias)); + add$(new GraphQLResponseField("repositoryCount").alias(alias)); return this; } @@ -104,7 +113,7 @@ public class SearchResultItemConnectionResponseProjection extends GraphQLRespons } public SearchResultItemConnectionResponseProjection userCount(String alias) { - fields.add(new GraphQLResponseField("userCount").alias(alias)); + add$(new GraphQLResponseField("userCount").alias(alias)); return this; } @@ -113,7 +122,7 @@ public class SearchResultItemConnectionResponseProjection extends GraphQLRespons } public SearchResultItemConnectionResponseProjection wikiCount(String alias) { - fields.add(new GraphQLResponseField("wikiCount").alias(alias)); + add$(new GraphQLResponseField("wikiCount").alias(alias)); return this; } @@ -122,9 +131,14 @@ public class SearchResultItemConnectionResponseProjection extends GraphQLRespons } public SearchResultItemConnectionResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public SearchResultItemConnectionResponseProjection deepCopy$() { + return new SearchResultItemConnectionResponseProjection(this); + } + -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/response/SearchResultItemResponseProjection.java.txt b/src/test/resources/expected-classes/response/SearchResultItemResponseProjection.java.txt index a0ae71590..61fa7fee5 100644 --- a/src/test/resources/expected-classes/response/SearchResultItemResponseProjection.java.txt +++ b/src/test/resources/expected-classes/response/SearchResultItemResponseProjection.java.txt @@ -4,6 +4,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; /** * Response projection for SearchResultItem @@ -19,6 +20,14 @@ public class SearchResultItemResponseProjection extends GraphQLResponseProjectio public SearchResultItemResponseProjection() { } + public SearchResultItemResponseProjection(SearchResultItemResponseProjection projection) { + super(projection); + } + + public SearchResultItemResponseProjection(List projections) { + super(projections); + } + public SearchResultItemResponseProjection all$() { return all$(3); } @@ -33,7 +42,7 @@ public class SearchResultItemResponseProjection extends GraphQLResponseProjectio } public SearchResultItemResponseProjection onApp(String alias, AppResponseProjection subProjection) { - fields.add(new GraphQLResponseField("...on App").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("...on App").alias(alias).projection(subProjection)); return this; } @@ -42,7 +51,7 @@ public class SearchResultItemResponseProjection extends GraphQLResponseProjectio } public SearchResultItemResponseProjection onRepository(String alias, RepositoryResponseProjection subProjection) { - fields.add(new GraphQLResponseField("...on Repository").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("...on Repository").alias(alias).projection(subProjection)); return this; } @@ -51,7 +60,7 @@ public class SearchResultItemResponseProjection extends GraphQLResponseProjectio } public SearchResultItemResponseProjection onIssue(String alias, IssueResponseProjection subProjection) { - fields.add(new GraphQLResponseField("...on Issue").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("...on Issue").alias(alias).projection(subProjection)); return this; } @@ -60,7 +69,7 @@ public class SearchResultItemResponseProjection extends GraphQLResponseProjectio } public SearchResultItemResponseProjection onOrganization(String alias, OrganizationResponseProjection subProjection) { - fields.add(new GraphQLResponseField("...on Organization").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("...on Organization").alias(alias).projection(subProjection)); return this; } @@ -69,7 +78,7 @@ public class SearchResultItemResponseProjection extends GraphQLResponseProjectio } public SearchResultItemResponseProjection onUser(String alias, UserResponseProjection subProjection) { - fields.add(new GraphQLResponseField("...on User").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("...on User").alias(alias).projection(subProjection)); return this; } @@ -78,7 +87,7 @@ public class SearchResultItemResponseProjection extends GraphQLResponseProjectio } public SearchResultItemResponseProjection onMarketplaceListing(String alias, MarketplaceListingResponseProjection subProjection) { - fields.add(new GraphQLResponseField("...on MarketplaceListing").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("...on MarketplaceListing").alias(alias).projection(subProjection)); return this; } @@ -87,7 +96,7 @@ public class SearchResultItemResponseProjection extends GraphQLResponseProjectio } public SearchResultItemResponseProjection onPullRequest(String alias, PullRequestResponseProjection subProjection) { - fields.add(new GraphQLResponseField("...on PullRequest").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("...on PullRequest").alias(alias).projection(subProjection)); return this; } @@ -96,9 +105,14 @@ public class SearchResultItemResponseProjection extends GraphQLResponseProjectio } public SearchResultItemResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public SearchResultItemResponseProjection deepCopy$() { + return new SearchResultItemResponseProjection(this); + } + -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/response/VehicleResponseProjection.java.txt b/src/test/resources/expected-classes/response/VehicleResponseProjection.java.txt index b8027a9f8..40831cca3 100644 --- a/src/test/resources/expected-classes/response/VehicleResponseProjection.java.txt +++ b/src/test/resources/expected-classes/response/VehicleResponseProjection.java.txt @@ -4,6 +4,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; /** * Response projection for Vehicle @@ -19,6 +20,14 @@ public class VehicleResponseProjection extends GraphQLResponseProjection { public VehicleResponseProjection() { } + public VehicleResponseProjection(VehicleResponseProjection projection) { + super(projection); + } + + public VehicleResponseProjection(List projections) { + super(projections); + } + public VehicleResponseProjection all$() { return all$(3); } @@ -39,7 +48,7 @@ public class VehicleResponseProjection extends GraphQLResponseProjection { } public VehicleResponseProjection vehicleId(String alias) { - fields.add(new GraphQLResponseField("vehicleId").alias(alias)); + add$(new GraphQLResponseField("vehicleId").alias(alias)); return this; } @@ -48,7 +57,7 @@ public class VehicleResponseProjection extends GraphQLResponseProjection { } public VehicleResponseProjection registrationNumber(String alias) { - fields.add(new GraphQLResponseField("registrationNumber").alias(alias)); + add$(new GraphQLResponseField("registrationNumber").alias(alias)); return this; } @@ -57,7 +66,7 @@ public class VehicleResponseProjection extends GraphQLResponseProjection { } public VehicleResponseProjection location(String alias, LocationResponseProjection subProjection) { - fields.add(new GraphQLResponseField("location").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("location").alias(alias).projection(subProjection)); return this; } @@ -66,9 +75,14 @@ public class VehicleResponseProjection extends GraphQLResponseProjection { } public VehicleResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public VehicleResponseProjection deepCopy$() { + return new VehicleResponseProjection(this); + } + -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/restricted-words/CharResponseProjection.java.txt b/src/test/resources/expected-classes/restricted-words/CharResponseProjection.java.txt index 11fa4b04c..001932785 100644 --- a/src/test/resources/expected-classes/restricted-words/CharResponseProjection.java.txt +++ b/src/test/resources/expected-classes/restricted-words/CharResponseProjection.java.txt @@ -4,6 +4,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; import java.util.Objects; /** @@ -20,6 +21,14 @@ public class CharResponseProjection extends GraphQLResponseProjection { public CharResponseProjection() { } + public CharResponseProjection(CharResponseProjection projection) { + super(projection); + } + + public CharResponseProjection(List projections) { + super(projections); + } + public CharResponseProjection all$() { return all$(3); } @@ -34,10 +43,15 @@ public class CharResponseProjection extends GraphQLResponseProjection { } public CharResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public CharResponseProjection deepCopy$() { + return new CharResponseProjection(this); + } + @Override public boolean equals(Object obj) { if (this == obj) { @@ -55,4 +69,4 @@ public class CharResponseProjection extends GraphQLResponseProjection { return Objects.hash(fields); } -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/restricted-words/QueryCaseParametrizedInput.java.txt b/src/test/resources/expected-classes/restricted-words/QueryCaseParametrizedInput.java.txt index 783a99a83..4f8586f20 100644 --- a/src/test/resources/expected-classes/restricted-words/QueryCaseParametrizedInput.java.txt +++ b/src/test/resources/expected-classes/restricted-words/QueryCaseParametrizedInput.java.txt @@ -28,6 +28,13 @@ public class QueryCaseParametrizedInput implements GraphQLParametrizedInput { return this; } + @Override + public QueryCaseParametrizedInput deepCopy() { + QueryCaseParametrizedInput parametrizedInput = new QueryCaseParametrizedInput(); + parametrizedInput.Final(this.Final); + return parametrizedInput; + } + @Override public boolean equals(Object obj) { if (this == obj) { @@ -54,4 +61,4 @@ public class QueryCaseParametrizedInput implements GraphQLParametrizedInput { return joiner.toString(); } -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/restricted-words/QueryPrivateParametrizedInput.java.txt b/src/test/resources/expected-classes/restricted-words/QueryPrivateParametrizedInput.java.txt index b0b8cacc1..300789a5c 100644 --- a/src/test/resources/expected-classes/restricted-words/QueryPrivateParametrizedInput.java.txt +++ b/src/test/resources/expected-classes/restricted-words/QueryPrivateParametrizedInput.java.txt @@ -42,6 +42,15 @@ public class QueryPrivateParametrizedInput implements GraphQLParametrizedInput { return this; } + @Override + public QueryPrivateParametrizedInput deepCopy() { + QueryPrivateParametrizedInput parametrizedInput = new QueryPrivateParametrizedInput(); + parametrizedInput.Int(this.Int); + parametrizedInput.New(this.New); + parametrizedInput.Enum(this.Enum); + return parametrizedInput; + } + @Override public boolean equals(Object obj) { if (this == obj) { diff --git a/src/test/resources/expected-classes/restricted-words/QueryResponseProjection.java.txt b/src/test/resources/expected-classes/restricted-words/QueryResponseProjection.java.txt index 310ee9c16..a2cbd0e07 100644 --- a/src/test/resources/expected-classes/restricted-words/QueryResponseProjection.java.txt +++ b/src/test/resources/expected-classes/restricted-words/QueryResponseProjection.java.txt @@ -4,6 +4,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; import java.util.Objects; /** @@ -20,6 +21,14 @@ public class QueryResponseProjection extends GraphQLResponseProjection { public QueryResponseProjection() { } + public QueryResponseProjection(QueryResponseProjection projection) { + super(projection); + } + + public QueryResponseProjection(List projections) { + super(projections); + } + public QueryResponseProjection all$() { return all$(3); } @@ -40,7 +49,7 @@ public class QueryResponseProjection extends GraphQLResponseProjection { } public QueryResponseProjection Native(String alias) { - fields.add(new GraphQLResponseField("native").alias(alias)); + add$(new GraphQLResponseField("native").alias(alias)); return this; } @@ -49,7 +58,7 @@ public class QueryResponseProjection extends GraphQLResponseProjection { } public QueryResponseProjection Private(String alias, SynchronizedResponseProjection subProjection) { - fields.add(new GraphQLResponseField("private").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("private").alias(alias).projection(subProjection)); return this; } @@ -58,7 +67,7 @@ public class QueryResponseProjection extends GraphQLResponseProjection { } public QueryResponseProjection Private(String alias, QueryPrivateParametrizedInput input, SynchronizedResponseProjection subProjection) { - fields.add(new GraphQLResponseField("private").alias(alias).parameters(input).projection(subProjection)); + add$(new GraphQLResponseField("private").alias(alias).parameters(input).projection(subProjection)); return this; } @@ -67,7 +76,7 @@ public class QueryResponseProjection extends GraphQLResponseProjection { } public QueryResponseProjection Case(String alias) { - fields.add(new GraphQLResponseField("case").alias(alias)); + add$(new GraphQLResponseField("case").alias(alias)); return this; } @@ -76,7 +85,7 @@ public class QueryResponseProjection extends GraphQLResponseProjection { } public QueryResponseProjection Case(String alias, QueryCaseParametrizedInput input) { - fields.add(new GraphQLResponseField("case").alias(alias).parameters(input)); + add$(new GraphQLResponseField("case").alias(alias).parameters(input)); return this; } @@ -85,10 +94,15 @@ public class QueryResponseProjection extends GraphQLResponseProjection { } public QueryResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public QueryResponseProjection deepCopy$() { + return new QueryResponseProjection(this); + } + @Override public boolean equals(Object obj) { if (this == obj) { @@ -106,4 +120,4 @@ public class QueryResponseProjection extends GraphQLResponseProjection { return Objects.hash(fields); } -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/restricted-words/SynchronizedResponseProjection.java.txt b/src/test/resources/expected-classes/restricted-words/SynchronizedResponseProjection.java.txt index 709b6a507..13927c861 100644 --- a/src/test/resources/expected-classes/restricted-words/SynchronizedResponseProjection.java.txt +++ b/src/test/resources/expected-classes/restricted-words/SynchronizedResponseProjection.java.txt @@ -4,6 +4,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField; import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection; import java.util.HashMap; import java.util.Map; +import java.util.List; import java.util.Objects; /** @@ -20,6 +21,14 @@ public class SynchronizedResponseProjection extends GraphQLResponseProjection { public SynchronizedResponseProjection() { } + public SynchronizedResponseProjection(SynchronizedResponseProjection projection) { + super(projection); + } + + public SynchronizedResponseProjection(List projections) { + super(projections); + } + public SynchronizedResponseProjection all$() { return all$(3); } @@ -40,7 +49,7 @@ public class SynchronizedResponseProjection extends GraphQLResponseProjection { } public SynchronizedResponseProjection Void(String alias) { - fields.add(new GraphQLResponseField("void").alias(alias)); + add$(new GraphQLResponseField("void").alias(alias)); return this; } @@ -49,7 +58,7 @@ public class SynchronizedResponseProjection extends GraphQLResponseProjection { } public SynchronizedResponseProjection Wait(String alias, CharResponseProjection subProjection) { - fields.add(new GraphQLResponseField("wait").alias(alias).projection(subProjection)); + add$(new GraphQLResponseField("wait").alias(alias).projection(subProjection)); return this; } @@ -58,7 +67,7 @@ public class SynchronizedResponseProjection extends GraphQLResponseProjection { } public SynchronizedResponseProjection Class(String alias) { - fields.add(new GraphQLResponseField("class").alias(alias)); + add$(new GraphQLResponseField("class").alias(alias)); return this; } @@ -67,10 +76,15 @@ public class SynchronizedResponseProjection extends GraphQLResponseProjection { } public SynchronizedResponseProjection typename(String alias) { - fields.add(new GraphQLResponseField("__typename").alias(alias)); + add$(new GraphQLResponseField("__typename").alias(alias)); return this; } + @Override + public SynchronizedResponseProjection deepCopy$() { + return new SynchronizedResponseProjection(this); + } + @Override public boolean equals(Object obj) { if (this == obj) { diff --git a/src/test/resources/expected-classes/scala/SearchResultItemConnectionResponseProjection.scala.txt b/src/test/resources/expected-classes/scala/SearchResultItemConnectionResponseProjection.scala.txt index ae5328c2c..4cfc5a3c9 100644 --- a/src/test/resources/expected-classes/scala/SearchResultItemConnectionResponseProjection.scala.txt +++ b/src/test/resources/expected-classes/scala/SearchResultItemConnectionResponseProjection.scala.txt @@ -4,6 +4,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection import java.util.Objects import scala.collection.mutable.HashMap +import scala.collection.JavaConverters._ /** * Response projection for SearchResultItemConnection @@ -12,7 +13,29 @@ import scala.collection.mutable.HashMap value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"), date = "2020-12-31T23:59:59-0500" ) -class SearchResultItemConnectionResponseProjection extends GraphQLResponseProjection { +class SearchResultItemConnectionResponseProjection() extends GraphQLResponseProjection() { + + def this(projection: SearchResultItemConnectionResponseProjection) = { + this() + if (projection != null) { + for (field <- projection.fields.values.asScala) { + add$(field) + } + } + } + + def this(projections: scala.Seq[SearchResultItemConnectionResponseProjection]) = { + this() + if (projections != null) { + for (projection <- projections) { + if (projection != null) { + for (field <- projection.fields.values.asScala) { + add$(field) + } + } + } + } + } private final lazy val projectionDepthOnFields = new HashMap[String, Int] @@ -45,7 +68,7 @@ class SearchResultItemConnectionResponseProjection extends GraphQLResponseProjec } def codeCount(alias: String): SearchResultItemConnectionResponseProjection = { - fields.add(new GraphQLResponseField("codeCount").alias(alias)) + add$(new GraphQLResponseField("codeCount").alias(alias)) this } @@ -54,7 +77,7 @@ class SearchResultItemConnectionResponseProjection extends GraphQLResponseProjec } def edges(alias: String, subProjection: SearchResultItemEdgeResponseProjection): SearchResultItemConnectionResponseProjection = { - fields.add(new GraphQLResponseField("edges").alias(alias).projection(subProjection)) + add$(new GraphQLResponseField("edges").alias(alias).projection(subProjection)) this } @@ -63,7 +86,7 @@ class SearchResultItemConnectionResponseProjection extends GraphQLResponseProjec } def issueCount(alias: String): SearchResultItemConnectionResponseProjection = { - fields.add(new GraphQLResponseField("issueCount").alias(alias)) + add$(new GraphQLResponseField("issueCount").alias(alias)) this } @@ -72,7 +95,7 @@ class SearchResultItemConnectionResponseProjection extends GraphQLResponseProjec } def nodes(alias: String, subProjection: SearchResultItemResponseProjection): SearchResultItemConnectionResponseProjection = { - fields.add(new GraphQLResponseField("nodes").alias(alias).projection(subProjection)) + add$(new GraphQLResponseField("nodes").alias(alias).projection(subProjection)) this } @@ -81,7 +104,7 @@ class SearchResultItemConnectionResponseProjection extends GraphQLResponseProjec } def pageInfo(alias: String, subProjection: PageInfoResponseProjection): SearchResultItemConnectionResponseProjection = { - fields.add(new GraphQLResponseField("pageInfo").alias(alias).projection(subProjection)) + add$(new GraphQLResponseField("pageInfo").alias(alias).projection(subProjection)) this } @@ -90,7 +113,7 @@ class SearchResultItemConnectionResponseProjection extends GraphQLResponseProjec } def repositoryCount(alias: String): SearchResultItemConnectionResponseProjection = { - fields.add(new GraphQLResponseField("repositoryCount").alias(alias)) + add$(new GraphQLResponseField("repositoryCount").alias(alias)) this } @@ -99,7 +122,7 @@ class SearchResultItemConnectionResponseProjection extends GraphQLResponseProjec } def userCount(alias: String): SearchResultItemConnectionResponseProjection = { - fields.add(new GraphQLResponseField("userCount").alias(alias)) + add$(new GraphQLResponseField("userCount").alias(alias)) this } @@ -108,7 +131,7 @@ class SearchResultItemConnectionResponseProjection extends GraphQLResponseProjec } def wikiCount(alias: String): SearchResultItemConnectionResponseProjection = { - fields.add(new GraphQLResponseField("wikiCount").alias(alias)) + add$(new GraphQLResponseField("wikiCount").alias(alias)) this } @@ -117,10 +140,12 @@ class SearchResultItemConnectionResponseProjection extends GraphQLResponseProjec } def typename(alias: String): SearchResultItemConnectionResponseProjection = { - fields.add(new GraphQLResponseField("__typename").alias(alias)) + add$(new GraphQLResponseField("__typename").alias(alias)) this } + override def deepCopy$(): SearchResultItemConnectionResponseProjection = new SearchResultItemConnectionResponseProjection(this) + override def equals(obj: Any): Boolean = { if (this == obj) { return true @@ -134,4 +159,4 @@ class SearchResultItemConnectionResponseProjection extends GraphQLResponseProjec override def hashCode(): Int = Objects.hash(fields) -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/scala/SearchResultItemResponseProjection.scala.txt b/src/test/resources/expected-classes/scala/SearchResultItemResponseProjection.scala.txt index 6b0f6ed80..2bf268c22 100644 --- a/src/test/resources/expected-classes/scala/SearchResultItemResponseProjection.scala.txt +++ b/src/test/resources/expected-classes/scala/SearchResultItemResponseProjection.scala.txt @@ -4,6 +4,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection import java.util.Objects import scala.collection.mutable.HashMap +import scala.collection.JavaConverters._ /** * Response projection for SearchResultItem @@ -12,7 +13,29 @@ import scala.collection.mutable.HashMap value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"), date = "2020-12-31T23:59:59-0500" ) -class SearchResultItemResponseProjection extends GraphQLResponseProjection { +class SearchResultItemResponseProjection() extends GraphQLResponseProjection() { + + def this(projection: SearchResultItemResponseProjection) = { + this() + if (projection != null) { + for (field <- projection.fields.values.asScala) { + add$(field) + } + } + } + + def this(projections: scala.Seq[SearchResultItemResponseProjection]) = { + this() + if (projections != null) { + for (projection <- projections) { + if (projection != null) { + for (field <- projection.fields.values.asScala) { + add$(field) + } + } + } + } + } private final lazy val projectionDepthOnFields = new HashMap[String, Int] @@ -28,7 +51,7 @@ class SearchResultItemResponseProjection extends GraphQLResponseProjection { } def onApp(alias: String, subProjection: AppResponseProjection): SearchResultItemResponseProjection = { - fields.add(new GraphQLResponseField("...on App").alias(alias).projection(subProjection)) + add$(new GraphQLResponseField("...on App").alias(alias).projection(subProjection)) this } @@ -37,7 +60,7 @@ class SearchResultItemResponseProjection extends GraphQLResponseProjection { } def onRepository(alias: String, subProjection: RepositoryResponseProjection): SearchResultItemResponseProjection = { - fields.add(new GraphQLResponseField("...on Repository").alias(alias).projection(subProjection)) + add$(new GraphQLResponseField("...on Repository").alias(alias).projection(subProjection)) this } @@ -46,7 +69,7 @@ class SearchResultItemResponseProjection extends GraphQLResponseProjection { } def onIssue(alias: String, subProjection: IssueResponseProjection): SearchResultItemResponseProjection = { - fields.add(new GraphQLResponseField("...on Issue").alias(alias).projection(subProjection)) + add$(new GraphQLResponseField("...on Issue").alias(alias).projection(subProjection)) this } @@ -55,7 +78,7 @@ class SearchResultItemResponseProjection extends GraphQLResponseProjection { } def onOrganization(alias: String, subProjection: OrganizationResponseProjection): SearchResultItemResponseProjection = { - fields.add(new GraphQLResponseField("...on Organization").alias(alias).projection(subProjection)) + add$(new GraphQLResponseField("...on Organization").alias(alias).projection(subProjection)) this } @@ -64,7 +87,7 @@ class SearchResultItemResponseProjection extends GraphQLResponseProjection { } def onUser(alias: String, subProjection: UserResponseProjection): SearchResultItemResponseProjection = { - fields.add(new GraphQLResponseField("...on User").alias(alias).projection(subProjection)) + add$(new GraphQLResponseField("...on User").alias(alias).projection(subProjection)) this } @@ -73,7 +96,7 @@ class SearchResultItemResponseProjection extends GraphQLResponseProjection { } def onMarketplaceListing(alias: String, subProjection: MarketplaceListingResponseProjection): SearchResultItemResponseProjection = { - fields.add(new GraphQLResponseField("...on MarketplaceListing").alias(alias).projection(subProjection)) + add$(new GraphQLResponseField("...on MarketplaceListing").alias(alias).projection(subProjection)) this } @@ -82,7 +105,7 @@ class SearchResultItemResponseProjection extends GraphQLResponseProjection { } def onPullRequest(alias: String, subProjection: PullRequestResponseProjection): SearchResultItemResponseProjection = { - fields.add(new GraphQLResponseField("...on PullRequest").alias(alias).projection(subProjection)) + add$(new GraphQLResponseField("...on PullRequest").alias(alias).projection(subProjection)) this } @@ -91,10 +114,12 @@ class SearchResultItemResponseProjection extends GraphQLResponseProjection { } def typename(alias: String): SearchResultItemResponseProjection = { - fields.add(new GraphQLResponseField("__typename").alias(alias)) + add$(new GraphQLResponseField("__typename").alias(alias)) this } + override def deepCopy$(): SearchResultItemResponseProjection = new SearchResultItemResponseProjection(this) + override def equals(obj: Any): Boolean = { if (this == obj) { return true @@ -108,4 +133,4 @@ class SearchResultItemResponseProjection extends GraphQLResponseProjection { override def hashCode(): Int = Objects.hash(fields) -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/scala/empty/EventResponseProjection.scala.txt b/src/test/resources/expected-classes/scala/empty/EventResponseProjection.scala.txt index 372ac4910..37a91a039 100644 --- a/src/test/resources/expected-classes/scala/empty/EventResponseProjection.scala.txt +++ b/src/test/resources/expected-classes/scala/empty/EventResponseProjection.scala.txt @@ -1,6 +1,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection import scala.collection.mutable.HashMap +import scala.collection.JavaConverters._ /** * Response projection for Event @@ -9,7 +10,29 @@ import scala.collection.mutable.HashMap value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"), date = "2020-12-31T23:59:59-0500" ) -class EventResponseProjection extends GraphQLResponseProjection { +class EventResponseProjection() extends GraphQLResponseProjection() { + + def this(projection: EventResponseProjection) = { + this() + if (projection != null) { + for (field <- projection.fields.values.asScala) { + add$(field) + } + } + } + + def this(projections: scala.Seq[EventResponseProjection]) = { + this() + if (projections != null) { + for (projection <- projections) { + if (projection != null) { + for (field <- projection.fields.values.asScala) { + add$(field) + } + } + } + } + } private final lazy val projectionDepthOnFields = new HashMap[String, Int] @@ -25,9 +48,11 @@ class EventResponseProjection extends GraphQLResponseProjection { } def typename(alias: String): EventResponseProjection = { - fields.add(new GraphQLResponseField("__typename").alias(alias)) + add$(new GraphQLResponseField("__typename").alias(alias)) this } + override def deepCopy$(): EventResponseProjection = new EventResponseProjection(this) + -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/scala/extend/request/AssetResponseProjection.scala.txt b/src/test/resources/expected-classes/scala/extend/request/AssetResponseProjection.scala.txt index f6cb74a64..fbbefc84c 100644 --- a/src/test/resources/expected-classes/scala/extend/request/AssetResponseProjection.scala.txt +++ b/src/test/resources/expected-classes/scala/extend/request/AssetResponseProjection.scala.txt @@ -1,6 +1,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection import scala.collection.mutable.HashMap +import scala.collection.JavaConverters._ /** * Response projection for Asset @@ -9,7 +10,29 @@ import scala.collection.mutable.HashMap value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"), date = "2020-12-31T23:59:59-0500" ) -class AssetResponseProjection extends GraphQLResponseProjection { +class AssetResponseProjection() extends GraphQLResponseProjection() { + + def this(projection: AssetResponseProjection) = { + this() + if (projection != null) { + for (field <- projection.fields.values.asScala) { + add$(field) + } + } + } + + def this(projections: scala.Seq[AssetResponseProjection]) = { + this() + if (projections != null) { + for (projection <- projections) { + if (projection != null) { + for (field <- projection.fields.values.asScala) { + add$(field) + } + } + } + } + } private final lazy val projectionDepthOnFields = new HashMap[String, Int] @@ -29,7 +52,7 @@ class AssetResponseProjection extends GraphQLResponseProjection { } def name(alias: String): AssetResponseProjection = { - fields.add(new GraphQLResponseField("name").alias(alias)) + add$(new GraphQLResponseField("name").alias(alias)) this } @@ -38,7 +61,7 @@ class AssetResponseProjection extends GraphQLResponseProjection { } def status(alias: String): AssetResponseProjection = { - fields.add(new GraphQLResponseField("status").alias(alias)) + add$(new GraphQLResponseField("status").alias(alias)) this } @@ -47,7 +70,7 @@ class AssetResponseProjection extends GraphQLResponseProjection { } def id(alias: String): AssetResponseProjection = { - fields.add(new GraphQLResponseField("id").alias(alias)) + add$(new GraphQLResponseField("id").alias(alias)) this } @@ -56,7 +79,7 @@ class AssetResponseProjection extends GraphQLResponseProjection { } def createdBy(alias: String): AssetResponseProjection = { - fields.add(new GraphQLResponseField("createdBy").alias(alias)) + add$(new GraphQLResponseField("createdBy").alias(alias)) this } @@ -65,9 +88,11 @@ class AssetResponseProjection extends GraphQLResponseProjection { } def typename(alias: String): AssetResponseProjection = { - fields.add(new GraphQLResponseField("__typename").alias(alias)) + add$(new GraphQLResponseField("__typename").alias(alias)) this } + override def deepCopy$(): AssetResponseProjection = new AssetResponseProjection(this) + -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/scala/extend/request/EventResponseProjection.scala.txt b/src/test/resources/expected-classes/scala/extend/request/EventResponseProjection.scala.txt index 1e25331b1..8a8020f3e 100644 --- a/src/test/resources/expected-classes/scala/extend/request/EventResponseProjection.scala.txt +++ b/src/test/resources/expected-classes/scala/extend/request/EventResponseProjection.scala.txt @@ -1,6 +1,7 @@ import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseField import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponseProjection import scala.collection.mutable.HashMap +import scala.collection.JavaConverters._ /** * Response projection for Event @@ -9,7 +10,29 @@ import scala.collection.mutable.HashMap value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"), date = "2020-12-31T23:59:59-0500" ) -class EventResponseProjection extends GraphQLResponseProjection { +class EventResponseProjection() extends GraphQLResponseProjection() { + + def this(projection: EventResponseProjection) = { + this() + if (projection != null) { + for (field <- projection.fields.values.asScala) { + add$(field) + } + } + } + + def this(projections: scala.Seq[EventResponseProjection]) = { + this() + if (projections != null) { + for (projection <- projections) { + if (projection != null) { + for (field <- projection.fields.values.asScala) { + add$(field) + } + } + } + } + } private final lazy val projectionDepthOnFields = new HashMap[String, Int] @@ -33,7 +56,7 @@ class EventResponseProjection extends GraphQLResponseProjection { } def status(alias: String): EventResponseProjection = { - fields.add(new GraphQLResponseField("status").alias(alias)) + add$(new GraphQLResponseField("status").alias(alias)) this } @@ -42,7 +65,7 @@ class EventResponseProjection extends GraphQLResponseProjection { } def createdDateTime(alias: String): EventResponseProjection = { - fields.add(new GraphQLResponseField("createdDateTime").alias(alias)) + add$(new GraphQLResponseField("createdDateTime").alias(alias)) this } @@ -51,7 +74,7 @@ class EventResponseProjection extends GraphQLResponseProjection { } def assets(alias: String, subProjection: AssetResponseProjection): EventResponseProjection = { - fields.add(new GraphQLResponseField("assets").alias(alias).projection(subProjection)) + add$(new GraphQLResponseField("assets").alias(alias).projection(subProjection)) this } @@ -60,7 +83,7 @@ class EventResponseProjection extends GraphQLResponseProjection { } def id(alias: String): EventResponseProjection = { - fields.add(new GraphQLResponseField("id").alias(alias)) + add$(new GraphQLResponseField("id").alias(alias)) this } @@ -69,7 +92,7 @@ class EventResponseProjection extends GraphQLResponseProjection { } def createdBy(alias: String): EventResponseProjection = { - fields.add(new GraphQLResponseField("createdBy").alias(alias)) + add$(new GraphQLResponseField("createdBy").alias(alias)) this } @@ -78,9 +101,11 @@ class EventResponseProjection extends GraphQLResponseProjection { } def typename(alias: String): EventResponseProjection = { - fields.add(new GraphQLResponseField("__typename").alias(alias)) + add$(new GraphQLResponseField("__typename").alias(alias)) this } + override def deepCopy$(): EventResponseProjection = new EventResponseProjection(this) + -} +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/scala/tostring/QueryPrivateParametrizedInput.scala.txt b/src/test/resources/expected-classes/scala/tostring/QueryPrivateParametrizedInput.scala.txt index 4d9c1d104..ebe9915cb 100644 --- a/src/test/resources/expected-classes/scala/tostring/QueryPrivateParametrizedInput.scala.txt +++ b/src/test/resources/expected-classes/scala/tostring/QueryPrivateParametrizedInput.scala.txt @@ -22,6 +22,18 @@ case class QueryPrivateParametrizedInput( createdAfter: java.time.ZonedDateTime ) extends GraphQLParametrizedInput { + override def deepCopy(): QueryPrivateParametrizedInput = { + QueryPrivateParametrizedInput( + this.int, + this.intOpt, + this.seq1, + this.seq2, + this.`new`, + this.enum, + this.createdAfter + ) + } + override def toString(): String = { scala.Seq( "int: " + GraphQLRequestSerializer.getEntry(int),