16
16
17
17
package com .introproventures .graphql .jpa .query .schema .impl ;
18
18
19
+ import java .beans .Introspector ;
20
+ import java .lang .reflect .AnnotatedElement ;
21
+ import java .lang .reflect .Field ;
22
+ import java .lang .reflect .Member ;
23
+ import java .util .ArrayList ;
24
+ import java .util .Collection ;
25
+ import java .util .Collections ;
26
+ import java .util .HashMap ;
27
+ import java .util .LinkedHashMap ;
28
+ import java .util .List ;
29
+ import java .util .Map ;
30
+ import java .util .Optional ;
31
+ import java .util .concurrent .atomic .AtomicInteger ;
32
+ import java .util .function .Supplier ;
33
+ import java .util .stream .Collectors ;
34
+ import java .util .stream .Stream ;
35
+ import javax .persistence .Convert ;
36
+ import javax .persistence .EntityManager ;
37
+ import javax .persistence .metamodel .Attribute ;
38
+ import javax .persistence .metamodel .EmbeddableType ;
39
+ import javax .persistence .metamodel .EntityType ;
40
+ import javax .persistence .metamodel .ManagedType ;
41
+ import javax .persistence .metamodel .PluralAttribute ;
42
+ import javax .persistence .metamodel .SingularAttribute ;
43
+ import javax .persistence .metamodel .Type ;
19
44
import com .introproventures .graphql .jpa .query .annotation .GraphQLIgnore ;
20
45
import com .introproventures .graphql .jpa .query .annotation .GraphQLIgnoreFilter ;
21
46
import com .introproventures .graphql .jpa .query .annotation .GraphQLIgnoreOrder ;
41
66
import graphql .schema .GraphQLList ;
42
67
import graphql .schema .GraphQLObjectType ;
43
68
import graphql .schema .GraphQLOutputType ;
69
+ import graphql .schema .GraphQLScalarType ;
44
70
import graphql .schema .GraphQLSchema ;
45
71
import graphql .schema .GraphQLType ;
46
72
import graphql .schema .GraphQLTypeReference ;
49
75
import org .slf4j .Logger ;
50
76
import org .slf4j .LoggerFactory ;
51
77
52
- import javax .persistence .Convert ;
53
- import javax .persistence .EntityManager ;
54
- import javax .persistence .metamodel .Attribute ;
55
- import javax .persistence .metamodel .EmbeddableType ;
56
- import javax .persistence .metamodel .EntityType ;
57
- import javax .persistence .metamodel .ManagedType ;
58
- import javax .persistence .metamodel .PluralAttribute ;
59
- import javax .persistence .metamodel .SingularAttribute ;
60
- import javax .persistence .metamodel .Type ;
61
- import java .beans .Introspector ;
62
- import java .lang .reflect .AnnotatedElement ;
63
- import java .lang .reflect .Field ;
64
- import java .lang .reflect .Member ;
65
- import java .util .ArrayList ;
66
- import java .util .Collection ;
67
- import java .util .Collections ;
68
- import java .util .HashMap ;
69
- import java .util .List ;
70
- import java .util .Map ;
71
- import java .util .Optional ;
72
- import java .util .concurrent .atomic .AtomicInteger ;
73
- import java .util .function .Supplier ;
74
- import java .util .stream .Collectors ;
75
- import java .util .stream .Stream ;
76
-
77
78
import static graphql .Scalars .GraphQLBoolean ;
78
79
import static graphql .schema .GraphQLArgument .newArgument ;
79
80
import static graphql .schema .GraphQLInputObjectField .newInputObjectField ;
@@ -133,6 +134,7 @@ public class GraphQLJpaSchemaBuilder implements GraphQLSchemaBuilder {
133
134
private boolean enableResultStream = false ;
134
135
135
136
private RestrictedKeysProvider restrictedKeysProvider = (entityDescriptor ) -> Optional .of (Collections .emptyList ());
137
+ private Map <Class <?>, GraphQLScalarType > scalars = new LinkedHashMap <>();
136
138
137
139
private final Relay relay = new Relay ();
138
140
@@ -151,6 +153,8 @@ public GraphQLJpaSchemaBuilder(EntityManager entityManager) {
151
153
*/
152
154
@ Override
153
155
public GraphQLSchema build () {
156
+ scalars .forEach ((javaType , scalarType ) -> JavaScalars .register (javaType , scalarType ));
157
+
154
158
GraphQLSchema .Builder schema = GraphQLSchema .newSchema ()
155
159
.query (getQueryType ());
156
160
@@ -165,6 +169,12 @@ public GraphQLSchema build() {
165
169
return schema .build ();
166
170
}
167
171
172
+ public GraphQLJpaSchemaBuilder scalar (Class <?> javaType , GraphQLScalarType scalarType ) {
173
+ scalars .put (javaType , scalarType );
174
+
175
+ return this ;
176
+ }
177
+
168
178
private GraphQLObjectType getQueryType () {
169
179
GraphQLObjectType .Builder queryType =
170
180
GraphQLObjectType .newObject ()
0 commit comments