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 04755e46b056c0fb2e36ec263749472c7ad33e0b
Author: danhaywood <[email protected]>
AuthorDate: Thu Jan 25 17:32:05 2024 +0000

    CAUSEWAY-3676: removes duplication, extract BookmarkedPojoFetcher
---
 .../model/domain/BookmarkedPojoFetcher.java        | 44 ++++++++++++++++++++++
 .../viewer/graphql/model/domain/GqlvAction.java    | 14 +------
 .../graphql/model/domain/GqlvActionParam.java      | 17 +--------
 .../graphql/model/domain/GqlvActionParams.java     | 15 +-------
 .../graphql/model/domain/GqlvCollection.java       | 15 +-------
 .../viewer/graphql/model/domain/GqlvProperty.java  | 14 +------
 6 files changed, 50 insertions(+), 69 deletions(-)

diff --git 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/BookmarkedPojoFetcher.java
 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/BookmarkedPojoFetcher.java
new file mode 100644
index 0000000000..ac0c3ed2e1
--- /dev/null
+++ 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/BookmarkedPojoFetcher.java
@@ -0,0 +1,44 @@
+/*
+ *  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.model.domain;
+
+import graphql.schema.DataFetcher;
+import graphql.schema.DataFetchingEnvironment;
+
+import lombok.val;
+
+import org.apache.causeway.applib.services.bookmark.BookmarkService;
+
+class BookmarkedPojoFetcher implements DataFetcher<Object> {
+    private final BookmarkService bookmarkService;
+
+    BookmarkedPojoFetcher(BookmarkService bookmarkService) {
+        this.bookmarkService = bookmarkService;
+    }
+
+    @Override
+    public Object get(DataFetchingEnvironment dataFetchingEnvironment) {
+
+        val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment);
+
+        return bookmarkService.bookmarkFor(sourcePojo)
+                .map(bookmark -> new BookmarkedPojo(bookmark, bookmarkService))
+                .orElseThrow();
+    }
+}
diff --git 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java
 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java
index 7ee0ce2b84..e7a85406f1 100644
--- 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java
+++ 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java
@@ -172,7 +172,7 @@ public class GqlvAction
     public void addDataFetcher() {
         codeRegistryBuilder.dataFetcher(
                 holder.coordinatesFor(getField()),
-                new Fetcher());
+                new BookmarkedPojoFetcher(bookmarkService));
 
         hidden.addDataFetcher();
         disabled.addDataFetcher();
@@ -183,18 +183,6 @@ public class GqlvAction
         }
     }
 
-    private class Fetcher implements DataFetcher<Object> {
-        @Override
-        public Object get(DataFetchingEnvironment dataFetchingEnvironment) {
-
-            val sourcePojo = 
BookmarkedPojo.sourceFrom(dataFetchingEnvironment);
-
-            return bookmarkService.bookmarkFor(sourcePojo)
-                    .map(bookmark -> new BookmarkedPojo(bookmark, 
bookmarkService))
-                    .orElseThrow();
-        }
-    }
-
 
     @Override
     public FieldCoordinates coordinatesFor(GraphQLFieldDefinition 
fieldDefinition) {
diff --git 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParam.java
 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParam.java
index e2a8ec9487..56d855da44 100644
--- 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParam.java
+++ 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParam.java
@@ -23,11 +23,8 @@ import 
org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.causeway.viewer.graphql.model.util.TypeNames;
 
 import lombok.Getter;
-import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
-import graphql.schema.DataFetcher;
-import graphql.schema.DataFetchingEnvironment;
 import graphql.schema.FieldCoordinates;
 import graphql.schema.GraphQLCodeRegistry;
 import graphql.schema.GraphQLFieldDefinition;
@@ -85,24 +82,12 @@ public class GqlvActionParam implements 
GqlvActionParamDisabledHolder {
     public void addDataFetcher() {
         codeRegistryBuilder.dataFetcher(
                 holder.coordinatesFor(field),
-                new Fetcher());
+                new BookmarkedPojoFetcher(bookmarkService));
 
         hidden.addDataFetcher();
         disabled.addDataFetcher();
     }
 
-    private class Fetcher implements DataFetcher<Object> {
-        @Override
-        public Object get(DataFetchingEnvironment dataFetchingEnvironment) {
-
-            val sourcePojo = 
BookmarkedPojo.sourceFrom(dataFetchingEnvironment);
-
-            return bookmarkService.bookmarkFor(sourcePojo)
-                    .map(bookmark -> new BookmarkedPojo(bookmark, 
bookmarkService))
-                    .orElseThrow();
-        }
-    }
-
 
     @Override
     public FieldCoordinates coordinatesFor(GraphQLFieldDefinition 
fieldDefinition) {
diff --git 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java
 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java
index 826081413c..1c6bef0bc6 100644
--- 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java
+++ 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java
@@ -99,24 +99,13 @@ public class GqlvActionParams implements 
GqlvActionParamHolder {
     void addDataFetcher() {
         codeRegistryBuilder.dataFetcher(
                 holder.coordinatesFor(field),
-                new Fetcher());
+                new BookmarkedPojoFetcher(bookmarkService));
 
         params.forEach((id, param) -> param.addDataFetcher());
     }
 
-    private class Fetcher implements DataFetcher<Object> {
-        @Override
-        public Object get(DataFetchingEnvironment dataFetchingEnvironment) {
 
-            val sourcePojo = 
BookmarkedPojo.sourceFrom(dataFetchingEnvironment);
-
-            return bookmarkService.bookmarkFor(sourcePojo)
-                    .map(bookmark -> new BookmarkedPojo(bookmark, 
bookmarkService))
-                    .orElseThrow();
-        }
-    }
-
-    //@Override
+    @Override
     public FieldCoordinates coordinatesFor(GraphQLFieldDefinition 
fieldDefinition) {
         return FieldCoordinates.coordinates(gqlObjectType, fieldDefinition);
     }
diff --git 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollection.java
 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollection.java
index f8abc10017..54525e2c1a 100644
--- 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollection.java
+++ 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollection.java
@@ -84,26 +84,13 @@ public class GqlvCollection extends 
GqlvAssociation<OneToManyAssociation, GqlvCo
     public void addDataFetcher() {
         codeRegistryBuilder.dataFetcher(
                 holder.coordinatesFor(getField()),
-                new GqlvCollection.Fetcher());
+                new BookmarkedPojoFetcher(bookmarkService));
 
         hidden.addDataFetcher();
         disabled.addDataFetcher();
         get.addDataFetcher();
     }
 
-    private class Fetcher implements DataFetcher<Object> {
-        @Override
-        public Object get(DataFetchingEnvironment dataFetchingEnvironment) {
-
-            val sourcePojo = 
BookmarkedPojo.sourceFrom(dataFetchingEnvironment);
-
-            return bookmarkService.bookmarkFor(sourcePojo)
-                    .map(bookmark -> new BookmarkedPojo(bookmark, 
bookmarkService))
-                    .orElseThrow();
-        }
-    }
-
-
     @Override
     public FieldCoordinates coordinatesFor(GraphQLFieldDefinition 
fieldDefinition) {
         return FieldCoordinates.coordinates(gqlObjectType, fieldDefinition);
diff --git 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvProperty.java
 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvProperty.java
index 12b8dc7336..cdb6b78916 100644
--- 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvProperty.java
+++ 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvProperty.java
@@ -107,7 +107,7 @@ public class GqlvProperty
     public void addDataFetcher() {
         codeRegistryBuilder.dataFetcher(
                 holder.coordinatesFor(getField()),
-                new GqlvProperty.Fetcher());
+                new BookmarkedPojoFetcher(bookmarkService));
 
         hidden.addDataFetcher();
         disabled.addDataFetcher();
@@ -116,18 +116,6 @@ public class GqlvProperty
         validate.addDataFetcher();
     }
 
-    private class Fetcher implements DataFetcher<Object> {
-        @Override
-        public Object get(DataFetchingEnvironment dataFetchingEnvironment) {
-
-            val sourcePojo = 
BookmarkedPojo.sourceFrom(dataFetchingEnvironment);
-
-            return bookmarkService.bookmarkFor(sourcePojo)
-                    .map(bookmark -> new BookmarkedPojo(bookmark, 
bookmarkService))
-                    .orElseThrow();
-        }
-    }
-
 
     @Override
     public FieldCoordinates coordinatesFor(GraphQLFieldDefinition 
fieldDefinition) {

Reply via email to