Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦境迷离
Graphql Java Codegen
提交
4917c4bd
G
Graphql Java Codegen
项目概览
梦境迷离
/
Graphql Java Codegen
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
未验证
提交
4917c4bd
编写于
12月 27, 2020
作者:
B
Bogdan Kobylynskyi
提交者:
GitHub
12月 27, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Support interfaces to extend other interfaces #468 (#469)
上级
c12f765f
变更
16
隐藏空白更改
内联
并排
Showing
16 changed file
with
54 addition
and
15 deletion
+54
-15
src/main/java/com/kobylynskyi/graphql/codegen/FreeMarkerTemplatesRegistry.java
...ylynskyi/graphql/codegen/FreeMarkerTemplatesRegistry.java
+9
-11
src/main/java/com/kobylynskyi/graphql/codegen/mapper/InterfaceDefinitionToDataModelMapper.java
.../codegen/mapper/InterfaceDefinitionToDataModelMapper.java
+11
-0
src/main/resources/templates/java-lang/javaClassGraphqlEnum.ftl
...in/resources/templates/java-lang/javaClassGraphqlEnum.ftl
+0
-0
src/main/resources/templates/java-lang/javaClassGraphqlInterface.ftl
...sources/templates/java-lang/javaClassGraphqlInterface.ftl
+0
-0
src/main/resources/templates/java-lang/javaClassGraphqlOperations.ftl
...ources/templates/java-lang/javaClassGraphqlOperations.ftl
+0
-0
src/main/resources/templates/java-lang/javaClassGraphqlParametrizedInput.ftl
...templates/java-lang/javaClassGraphqlParametrizedInput.ftl
+0
-0
src/main/resources/templates/java-lang/javaClassGraphqlRequest.ftl
...resources/templates/java-lang/javaClassGraphqlRequest.ftl
+0
-0
src/main/resources/templates/java-lang/javaClassGraphqlResponse.ftl
...esources/templates/java-lang/javaClassGraphqlResponse.ftl
+0
-0
src/main/resources/templates/java-lang/javaClassGraphqlResponseProjection.ftl
...emplates/java-lang/javaClassGraphqlResponseProjection.ftl
+0
-0
src/main/resources/templates/java-lang/javaClassGraphqlType.ftl
...in/resources/templates/java-lang/javaClassGraphqlType.ftl
+0
-0
src/main/resources/templates/java-lang/javaClassGraphqlUnion.ftl
...n/resources/templates/java-lang/javaClassGraphqlUnion.ftl
+0
-0
src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenInterfacesTest.java
...lynskyi/graphql/codegen/GraphQLCodegenInterfacesTest.java
+2
-1
src/test/java/com/kobylynskyi/graphql/codegen/kotlin/GraphQLCodegenInterfacesTest.java
.../graphql/codegen/kotlin/GraphQLCodegenInterfacesTest.java
+1
-1
src/test/resources/expected-classes/interfaces/BarBar.java.txt
...est/resources/expected-classes/interfaces/BarBar.java.txt
+13
-0
src/test/resources/expected-classes/kt/interfaces/BarBar.kt.txt
...st/resources/expected-classes/kt/interfaces/BarBar.kt.txt
+12
-0
src/test/resources/schemas/interfaces.graphqls
src/test/resources/schemas/interfaces.graphqls
+6
-2
未找到文件。
src/main/java/com/kobylynskyi/graphql/codegen/FreeMarkerTemplatesRegistry.java
浏览文件 @
4917c4bd
...
@@ -38,15 +38,15 @@ class FreeMarkerTemplatesRegistry {
...
@@ -38,15 +38,15 @@ class FreeMarkerTemplatesRegistry {
try
{
try
{
EnumMap
<
FreeMarkerTemplateType
,
Template
>
javaTemplates
=
new
EnumMap
<>(
FreeMarkerTemplateType
.
class
);
EnumMap
<
FreeMarkerTemplateType
,
Template
>
javaTemplates
=
new
EnumMap
<>(
FreeMarkerTemplateType
.
class
);
javaTemplates
.
put
(
TYPE
,
configuration
.
getTemplate
(
"templates/javaClassGraphqlType.ftl"
));
javaTemplates
.
put
(
TYPE
,
configuration
.
getTemplate
(
"templates/java
-lang/java
ClassGraphqlType.ftl"
));
javaTemplates
.
put
(
ENUM
,
configuration
.
getTemplate
(
"templates/javaClassGraphqlEnum.ftl"
));
javaTemplates
.
put
(
ENUM
,
configuration
.
getTemplate
(
"templates/java
-lang/java
ClassGraphqlEnum.ftl"
));
javaTemplates
.
put
(
UNION
,
configuration
.
getTemplate
(
"templates/javaClassGraphqlUnion.ftl"
));
javaTemplates
.
put
(
UNION
,
configuration
.
getTemplate
(
"templates/java
-lang/java
ClassGraphqlUnion.ftl"
));
javaTemplates
.
put
(
REQUEST
,
configuration
.
getTemplate
(
"templates/javaClassGraphqlRequest.ftl"
));
javaTemplates
.
put
(
REQUEST
,
configuration
.
getTemplate
(
"templates/java
-lang/java
ClassGraphqlRequest.ftl"
));
javaTemplates
.
put
(
RESPONSE
,
configuration
.
getTemplate
(
"templates/javaClassGraphqlResponse.ftl"
));
javaTemplates
.
put
(
RESPONSE
,
configuration
.
getTemplate
(
"templates/java
-lang/java
ClassGraphqlResponse.ftl"
));
javaTemplates
.
put
(
INTERFACE
,
configuration
.
getTemplate
(
"templates/javaClassGraphqlInterface.ftl"
));
javaTemplates
.
put
(
INTERFACE
,
configuration
.
getTemplate
(
"templates/java
-lang/java
ClassGraphqlInterface.ftl"
));
javaTemplates
.
put
(
OPERATIONS
,
configuration
.
getTemplate
(
"templates/javaClassGraphqlOperations.ftl"
));
javaTemplates
.
put
(
OPERATIONS
,
configuration
.
getTemplate
(
"templates/java
-lang/java
ClassGraphqlOperations.ftl"
));
javaTemplates
.
put
(
PARAMETRIZED_INPUT
,
configuration
.
getTemplate
(
"templates/javaClassGraphqlParametrizedInput.ftl"
));
javaTemplates
.
put
(
PARAMETRIZED_INPUT
,
configuration
.
getTemplate
(
"templates/java
-lang/java
ClassGraphqlParametrizedInput.ftl"
));
javaTemplates
.
put
(
RESPONSE_PROJECTION
,
configuration
.
getTemplate
(
"templates/javaClassGraphqlResponseProjection.ftl"
));
javaTemplates
.
put
(
RESPONSE_PROJECTION
,
configuration
.
getTemplate
(
"templates/java
-lang/java
ClassGraphqlResponseProjection.ftl"
));
templateMap
.
put
(
GeneratedLanguage
.
JAVA
,
javaTemplates
);
templateMap
.
put
(
GeneratedLanguage
.
JAVA
,
javaTemplates
);
EnumMap
<
FreeMarkerTemplateType
,
Template
>
scalaTemplates
=
new
EnumMap
<>(
FreeMarkerTemplateType
.
class
);
EnumMap
<
FreeMarkerTemplateType
,
Template
>
scalaTemplates
=
new
EnumMap
<>(
FreeMarkerTemplateType
.
class
);
...
@@ -72,8 +72,6 @@ class FreeMarkerTemplatesRegistry {
...
@@ -72,8 +72,6 @@ class FreeMarkerTemplatesRegistry {
kotlinTemplates
.
put
(
PARAMETRIZED_INPUT
,
configuration
.
getTemplate
(
"templates/kotlin-lang/kotlinClassGraphqlParametrizedInput.ftl"
));
kotlinTemplates
.
put
(
PARAMETRIZED_INPUT
,
configuration
.
getTemplate
(
"templates/kotlin-lang/kotlinClassGraphqlParametrizedInput.ftl"
));
kotlinTemplates
.
put
(
RESPONSE_PROJECTION
,
configuration
.
getTemplate
(
"templates/kotlin-lang/kotlinClassGraphqlResponseProjection.ftl"
));
kotlinTemplates
.
put
(
RESPONSE_PROJECTION
,
configuration
.
getTemplate
(
"templates/kotlin-lang/kotlinClassGraphqlResponseProjection.ftl"
));
templateMap
.
put
(
GeneratedLanguage
.
KOTLIN
,
kotlinTemplates
);
templateMap
.
put
(
GeneratedLanguage
.
KOTLIN
,
kotlinTemplates
);
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
throw
new
UnableToLoadFreeMarkerTemplateException
(
e
);
throw
new
UnableToLoadFreeMarkerTemplateException
(
e
);
}
}
...
...
src/main/java/com/kobylynskyi/graphql/codegen/mapper/InterfaceDefinitionToDataModelMapper.java
浏览文件 @
4917c4bd
...
@@ -5,6 +5,8 @@ import com.kobylynskyi.graphql.codegen.model.definitions.ExtendedInterfaceTypeDe
...
@@ -5,6 +5,8 @@ import com.kobylynskyi.graphql.codegen.model.definitions.ExtendedInterfaceTypeDe
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
static
com
.
kobylynskyi
.
graphql
.
codegen
.
model
.
DataModelFields
.*;
import
static
com
.
kobylynskyi
.
graphql
.
codegen
.
model
.
DataModelFields
.*;
...
@@ -40,6 +42,7 @@ public class InterfaceDefinitionToDataModelMapper {
...
@@ -40,6 +42,7 @@ public class InterfaceDefinitionToDataModelMapper {
dataModel
.
put
(
PACKAGE
,
DataModelMapper
.
getModelPackageName
(
mappingContext
));
dataModel
.
put
(
PACKAGE
,
DataModelMapper
.
getModelPackageName
(
mappingContext
));
dataModel
.
put
(
CLASS_NAME
,
dataModelMapper
.
getModelClassNameWithPrefixAndSuffix
(
mappingContext
,
definition
));
dataModel
.
put
(
CLASS_NAME
,
dataModelMapper
.
getModelClassNameWithPrefixAndSuffix
(
mappingContext
,
definition
));
dataModel
.
put
(
JAVA_DOC
,
definition
.
getJavaDoc
());
dataModel
.
put
(
JAVA_DOC
,
definition
.
getJavaDoc
());
dataModel
.
put
(
IMPLEMENTS
,
getInterfaces
(
mappingContext
,
definition
));
dataModel
.
put
(
ANNOTATIONS
,
graphQLTypeMapper
.
getAnnotations
(
mappingContext
,
definition
));
dataModel
.
put
(
ANNOTATIONS
,
graphQLTypeMapper
.
getAnnotations
(
mappingContext
,
definition
));
dataModel
.
put
(
FIELDS
,
fieldDefinitionToParameterMapper
.
mapFields
(
mappingContext
,
definition
.
getFieldDefinitions
(),
definition
));
dataModel
.
put
(
FIELDS
,
fieldDefinitionToParameterMapper
.
mapFields
(
mappingContext
,
definition
.
getFieldDefinitions
(),
definition
));
dataModel
.
put
(
GENERATED_INFO
,
mappingContext
.
getGeneratedInformation
());
dataModel
.
put
(
GENERATED_INFO
,
mappingContext
.
getGeneratedInformation
());
...
@@ -48,4 +51,12 @@ public class InterfaceDefinitionToDataModelMapper {
...
@@ -48,4 +51,12 @@ public class InterfaceDefinitionToDataModelMapper {
return
dataModel
;
return
dataModel
;
}
}
private
Set
<
String
>
getInterfaces
(
MappingContext
mappingContext
,
ExtendedInterfaceTypeDefinition
definition
)
{
return
definition
.
getImplements
()
.
stream
()
.
map
(
anImplement
->
graphQLTypeMapper
.
getLanguageType
(
mappingContext
,
anImplement
))
.
collect
(
Collectors
.
toSet
());
}
}
}
src/main/resources/templates/javaClassGraphqlEnum.ftl
→
src/main/resources/templates/java
-lang/java
ClassGraphqlEnum.ftl
浏览文件 @
4917c4bd
文件已移动
src/main/resources/templates/javaClassGraphqlInterface.ftl
→
src/main/resources/templates/java
-lang/java
ClassGraphqlInterface.ftl
浏览文件 @
4917c4bd
文件已移动
src/main/resources/templates/javaClassGraphqlOperations.ftl
→
src/main/resources/templates/java
-lang/java
ClassGraphqlOperations.ftl
浏览文件 @
4917c4bd
文件已移动
src/main/resources/templates/javaClassGraphqlParametrizedInput.ftl
→
src/main/resources/templates/java
-lang/java
ClassGraphqlParametrizedInput.ftl
浏览文件 @
4917c4bd
文件已移动
src/main/resources/templates/javaClassGraphqlRequest.ftl
→
src/main/resources/templates/java
-lang/java
ClassGraphqlRequest.ftl
浏览文件 @
4917c4bd
文件已移动
src/main/resources/templates/javaClassGraphqlResponse.ftl
→
src/main/resources/templates/java
-lang/java
ClassGraphqlResponse.ftl
浏览文件 @
4917c4bd
文件已移动
src/main/resources/templates/javaClassGraphqlResponseProjection.ftl
→
src/main/resources/templates/java
-lang/java
ClassGraphqlResponseProjection.ftl
浏览文件 @
4917c4bd
文件已移动
src/main/resources/templates/javaClassGraphqlType.ftl
→
src/main/resources/templates/java
-lang/java
ClassGraphqlType.ftl
浏览文件 @
4917c4bd
文件已移动
src/main/resources/templates/javaClassGraphqlUnion.ftl
→
src/main/resources/templates/java
-lang/java
ClassGraphqlUnion.ftl
浏览文件 @
4917c4bd
文件已移动
src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenInterfacesTest.java
浏览文件 @
4917c4bd
...
@@ -43,7 +43,7 @@ class GraphQLCodegenInterfacesTest {
...
@@ -43,7 +43,7 @@ class GraphQLCodegenInterfacesTest {
File
[]
files
=
Objects
.
requireNonNull
(
outputJavaClassesDir
.
listFiles
());
File
[]
files
=
Objects
.
requireNonNull
(
outputJavaClassesDir
.
listFiles
());
List
<
String
>
generatedFileNames
=
Arrays
.
stream
(
files
).
map
(
File:
:
getName
).
sorted
().
collect
(
toList
());
List
<
String
>
generatedFileNames
=
Arrays
.
stream
(
files
).
map
(
File:
:
getName
).
sorted
().
collect
(
toList
());
assertEquals
(
Arrays
.
asList
(
"Bar.java"
,
"Bar1.java"
,
"Foo.java"
,
"Foo1.java"
),
generatedFileNames
);
assertEquals
(
Arrays
.
asList
(
"Bar.java"
,
"Bar1.java"
,
"
BarBar.java"
,
"
Foo.java"
,
"Foo1.java"
),
generatedFileNames
);
for
(
File
file
:
files
)
{
for
(
File
file
:
files
)
{
assertSameTrimmedContent
(
new
File
(
String
.
format
(
"src/test/resources/expected-classes/interfaces/%s.txt"
,
assertSameTrimmedContent
(
new
File
(
String
.
format
(
"src/test/resources/expected-classes/interfaces/%s.txt"
,
...
@@ -51,4 +51,5 @@ class GraphQLCodegenInterfacesTest {
...
@@ -51,4 +51,5 @@ class GraphQLCodegenInterfacesTest {
file
);
file
);
}
}
}
}
}
}
src/test/java/com/kobylynskyi/graphql/codegen/kotlin/GraphQLCodegenInterfacesTest.java
浏览文件 @
4917c4bd
...
@@ -46,7 +46,7 @@ class GraphQLCodegenInterfacesTest {
...
@@ -46,7 +46,7 @@ class GraphQLCodegenInterfacesTest {
File
[]
files
=
Objects
.
requireNonNull
(
outputJavaClassesDir
.
listFiles
());
File
[]
files
=
Objects
.
requireNonNull
(
outputJavaClassesDir
.
listFiles
());
List
<
String
>
generatedFileNames
=
Arrays
.
stream
(
files
).
map
(
File:
:
getName
).
sorted
().
collect
(
toList
());
List
<
String
>
generatedFileNames
=
Arrays
.
stream
(
files
).
map
(
File:
:
getName
).
sorted
().
collect
(
toList
());
assertEquals
(
Arrays
.
asList
(
"Bar.kt"
,
"Bar1.kt"
,
"Foo.kt"
,
"Foo1.kt"
),
generatedFileNames
);
assertEquals
(
Arrays
.
asList
(
"Bar.kt"
,
"Bar1.kt"
,
"
BarBar.kt"
,
"
Foo.kt"
,
"Foo1.kt"
),
generatedFileNames
);
for
(
File
file
:
files
)
{
for
(
File
file
:
files
)
{
assertSameTrimmedContent
(
new
File
(
String
.
format
(
"src/test/resources/expected-classes/kt/interfaces/%s.txt"
,
assertSameTrimmedContent
(
new
File
(
String
.
format
(
"src/test/resources/expected-classes/kt/interfaces/%s.txt"
,
...
...
src/test/resources/expected-classes/interfaces/BarBar.java.txt
0 → 100644
浏览文件 @
4917c4bd
package com.kobylynskyi.graphql.interfaces;
@javax.annotation.Generated(
value = "com.kobylynskyi.graphql.codegen.GraphQLCodegen",
date = "2020-12-31T23:59:59-0500"
)
public interface BarBar extends Bar{
@javax.validation.constraints.NotNull
String getId();
}
\ No newline at end of file
src/test/resources/expected-classes/kt/interfaces/BarBar.kt.txt
0 → 100644
浏览文件 @
4917c4bd
package com.kobylynskyi.graphql.interfaces
@javax.annotation.Generated(
value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"],
date = "2020-12-31T23:59:59-0500"
)
interface BarBar : Bar{
val id: String
}
\ No newline at end of file
src/test/resources/schemas/interfaces.graphqls
浏览文件 @
4917c4bd
...
@@ -7,11 +7,15 @@ interface Bar {
...
@@ -7,11 +7,15 @@ interface Bar {
id: ID!
id: ID!
}
}
type Foo1 implements Foo{
type Foo1 implements Foo
{
id: ID!
id: ID!
bars: [Bar1]
bars: [Bar1]
}
}
type Bar1 implements Bar{
type Bar1 implements Bar {
id: ID!
}
interface BarBar implements Bar {
id: ID!
id: ID!
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录