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


The following commit(s) were added to refs/heads/CAUSEWAY-3676 by this push:
     new dd9883f066 CAUSEWAY-3676: inlines ObjectTypeFactory
dd9883f066 is described below

commit dd9883f066a33df76030c7fcc2c4ff8940ed0758
Author: danhaywood <[email protected]>
AuthorDate: Sat Jan 20 10:56:03 2024 +0000

    CAUSEWAY-3676: inlines ObjectTypeFactory
---
 .../integration/GraphQlSourceForCauseway.java      | 59 ++++++++++++++++------
 .../graphql/viewer/source/ObjectTypeFactory.java   | 27 ----------
 .../graphql/viewer/source/QueryFieldFactory.java   | 52 -------------------
 3 files changed, 44 insertions(+), 94 deletions(-)

diff --git 
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java
 
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java
index 5c24c29be4..17215e4282 100644
--- 
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java
+++ 
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java
@@ -31,15 +31,16 @@ import javax.inject.Inject;
 
 import org.apache.causeway.applib.id.HasLogicalType;
 
+import org.apache.causeway.applib.services.bookmark.BookmarkService;
+import org.apache.causeway.core.metamodel.objectmanager.ObjectManager;
 import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
 
 import org.apache.causeway.core.metamodel.spec.feature.MixedIn;
 import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
+import org.apache.causeway.viewer.graphql.model.domain.GqlvDomainObject;
 import org.apache.causeway.viewer.graphql.model.domain.GqlvDomainService;
 import org.apache.causeway.viewer.graphql.viewer.source.GqlvTopLevelQuery;
 import org.apache.causeway.viewer.graphql.model.registry.GraphQLTypeRegistry;
-import org.apache.causeway.viewer.graphql.viewer.source.ObjectTypeFactory;
-import org.apache.causeway.viewer.graphql.viewer.source.QueryFieldFactory;
 
 import org.springframework.graphql.execution.GraphQlSource;
 import org.springframework.stereotype.Service;
@@ -52,6 +53,7 @@ import 
org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
 
 import graphql.GraphQL;
 import graphql.schema.GraphQLCodeRegistry;
+import graphql.schema.GraphQLObjectType;
 import graphql.schema.GraphQLSchema;
 
 import lombok.RequiredArgsConstructor;
@@ -61,16 +63,14 @@ import lombok.val;
 @RequiredArgsConstructor(onConstructor_ = {@Inject})
 public class GraphQlSourceForCauseway implements GraphQlSource {
 
-    private final ServiceRegistry serviceRegistry;
-    private final SpecificationLoader specificationLoader;
     private final CausewayConfiguration causewayConfiguration;
     private final CausewaySystemEnvironment causewaySystemEnvironment;
-
-    private final AsyncExecutionStrategyResolvingWithinInteraction 
executionStrategy;
-
-    private final ObjectTypeFactory objectTypeFactory;
-    private final QueryFieldFactory queryFieldFactory;
+    private final SpecificationLoader specificationLoader;
+    private final ServiceRegistry serviceRegistry;
+    private final ObjectManager objectManager;
+    private final BookmarkService bookmarkService;
     private final GraphQLTypeRegistry graphQLTypeRegistry;
+    private final AsyncExecutionStrategyResolvingWithinInteraction 
executionStrategy;
 
     @PostConstruct
     public void init() {
@@ -134,15 +134,15 @@ public class GraphQlSourceForCauseway implements 
GraphQlSource {
 
             case MANAGED_BEAN_CONTRIBUTING: // @DomainService
 
-                addServiceToTopLevelQuery(objectSpec, gqlvTopLevelQuery, 
codeRegistryBuilder);
+                addDomainServiceToTopLevelQuery(objectSpec, gqlvTopLevelQuery, 
codeRegistryBuilder);
                 break;
 
             case ABSTRACT:
+                // TODO: App interface should map to gql interfaces?
             case VIEW_MODEL: // @DomainObject(nature=VIEW_MODEL)
             case ENTITY:     // @DomainObject(nature=ENTITY)
 
-                // TODO: App interface should map to gql interfaces?
-                objectTypeFactory.createGqlObjectTypeWithFetchers(objectSpec, 
codeRegistryBuilder);
+                addDomainObjectAsGqlObjectType(objectSpec, 
codeRegistryBuilder);
 
                 break;
 
@@ -156,18 +156,18 @@ public class GraphQlSourceForCauseway implements 
GraphQlSource {
         }
     }
 
-    public void addServiceToTopLevelQuery(
+    public void addDomainServiceToTopLevelQuery(
             final ObjectSpecification objectSpec,
             final GqlvTopLevelQuery topLevelQueryStructure,
             final GraphQLCodeRegistry.Builder codeRegistryBuilder) {
 
         serviceRegistry.lookupBeanById(objectSpec.getLogicalTypeName())
                 .ifPresent(service -> {
-                    addServiceToTopLevelQuery(service, objectSpec, 
topLevelQueryStructure, codeRegistryBuilder);
+                    addDomainServiceToTopLevelQuery(service, objectSpec, 
topLevelQueryStructure, codeRegistryBuilder);
                 });
     }
 
-    private void addServiceToTopLevelQuery(
+    private void addDomainServiceToTopLevelQuery(
             final Object service,
             final ObjectSpecification objectSpec,
             final GqlvTopLevelQuery topLevelQueryStructure,
@@ -192,4 +192,33 @@ public class GraphQlSourceForCauseway implements 
GraphQlSource {
         topLevelQueryStructure.addFieldFor(domainService, codeRegistryBuilder);
     }
 
+
+    public void addDomainObjectAsGqlObjectType(
+            final ObjectSpecification objectSpec,
+            final GraphQLCodeRegistry.Builder codeRegistryBuilder) {
+
+        val gqlvDomainObject = new GqlvDomainObject(objectSpec, 
codeRegistryBuilder, bookmarkService, objectManager, specificationLoader);
+
+        
graphQLTypeRegistry.addTypeIfNotAlreadyPresent(gqlvDomainObject.getMetaField().getType());
+        
graphQLTypeRegistry.addTypeIfNotAlreadyPresent(gqlvDomainObject.getGqlInputObjectType());
+
+        gqlvDomainObject.addPropertiesAsFields();
+        gqlvDomainObject.addCollectionsAsLists();
+        gqlvDomainObject.addActionsAsFields();
+
+        gqlvDomainObject.getMutatorsTypeIfAny()
+                .ifPresent(graphQLTypeRegistry::addTypeIfNotAlreadyPresent);
+
+        // build and register object type
+        GraphQLObjectType graphQLObjectType = 
gqlvDomainObject.buildGqlObjectType();
+        graphQLTypeRegistry.addTypeIfNotAlreadyPresent(graphQLObjectType);
+
+        // create and register data fetchers
+        gqlvDomainObject.createAndRegisterDataFetchersForMetaData();
+        gqlvDomainObject.createAndRegisterDataFetchersForMutators();
+
+        gqlvDomainObject.createAndRegisterDataFetchersForField();
+        gqlvDomainObject.createAndRegisterDataFetchersForCollection();
+    }
+
 }
diff --git 
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/ObjectTypeFactory.java
 
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/ObjectTypeFactory.java
index a07905bcce..cfae222aee 100644
--- 
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/ObjectTypeFactory.java
+++ 
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/ObjectTypeFactory.java
@@ -47,32 +47,5 @@ public class ObjectTypeFactory {
     private final ObjectManager objectManager;
     private final SpecificationLoader specificationLoader;
 
-    public void createGqlObjectTypeWithFetchers(
-            final ObjectSpecification objectSpec,
-            final GraphQLCodeRegistry.Builder codeRegistryBuilder) {
-
-        val gqlvDomainObject = new GqlvDomainObject(objectSpec, 
codeRegistryBuilder, bookmarkService, objectManager, specificationLoader);
-
-        
graphQLTypeRegistry.addTypeIfNotAlreadyPresent(gqlvDomainObject.getMetaField().getType());
-        
graphQLTypeRegistry.addTypeIfNotAlreadyPresent(gqlvDomainObject.getGqlInputObjectType());
-
-        gqlvDomainObject.addPropertiesAsFields();
-        gqlvDomainObject.addCollectionsAsLists();
-        gqlvDomainObject.addActionsAsFields();
-
-        gqlvDomainObject.getMutatorsTypeIfAny()
-                .ifPresent(graphQLTypeRegistry::addTypeIfNotAlreadyPresent);
-
-        // build and register object type
-        GraphQLObjectType graphQLObjectType = 
gqlvDomainObject.buildGqlObjectType();
-        graphQLTypeRegistry.addTypeIfNotAlreadyPresent(graphQLObjectType);
-
-        // create and register data fetchers
-        gqlvDomainObject.createAndRegisterDataFetchersForMetaData();
-        gqlvDomainObject.createAndRegisterDataFetchersForMutators();
-
-        gqlvDomainObject.createAndRegisterDataFetchersForField();
-        gqlvDomainObject.createAndRegisterDataFetchersForCollection();
-    }
 
 }
diff --git 
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/QueryFieldFactory.java
 
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/QueryFieldFactory.java
deleted file mode 100644
index 724df42b07..0000000000
--- 
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/QueryFieldFactory.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.causeway.viewer.graphql.viewer.source;
-
-import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
-import static graphql.schema.GraphQLObjectType.newObject;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-import javax.inject.Inject;
-
-import org.apache.causeway.viewer.graphql.model.domain.GqlvDomainService;
-
-import org.springframework.stereotype.Component;
-
-import org.apache.causeway.applib.services.registry.ServiceRegistry;
-import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
-import org.apache.causeway.core.metamodel.spec.feature.MixedIn;
-import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
-import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
-
-import graphql.schema.GraphQLCodeRegistry;
-
-import lombok.RequiredArgsConstructor;
-import lombok.val;
-
-@Component
-@RequiredArgsConstructor(onConstructor_ = {@Inject})
-public class QueryFieldFactory {
-
-    private final ServiceRegistry serviceRegistry;
-    private final SpecificationLoader specificationLoader;
-
-
-}

Reply via email to