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 bbc61f8f49a36ae38680985e84a8ad6047bf91ea Author: danhaywood <[email protected]> AuthorDate: Thu Feb 22 21:01:25 2024 +0000 moves GqlvMeta to common --- .../model/domain/common/query/GqlvMetaFetcher.java | 112 +++++++++++++++++++++ .../{simple => common}/query/GqlvMetaSaveAs.java | 5 +- .../rich/mutation/GqlvMutationForAction.java | 1 - .../rich/mutation/GqlvMutationForProperty.java | 1 - .../graphql/model/domain/rich/query/GqlvMeta.java | 101 +------------------ .../model/domain/rich/query/GqlvMetaCssClass.java | 3 +- .../model/domain/rich/query/GqlvMetaGrid.java | 3 +- .../model/domain/rich/query/GqlvMetaIcon.java | 3 +- .../model/domain/rich/query/GqlvMetaId.java | 3 +- .../model/domain/rich/query/GqlvMetaLayout.java | 3 +- .../domain/rich/query/GqlvMetaLogicalTypeName.java | 3 +- .../model/domain/rich/query/GqlvMetaSaveAs.java | 65 ------------ .../model/domain/rich/query/GqlvMetaTitle.java | 3 +- .../model/domain/rich/query/GqlvMetaVersion.java | 3 +- .../model/domain/simple/query/GqlvMeta.java | 111 +------------------- .../domain/simple/query/GqlvMetaCssClass.java | 3 +- .../model/domain/simple/query/GqlvMetaGrid.java | 3 +- .../model/domain/simple/query/GqlvMetaIcon.java | 3 +- .../model/domain/simple/query/GqlvMetaId.java | 3 +- .../model/domain/simple/query/GqlvMetaLayout.java | 3 +- .../simple/query/GqlvMetaLogicalTypeName.java | 3 +- .../model/domain/simple/query/GqlvMetaTitle.java | 3 +- .../model/domain/simple/query/GqlvMetaVersion.java | 3 +- 23 files changed, 153 insertions(+), 291 deletions(-) diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/common/query/GqlvMetaFetcher.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/common/query/GqlvMetaFetcher.java new file mode 100644 index 0000000000..86b91e624a --- /dev/null +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/common/query/GqlvMetaFetcher.java @@ -0,0 +1,112 @@ +package org.apache.causeway.viewer.graphql.model.domain.common.query; + +import lombok.val; + +import java.util.Optional; + +import org.apache.causeway.applib.services.bookmark.Bookmark; +import org.apache.causeway.applib.services.bookmark.BookmarkService; +import org.apache.causeway.core.config.CausewayConfiguration; +import org.apache.causeway.core.metamodel.facets.members.cssclass.CssClassFacet; +import org.apache.causeway.core.metamodel.facets.object.entity.EntityFacet; +import org.apache.causeway.core.metamodel.facets.object.layout.LayoutFacet; +import org.apache.causeway.core.metamodel.object.Bookmarkable; +import org.apache.causeway.core.metamodel.object.ManagedObject; +import org.apache.causeway.core.metamodel.objectmanager.ObjectManager; + +/** + * Metadata for every domain object. + */ +public class GqlvMetaFetcher { + + private final Bookmark bookmark; + private final BookmarkService bookmarkService; + private final ObjectManager objectManager; + private final CausewayConfiguration causewayConfiguration; + private final String graphqlPath; + + public GqlvMetaFetcher( + final Bookmark bookmark, + final BookmarkService bookmarkService, + final ObjectManager objectManager, + final CausewayConfiguration causewayConfiguration + ) { + this.bookmark = bookmark; + this.bookmarkService = bookmarkService; + this.objectManager = objectManager; + this.causewayConfiguration = causewayConfiguration; + this.graphqlPath = causewayConfiguration.valueOf("spring.graphql.path").orElse("/graphql"); + } + + public String logicalTypeName() { + return bookmark.getLogicalTypeName(); + } + + public String id() { + return bookmark.getIdentifier(); + } + + public String version() { + return managedObject() + .map(managedObject -> { + val domainPojo = managedObject.getPojo(); + val entityFacet = managedObject.getSpecification().getFacet(EntityFacet.class); + if (entityFacet != null) { + val object = entityFacet.versionOf(domainPojo); + return object != null ? object.toString() : null; + } else { + return null; + } + }).orElse(null); + } + + public Bookmark bookmark() { + return bookmark; + } + + public String title() { + return managedObject() + .map(ManagedObject::getTitle) + .orElse(null); + } + + public String cssClass() { + return managedObject() + .map(managedObject -> { + val facet = managedObject.getSpecification().getFacet(CssClassFacet.class); + return facet != null ? facet.cssClass(managedObject) : null; + }) + .orElse(null); + } + + public String layout() { + return managedObject() + .map(managedObject -> { + val facet = managedObject.getSpecification().getFacet(LayoutFacet.class); + return facet != null ? facet.layout(managedObject) : null; + }) + .orElse(null); + } + + public String grid() { + return resource("grid"); + } + + public String icon() { + return resource("icon"); + } + + private String resource(String resource) { + return managedObject() + .flatMap(Bookmarkable::getBookmark + ).map(bookmark -> String.format( + "//%s/object/%s:%s/%s/%s", + graphqlPath, bookmark.getLogicalTypeName(), bookmark.getIdentifier(), causewayConfiguration.getViewer().getGraphql().getMetaData().getFieldName(), resource)) + .orElse(null); + } + + private Optional<ManagedObject> managedObject() { + return bookmarkService.lookup(bookmark) + .map(objectManager::adapt); + } +} diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaSaveAs.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/common/query/GqlvMetaSaveAs.java similarity index 92% rename from viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaSaveAs.java rename to viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/common/query/GqlvMetaSaveAs.java index b8f8f682f1..662fe82b00 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaSaveAs.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/common/query/GqlvMetaSaveAs.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.viewer.graphql.model.domain.simple.query; +package org.apache.causeway.viewer.graphql.model.domain.common.query; import graphql.GraphQLContext; import graphql.Scalars; @@ -27,6 +27,7 @@ import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; import org.apache.causeway.viewer.graphql.model.domain.common.query.GvqlActionUtils; import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojo; @@ -48,7 +49,7 @@ public class GqlvMetaSaveAs extends GqlvAbstract { @Override protected Object fetchData(DataFetchingEnvironment environment) { String ref = environment.getArgument("ref"); - GqlvMeta.Fetcher source = environment.getSource(); + GqlvMetaFetcher source = environment.getSource(); String originalKey = GvqlActionUtils.keyFor(ref); GraphQLContext graphQlContext = environment.getGraphQlContext(); diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/mutation/GqlvMutationForAction.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/mutation/GqlvMutationForAction.java index 88328fa332..66c02be5cd 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/mutation/GqlvMutationForAction.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/mutation/GqlvMutationForAction.java @@ -38,7 +38,6 @@ import org.apache.causeway.viewer.graphql.model.domain.TypeNames; import org.apache.causeway.viewer.graphql.model.domain.common.query.GvqlActionUtils; import org.apache.causeway.viewer.graphql.model.domain.rich.query.GqlvAction; -import org.apache.causeway.viewer.graphql.model.domain.rich.query.GqlvMetaSaveAs; import org.springframework.lang.Nullable; diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/mutation/GqlvMutationForProperty.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/mutation/GqlvMutationForProperty.java index ad0bdbf784..616972a307 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/mutation/GqlvMutationForProperty.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/mutation/GqlvMutationForProperty.java @@ -40,7 +40,6 @@ import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; import org.apache.causeway.viewer.graphql.model.domain.SchemaType; import org.apache.causeway.viewer.graphql.model.domain.TypeNames; import org.apache.causeway.viewer.graphql.model.domain.common.query.GvqlActionUtils; -import org.apache.causeway.viewer.graphql.model.domain.rich.query.GqlvMetaSaveAs; import org.apache.causeway.viewer.graphql.model.exceptions.DisabledException; import org.apache.causeway.viewer.graphql.model.exceptions.HiddenException; import org.apache.causeway.viewer.graphql.model.exceptions.InvalidException; diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMeta.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMeta.java index 0d8d7986aa..87a57bc9eb 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMeta.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMeta.java @@ -35,7 +35,9 @@ import org.apache.causeway.core.metamodel.objectmanager.ObjectManager; 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.TypeNames; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaHolder; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaSaveAs; import lombok.val; @@ -125,106 +127,9 @@ public class GqlvMeta extends GqlvAbstractCustom { @Override public Object fetchData(final DataFetchingEnvironment environment) { return context.bookmarkService.bookmarkFor(environment.getSource()) - .map(bookmark -> new Fetcher(bookmark, context.bookmarkService, context.objectManager, context.causewayConfiguration)) + .map(bookmark -> new GqlvMetaFetcher(bookmark, context.bookmarkService, context.objectManager, context.causewayConfiguration)) .orElseThrow(); } - /** - * Metadata for every domain object. - */ - static class Fetcher { - - private final Bookmark bookmark; - private final BookmarkService bookmarkService; - private final ObjectManager objectManager; - private final CausewayConfiguration causewayConfiguration; - private final String graphqlPath; - - Fetcher( - final Bookmark bookmark, - final BookmarkService bookmarkService, - final ObjectManager objectManager, - final CausewayConfiguration causewayConfiguration - ) { - this.bookmark = bookmark; - this.bookmarkService = bookmarkService; - this.objectManager = objectManager; - this.causewayConfiguration = causewayConfiguration; - this.graphqlPath = causewayConfiguration.valueOf("spring.graphql.path").orElse("/graphql"); - } - - public String logicalTypeName(){ - return bookmark.getLogicalTypeName(); - } - - public String id(){ - return bookmark.getIdentifier(); - } - - public String version(){ - return managedObject() - .map(managedObject -> { - val domainPojo = managedObject.getPojo(); - val entityFacet = managedObject.getSpecification().getFacet(EntityFacet.class); - if (entityFacet != null) { - val object = entityFacet.versionOf(domainPojo); - return object != null ? object.toString() : null; - } else { - return null; - } - }).orElse(null); - } - - public Bookmark bookmark() { - return bookmark; - } - - public String title() { - return managedObject() - .map(ManagedObject::getTitle) - .orElse(null); - } - - public String cssClass() { - return managedObject() - .map(managedObject -> { - val facet = managedObject.getSpecification().getFacet(CssClassFacet.class); - return facet != null ? facet.cssClass(managedObject) : null; - }) - .orElse(null); - } - - public String layout() { - return managedObject() - .map(managedObject -> { - val facet = managedObject.getSpecification().getFacet(LayoutFacet.class); - return facet != null ? facet.layout(managedObject) : null; - }) - .orElse(null); - } - - public String grid() { - return resource("grid"); - } - - public String icon() { - return resource("icon"); - } - - private String resource(String resource) { - return managedObject() - .flatMap(Bookmarkable::getBookmark - ).map(bookmark -> String.format( - "//%s/object/%s:%s/%s/%s", - graphqlPath, bookmark.getLogicalTypeName(), bookmark.getIdentifier(), causewayConfiguration.getViewer().getGraphql().getMetaData().getFieldName(), resource) ) - .orElse(null); - } - - private Optional<ManagedObject> managedObject() { - return bookmarkService.lookup(bookmark) - .map(objectManager::adapt); - } - } - } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaCssClass.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaCssClass.java index 849084358d..69bf9eeab7 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaCssClass.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaCssClass.java @@ -25,6 +25,7 @@ import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaCssClass extends GqlvAbstract { @@ -36,7 +37,7 @@ public class GqlvMetaCssClass extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().cssClass(); + return environment.<GqlvMetaFetcher>getSource().cssClass(); } } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaGrid.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaGrid.java index 3aaf0f7fc1..6326500dde 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaGrid.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaGrid.java @@ -25,6 +25,7 @@ import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaGrid extends GqlvAbstract { @@ -36,7 +37,7 @@ public class GqlvMetaGrid extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().grid(); + return environment.<GqlvMetaFetcher>getSource().grid(); } } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaIcon.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaIcon.java index 5727ffcb0f..a4e10e298f 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaIcon.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaIcon.java @@ -25,6 +25,7 @@ import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaIcon extends GqlvAbstract { @@ -36,7 +37,7 @@ public class GqlvMetaIcon extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().icon(); + return environment.<GqlvMetaFetcher>getSource().icon(); } } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaId.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaId.java index bcd2017bdc..977c124d95 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaId.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaId.java @@ -26,6 +26,7 @@ import static graphql.schema.GraphQLNonNull.nonNull; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaId extends GqlvAbstract { @@ -37,7 +38,7 @@ public class GqlvMetaId extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().id(); + return environment.<GqlvMetaFetcher>getSource().id(); } } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaLayout.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaLayout.java index f558234c26..fbf418fde6 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaLayout.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaLayout.java @@ -25,6 +25,7 @@ import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaLayout extends GqlvAbstract { @@ -36,7 +37,7 @@ public class GqlvMetaLayout extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().layout(); + return environment.<GqlvMetaFetcher>getSource().layout(); } } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaLogicalTypeName.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaLogicalTypeName.java index 10bafbf158..3e4c969168 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaLogicalTypeName.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaLogicalTypeName.java @@ -26,6 +26,7 @@ import static graphql.schema.GraphQLNonNull.nonNull; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaLogicalTypeName extends GqlvAbstract { @@ -37,7 +38,7 @@ public class GqlvMetaLogicalTypeName extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().logicalTypeName(); + return environment.<GqlvMetaFetcher>getSource().logicalTypeName(); } } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaSaveAs.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaSaveAs.java deleted file mode 100644 index c928a0bfc4..0000000000 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaSaveAs.java +++ /dev/null @@ -1,65 +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.model.domain.rich.query; - -import graphql.GraphQLContext; -import graphql.Scalars; -import graphql.schema.DataFetchingEnvironment; -import graphql.schema.GraphQLArgument; - -import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; - -import org.apache.causeway.viewer.graphql.model.context.Context; -import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; -import org.apache.causeway.viewer.graphql.model.domain.common.query.GvqlActionUtils; -import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojo; - -public class GqlvMetaSaveAs extends GqlvAbstract { - - public GqlvMetaSaveAs(final Context context) { - super(context); - - setField(newFieldDefinition() - .name("saveAs") - .type(Scalars.GraphQLString) - .argument(new GraphQLArgument.Builder() - .name("ref") - .type(Scalars.GraphQLString) - ) - .build()); - } - - @Override - protected Object fetchData(DataFetchingEnvironment environment) { - String ref = environment.getArgument("ref"); - GqlvMeta.Fetcher source = environment.getSource(); - String originalKey = GvqlActionUtils.keyFor(ref); - GraphQLContext graphQlContext = environment.getGraphQlContext(); - - // we ensure the key hasn't been used already - int i = 2; // we start at 2 deliberately, so save "cust", "cust-2", "cust-3" ... etc if there is a clash - String key = originalKey; - while (graphQlContext.hasKey(key)) { - key = originalKey + "-" + (i++); - } - graphQlContext.put(key, new BookmarkedPojo(source.bookmark(), context.bookmarkService)); - return ref; - } - -} diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaTitle.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaTitle.java index e44be380db..00490327c4 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaTitle.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaTitle.java @@ -26,6 +26,7 @@ import static graphql.schema.GraphQLNonNull.nonNull; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaTitle extends GqlvAbstract { @@ -37,7 +38,7 @@ public class GqlvMetaTitle extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().title(); + return environment.<GqlvMetaFetcher>getSource().title(); } } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaVersion.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaVersion.java index f5e9c1aefd..5005a3506f 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaVersion.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/rich/query/GqlvMetaVersion.java @@ -25,6 +25,7 @@ import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaVersion extends GqlvAbstract { @@ -36,7 +37,7 @@ public class GqlvMetaVersion extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().version(); + return environment.<GqlvMetaFetcher>getSource().version(); } } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMeta.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMeta.java index 0ad7ac091e..499fbe1b9f 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMeta.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMeta.java @@ -18,24 +18,16 @@ */ package org.apache.causeway.viewer.graphql.model.domain.simple.query; -import java.util.Optional; - import graphql.schema.DataFetchingEnvironment; -import org.apache.causeway.applib.services.bookmark.Bookmark; -import org.apache.causeway.applib.services.bookmark.BookmarkService; import org.apache.causeway.applib.services.metamodel.BeanSort; import org.apache.causeway.core.config.CausewayConfiguration; -import org.apache.causeway.core.metamodel.facets.members.cssclass.CssClassFacet; -import org.apache.causeway.core.metamodel.facets.object.entity.EntityFacet; -import org.apache.causeway.core.metamodel.facets.object.layout.LayoutFacet; -import org.apache.causeway.core.metamodel.object.Bookmarkable; -import org.apache.causeway.core.metamodel.object.ManagedObject; -import org.apache.causeway.core.metamodel.objectmanager.ObjectManager; 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.TypeNames; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaHolder; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaSaveAs; import lombok.val; @@ -125,106 +117,9 @@ public class GqlvMeta extends GqlvAbstractCustom { @Override public Object fetchData(final DataFetchingEnvironment environment) { return context.bookmarkService.bookmarkFor(environment.getSource()) - .map(bookmark -> new Fetcher(bookmark, context.bookmarkService, context.objectManager, context.causewayConfiguration)) + .map(bookmark -> new GqlvMetaFetcher(bookmark, context.bookmarkService, context.objectManager, context.causewayConfiguration)) .orElseThrow(); } - /** - * Metadata for every domain object. - */ - static class Fetcher { - - private final Bookmark bookmark; - private final BookmarkService bookmarkService; - private final ObjectManager objectManager; - private final CausewayConfiguration causewayConfiguration; - private final String graphqlPath; - - Fetcher( - final Bookmark bookmark, - final BookmarkService bookmarkService, - final ObjectManager objectManager, - final CausewayConfiguration causewayConfiguration - ) { - this.bookmark = bookmark; - this.bookmarkService = bookmarkService; - this.objectManager = objectManager; - this.causewayConfiguration = causewayConfiguration; - this.graphqlPath = causewayConfiguration.valueOf("spring.graphql.path").orElse("/graphql"); - } - - public String logicalTypeName(){ - return bookmark.getLogicalTypeName(); - } - - public String id(){ - return bookmark.getIdentifier(); - } - - public String version(){ - return managedObject() - .map(managedObject -> { - val domainPojo = managedObject.getPojo(); - val entityFacet = managedObject.getSpecification().getFacet(EntityFacet.class); - if (entityFacet != null) { - val object = entityFacet.versionOf(domainPojo); - return object != null ? object.toString() : null; - } else { - return null; - } - }).orElse(null); - } - - public Bookmark bookmark() { - return bookmark; - } - - public String title() { - return managedObject() - .map(ManagedObject::getTitle) - .orElse(null); - } - - public String cssClass() { - return managedObject() - .map(managedObject -> { - val facet = managedObject.getSpecification().getFacet(CssClassFacet.class); - return facet != null ? facet.cssClass(managedObject) : null; - }) - .orElse(null); - } - - public String layout() { - return managedObject() - .map(managedObject -> { - val facet = managedObject.getSpecification().getFacet(LayoutFacet.class); - return facet != null ? facet.layout(managedObject) : null; - }) - .orElse(null); - } - - public String grid() { - return resource("grid"); - } - - public String icon() { - return resource("icon"); - } - - private String resource(String resource) { - return managedObject() - .flatMap(Bookmarkable::getBookmark - ).map(bookmark -> String.format( - "//%s/object/%s:%s/%s/%s", - graphqlPath, bookmark.getLogicalTypeName(), bookmark.getIdentifier(), causewayConfiguration.getViewer().getGraphql().getMetaData().getFieldName(), resource) ) - .orElse(null); - } - - private Optional<ManagedObject> managedObject() { - return bookmarkService.lookup(bookmark) - .map(objectManager::adapt); - } - } - } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaCssClass.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaCssClass.java index 163e124fc2..a17c3de695 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaCssClass.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaCssClass.java @@ -25,6 +25,7 @@ import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaCssClass extends GqlvAbstract { @@ -36,7 +37,7 @@ public class GqlvMetaCssClass extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().cssClass(); + return environment.<GqlvMetaFetcher>getSource().cssClass(); } } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaGrid.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaGrid.java index d3c9a56e9a..efc4a59c0e 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaGrid.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaGrid.java @@ -25,6 +25,7 @@ import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaGrid extends GqlvAbstract { @@ -36,7 +37,7 @@ public class GqlvMetaGrid extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().grid(); + return environment.<GqlvMetaFetcher>getSource().grid(); } } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaIcon.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaIcon.java index 55fde2c8af..ccd373c591 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaIcon.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaIcon.java @@ -25,6 +25,7 @@ import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaIcon extends GqlvAbstract { @@ -36,7 +37,7 @@ public class GqlvMetaIcon extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().icon(); + return environment.<GqlvMetaFetcher>getSource().icon(); } } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaId.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaId.java index f2eed4e396..3bae79df2b 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaId.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaId.java @@ -26,6 +26,7 @@ import static graphql.schema.GraphQLNonNull.nonNull; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaId extends GqlvAbstract { @@ -37,7 +38,7 @@ public class GqlvMetaId extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().id(); + return environment.<GqlvMetaFetcher>getSource().id(); } } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaLayout.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaLayout.java index c46a275fb5..34d188b7dc 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaLayout.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaLayout.java @@ -25,6 +25,7 @@ import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaLayout extends GqlvAbstract { @@ -36,7 +37,7 @@ public class GqlvMetaLayout extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().layout(); + return environment.<GqlvMetaFetcher>getSource().layout(); } } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaLogicalTypeName.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaLogicalTypeName.java index 50db9c16c3..0de4985277 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaLogicalTypeName.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaLogicalTypeName.java @@ -26,6 +26,7 @@ import static graphql.schema.GraphQLNonNull.nonNull; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaLogicalTypeName extends GqlvAbstract { @@ -37,7 +38,7 @@ public class GqlvMetaLogicalTypeName extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().logicalTypeName(); + return environment.<GqlvMetaFetcher>getSource().logicalTypeName(); } } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaTitle.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaTitle.java index c2ecd2cd10..1fb39f3e0e 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaTitle.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaTitle.java @@ -26,6 +26,7 @@ import static graphql.schema.GraphQLNonNull.nonNull; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaTitle extends GqlvAbstract { @@ -37,7 +38,7 @@ public class GqlvMetaTitle extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().title(); + return environment.<GqlvMetaFetcher>getSource().title(); } } diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaVersion.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaVersion.java index 58967daaf7..590a8d11b2 100644 --- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaVersion.java +++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/simple/query/GqlvMetaVersion.java @@ -25,6 +25,7 @@ import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract; +import org.apache.causeway.viewer.graphql.model.domain.common.query.GqlvMetaFetcher; public class GqlvMetaVersion extends GqlvAbstract { @@ -36,7 +37,7 @@ public class GqlvMetaVersion extends GqlvAbstract { @Override protected String fetchData(DataFetchingEnvironment environment) { - return environment.<GqlvMeta.Fetcher>getSource().version(); + return environment.<GqlvMetaFetcher>getSource().version(); } }
