This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch CAUSEWAY-3676
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit d132572dad2fe5089cc2743bd7e91216f817ea20
Author: danhaywood <[email protected]>
AuthorDate: Mon Feb 12 21:02:24 2024 +0000

    CAUSEWAY-3676: converts Context into a @Component
---
 .../causeway/viewer/graphql/model/context/Context.java       | 12 +++++++++++-
 .../viewer/graphql/model/domain/GqlvDomainObject.java        |  4 +---
 .../viewer/graphql/model/domain/GqlvDomainService.java       |  4 +---
 .../viewer/graphql/model/toplevel/GqlvTopLevelQuery.java     |  9 ++++-----
 .../graphql/viewer/integration/GraphQlSourceForCauseway.java | 11 +++--------
 5 files changed, 20 insertions(+), 20 deletions(-)

diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/context/Context.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/context/Context.java
index aeced311fe..4278015d26 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/context/Context.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/context/Context.java
@@ -31,18 +31,25 @@ import 
org.apache.causeway.core.metamodel.objectmanager.ObjectManager;
 import org.apache.causeway.core.metamodel.spec.ActionScope;
 import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
 import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
+import org.apache.causeway.viewer.graphql.model.domain.GqlvDomainObject;
+import org.apache.causeway.viewer.graphql.model.domain.GqlvDomainService;
 import org.apache.causeway.viewer.graphql.model.registry.GraphQLTypeRegistry;
 import org.apache.causeway.viewer.graphql.model.types.TypeMapper;
 
+import org.springframework.stereotype.Component;
+
 import lombok.RequiredArgsConstructor;
 
 import java.util.Comparator;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
+@Component
 @RequiredArgsConstructor
 public class Context {
 
-    public final GraphQLCodeRegistry.Builder codeRegistryBuilder;
+    public final GraphQLCodeRegistry.Builder codeRegistryBuilder = 
GraphQLCodeRegistry.newCodeRegistry();
     public final BookmarkService bookmarkService;
     public final SpecificationLoader specificationLoader;
     public final TypeMapper typeMapper;
@@ -52,6 +59,9 @@ public class Context {
     public final ObjectManager objectManager;
     public final GraphQLTypeRegistry graphQLTypeRegistry;
 
+    public final Map<ObjectSpecification, GqlvDomainService> 
domainServiceBySpec = new LinkedHashMap<>();
+    public final Map<ObjectSpecification, GqlvDomainObject> domainObjectBySpec 
= new LinkedHashMap<>();
+
     public ImmutableEnumSet<ActionScope> getActionScope() {
         return causewaySystemEnvironment.getDeploymentType().isProduction()
                 ? ActionScope.PRODUCTION_ONLY
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java
index e21bb2f075..893bd2a2ab 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java
@@ -65,12 +65,10 @@ public class GqlvDomainObject
 
     @Getter private final GraphQLInputObjectType gqlInputObjectType;
 
-    private final static Map<ObjectSpecification, GqlvDomainObject> 
domainObjectBySpec = new LinkedHashMap<>();
-
     public static GqlvDomainObject of(
             final ObjectSpecification objectSpecification,
             final Context context) {
-        return domainObjectBySpec.computeIfAbsent(objectSpecification, spec -> 
new GqlvDomainObject(spec, context));
+        return context.domainObjectBySpec.computeIfAbsent(objectSpecification, 
spec -> new GqlvDomainObject(spec, context));
     }
 
     private GqlvDomainObject(
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java
index b216dbdc4f..d259c7a196 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java
@@ -44,13 +44,11 @@ public class GqlvDomainService
 
     private final Map<String, GqlvAction> actions = new LinkedHashMap<>();
 
-    private final static Map<ObjectSpecification, GqlvDomainService> 
domainServiceBySpec = new LinkedHashMap<>();
-
     public static GqlvDomainService of(
             final ObjectSpecification objectSpecification,
             final Object servicePojo,
             final Context context) {
-        return domainServiceBySpec.computeIfAbsent(objectSpecification, spec 
-> new GqlvDomainService(spec, servicePojo, context));
+        return 
context.domainServiceBySpec.computeIfAbsent(objectSpecification, spec -> new 
GqlvDomainService(spec, servicePojo, context));
     }
 
     public GqlvDomainService(
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/toplevel/GqlvTopLevelQuery.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/toplevel/GqlvTopLevelQuery.java
index eff065063f..1d5f7e7015 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/toplevel/GqlvTopLevelQuery.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/toplevel/GqlvTopLevelQuery.java
@@ -9,7 +9,6 @@ import org.apache.causeway.viewer.graphql.model.context.Context;
 import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstractCustom;
 import org.apache.causeway.viewer.graphql.model.domain.GqlvDomainObject;
 import org.apache.causeway.viewer.graphql.model.domain.GqlvDomainService;
-import org.apache.causeway.viewer.graphql.model.domain.GqlvScenario;
 import org.apache.causeway.viewer.graphql.model.domain.Parent;
 
 public class GqlvTopLevelQuery
@@ -19,7 +18,7 @@ public class GqlvTopLevelQuery
     private final List<GqlvDomainService> domainServices = new ArrayList<>();
     private final List<GqlvDomainObject> domainObjects = new ArrayList<>();
 
-    private final GqlvScenario scenario;
+//    private final GqlvScenario scenario;
 
     public GqlvTopLevelQuery(final Context context) {
         super("Query", context);
@@ -56,8 +55,8 @@ public class GqlvTopLevelQuery
             addChildField(domainObject.getLookupField());
         }
 
-        scenario = new GqlvScenario(context);
-        addChildField(scenario.getField());
+//        scenario = new GqlvScenario(context);
+//        addChildField(scenario.getField());
 
         buildObjectType();
     }
@@ -79,6 +78,6 @@ public class GqlvTopLevelQuery
 
         domainObjects.forEach(domainObject -> 
domainObject.addDataFetchers(this));
 
-        scenario.addDataFetchers(this);
+//        scenario.addDataFetchers(this);
     }
 }
diff --git 
a/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java
 
b/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java
index 092dfb67f7..182c776ad5 100644
--- 
a/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java
+++ 
b/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java
@@ -55,11 +55,9 @@ public class GraphQlSourceForCauseway implements 
GraphQlSource {
     private final CausewayConfiguration causewayConfiguration;
     private final CausewaySystemEnvironment causewaySystemEnvironment;
     private final SpecificationLoader specificationLoader;
-    private final ServiceRegistry serviceRegistry;
-    private final ObjectManager objectManager;
-    private final BookmarkService bookmarkService;
     private final GraphQLTypeRegistry graphQLTypeRegistry;
-    private final TypeMapper typeMapper;
+    private final Context context;
+
     private final AsyncExecutionStrategyResolvingWithinInteraction 
executionStrategy;
 
     @PostConstruct
@@ -97,9 +95,6 @@ public class GraphQlSourceForCauseway implements 
GraphQlSource {
             throw new IllegalStateException("Metamodel is not fully 
introspected");
         }
 
-        val codeRegistryBuilder = GraphQLCodeRegistry.newCodeRegistry();
-        val context = new Context(codeRegistryBuilder, bookmarkService, 
specificationLoader, typeMapper, serviceRegistry, causewayConfiguration, 
causewaySystemEnvironment, objectManager, graphQLTypeRegistry);
-
         // top-level query and mutation type
         val topLevelQuery = new GqlvTopLevelQuery(context);
         val topLevelMutation =
@@ -114,7 +109,7 @@ public class GraphQlSourceForCauseway implements 
GraphQlSource {
         }
 
         // finalize the fetcher/mutator code that's been added
-        val codeRegistry = codeRegistryBuilder.build();
+        val codeRegistry = context.codeRegistryBuilder.build();
 
         // build the schema
         return GraphQLSchema.newSchema()

Reply via email to