Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦境迷离
Graphql Java Codegen
提交
a5151c30
G
Graphql Java Codegen
项目概览
梦境迷离
/
Graphql Java Codegen
11 个月 前同步成功
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Graphql Java Codegen
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
a5151c30
编写于
3月 03, 2021
作者:
B
Brayden Streibel
提交者:
GitHub
3月 03, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix parameterized input serialization (#563)
上级
600c902c
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
87 addition
and
24 deletion
+87
-24
src/main/resources/templates/java-lang/javaClassGraphqlParametrizedInput.ftl
...templates/java-lang/javaClassGraphqlParametrizedInput.ftl
+2
-2
src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenRequestTest.java
...obylynskyi/graphql/codegen/GraphQLCodegenRequestTest.java
+4
-1
src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLRequestSerializerTest.java
...l/codegen/model/graphql/GraphQLRequestSerializerTest.java
+32
-4
src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventPropertyParentParametrizedInput.java
...el/graphql/data/EventPropertyParentParametrizedInput.java
+16
-6
src/test/resources/expected-classes/request/EventPropertyParentParametrizedInput.java.txt
...ses/request/EventPropertyParentParametrizedInput.java.txt
+15
-4
src/test/resources/expected-classes/request/EventPropertyParentParametrizedInput_withModelSuffix.java.txt
...tPropertyParentParametrizedInput_withModelSuffix.java.txt
+15
-4
src/test/resources/expected-classes/resolvers/EventPropertyResolver.java.txt
...expected-classes/resolvers/EventPropertyResolver.java.txt
+2
-2
src/test/resources/schemas/test.graphqls
src/test/resources/schemas/test.graphqls
+1
-1
未找到文件。
src/main/resources/templates/java-lang/javaClassGraphqlParametrizedInput.ftl
浏览文件 @
a5151c30
...
...
@@ -104,10 +104,10 @@ public class ${className} implements GraphQLParametrizedInput {
<#
if
fields
?
has_content
>
<#
list
fields
as
field
>
<#
if
MapperUtil
.
isJavaPrimitive
(
field
.
type
)>
joiner
.
add
(
"${field.originalName}: "
+
GraphQLRequestSerializer
.
getEntry
(${
field
.
name
}));
joiner
.
add
(
"${field.originalName}: "
+
GraphQLRequestSerializer
.
getEntry
(${
field
.
name
}
<#
if
field
.
serializeUsingObjectMapper
>,
true
</#
if
>
));
<#
else
>
if
(${
field
.
name
}
!= null) {
joiner
.
add
(
"${field.originalName}: "
+
GraphQLRequestSerializer
.
getEntry
(${
field
.
name
}));
joiner
.
add
(
"${field.originalName}: "
+
GraphQLRequestSerializer
.
getEntry
(${
field
.
name
}
<#
if
field
.
serializeUsingObjectMapper
>,
true
</#
if
>
));
}
</#
if
>
</#
list
>
...
...
src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenRequestTest.java
浏览文件 @
a5151c30
...
...
@@ -8,6 +8,7 @@ import org.junit.jupiter.api.BeforeEach;
import
org.junit.jupiter.api.Test
;
import
java.io.File
;
import
java.util.Collections
;
import
java.util.Objects
;
import
static
com
.
kobylynskyi
.
graphql
.
codegen
.
TestUtils
.
assertSameTrimmedContent
;
...
...
@@ -31,6 +32,8 @@ class GraphQLCodegenRequestTest {
mappingConfig
.
setGenerateEqualsAndHashCode
(
true
);
mappingConfig
.
setGenerateToString
(
false
);
// should be overridden to true
mappingConfig
.
setGenerateApis
(
false
);
mappingConfig
.
putCustomTypeMappingIfAbsent
(
"DateTime"
,
"java.time.ZonedDateTime"
);
mappingConfig
.
setUseObjectMapperForRequestSerialization
(
singleton
(
"DateTime"
));
}
@AfterEach
...
...
@@ -228,4 +231,4 @@ class GraphQLCodegenRequestTest {
getFileByName
(
files
,
"QueryINeedQueryRequest.java"
));
}
}
\ No newline at end of file
}
src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/GraphQLRequestSerializerTest.java
浏览文件 @
a5151c30
...
...
@@ -23,14 +23,13 @@ import org.junit.jupiter.params.ParameterizedTest;
import
org.junit.jupiter.params.provider.Arguments
;
import
org.junit.jupiter.params.provider.MethodSource
;
import
java.time.ZoneOffset
;
import
java.time.ZonedDateTime
;
import
java.util.Arrays
;
import
java.util.function.Function
;
import
java.util.stream.Stream
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertEquals
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertNull
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertThrows
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.*;
class
GraphQLRequestSerializerTest
{
...
...
@@ -281,6 +280,35 @@ class GraphQLRequestSerializerTest {
assertEquals
(
expectedQueryDecorator
.
apply
(
expectedQueryStr
),
serializedQuery
);
}
@ParameterizedTest
(
name
=
"{0}"
)
@MethodSource
(
"provideAllSerializers"
)
void
serialize_UseObjectMapperForParameterizedInput
(
String
name
,
Function
<
GraphQLRequest
,
String
>
serializer
,
Function
<
String
,
String
>
expectedQueryDecorator
)
{
GraphQLRequestSerializer
.
OBJECT_MAPPER
.
registerModule
(
new
SimpleModule
().
addSerializer
(
new
ZonedDateTimeSerializer
()));
EventsByCategoryAndStatusQueryRequest
request
=
new
EventsByCategoryAndStatusQueryRequest
.
Builder
()
.
setCategoryId
(
"categoryIdValue1"
)
.
setStatus
(
Status
.
OPEN
)
.
build
();
GraphQLRequest
graphQLRequest
=
new
GraphQLRequest
(
request
,
new
EventResponseProjection
()
.
properties
(
new
EventPropertyResponseProjection
()
.
child
(
new
EventPropertyResponseProjection
()
.
parent
(
new
EventPropertyParentParametrizedInput
()
.
createdAfter
(
ZonedDateTime
.
of
(
2007
,
1
,
9
,
9
,
41
,
0
,
0
,
ZoneOffset
.
UTC
)),
new
EventResponseProjection
()
.
id
())))
);
String
serializedQuery
=
serializer
.
apply
(
graphQLRequest
).
replaceAll
(
" +"
,
" "
).
trim
();
String
expectedQueryStr
=
"query { "
+
"eventsByCategoryAndStatus(categoryId: \"categoryIdValue1\", status: OPEN){ "
+
"properties { "
+
"child { parent (createdAfter: \"2007-01-09T09:41:00Z\") { id } } } "
+
"} "
+
"}"
;
assertEquals
(
expectedQueryDecorator
.
apply
(
expectedQueryStr
),
serializedQuery
);
}
@ParameterizedTest
(
name
=
"{0}"
)
@MethodSource
(
"provideAllSerializers"
)
void
serialize_complexRequest
(
String
name
,
Function
<
GraphQLRequest
,
String
>
serializer
,
Function
<
String
,
String
>
expectedQueryDecorator
)
{
...
...
@@ -440,4 +468,4 @@ class GraphQLRequestSerializerTest {
return
String
.
format
(
"{\"query\":\"%s\"}"
,
expectedQueryDecorator
.
replace
(
"\\"
,
"\\\\"
).
replace
(
"\""
,
"\\\""
));
}
}
\ No newline at end of file
}
src/test/java/com/kobylynskyi/graphql/codegen/model/graphql/data/EventPropertyParentParametrizedInput.java
浏览文件 @
a5151c30
...
...
@@ -2,9 +2,8 @@ package com.kobylynskyi.graphql.codegen.model.graphql.data;
import
com.kobylynskyi.graphql.codegen.model.graphql.GraphQLParametrizedInput
;
import
com.kobylynskyi.graphql.codegen.model.graphql.GraphQLRequestSerializer
;
import
java.util.Objects
;
import
java.util.StringJoiner
;
import
java.util.Objects
;
/**
* Parametrized input for field parent in type EventProperty
...
...
@@ -12,12 +11,14 @@ import java.util.StringJoiner;
public
class
EventPropertyParentParametrizedInput
implements
GraphQLParametrizedInput
{
private
Status
withStatus
;
private
java
.
time
.
ZonedDateTime
createdAfter
;
public
EventPropertyParentParametrizedInput
()
{
}
public
EventPropertyParentParametrizedInput
(
Status
withStatus
)
{
public
EventPropertyParentParametrizedInput
(
Status
withStatus
,
java
.
time
.
ZonedDateTime
createdAfter
)
{
this
.
withStatus
=
withStatus
;
this
.
createdAfter
=
createdAfter
;
}
public
EventPropertyParentParametrizedInput
withStatus
(
Status
withStatus
)
{
...
...
@@ -25,6 +26,11 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
return
this
;
}
public
EventPropertyParentParametrizedInput
createdAfter
(
java
.
time
.
ZonedDateTime
createdAfter
)
{
this
.
createdAfter
=
createdAfter
;
return
this
;
}
@Override
public
boolean
equals
(
Object
obj
)
{
if
(
this
==
obj
)
{
...
...
@@ -34,12 +40,13 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
return
false
;
}
final
EventPropertyParentParametrizedInput
that
=
(
EventPropertyParentParametrizedInput
)
obj
;
return
Objects
.
equals
(
withStatus
,
that
.
withStatus
);
return
Objects
.
equals
(
withStatus
,
that
.
withStatus
)
&&
Objects
.
equals
(
createdAfter
,
that
.
createdAfter
);
}
@Override
public
int
hashCode
()
{
return
Objects
.
hash
(
withStatus
);
return
Objects
.
hash
(
withStatus
,
createdAfter
);
}
@Override
...
...
@@ -48,7 +55,10 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
if
(
withStatus
!=
null
)
{
joiner
.
add
(
"withStatus: "
+
GraphQLRequestSerializer
.
getEntry
(
withStatus
));
}
if
(
createdAfter
!=
null
)
{
joiner
.
add
(
"createdAfter: "
+
GraphQLRequestSerializer
.
getEntry
(
createdAfter
,
true
));
}
return
joiner
.
toString
();
}
}
\ No newline at end of file
}
src/test/resources/expected-classes/request/EventPropertyParentParametrizedInput.java.txt
浏览文件 @
a5151c30
...
...
@@ -15,12 +15,14 @@ import java.util.Objects;
public class EventPropertyParentParametrizedInput implements GraphQLParametrizedInput {
private EventStatus withStatus;
private java.time.ZonedDateTime createdAfter;
public EventPropertyParentParametrizedInput() {
}
public EventPropertyParentParametrizedInput(EventStatus withStatus) {
public EventPropertyParentParametrizedInput(EventStatus withStatus
, java.time.ZonedDateTime createdAfter
) {
this.withStatus = withStatus;
this.createdAfter = createdAfter;
}
public EventPropertyParentParametrizedInput withStatus(EventStatus withStatus) {
...
...
@@ -28,6 +30,11 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
return this;
}
public EventPropertyParentParametrizedInput createdAfter(java.time.ZonedDateTime createdAfter) {
this.createdAfter = createdAfter;
return this;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
...
...
@@ -37,12 +44,13 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
return false;
}
final EventPropertyParentParametrizedInput that = (EventPropertyParentParametrizedInput) obj;
return Objects.equals(withStatus, that.withStatus);
return Objects.equals(withStatus, that.withStatus)
&& Objects.equals(createdAfter, that.createdAfter);
}
@Override
public int hashCode() {
return Objects.hash(withStatus);
return Objects.hash(withStatus
, createdAfter
);
}
@Override
...
...
@@ -51,7 +59,10 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
if (withStatus != null) {
joiner.add("withStatus: " + GraphQLRequestSerializer.getEntry(withStatus));
}
if (createdAfter != null) {
joiner.add("createdAfter: " + GraphQLRequestSerializer.getEntry(createdAfter, true));
}
return joiner.toString();
}
}
\ No newline at end of file
}
src/test/resources/expected-classes/request/EventPropertyParentParametrizedInput_withModelSuffix.java.txt
浏览文件 @
a5151c30
...
...
@@ -15,12 +15,14 @@ import java.util.Objects;
public class EventPropertyParentParametrizedInput implements GraphQLParametrizedInput {
private EventStatusTO withStatus;
private java.time.ZonedDateTime createdAfter;
public EventPropertyParentParametrizedInput() {
}
public EventPropertyParentParametrizedInput(EventStatusTO withStatus) {
public EventPropertyParentParametrizedInput(EventStatusTO withStatus
, java.time.ZonedDateTime createdAfter
) {
this.withStatus = withStatus;
this.createdAfter = createdAfter;
}
public EventPropertyParentParametrizedInput withStatus(EventStatusTO withStatus) {
...
...
@@ -28,6 +30,11 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
return this;
}
public EventPropertyParentParametrizedInput createdAfter(java.time.ZonedDateTime createdAfter) {
this.createdAfter = createdAfter;
return this;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
...
...
@@ -37,12 +44,13 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
return false;
}
final EventPropertyParentParametrizedInput that = (EventPropertyParentParametrizedInput) obj;
return Objects.equals(withStatus, that.withStatus);
return Objects.equals(withStatus, that.withStatus)
&& Objects.equals(createdAfter, that.createdAfter);
}
@Override
public int hashCode() {
return Objects.hash(withStatus);
return Objects.hash(withStatus
, createdAfter
);
}
@Override
...
...
@@ -51,7 +59,10 @@ public class EventPropertyParentParametrizedInput implements GraphQLParametrized
if (withStatus != null) {
joiner.add("withStatus: " + GraphQLRequestSerializer.getEntry(withStatus));
}
if (createdAfter != null) {
joiner.add("createdAfter: " + GraphQLRequestSerializer.getEntry(createdAfter, true));
}
return joiner.toString();
}
}
\ No newline at end of file
}
src/test/resources/expected-classes/resolvers/EventPropertyResolver.java.txt
浏览文件 @
a5151c30
...
...
@@ -32,6 +32,6 @@ public interface EventPropertyResolver {
/**
* Parent event of the property
*/
Event parent(EventProperty eventProperty, EventStatus withStatus) throws Exception;
Event parent(EventProperty eventProperty, EventStatus withStatus
, String createdAfter
) throws Exception;
}
\ No newline at end of file
}
src/test/resources/schemas/test.graphqls
浏览文件 @
a5151c30
...
...
@@ -77,7 +77,7 @@ type EventProperty @customResolver{
# Properties
child(first: Int, last: Int): [EventProperty]
# Parent event of the property
parent(withStatus: EventStatus): Event
parent(withStatus: EventStatus
, createdAfter: DateTime
): Event
}
# Custom DateTime scalar
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录