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 2cbfe69405635dfe9e72a54d29293aa04c9776cd Author: danhaywood <[email protected]> AuthorDate: Fri Jan 26 05:58:16 2024 +0000 CAUSEWAY-3676: exceptions --- .../graphql/model/src/main/java/module-info.java | 5 +- .../graphql/model/{domain => context}/Context.java | 14 +----- .../viewer/graphql/model/domain/Evaluator.java | 25 ---------- .../viewer/graphql/model/domain/GqlvAction.java | 50 +------------------- .../graphql/model/domain/GqlvActionInvoke.java | 50 +++++++++++++------- .../graphql/model/domain/GqlvActionParam.java | 9 ++-- .../model/domain/GqlvActionParamDisabled.java | 40 ++++++++++------ .../model/domain/GqlvActionParamHidden.java | 39 +++++++++------ .../graphql/model/domain/GqlvActionParams.java | 3 +- .../graphql/model/domain/GqlvActionValidate.java | 8 +++- .../graphql/model/domain/GqlvAssociation.java | 3 +- .../graphql/model/domain/GqlvAssociationGet.java | 11 +++-- .../graphql/model/domain/GqlvCollection.java | 7 ++- .../graphql/model/domain/GqlvCollectionGet.java | 4 +- .../graphql/model/domain/GqlvDomainObject.java | 2 +- .../graphql/model/domain/GqlvDomainService.java | 2 +- .../viewer/graphql/model/domain/GqlvMember.java | 7 ++- .../graphql/model/domain/GqlvMemberDisabled.java | 12 +++-- .../graphql/model/domain/GqlvMemberHidden.java | 15 +++--- .../viewer/graphql/model/domain/GqlvMeta.java | 5 +- .../viewer/graphql/model/domain/GqlvProperty.java | 7 ++- .../graphql/model/domain/GqlvPropertyGet.java | 4 +- .../graphql/model/domain/GqlvPropertySet.java | 35 +++++++++----- .../graphql/model/domain/GqlvPropertyValidate.java | 11 +++-- .../graphql/model/{util => domain}/TypeNames.java | 2 +- .../DisabledException.java} | 23 +++++---- .../HiddenException.java} | 24 ++++++---- .../model/exceptions/InteractionException.java | 55 ++++++++++++++++++++++ .../InvalidException.java} | 19 ++++++-- .../model/{domain => fetcher}/BookmarkedPojo.java | 6 +-- .../{domain => fetcher}/BookmarkedPojoFetcher.java | 6 +-- .../ObjectActionParameterProvider.java | 2 +- .../ObjectActionProvider.java | 2 +- .../ObjectAssociationProvider.java | 2 +- .../ObjectMemberProvider.java | 2 +- .../ObjectSpecificationProvider.java | 2 +- .../OneToManyAssociationProvider.java | 2 +- .../OneToOneAssociationProvider.java | 2 +- .../viewer/graphql/model/types/TypeMapper.java | 2 +- .../integration/GraphQlSourceForCauseway.java | 2 +- 40 files changed, 287 insertions(+), 234 deletions(-) diff --git a/incubator/viewers/graphql/model/src/main/java/module-info.java b/incubator/viewers/graphql/model/src/main/java/module-info.java index 64db20375f..8654827e5f 100644 --- a/incubator/viewers/graphql/model/src/main/java/module-info.java +++ b/incubator/viewers/graphql/model/src/main/java/module-info.java @@ -1,9 +1,12 @@ module org.apache.causeway.incubator.viewer.graphql.model { exports org.apache.causeway.viewer.graphql.model; - exports org.apache.causeway.viewer.graphql.model.util; exports org.apache.causeway.viewer.graphql.model.types; exports org.apache.causeway.viewer.graphql.model.registry; exports org.apache.causeway.viewer.graphql.model.domain; + exports org.apache.causeway.viewer.graphql.model.exceptions; + exports org.apache.causeway.viewer.graphql.model.context; + exports org.apache.causeway.viewer.graphql.model.mmproviders; + exports org.apache.causeway.viewer.graphql.model.fetcher; requires org.apache.causeway.core.config; requires org.apache.causeway.incubator.viewer.graphql.applib; diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/Context.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/context/Context.java similarity index 71% rename from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/Context.java rename to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/context/Context.java index 6e7d66147a..cb37c5cb01 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/Context.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/context/Context.java @@ -16,26 +16,14 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.viewer.graphql.model.domain; +package org.apache.causeway.viewer.graphql.model.context; -import graphql.schema.FieldCoordinates; import graphql.schema.GraphQLCodeRegistry; -import graphql.schema.GraphQLFieldDefinition; -import graphql.schema.GraphQLObjectType; -import lombok.Getter; import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; - -import java.util.LinkedHashMap; -import java.util.Map; import org.apache.causeway.applib.services.bookmark.BookmarkService; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; -import org.apache.causeway.core.metamodel.spec.feature.ObjectAction; -import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter; import org.apache.causeway.core.metamodel.specloader.SpecificationLoader; -import org.apache.causeway.viewer.graphql.model.util.TypeNames; import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import static graphql.schema.GraphQLObjectType.newObject; diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/Evaluator.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/Evaluator.java deleted file mode 100644 index b6d2fa2e1a..0000000000 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/Evaluator.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.apache.causeway.viewer.graphql.model.domain; - -import lombok.RequiredArgsConstructor; - -import org.apache.causeway.commons.collections.Can; -import org.apache.causeway.core.metamodel.interactions.managed.ActionInteractionHead; -import org.apache.causeway.core.metamodel.object.ManagedObject; -import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter; -import org.apache.causeway.core.metamodel.spec.feature.ObjectFeature; - -/** - * - * @param <T> - * @param <U> - either an {@link org.apache.causeway.core.metamodel.spec.feature.ObjectAction} or an {@link ObjectActionParameter}. - */ -@RequiredArgsConstructor -abstract class Evaluator<T, U extends ObjectFeature> { - private final T unexpected; - - abstract T evaluate(ActionInteractionHead head, U objectFeature, Can<ManagedObject> argumentManagedObjects); - - public T unexpected() { - return unexpected; - } -} 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 283c6c62df..49ea67bad9 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 @@ -26,8 +26,9 @@ import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.ObjectAction; import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter; import org.apache.causeway.core.metamodel.spec.feature.OneToOneActionParameter; +import org.apache.causeway.viewer.graphql.model.context.Context; +import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojoFetcher; import org.apache.causeway.viewer.graphql.model.types.TypeMapper; -import org.apache.causeway.viewer.graphql.model.util.TypeNames; import graphql.schema.*; @@ -157,53 +158,6 @@ public class GqlvAction .build(); } - static <T> T evaluate( - final ObjectActionProvider holder, - final Context context, - final DataFetchingEnvironment dataFetchingEnvironment, - final Evaluator<T, ObjectAction> evaluator) { - - val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment); - - val objectSpecification = context.specificationLoader.loadSpecification(sourcePojo.getClass()); - if (objectSpecification == null) { - return evaluator.unexpected(); - } - - val objectAction = holder.getObjectAction(); - val managedObject = ManagedObject.adaptSingular(objectSpecification, sourcePojo); - val actionInteractionHead = objectAction.interactionHead(managedObject); - - val argumentManagedObjects = GqlvAction.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction, context.bookmarkService); - - return evaluator.evaluate(actionInteractionHead, objectAction, argumentManagedObjects); - } - - static <T> T evaluate( - final ObjectActionParameterProvider holder, - final Context context, - final DataFetchingEnvironment dataFetchingEnvironment, - final Evaluator<T, ObjectActionParameter> evaluator) { - - val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment); - - val sourcePojoClass = sourcePojo.getClass(); - val objectSpecification = context.specificationLoader.loadSpecification(sourcePojoClass); - if (objectSpecification == null) { - return evaluator.unexpected(); - } - - val objectAction = holder.getObjectAction(); - val managedObject = ManagedObject.adaptSingular(objectSpecification, sourcePojo); - val actionInteractionHead = objectAction.interactionHead(managedObject); - - val objectActionParameter = objectAction.getParameterById(holder.getObjectActionParameter().getId()); - - val argumentManagedObjects = argumentManagedObjectsFor(dataFetchingEnvironment, objectAction, context.bookmarkService); - - return evaluator.evaluate(actionInteractionHead, objectActionParameter, argumentManagedObjects); - } - @Override public ObjectSpecification getObjectSpecification() { return holder.getObjectSpecification(); diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvoke.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvoke.java index f988551123..59e1ee51c2 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvoke.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvoke.java @@ -18,8 +18,14 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.commons.collections.Can; -import org.apache.causeway.core.metamodel.interactions.managed.ActionInteractionHead; +import org.apache.causeway.applib.annotation.Where; +import org.apache.causeway.viewer.graphql.model.context.Context; + +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.fetcher.BookmarkedPojo; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectActionProvider; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider; import org.springframework.lang.Nullable; @@ -130,33 +136,43 @@ public class GqlvActionInvoke { private Object invoke(final DataFetchingEnvironment dataFetchingEnvironment) { - val evaluator = new Evaluator<Object, ObjectAction>(null) { - @Override - public Object evaluate(ActionInteractionHead head, ObjectAction objectAction, final Can<ManagedObject> argumentManagedObjects) { + val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment); - // TODO: should also check visibility and usability + val objectSpecification = context.specificationLoader.loadSpecification(sourcePojo.getClass()); + if (objectSpecification == null) { + return null; + } - val consent = objectAction.isArgumentSetValid(head, argumentManagedObjects, InteractionInitiatedBy.USER); - if (consent.isVetoed()) { - throw new IllegalArgumentException(consent.getReasonAsString().orElse("Invalid")); - } + val objectAction = holder.getObjectAction(); + val managedObject = ManagedObject.adaptSingular(objectSpecification, sourcePojo); + val actionInteractionHead = objectAction.interactionHead(managedObject); - val resultManagedObject = objectAction.execute(head, argumentManagedObjects, InteractionInitiatedBy.USER); + val argumentManagedObjects = GqlvAction.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction, context.bookmarkService); - return resultManagedObject.getPojo(); - } - }; + val visibleConsent = objectAction.isVisible(managedObject, InteractionInitiatedBy.USER, Where.ANYWHERE); + if (visibleConsent.isVetoed()) { + throw new HiddenException(objectAction.getFeatureIdentifier()); + } - return GqlvAction.evaluate(holder, context, dataFetchingEnvironment, evaluator); + val usableConsent = objectAction.isUsable(managedObject, InteractionInitiatedBy.USER, Where.ANYWHERE); + if (usableConsent.isVetoed()) { + throw new DisabledException(objectAction.getFeatureIdentifier()); + } + val validityConsent = objectAction.isArgumentSetValid(actionInteractionHead, argumentManagedObjects, InteractionInitiatedBy.USER); + if (validityConsent.isVetoed()) { + throw new IllegalArgumentException(validityConsent.getReasonAsString().orElse("Invalid")); + } + val resultManagedObject = objectAction.execute(actionInteractionHead, argumentManagedObjects, InteractionInitiatedBy.USER); + return resultManagedObject.getPojo(); } public interface Holder extends GqlvHolder, - ObjectSpecificationProvider, - ObjectActionProvider { + ObjectSpecificationProvider, + ObjectActionProvider { } } 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 2c0782a792..5fb90cd79a 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 @@ -21,7 +21,10 @@ package org.apache.causeway.viewer.graphql.model.domain; import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.ObjectAction; import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter; -import org.apache.causeway.viewer.graphql.model.util.TypeNames; +import org.apache.causeway.viewer.graphql.model.context.Context; +import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojoFetcher; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectActionProvider; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider; import lombok.Getter; import lombok.extern.log4j.Log4j2; @@ -110,8 +113,8 @@ public class GqlvActionParam implements GqlvActionParamDisabled.Holder, GqlvActi public static interface Holder extends GqlvHolder, - ObjectSpecificationProvider, - ObjectActionProvider { + ObjectSpecificationProvider, + ObjectActionProvider { GqlvActionParams.Holder getHolder(); diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamDisabled.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamDisabled.java index 560f0b2570..098acd175e 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamDisabled.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamDisabled.java @@ -18,12 +18,13 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.commons.collections.Can; -import org.apache.causeway.core.metamodel.consent.Consent; import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy; -import org.apache.causeway.core.metamodel.interactions.managed.ActionInteractionHead; import org.apache.causeway.core.metamodel.object.ManagedObject; -import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter; +import org.apache.causeway.viewer.graphql.model.context.Context; +import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojo; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectActionParameterProvider; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectActionProvider; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider; import org.apache.causeway.viewer.graphql.model.types.TypeMapper; import static org.apache.causeway.viewer.graphql.model.domain.GqlvAction.addGqlArguments; @@ -67,22 +68,31 @@ public class GqlvActionParamDisabled { private String disabled(final DataFetchingEnvironment dataFetchingEnvironment) { - val evaluator = new Evaluator<String, ObjectActionParameter>("Disabled") { - @Override - public String evaluate(ActionInteractionHead head, ObjectActionParameter objectActionParameter, final Can<ManagedObject> argumentManagedObjects) { - Consent usable = objectActionParameter.isUsable(head, argumentManagedObjects, InteractionInitiatedBy.USER); - return usable.isVetoed() ? usable.getReasonAsString().orElse("Disabled") : null; - } - }; + val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment); - return GqlvAction.evaluate(holder, context, dataFetchingEnvironment, evaluator); + val sourcePojoClass = sourcePojo.getClass(); + val objectSpecification = context.specificationLoader.loadSpecification(sourcePojoClass); + if (objectSpecification == null) { + return "Disabled"; + } + + val objectAction = holder.getObjectAction(); + val managedObject = ManagedObject.adaptSingular(objectSpecification, sourcePojo); + val actionInteractionHead = objectAction.interactionHead(managedObject); + + val objectActionParameter = objectAction.getParameterById(holder.getObjectActionParameter().getId()); + + val argumentManagedObjects = GqlvAction.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction, context.bookmarkService); + + val usable = objectActionParameter.isUsable(actionInteractionHead, argumentManagedObjects, InteractionInitiatedBy.USER); + return usable.isVetoed() ? usable.getReasonAsString().orElse("Disabled") : null; } public interface Holder extends GqlvHolder, - ObjectSpecificationProvider, - ObjectActionProvider, - ObjectActionParameterProvider { + ObjectSpecificationProvider, + ObjectActionProvider, + ObjectActionParameterProvider { GqlvActionParam.Holder getHolder(); } } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamHidden.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamHidden.java index 6f8f35d566..8ba5817b2c 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamHidden.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamHidden.java @@ -18,12 +18,13 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.commons.collections.Can; -import org.apache.causeway.core.metamodel.consent.Consent; import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy; -import org.apache.causeway.core.metamodel.interactions.managed.ActionInteractionHead; import org.apache.causeway.core.metamodel.object.ManagedObject; -import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter; +import org.apache.causeway.viewer.graphql.model.context.Context; +import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojo; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectActionParameterProvider; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectActionProvider; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider; import org.apache.causeway.viewer.graphql.model.types.TypeMapper; import static org.apache.causeway.viewer.graphql.model.domain.GqlvAction.addGqlArguments; @@ -67,23 +68,31 @@ public class GqlvActionParamHidden { private boolean hidden(final DataFetchingEnvironment dataFetchingEnvironment) { - val evaluator = new Evaluator<Boolean, ObjectActionParameter>(true) { + val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment); - @Override - public Boolean evaluate(ActionInteractionHead head, ObjectActionParameter objectActionParameter, final Can<ManagedObject> argumentManagedObjects) { - Consent visible = objectActionParameter.isVisible(head, argumentManagedObjects, InteractionInitiatedBy.USER); - return visible.isVetoed(); - } - }; + val sourcePojoClass = sourcePojo.getClass(); + val objectSpecification = context.specificationLoader.loadSpecification(sourcePojoClass); + if (objectSpecification == null) { + return true; + } - return GqlvAction.evaluate(holder, context, dataFetchingEnvironment, evaluator); + val objectAction = holder.getObjectAction(); + val managedObject = ManagedObject.adaptSingular(objectSpecification, sourcePojo); + val actionInteractionHead = objectAction.interactionHead(managedObject); + + val objectActionParameter = objectAction.getParameterById(holder.getObjectActionParameter().getId()); + + val argumentManagedObjects = GqlvAction.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction, context.bookmarkService); + + val visible = objectActionParameter.isVisible(actionInteractionHead, argumentManagedObjects, InteractionInitiatedBy.USER); + return visible.isVetoed(); } public interface Holder extends GqlvHolder, - ObjectSpecificationProvider, - ObjectActionProvider, - ObjectActionParameterProvider { + ObjectSpecificationProvider, + ObjectActionProvider, + ObjectActionParameterProvider { GqlvActionParam.Holder getHolder(); } } 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 e1ae2cd5a6..a340200aea 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 @@ -21,7 +21,8 @@ package org.apache.causeway.viewer.graphql.model.domain; import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.ObjectAction; import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter; -import org.apache.causeway.viewer.graphql.model.util.TypeNames; +import org.apache.causeway.viewer.graphql.model.context.Context; +import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojoFetcher; import lombok.Getter; import lombok.extern.log4j.Log4j2; diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionValidate.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionValidate.java index ab940964ad..2abf2c02a7 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionValidate.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionValidate.java @@ -27,6 +27,10 @@ import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy; import org.apache.causeway.core.metamodel.object.ManagedObject; import org.apache.causeway.core.metamodel.spec.feature.ObjectAction; import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter; +import org.apache.causeway.viewer.graphql.model.context.Context; +import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojo; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectActionProvider; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider; import org.apache.causeway.viewer.graphql.model.types.TypeMapper; import lombok.val; @@ -112,8 +116,8 @@ public class GqlvActionValidate { public interface Holder extends GqlvHolder, - ObjectSpecificationProvider, - ObjectActionProvider { + ObjectSpecificationProvider, + ObjectActionProvider { } } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAssociation.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAssociation.java index aff32ff15a..00d0ff7d2a 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAssociation.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAssociation.java @@ -18,10 +18,9 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.ObjectAssociation; +import org.apache.causeway.viewer.graphql.model.context.Context; -import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; public abstract class GqlvAssociation<T extends ObjectAssociation, H extends GqlvAssociation.Holder> extends GqlvMember<T, H> { diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAssociationGet.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAssociationGet.java index 496c39edc7..c8ab87860a 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAssociationGet.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAssociationGet.java @@ -19,14 +19,15 @@ package org.apache.causeway.viewer.graphql.model.domain; import org.apache.causeway.core.metamodel.object.ManagedObject; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.ObjectAssociation; -import org.apache.causeway.core.metamodel.specloader.SpecificationLoader; +import org.apache.causeway.viewer.graphql.model.context.Context; +import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojo; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectAssociationProvider; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider; import lombok.val; import graphql.schema.DataFetchingEnvironment; -import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLOutputType; @@ -107,8 +108,8 @@ public abstract class GqlvAssociationGet<T extends ObjectAssociation> { public interface Holder<T extends ObjectAssociation> extends GqlvHolder, - ObjectSpecificationProvider, - ObjectAssociationProvider<T> { + ObjectSpecificationProvider, + ObjectAssociationProvider<T> { } } 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 42fe77b0a0..1d68513da1 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 @@ -18,13 +18,12 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.applib.services.bookmark.BookmarkService; import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.OneToManyAssociation; -import org.apache.causeway.viewer.graphql.model.util.TypeNames; +import org.apache.causeway.viewer.graphql.model.context.Context; +import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojoFetcher; import graphql.schema.FieldCoordinates; -import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLObjectType; @@ -51,7 +50,7 @@ public class GqlvCollection this.gqlObjectTypeBuilder = newObject().name(TypeNames.collectionTypeNameFor(holder.getObjectSpecification(), oneToManyAssociation)); - this.hidden = new GqlvMemberHidden(this, context); + this.hidden = new GqlvMemberHidden<>(this, context); this.disabled = new GqlvMemberDisabled<>(this, context); this.get = new GqlvCollectionGet(this, context); diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollectionGet.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollectionGet.java index 82b4b1452f..53d82b2e3c 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollectionGet.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollectionGet.java @@ -18,14 +18,12 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.OneToManyAssociation; -import org.apache.causeway.core.metamodel.specloader.SpecificationLoader; +import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.types.TypeMapper; import lombok.val; -import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLOutputType; import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java index a7e0812ba3..49f0abae38 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java @@ -26,8 +26,8 @@ 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.spec.feature.*; +import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.registry.GraphQLTypeRegistry; -import org.apache.causeway.viewer.graphql.model.util.TypeNames; import lombok.Getter; diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java index bdd8d96d87..dba47672be 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java @@ -26,7 +26,7 @@ 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.spec.feature.ObjectActionParameter; -import org.apache.causeway.viewer.graphql.model.util.TypeNames; +import org.apache.causeway.viewer.graphql.model.context.Context; import lombok.Getter; diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMember.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMember.java index d979a67276..f0aa6af264 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMember.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMember.java @@ -18,14 +18,13 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.ObjectMember; -import org.apache.causeway.core.metamodel.specloader.SpecificationLoader; +import org.apache.causeway.viewer.graphql.model.context.Context; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider; import lombok.AccessLevel; import lombok.Getter; -import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; import lombok.Setter; @@ -65,7 +64,7 @@ public abstract class GqlvMember<T extends ObjectMember, H extends GqlvMember.Ho public interface Holder extends GqlvHolder, - ObjectSpecificationProvider{ + ObjectSpecificationProvider { } } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMemberDisabled.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMemberDisabled.java index fdba6fa846..549a7be4eb 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMemberDisabled.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMemberDisabled.java @@ -21,8 +21,11 @@ package org.apache.causeway.viewer.graphql.model.domain; import org.apache.causeway.applib.annotation.Where; import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy; import org.apache.causeway.core.metamodel.object.ManagedObject; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.ObjectMember; +import org.apache.causeway.viewer.graphql.model.context.Context; +import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojo; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectMemberProvider; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider; import org.apache.causeway.viewer.graphql.model.types.TypeMapper; import lombok.val; @@ -74,8 +77,7 @@ public class GqlvMemberDisabled<T extends ObjectMember> { val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment); val sourcePojoClass = sourcePojo.getClass(); - val specificationLoader = holder.getObjectMember().getSpecificationLoader(); - val objectSpecification = specificationLoader.loadSpecification(sourcePojoClass); + val objectSpecification = context.specificationLoader.loadSpecification(sourcePojoClass); if (objectSpecification == null) { return String.format("Disabled; could not determine target object's type ('%s')", sourcePojoClass.getName()); } @@ -89,7 +91,7 @@ public class GqlvMemberDisabled<T extends ObjectMember> { public interface Holder<T extends ObjectMember> extends GqlvHolder, - ObjectSpecificationProvider, - ObjectMemberProvider<T> { + ObjectSpecificationProvider, + ObjectMemberProvider<T> { } } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMemberHidden.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMemberHidden.java index facdd8e7f0..6fb6a7897f 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMemberHidden.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMemberHidden.java @@ -21,12 +21,13 @@ package org.apache.causeway.viewer.graphql.model.domain; import org.apache.causeway.applib.annotation.Where; import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy; import org.apache.causeway.core.metamodel.object.ManagedObject; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.ObjectMember; +import org.apache.causeway.viewer.graphql.model.context.Context; +import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojo; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectMemberProvider; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider; import org.apache.causeway.viewer.graphql.model.types.TypeMapper; -import org.springframework.beans.factory.ObjectProvider; - import lombok.val; import lombok.extern.log4j.Log4j2; @@ -73,9 +74,6 @@ public class GqlvMemberHidden<T extends ObjectMember> { private boolean hidden( final DataFetchingEnvironment dataFetchingEnvironment) { - // TODO: introduce Evaluator - - val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment); val sourcePojoClass = sourcePojo.getClass(); @@ -94,8 +92,7 @@ public class GqlvMemberHidden<T extends ObjectMember> { public interface Holder<T extends ObjectMember> extends GqlvHolder, - ObjectSpecificationProvider, - ObjectMemberProvider<T> { - + ObjectSpecificationProvider, + ObjectMemberProvider<T> { } } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMeta.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMeta.java index f41e16ca7f..f08717fd0b 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMeta.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMeta.java @@ -26,8 +26,9 @@ import org.apache.causeway.applib.services.bookmark.BookmarkService; import org.apache.causeway.applib.services.metamodel.BeanSort; import org.apache.causeway.core.metamodel.facets.object.entity.EntityFacet; import org.apache.causeway.core.metamodel.objectmanager.ObjectManager; +import org.apache.causeway.viewer.graphql.model.context.Context; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider; import org.apache.causeway.viewer.graphql.model.registry.GraphQLTypeRegistry; -import org.apache.causeway.viewer.graphql.model.util.TypeNames; import lombok.Getter; import lombok.val; @@ -153,7 +154,7 @@ public class GqlvMeta { public interface Holder extends GqlvHolder, - ObjectSpecificationProvider { + ObjectSpecificationProvider { } } 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 499b19d190..bba16febc6 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 @@ -18,12 +18,11 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.applib.services.bookmark.BookmarkService; - import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.OneToOneAssociation; +import org.apache.causeway.viewer.graphql.model.context.Context; +import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojoFetcher; import org.apache.causeway.viewer.graphql.model.types.TypeMapper; -import org.apache.causeway.viewer.graphql.model.util.TypeNames; import graphql.schema.*; @@ -54,7 +53,7 @@ public class GqlvProperty this.gqlObjectTypeBuilder = newObject().name(TypeNames.propertyTypeNameFor(this.holder.getObjectSpecification(), oneToOneAssociation)); - this.hidden = new GqlvMemberHidden(this, context); + this.hidden = new GqlvMemberHidden<>(this, context); this.disabled = new GqlvMemberDisabled<>(this, context); this.get = new GqlvPropertyGet(this, context); this.set = new GqlvPropertySet(this, context); diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertyGet.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertyGet.java index 8f285b45d8..25d207b60e 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertyGet.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertyGet.java @@ -18,14 +18,12 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.OneToOneAssociation; -import org.apache.causeway.core.metamodel.specloader.SpecificationLoader; +import org.apache.causeway.viewer.graphql.model.context.Context; import org.apache.causeway.viewer.graphql.model.types.TypeMapper; import lombok.val; -import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLOutputType; import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertySet.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertySet.java index f39711ab88..e09360fef3 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertySet.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertySet.java @@ -18,18 +18,22 @@ */ package org.apache.causeway.viewer.graphql.model.domain; +import org.apache.causeway.applib.annotation.Where; import org.apache.causeway.core.metamodel.consent.Consent; import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy; import org.apache.causeway.core.metamodel.object.ManagedObject; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; -import org.apache.causeway.core.metamodel.spec.feature.OneToOneAssociation; -import org.apache.causeway.core.metamodel.specloader.SpecificationLoader; +import org.apache.causeway.viewer.graphql.model.context.Context; +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; +import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojo; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider; +import org.apache.causeway.viewer.graphql.model.mmproviders.OneToOneAssociationProvider; import org.apache.causeway.viewer.graphql.model.types.TypeMapper; import lombok.val; import graphql.schema.DataFetchingEnvironment; -import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLOutputType; @@ -92,26 +96,35 @@ public class GqlvPropertySet { Object set(final DataFetchingEnvironment dataFetchingEnvironment) { - val association = holder.getOneToOneAssociation(); val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment); val sourcePojoClass = sourcePojo.getClass(); val objectSpecification = context.specificationLoader.loadSpecification(sourcePojoClass); if (objectSpecification == null) { - // not expected return null; } + val association = holder.getOneToOneAssociation(); val managedObject = ManagedObject.adaptSingular(objectSpecification, sourcePojo); Map<String, Object> arguments = dataFetchingEnvironment.getArguments(); Object argumentValue = arguments.get(association.getId()); ManagedObject argumentManagedObject = ManagedObject.adaptProperty(association, argumentValue); - Consent consent = association.isAssociationValid(managedObject, argumentManagedObject, InteractionInitiatedBy.USER); - if (consent.isVetoed()) { - throw new IllegalArgumentException(consent.getReasonAsString().orElse("Invalid")); + val visibleConsent = association.isVisible(managedObject, InteractionInitiatedBy.USER, Where.ANYWHERE); + if (visibleConsent.isVetoed()) { + throw new HiddenException(association.getFeatureIdentifier()); + } + + val usableConsent = association.isUsable(managedObject, InteractionInitiatedBy.USER, Where.ANYWHERE); + if (usableConsent.isVetoed()) { + throw new DisabledException(association.getFeatureIdentifier()); + } + + val validityConsent = association.isAssociationValid(managedObject, argumentManagedObject, InteractionInitiatedBy.USER); + if (validityConsent.isVetoed()) { + throw new InvalidException(validityConsent); } association.set(managedObject, argumentManagedObject, InteractionInitiatedBy.USER); @@ -121,8 +134,8 @@ public class GqlvPropertySet { public interface Holder extends GqlvHolder, - ObjectSpecificationProvider, - OneToOneAssociationProvider { + ObjectSpecificationProvider, + OneToOneAssociationProvider { GqlvProperty.Holder getHolder(); diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertyValidate.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertyValidate.java index d607c8ebed..1fd4699a64 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertyValidate.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertyValidate.java @@ -23,8 +23,11 @@ import java.util.Map; import org.apache.causeway.core.metamodel.consent.Consent; import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy; import org.apache.causeway.core.metamodel.object.ManagedObject; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.OneToOneAssociation; +import org.apache.causeway.viewer.graphql.model.context.Context; +import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojo; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider; +import org.apache.causeway.viewer.graphql.model.mmproviders.OneToOneAssociationProvider; import org.apache.causeway.viewer.graphql.model.types.TypeMapper; import lombok.val; @@ -91,7 +94,6 @@ public class GqlvPropertyValidate { Object validate(final DataFetchingEnvironment dataFetchingEnvironment) { - val association = holder.getOneToOneAssociation(); val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment); @@ -102,6 +104,7 @@ public class GqlvPropertyValidate { return null; } + val association = holder.getOneToOneAssociation(); val managedObject = ManagedObject.adaptSingular(objectSpecification, sourcePojo); Map<String, Object> arguments = dataFetchingEnvironment.getArguments(); @@ -113,8 +116,8 @@ public class GqlvPropertyValidate { public interface Holder extends GqlvHolder, - ObjectSpecificationProvider, - OneToOneAssociationProvider { + ObjectSpecificationProvider, + OneToOneAssociationProvider { GqlvProperty.Holder getHolder(); } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/util/TypeNames.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/TypeNames.java similarity index 98% rename from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/util/TypeNames.java rename to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/TypeNames.java index 3d7e198890..6de2a022be 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/util/TypeNames.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/TypeNames.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.viewer.graphql.model.util; +package org.apache.causeway.viewer.graphql.model.domain; import lombok.experimental.UtilityClass; diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionParameterProvider.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/exceptions/DisabledException.java similarity index 55% copy from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionParameterProvider.java copy to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/exceptions/DisabledException.java index 760e621cc6..dd5919ee09 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionParameterProvider.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/exceptions/DisabledException.java @@ -16,15 +16,22 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.viewer.graphql.model.domain; +package org.apache.causeway.viewer.graphql.model.exceptions; -import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter; +import org.apache.causeway.applib.Identifier; +import org.apache.causeway.applib.exceptions.RecoverableException; +import org.apache.causeway.applib.services.i18n.TranslatableString; +import org.apache.causeway.core.metamodel.consent.Consent; -public interface ObjectActionParameterProvider extends ObjectActionProvider { - ObjectActionParameter getObjectActionParameter(); +public class DisabledException extends InteractionException { - /** - * 0-based - */ - int getParamNum(); + public DisabledException(Consent consent) { + super(consent.getReasonAsString().orElse("Disabled")); + } + public DisabledException(Identifier identifier) { + super(identifier); + } + public DisabledException(Identifier identifier, Throwable cause) { + super(identifier, cause); + } } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionParameterProvider.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/exceptions/HiddenException.java similarity index 57% copy from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionParameterProvider.java copy to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/exceptions/HiddenException.java index 760e621cc6..36dbf1ca31 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionParameterProvider.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/exceptions/HiddenException.java @@ -16,15 +16,23 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.viewer.graphql.model.domain; +package org.apache.causeway.viewer.graphql.model.exceptions; -import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter; +import org.apache.causeway.applib.Identifier; +import org.apache.causeway.core.metamodel.consent.Consent; +import org.apache.causeway.core.metamodel.spec.feature.OneToOneFeature; -public interface ObjectActionParameterProvider extends ObjectActionProvider { - ObjectActionParameter getObjectActionParameter(); +public class HiddenException extends InteractionException { - /** - * 0-based - */ - int getParamNum(); + public HiddenException(Consent consent) { + super(consent.getReasonAsString().orElse("Hidden")); + } + + public HiddenException(Identifier identifier) { + super(identifier); + } + + public HiddenException(Identifier identifier, Throwable cause) { + super(identifier, cause); + } } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/exceptions/InteractionException.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/exceptions/InteractionException.java new file mode 100644 index 0000000000..fcbb93fb0e --- /dev/null +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/exceptions/InteractionException.java @@ -0,0 +1,55 @@ +/* + * 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.exceptions; + +import org.apache.causeway.applib.Identifier; +import org.apache.causeway.applib.exceptions.RecoverableException; +import org.apache.causeway.applib.services.i18n.TranslatableString; +import org.apache.causeway.core.metamodel.spec.feature.OneToOneAssociation; + +public abstract class InteractionException extends RecoverableException { + + public InteractionException(String msg) { + super(msg); + } + + public InteractionException(TranslatableString translatableMessage, Class<?> translationContextClass, String translationContextMethod) { + super(translatableMessage, translationContextClass, translationContextMethod); + } + + public InteractionException(Throwable cause) { + super(cause); + } + + public InteractionException(String msg, Throwable cause) { + super(msg, cause); + } + + public InteractionException(TranslatableString translatableMessage, Class<?> translationContextClass, String translationContextMethod, Throwable cause) { + super(translatableMessage, translationContextClass, translationContextMethod, cause); + } + + public InteractionException(final Identifier identifier) { + this(identifier.toString()); + } + + public InteractionException(Identifier identifier, Throwable cause) { + this(identifier.toString(), cause); + } +} diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionProvider.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/exceptions/InvalidException.java similarity index 55% copy from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionProvider.java copy to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/exceptions/InvalidException.java index 45dfe01e58..5878dedfa7 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionProvider.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/exceptions/InvalidException.java @@ -16,10 +16,21 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.viewer.graphql.model.domain; +package org.apache.causeway.viewer.graphql.model.exceptions; -import org.apache.causeway.core.metamodel.spec.feature.ObjectAction; +import org.apache.causeway.applib.Identifier; +import org.apache.causeway.applib.exceptions.RecoverableException; +import org.apache.causeway.applib.services.i18n.TranslatableString; +import org.apache.causeway.core.metamodel.consent.Consent; -public interface ObjectActionProvider extends ObjectMemberProvider<ObjectAction> { - ObjectAction getObjectAction(); +public class InvalidException extends InteractionException { + public InvalidException(Consent consent) { + super(consent.getReasonAsString().orElse("Invalid")); + } + public InvalidException(Identifier identifier) { + super(identifier); + } + public InvalidException(Identifier identifier, Throwable cause) { + super(identifier, cause); + } } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/BookmarkedPojo.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/fetcher/BookmarkedPojo.java similarity index 90% rename from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/BookmarkedPojo.java rename to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/fetcher/BookmarkedPojo.java index ed0e4d1be7..09aa8a62ce 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/BookmarkedPojo.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/fetcher/BookmarkedPojo.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.viewer.graphql.model.domain; +package org.apache.causeway.viewer.graphql.model.fetcher; import graphql.schema.DataFetchingEnvironment; @@ -25,7 +25,7 @@ import lombok.val; import org.apache.causeway.applib.services.bookmark.Bookmark; import org.apache.causeway.applib.services.bookmark.BookmarkService; -class BookmarkedPojo { +public class BookmarkedPojo { private final Bookmark bookmark; private final BookmarkService bookmarkService; @@ -38,7 +38,7 @@ class BookmarkedPojo { this.bookmarkService = bookmarkService; } - static Object sourceFrom(DataFetchingEnvironment dataFetchingEnvironment) { + public static Object sourceFrom(DataFetchingEnvironment dataFetchingEnvironment) { val source = dataFetchingEnvironment.getSource(); return source instanceof BookmarkedPojo 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/fetcher/BookmarkedPojoFetcher.java similarity index 88% rename from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/BookmarkedPojoFetcher.java rename to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/fetcher/BookmarkedPojoFetcher.java index ac0c3ed2e1..7a70a9109d 100644 --- 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/fetcher/BookmarkedPojoFetcher.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.viewer.graphql.model.domain; +package org.apache.causeway.viewer.graphql.model.fetcher; import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; @@ -25,10 +25,10 @@ import lombok.val; import org.apache.causeway.applib.services.bookmark.BookmarkService; -class BookmarkedPojoFetcher implements DataFetcher<Object> { +public class BookmarkedPojoFetcher implements DataFetcher<Object> { private final BookmarkService bookmarkService; - BookmarkedPojoFetcher(BookmarkService bookmarkService) { + public BookmarkedPojoFetcher(BookmarkService bookmarkService) { this.bookmarkService = bookmarkService; } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionParameterProvider.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/ObjectActionParameterProvider.java similarity index 94% rename from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionParameterProvider.java rename to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/ObjectActionParameterProvider.java index 760e621cc6..9cd59f89ab 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionParameterProvider.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/ObjectActionParameterProvider.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.viewer.graphql.model.domain; +package org.apache.causeway.viewer.graphql.model.mmproviders; import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter; diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionProvider.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/ObjectActionProvider.java similarity index 94% rename from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionProvider.java rename to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/ObjectActionProvider.java index 45dfe01e58..92e40a11bc 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionProvider.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/ObjectActionProvider.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.viewer.graphql.model.domain; +package org.apache.causeway.viewer.graphql.model.mmproviders; import org.apache.causeway.core.metamodel.spec.feature.ObjectAction; diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectAssociationProvider.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/ObjectAssociationProvider.java similarity index 94% rename from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectAssociationProvider.java rename to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/ObjectAssociationProvider.java index f9ca318fd9..9c7c88fcc0 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectAssociationProvider.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/ObjectAssociationProvider.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.viewer.graphql.model.domain; +package org.apache.causeway.viewer.graphql.model.mmproviders; import org.apache.causeway.core.metamodel.spec.feature.ObjectAssociation; diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectMemberProvider.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/ObjectMemberProvider.java similarity index 94% rename from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectMemberProvider.java rename to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/ObjectMemberProvider.java index e1ffb7afaf..073c63e45d 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectMemberProvider.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/ObjectMemberProvider.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.viewer.graphql.model.domain; +package org.apache.causeway.viewer.graphql.model.mmproviders; import org.apache.causeway.core.metamodel.spec.feature.ObjectMember; diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectSpecificationProvider.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/ObjectSpecificationProvider.java similarity index 94% rename from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectSpecificationProvider.java rename to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/ObjectSpecificationProvider.java index 5ef002274f..0a6c0c5af0 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectSpecificationProvider.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/ObjectSpecificationProvider.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.viewer.graphql.model.domain; +package org.apache.causeway.viewer.graphql.model.mmproviders; import org.apache.causeway.core.metamodel.spec.ObjectSpecification; diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/OneToManyAssociationProvider.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/OneToManyAssociationProvider.java similarity index 94% rename from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/OneToManyAssociationProvider.java rename to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/OneToManyAssociationProvider.java index 5bd93507e9..08c3b62939 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/OneToManyAssociationProvider.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/OneToManyAssociationProvider.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.viewer.graphql.model.domain; +package org.apache.causeway.viewer.graphql.model.mmproviders; import org.apache.causeway.core.metamodel.spec.feature.OneToManyAssociation; diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/OneToOneAssociationProvider.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/OneToOneAssociationProvider.java similarity index 94% rename from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/OneToOneAssociationProvider.java rename to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/OneToOneAssociationProvider.java index 93ed7a5746..ff97cad20f 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/OneToOneAssociationProvider.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/mmproviders/OneToOneAssociationProvider.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.viewer.graphql.model.domain; +package org.apache.causeway.viewer.graphql.model.mmproviders; import org.apache.causeway.core.metamodel.spec.feature.OneToOneAssociation; diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapper.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapper.java index 1e01ba66f7..3dd16d5220 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapper.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapper.java @@ -33,7 +33,7 @@ import org.apache.causeway.commons.internal.collections._Maps; import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.OneToManyAssociation; import org.apache.causeway.core.metamodel.spec.feature.OneToOneFeature; -import org.apache.causeway.viewer.graphql.model.util.TypeNames; +import org.apache.causeway.viewer.graphql.model.domain.TypeNames; import org.springframework.lang.Nullable; 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 ec44a86111..f1596fd919 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 @@ -35,7 +35,7 @@ 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.viewer.graphql.model.domain.Context; +import org.apache.causeway.viewer.graphql.model.context.Context; 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.toplevel.GqlvTopLevelQuery;
