Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
Expand Down Expand Up @@ -123,16 +122,14 @@ public String map(MappingContext mappingContext, Value<?> value, Type<?> graphQL

private String mapEnum(MappingContext mappingContext, EnumValue value, Type<?> graphQLType) {
if (graphQLType == null) {
Map<String, String> customTypesMapping = mappingContext.getCustomTypesMapping();
if (customTypesMapping.containsKey(value.getName())) {
return customTypesMapping.get(value.getName());
}

return value.getName();
String typeName = value.getName();
return mappingContext.getCustomTypesMapping().getOrDefault(typeName, typeName);
}
if (graphQLType instanceof TypeName) {
String typeName = ((TypeName) graphQLType).getName();
typeName = DataModelMapper.getModelClassNameWithPrefixAndSuffix(mappingContext, typeName);
typeName = mappingContext.getCustomTypesMapping().getOrDefault(typeName,
DataModelMapper.getModelClassNameWithPrefixAndSuffix(mappingContext, typeName)
);
return typeName + "." + dataModelMapper.capitalizeIfRestricted(mappingContext, value.getName());
}
if (graphQLType instanceof NonNullType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,18 @@

import java.io.File;
import java.io.IOException;
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 com.kobylynskyi.graphql.codegen.TestUtils.getFileByName;
import static java.util.Arrays.asList;
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;

class GraphQLCodegenCustomScalarMappingTest {

Expand Down Expand Up @@ -86,6 +91,28 @@ void generate_CustomTypeMapping_ForExtensionProperty() throws Exception {
getFileByName(files, "ExternalResolver.java"));
}

/**
* See #1429
*/
@Test
void generate_CustomTypeMapping_ForEnumWithDefaultValue() throws Exception {
mappingConfig.setGenerateExtensionFieldsResolvers(true);
mappingConfig.setCustomTypesMapping(singletonMap("MyEnum", "com.example.MyOtherEnum"));
mappingConfig.setGenerateClient(false);

generate("src/test/resources/schemas/defaults.graphqls");

File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles());
List<String> generatedFileNames = Arrays.stream(files).map(File::getName).sorted().collect(toList());
assertEquals(asList("InputWithDefaults.java", "MyEnum.java", "SomeObject.java"), generatedFileNames);

for (File file : files) {
assertSameTrimmedContent(
new File(String.format("src/test/resources/expected-classes/default-custom-types/%s.txt",
file.getName())), file);
}
}

private void generate(String path) throws IOException {
new JavaGraphQLCodegen(singletonList(path),
outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo(mappingConfig))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
package com.kobylynskyi.graphql.test1;


/**
* This input has all possible types
*/
@javax.annotation.Generated(
value = "com.kobylynskyi.graphql.codegen.GraphQLCodegen",
date = "2020-12-31T23:59:59-0500"
)
public class InputWithDefaults implements java.io.Serializable {

private static final long serialVersionUID = 1L;

private Double floatVal = 1.23;
private Boolean booleanVal = false;
private Integer intVal = 42;
private String stringVal = "my-default";
private com.example.MyOtherEnum enumVal = com.example.MyOtherEnum.ONE;
@javax.validation.constraints.NotNull
private com.example.MyOtherEnum nonNullEnumVal = com.example.MyOtherEnum.TWO;
private SomeObject objectWithNullDefault = null;
private SomeObject 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<SomeObject> objectListEmptyDefault = java.util.Collections.emptyList();

public InputWithDefaults() {
}

public InputWithDefaults(Double floatVal, Boolean booleanVal, Integer intVal, String stringVal, com.example.MyOtherEnum enumVal, com.example.MyOtherEnum nonNullEnumVal, SomeObject objectWithNullDefault, SomeObject objectWithNonNullDefault, java.util.List<Integer> intList, java.util.List<Integer> intListEmptyDefault, java.util.List<SomeObject> objectListEmptyDefault) {
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;
}

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 com.example.MyOtherEnum getEnumVal() {
return enumVal;
}
public void setEnumVal(com.example.MyOtherEnum enumVal) {
this.enumVal = enumVal;
}

public com.example.MyOtherEnum getNonNullEnumVal() {
return nonNullEnumVal;
}
public void setNonNullEnumVal(com.example.MyOtherEnum nonNullEnumVal) {
this.nonNullEnumVal = nonNullEnumVal;
}

public SomeObject getObjectWithNullDefault() {
return objectWithNullDefault;
}
public void setObjectWithNullDefault(SomeObject objectWithNullDefault) {
this.objectWithNullDefault = objectWithNullDefault;
}

public SomeObject getObjectWithNonNullDefault() {
return objectWithNonNullDefault;
}
public void setObjectWithNonNullDefault(SomeObject 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<SomeObject> getObjectListEmptyDefault() {
return objectListEmptyDefault;
}
public void setObjectListEmptyDefault(java.util.List<SomeObject> objectListEmptyDefault) {
this.objectListEmptyDefault = objectListEmptyDefault;
}



public static InputWithDefaults.Builder builder() {
return new InputWithDefaults.Builder();
}

@javax.annotation.Generated(
value = "com.kobylynskyi.graphql.codegen.GraphQLCodegen",
date = "2020-12-31T23:59:59-0500"
)
public static class Builder {

private Double floatVal = 1.23;
private Boolean booleanVal = false;
private Integer intVal = 42;
private String stringVal = "my-default";
private com.example.MyOtherEnum enumVal = com.example.MyOtherEnum.ONE;
private com.example.MyOtherEnum nonNullEnumVal = com.example.MyOtherEnum.TWO;
private SomeObject objectWithNullDefault = null;
private SomeObject 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<SomeObject> objectListEmptyDefault = java.util.Collections.emptyList();

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(com.example.MyOtherEnum enumVal) {
this.enumVal = enumVal;
return this;
}

public Builder setNonNullEnumVal(com.example.MyOtherEnum nonNullEnumVal) {
this.nonNullEnumVal = nonNullEnumVal;
return this;
}

public Builder setObjectWithNullDefault(SomeObject objectWithNullDefault) {
this.objectWithNullDefault = objectWithNullDefault;
return this;
}

public Builder setObjectWithNonNullDefault(SomeObject 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<SomeObject> objectListEmptyDefault) {
this.objectListEmptyDefault = objectListEmptyDefault;
return this;
}


public InputWithDefaults build() {
return new InputWithDefaults(floatVal, booleanVal, intVal, stringVal, enumVal, nonNullEnumVal, objectWithNullDefault, objectWithNonNullDefault, intList, intListEmptyDefault, objectListEmptyDefault);
}

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.kobylynskyi.graphql.test1;

@javax.annotation.Generated(
value = "com.kobylynskyi.graphql.codegen.GraphQLCodegen",
date = "2020-12-31T23:59:59-0500"
)
public enum MyEnum {

ONE("ONE"),
TWO("TWO"),
THREE("THREE");

private final String graphqlName;

private MyEnum(String graphqlName) {
this.graphqlName = graphqlName;
}

@Override
public String toString() {
return this.graphqlName;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package com.kobylynskyi.graphql.test1;


@javax.annotation.Generated(
value = "com.kobylynskyi.graphql.codegen.GraphQLCodegen",
date = "2020-12-31T23:59:59-0500"
)
public class SomeObject implements java.io.Serializable {

private static final long serialVersionUID = 1L;

@javax.validation.constraints.NotNull
private String name;

public SomeObject() {
}

public SomeObject(String name) {
this.name = name;
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}



public static SomeObject.Builder builder() {
return new SomeObject.Builder();
}

@javax.annotation.Generated(
value = "com.kobylynskyi.graphql.codegen.GraphQLCodegen",
date = "2020-12-31T23:59:59-0500"
)
public static class Builder {

private String name;

public Builder() {
}

public Builder setName(String name) {
this.name = name;
return this;
}


public SomeObject build() {
return new SomeObject(name);
}

}
}