未验证 提交 2faea7c3 编写于 作者: 梦境迷离's avatar 梦境迷离 提交者: GitHub

add suffix after the default value of the base type(long) (#292)

* add sbt plugin

* rm log to file

* update

* update readme

* update readme

* update readme

* update client example

* update client example

* update log

* update client example

* add scalaiform

* add scalaiform and publish

* support schemaFinderConfig and parentInterfacesConfig

* update readme license, convert GraphQLCodegen to Def

* update readme

* Create scala.yml

* update scala ci

* update scala ci

* rm scala ci

* rm scala ci

* use publishLocal

* ci support ivy cache

* ci support ivy cache

* fix support ivy cache

* change example project level

* change example project level

* fix path for ci

* fix workflows

* move generate code to src_managed_graphql

* change generate code location to src_managed_graphql

* add sbt-test for plugin

* fix workflows

* fix workflows

* change generate code location to src_managed_graphql

* add watch resource, refactor plugins

* add developer for publish

* add key apiAsyncReturnType and apiAsyncReturnListType,
refactor code, update sbt-test with two options

* add resolvers

* add resolvers for ci

* add resolvers for ci

* add resolvers for ci

* Remove redundant dependencies

* fix support ivy local

* Update github.yml

* fix support ivy local

* update ci

* fix compile failed when generate code  not found in classpath. test in the standard way

* Update github.yml

* 1. update default option code
2. update client example
3. update version to 2.3.0

* update version to 2.3.0

* Merge branch 'master' of github.com:jxnu-liguobin/graphql-java-codegen

* pre release  2.4.0

* next dev 2.4.1-SNAPSHOT
fix example support with v2.4.0 add typename

* add use case with proxy

* add comment

* add Support code

* update README

* add scope on conf key

* add release plugin

* add release plugin

* Setting version to 2.4.2

* Setting version to 2.4.3-SNAPSHOT

* add release plugin (not release)

* upgrade sbt version, update example Deprecated api

* refactor sbt plugin

* refactor sbt plugin

*  Changes for upcoming release 3.0.0 (#276)

* Setting version to 3.0.0

* fix conflict, release3.0.0

* append migration

* append migration

* fix default value, cannot assign a int value to Long(boxing type)

* fix default value, cannot assign a int value to Long(boxing type)

* use new file

* use conversion instead of reflect
上级 5e3f28a0
......@@ -39,7 +39,7 @@ public class ValueMapper {
return ValueFormatter.format(mapBoolean((BooleanValue) value), formatter);
}
if (value instanceof IntValue) {
return ValueFormatter.format(mapInt((IntValue) value), formatter);
return ValueFormatter.format(mapInt(mappingContext, (IntValue) value, graphQLType), formatter);
}
if (value instanceof FloatValue) {
return ValueFormatter.format(mapFloat((FloatValue) value), formatter);
......@@ -65,7 +65,21 @@ public class ValueMapper {
return value.isValue() ? "true" : "false";
}
private static String mapInt(IntValue value) {
private static String mapInt(MappingContext mappingContext, IntValue value, Type<?> graphQLType) {
//default java basic type is `int`. so, default value like 123 that must wrap or append suffix `L` when it be defined as `int` in graphql schema.
//`int` cannot assign to `Long`, also `double` cannot assign to `Float`, but graphql Float default mapping is Double in java, so, not modify `mapFloat`.
if (graphQLType instanceof TypeName) {
String customType = mappingContext.getCustomTypesMapping().get("Long");
String typeName = ((TypeName) graphQLType).getName();
if ("Long".equals(typeName) && ("java.lang.Long".equals(customType) || "Long".equals(customType))) {
return String.valueOf(value.getValue()).concat("L");
}
}
if (graphQLType instanceof NonNullType) {
// unwrapping NonNullType
return mapInt(mappingContext, value, ((NonNullType) graphQLType).getType());
}
return String.valueOf(value.getValue());
}
......
......@@ -8,11 +8,13 @@ import org.junit.jupiter.api.Test;
import java.io.File;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import static com.kobylynskyi.graphql.codegen.TestUtils.assertSameTrimmedContent;
import static java.util.Collections.singletonList;
import static java.util.Collections.singletonMap;
import static java.util.stream.Collectors.toList;
import static org.junit.jupiter.api.Assertions.assertEquals;
......@@ -66,4 +68,21 @@ class GraphQLCodegenDefaultsTest {
file);
}
}
@Test
void generate_CheckFiles_OnLongDefault() throws Exception {
mappingConfig.setCustomTypesMapping(new HashMap<>(singletonMap("Long", "java.lang.Long")));
mappingConfig.setModelNameSuffix("DTO");
new GraphQLCodegen(singletonList("src/test/resources/schemas/defaults-with-Long.graphqls"),
outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo()).generate();
File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles());
List<String> generatedFileNames = Arrays.stream(files).map(File::getName).sorted().collect(toList());
assertEquals(Arrays.asList("InputWithDefaultsDTO.java", "MyEnumDTO.java", "SomeObjectDTO.java"), generatedFileNames);
for (File file : files) {
assertSameTrimmedContent(new File(String.format("src/test/resources/expected-classes/defaults/%s.txt",
file.getName())),
file);
}
}
}
package com.kobylynskyi.graphql.testdefaults;
/**
* This input has all possible types
*/
@javax.annotation.Generated(
value = "com.kobylynskyi.graphql.codegen.GraphQLCodegen",
date = "2020-12-31T23:59:59-0500"
)
public class InputWithDefaultsDTO implements java.io.Serializable {
private Double floatVal = 1.23;
private Boolean booleanVal = false;
private Integer intVal = 42;
private String stringVal = "my-default";
private MyEnumDTO enumVal = MyEnumDTO.ONE;
@javax.validation.constraints.NotNull
private MyEnumDTO nonNullEnumVal = MyEnumDTO.TWO;
private SomeObjectDTO objectWithNullDefault = null;
private SomeObjectDTO objectWithNonNullDefault;
private java.util.List<Integer> intList = java.util.Arrays.asList(1, 2, 3);
private java.util.List<Integer> intListEmptyDefault = java.util.Collections.emptyList();
@javax.validation.constraints.NotNull
private java.util.List<SomeObjectDTO> objectListEmptyDefault = java.util.Collections.emptyList();
private java.lang.Long longValue = 123456L;
public InputWithDefaultsDTO() {
}
public InputWithDefaultsDTO(Double floatVal, Boolean booleanVal, Integer intVal, String stringVal, MyEnumDTO enumVal, MyEnumDTO nonNullEnumVal, SomeObjectDTO objectWithNullDefault, SomeObjectDTO objectWithNonNullDefault, java.util.List<Integer> intList, java.util.List<Integer> intListEmptyDefault, java.util.List<SomeObjectDTO> objectListEmptyDefault, java.lang.Long longValue) {
this.floatVal = floatVal;
this.booleanVal = booleanVal;
this.intVal = intVal;
this.stringVal = stringVal;
this.enumVal = enumVal;
this.nonNullEnumVal = nonNullEnumVal;
this.objectWithNullDefault = objectWithNullDefault;
this.objectWithNonNullDefault = objectWithNonNullDefault;
this.intList = intList;
this.intListEmptyDefault = intListEmptyDefault;
this.objectListEmptyDefault = objectListEmptyDefault;
this.longValue = longValue;
}
public Double getFloatVal() {
return floatVal;
}
public void setFloatVal(Double floatVal) {
this.floatVal = floatVal;
}
public Boolean getBooleanVal() {
return booleanVal;
}
public void setBooleanVal(Boolean booleanVal) {
this.booleanVal = booleanVal;
}
public Integer getIntVal() {
return intVal;
}
public void setIntVal(Integer intVal) {
this.intVal = intVal;
}
public String getStringVal() {
return stringVal;
}
public void setStringVal(String stringVal) {
this.stringVal = stringVal;
}
public MyEnumDTO getEnumVal() {
return enumVal;
}
public void setEnumVal(MyEnumDTO enumVal) {
this.enumVal = enumVal;
}
public MyEnumDTO getNonNullEnumVal() {
return nonNullEnumVal;
}
public void setNonNullEnumVal(MyEnumDTO nonNullEnumVal) {
this.nonNullEnumVal = nonNullEnumVal;
}
public SomeObjectDTO getObjectWithNullDefault() {
return objectWithNullDefault;
}
public void setObjectWithNullDefault(SomeObjectDTO objectWithNullDefault) {
this.objectWithNullDefault = objectWithNullDefault;
}
public SomeObjectDTO getObjectWithNonNullDefault() {
return objectWithNonNullDefault;
}
public void setObjectWithNonNullDefault(SomeObjectDTO objectWithNonNullDefault) {
this.objectWithNonNullDefault = objectWithNonNullDefault;
}
public java.util.List<Integer> getIntList() {
return intList;
}
public void setIntList(java.util.List<Integer> intList) {
this.intList = intList;
}
public java.util.List<Integer> getIntListEmptyDefault() {
return intListEmptyDefault;
}
public void setIntListEmptyDefault(java.util.List<Integer> intListEmptyDefault) {
this.intListEmptyDefault = intListEmptyDefault;
}
public java.util.List<SomeObjectDTO> getObjectListEmptyDefault() {
return objectListEmptyDefault;
}
public void setObjectListEmptyDefault(java.util.List<SomeObjectDTO> objectListEmptyDefault) {
this.objectListEmptyDefault = objectListEmptyDefault;
}
public java.lang.Long getLongValue() {
return longValue;
}
public void setLongValue(java.lang.Long longValue) {
this.longValue = longValue;
}
public static InputWithDefaultsDTO.Builder builder() {
return new InputWithDefaultsDTO.Builder();
}
public static class Builder {
private Double floatVal = 1.23;
private Boolean booleanVal = false;
private Integer intVal = 42;
private String stringVal = "my-default";
private MyEnumDTO enumVal = MyEnumDTO.ONE;
private MyEnumDTO nonNullEnumVal = MyEnumDTO.TWO;
private SomeObjectDTO objectWithNullDefault = null;
private SomeObjectDTO objectWithNonNullDefault;
private java.util.List<Integer> intList = java.util.Arrays.asList(1, 2, 3);
private java.util.List<Integer> intListEmptyDefault = java.util.Collections.emptyList();
private java.util.List<SomeObjectDTO> objectListEmptyDefault = java.util.Collections.emptyList();
private java.lang.Long longValue = 123456L;
public Builder() {
}
public Builder setFloatVal(Double floatVal) {
this.floatVal = floatVal;
return this;
}
public Builder setBooleanVal(Boolean booleanVal) {
this.booleanVal = booleanVal;
return this;
}
public Builder setIntVal(Integer intVal) {
this.intVal = intVal;
return this;
}
public Builder setStringVal(String stringVal) {
this.stringVal = stringVal;
return this;
}
public Builder setEnumVal(MyEnumDTO enumVal) {
this.enumVal = enumVal;
return this;
}
public Builder setNonNullEnumVal(MyEnumDTO nonNullEnumVal) {
this.nonNullEnumVal = nonNullEnumVal;
return this;
}
public Builder setObjectWithNullDefault(SomeObjectDTO objectWithNullDefault) {
this.objectWithNullDefault = objectWithNullDefault;
return this;
}
public Builder setObjectWithNonNullDefault(SomeObjectDTO objectWithNonNullDefault) {
this.objectWithNonNullDefault = objectWithNonNullDefault;
return this;
}
public Builder setIntList(java.util.List<Integer> intList) {
this.intList = intList;
return this;
}
public Builder setIntListEmptyDefault(java.util.List<Integer> intListEmptyDefault) {
this.intListEmptyDefault = intListEmptyDefault;
return this;
}
public Builder setObjectListEmptyDefault(java.util.List<SomeObjectDTO> objectListEmptyDefault) {
this.objectListEmptyDefault = objectListEmptyDefault;
return this;
}
public Builder setLongValue(java.lang.Long longValue) {
this.longValue = longValue;
return this;
}
public InputWithDefaultsDTO build() {
return new InputWithDefaultsDTO(floatVal, booleanVal, intVal, stringVal, enumVal, nonNullEnumVal, objectWithNullDefault, objectWithNonNullDefault, intList, intListEmptyDefault, objectListEmptyDefault, longValue);
}
}
}
package com.kobylynskyi.graphql.testdefaults;
@javax.annotation.Generated(
value = "com.kobylynskyi.graphql.codegen.GraphQLCodegen",
date = "2020-12-31T23:59:59-0500"
)
public enum MyEnumDTO {
ONE("ONE"),
TWO("TWO"),
THREE("THREE");
private final String graphqlName;
private MyEnumDTO(String graphqlName) {
this.graphqlName = graphqlName;
}
@Override
public String toString() {
return this.graphqlName;
}
}
\ No newline at end of file
package com.kobylynskyi.graphql.testdefaults;
@javax.annotation.Generated(
value = "com.kobylynskyi.graphql.codegen.GraphQLCodegen",
date = "2020-12-31T23:59:59-0500"
)
public class SomeObjectDTO implements java.io.Serializable {
@javax.validation.constraints.NotNull
private String name;
public SomeObjectDTO() {
}
public SomeObjectDTO(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static SomeObjectDTO.Builder builder() {
return new SomeObjectDTO.Builder();
}
public static class Builder {
private String name;
public Builder() {
}
public Builder setName(String name) {
this.name = name;
return this;
}
public SomeObjectDTO build() {
return new SomeObjectDTO(name);
}
}
}
# This input has all possible types
input InputWithDefaults {
floatVal: Float = 1.23
booleanVal: Boolean = false
intVal: Int = 42
stringVal: String = "my-default"
enumVal: MyEnum = ONE
nonNullEnumVal: MyEnum! = TWO
objectWithNullDefault: SomeObject = null
objectWithNonNullDefault: SomeObject = { name: "Bob" }
intList: [Int] = [1, 2, 3]
intListEmptyDefault: [Int] = []
objectListEmptyDefault: [SomeObject]! = []
longValue: Long = 123456
}
input SomeObject {
name: String!
}
enum MyEnum {
ONE, TWO, THREE
}
scalar Long
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册