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 600bf98857c118aa41cabeb767c2afad627ae1ac Author: danhaywood <[email protected]> AuthorDate: Thu Jan 25 19:16:41 2024 +0000 CAUSEWAY-3676: introduces XxxProviders, and Evaluator --- .../viewer/graphql/model/domain/Evaluator.java | 19 +++++++++++ .../graphql/model/domain/GqlvActionParam.java | 14 +++++--- .../model/domain/GqlvActionParamDisabled.java | 39 ++++++++++++++-------- .../model/domain/GqlvActionParamHidden.java | 38 ++++++++------------- .../graphql/model/domain/GqlvActionParams.java | 5 +++ .../graphql/model/domain/GqlvActionValidate.java | 7 ++-- .../graphql/model/domain/GqlvAssociationGet.java | 8 ++--- .../graphql/model/domain/GqlvDomainObject.java | 4 +-- .../graphql/model/domain/GqlvMemberDisabled.java | 4 ++- .../viewer/graphql/model/domain/GqlvMeta.java | 11 ++++-- .../graphql/model/domain/GqlvPropertySet.java | 9 +++-- .../graphql/model/domain/GqlvPropertyValidate.java | 9 +++-- ...der.java => ObjectActionParameterProvider.java} | 7 ++-- ...lvMetaHolder.java => ObjectActionProvider.java} | 7 ++-- ...aHolder.java => ObjectAssociationProvider.java} | 7 ++-- ...lvMetaHolder.java => ObjectMemberProvider.java} | 7 ++-- ...older.java => ObjectSpecificationProvider.java} | 3 +- ...lder.java => OneToManyAssociationProvider.java} | 7 ++-- ...older.java => OneToOneAssociationProvider.java} | 7 ++-- 19 files changed, 118 insertions(+), 94 deletions(-) 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 new file mode 100644 index 0000000000..2bc5f8d7ee --- /dev/null +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/Evaluator.java @@ -0,0 +1,19 @@ +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; + +@RequiredArgsConstructor +abstract class Evaluator<T> { + private final T unexpected; + + abstract T evaluate(ActionInteractionHead head, ObjectActionParameter objectActionParameter, 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/GqlvActionParam.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParam.java index e31ff8276c..b28aad95ac 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 @@ -76,6 +76,11 @@ public class GqlvActionParam implements GqlvActionParamDisabled.Holder, GqlvActi return holder.getObjectSpecification(); } + @Override + public ObjectAction getObjectMember() { + return getObjectAction(); + } + @Override public ObjectAction getObjectAction() { return holder.getObjectAction(); @@ -102,11 +107,10 @@ public class GqlvActionParam implements GqlvActionParamDisabled.Holder, GqlvActi return FieldCoordinates.coordinates(gqlObjectType, fieldDefinition); } - public static interface Holder extends GqlvHolder { - - ObjectSpecification getObjectSpecification(); - - ObjectAction getObjectAction(); + public static interface Holder + extends GqlvHolder, + 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 beadbc1654..84dafb6e6e 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,21 +18,20 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.applib.services.bookmark.BookmarkService; +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.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.types.TypeMapper; import lombok.val; import lombok.extern.log4j.Log4j2; import graphql.schema.DataFetchingEnvironment; -import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; @@ -54,7 +53,7 @@ public class GqlvActionParamDisabled { this.holder = holder; this.context = context; - GraphQLFieldDefinition.Builder fieldBuilder = newFieldDefinition() + val fieldBuilder = newFieldDefinition() .name("disabled") .type(TypeMapper.scalarTypeFor(String.class)); addGqlArguments(holder.getObjectAction(), fieldBuilder, TypeMapper.InputContext.DISABLE); @@ -72,16 +71,28 @@ public class GqlvActionParamDisabled { private String disabled( final DataFetchingEnvironment dataFetchingEnvironment) { - final ObjectAction objectAction = holder.getObjectAction(); + val evaluator = new Evaluator<>("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; + } + + }; + return evaluate(holder, context, dataFetchingEnvironment, evaluator); + } + + static <T> T evaluate(ObjectActionParameterProvider holder, Context context, DataFetchingEnvironment dataFetchingEnvironment, Evaluator<T> evaluator) { + final ObjectAction objectAction = holder.getObjectAction(); val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment); val sourcePojoClass = sourcePojo.getClass(); val specificationLoader = objectAction.getSpecificationLoader(); val objectSpecification = specificationLoader.loadSpecification(sourcePojoClass); if (objectSpecification == null) { - // not expected - return "Disabled"; + return evaluator.unexpected(); } val managedObject = ManagedObject.adaptSingular(objectSpecification, sourcePojo); @@ -89,18 +100,18 @@ public class GqlvActionParamDisabled { val objectActionParameter = objectAction.getParameterById(holder.getObjectActionParameter().getId()); - val argumentManagedObjects = GqlvAction.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction, context.bookmarkService); + final Can<ManagedObject> argumentManagedObjects = GqlvAction.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction, context.bookmarkService); - Consent usable = objectActionParameter.isUsable(actionInteractionHead, argumentManagedObjects, InteractionInitiatedBy.USER); - return usable.isVetoed() ? usable.getReasonAsString().orElse("Disabled") : null; + return evaluator.evaluate(actionInteractionHead, objectActionParameter, argumentManagedObjects); } - public interface Holder extends GqlvHolder { + public interface Holder + extends GqlvHolder, + ObjectSpecificationProvider, + ObjectActionProvider, + ObjectActionParameterProvider { GqlvActionParam.Holder getHolder(); - ObjectSpecification getObjectSpecification(); - ObjectAction getObjectAction(); - ObjectActionParameter getObjectActionParameter(); } } 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 638c2594d9..1a11538f8d 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 @@ -19,8 +19,10 @@ package org.apache.causeway.viewer.graphql.model.domain; import org.apache.causeway.applib.services.bookmark.BookmarkService; +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.ObjectAction; import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter; @@ -69,35 +71,21 @@ public class GqlvActionParamHidden { private boolean hidden(final DataFetchingEnvironment dataFetchingEnvironment) { - final ObjectAction objectAction = holder.getObjectAction(); + val evaluator = new Evaluator<>(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 specificationLoader = objectAction.getSpecificationLoader(); - val objectSpecification = specificationLoader.loadSpecification(sourcePojoClass); - if (objectSpecification == null) { - // not expected - return true; - } - - 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); - - Consent visible = objectActionParameter.isVisible(actionInteractionHead, argumentManagedObjects, InteractionInitiatedBy.USER); - return visible.isVetoed(); + return GqlvActionParamDisabled.evaluate(holder, context, dataFetchingEnvironment, evaluator); } - public interface Holder extends GqlvHolder { - + public interface Holder + extends GqlvHolder, + ObjectActionParameterProvider { GqlvActionParam.Holder getHolder(); - - ObjectAction getObjectAction(); - - ObjectActionParameter getObjectActionParameter(); } } 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 ae77f7d35e..078bb1beda 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 @@ -79,6 +79,11 @@ public class GqlvActionParams implements GqlvActionParam.Holder { return holder.getObjectSpecification(); } + @Override + public ObjectAction getObjectMember() { + return getObjectAction(); + } + @Override public ObjectAction getObjectAction() { return holder.getObjectAction(); 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 548740b9f6..b1c1a018f4 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 @@ -112,9 +112,10 @@ public class GqlvActionValidate { return consent.isVetoed() ? consent.getReasonAsString().orElse("Invalid") : null; } - public interface Holder extends GqlvHolder { + public interface Holder + extends GqlvHolder, + ObjectSpecificationProvider, + ObjectActionProvider { - ObjectSpecification getObjectSpecification(); - ObjectAction getObjectAction(); } } 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 f3674c301c..948c8e7989 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 @@ -105,10 +105,10 @@ public abstract class GqlvAssociationGet<T extends ObjectAssociation> { : null; } - public interface Holder<T extends ObjectAssociation> extends GqlvHolder { + public interface Holder<T extends ObjectAssociation> + extends GqlvHolder, + ObjectSpecificationProvider, + ObjectAssociationProvider<T> { - ObjectSpecification getObjectSpecification(); - - T getObjectAssociation(); } } 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 99a295ccde..a7e0812ba3 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 @@ -22,7 +22,6 @@ import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; -import org.apache.causeway.applib.services.bookmark.BookmarkService; import org.apache.causeway.core.metamodel.objectmanager.ObjectManager; import org.apache.causeway.core.metamodel.spec.ActionScope; import org.apache.causeway.core.metamodel.spec.ObjectSpecification; @@ -34,7 +33,6 @@ import lombok.Getter; import graphql.Scalars; import graphql.schema.FieldCoordinates; -import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLInputObjectType; import graphql.schema.GraphQLObjectType; @@ -47,7 +45,7 @@ import static graphql.schema.GraphQLObjectType.newObject; /** * Exposes a domain object (view model or entity) via the GQL viewer. */ -public class GqlvDomainObject implements GqlvAction.Holder, GqlvProperty.Holder, GqlvCollection.Holder, GqlvMetaHolder { +public class GqlvDomainObject implements GqlvAction.Holder, GqlvProperty.Holder, GqlvCollection.Holder, GqlvMeta.Holder { @Getter private final ObjectSpecification objectSpecification; private final Context context; 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 b765992697..b91ce4686c 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 @@ -89,7 +89,9 @@ public class GqlvMemberDisabled { return usable.getReasonAsString().orElse(null); } - public interface Holder extends GqlvHolder { + public interface Holder + extends GqlvHolder, + ObjectSpecificationProvider{ ObjectSpecification getObjectSpecification(); 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 537ee5f91b..f41e16ca7f 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 @@ -34,7 +34,6 @@ import lombok.val; import graphql.Scalars; import graphql.schema.DataFetcher; -import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLObjectType; @@ -49,7 +48,7 @@ public class GqlvMeta { static GraphQLFieldDefinition logicalTypeName = newFieldDefinition().name("logicalTypeName").type(nonNull(Scalars.GraphQLString)).build(); static GraphQLFieldDefinition version = newFieldDefinition().name("version").type(Scalars.GraphQLString).build(); - private final GqlvMetaHolder holder; + private final Holder holder; private final Context context; private final ObjectManager objectManager; @@ -57,7 +56,7 @@ public class GqlvMeta { @Getter private final GraphQLFieldDefinition metaField; public GqlvMeta( - final GqlvMetaHolder holder, + final Holder holder, final Context context, final ObjectManager objectManager ) { @@ -151,4 +150,10 @@ public class GqlvMeta { } } + + public interface Holder + extends GqlvHolder, + ObjectSpecificationProvider { + + } } 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 1c50c02da3..f39711ab88 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 @@ -119,13 +119,12 @@ public class GqlvPropertySet { return managedObject; // return the original object because setters return void } - public interface Holder extends GqlvHolder { + public interface Holder + extends GqlvHolder, + ObjectSpecificationProvider, + OneToOneAssociationProvider { GqlvProperty.Holder getHolder(); - ObjectSpecification getObjectSpecification(); - - OneToOneAssociation getOneToOneAssociation(); - } } 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 c4f8b3273a..d607c8ebed 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 @@ -111,11 +111,10 @@ public class GqlvPropertyValidate { return consent.isVetoed() ? consent.getReasonAsString().orElse("invalid") : null; } - public interface Holder extends GqlvHolder { - - ObjectSpecification getObjectSpecification(); - - OneToOneAssociation getOneToOneAssociation(); + public interface Holder + extends GqlvHolder, + ObjectSpecificationProvider, + OneToOneAssociationProvider { GqlvProperty.Holder getHolder(); } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionParameterProvider.java similarity index 80% copy from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java copy to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionParameterProvider.java index 14244c9ae7..98642c992b 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionParameterProvider.java @@ -18,9 +18,8 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; - -public interface GqlvMetaHolder extends GqlvHolder { - ObjectSpecification getObjectSpecification(); +import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter; +public interface ObjectActionParameterProvider extends ObjectActionProvider { + ObjectActionParameter getObjectActionParameter(); } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionProvider.java similarity index 82% copy from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java copy to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionProvider.java index 14244c9ae7..45dfe01e58 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectActionProvider.java @@ -18,9 +18,8 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; - -public interface GqlvMetaHolder extends GqlvHolder { - ObjectSpecification getObjectSpecification(); +import org.apache.causeway.core.metamodel.spec.feature.ObjectAction; +public interface ObjectActionProvider extends ObjectMemberProvider<ObjectAction> { + ObjectAction getObjectAction(); } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectAssociationProvider.java similarity index 80% copy from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java copy to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectAssociationProvider.java index 14244c9ae7..f9ca318fd9 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectAssociationProvider.java @@ -18,9 +18,8 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; - -public interface GqlvMetaHolder extends GqlvHolder { - ObjectSpecification getObjectSpecification(); +import org.apache.causeway.core.metamodel.spec.feature.ObjectAssociation; +public interface ObjectAssociationProvider<T extends ObjectAssociation> extends ObjectMemberProvider<T> { + T getObjectAssociation(); } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectMemberProvider.java similarity index 83% copy from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java copy to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectMemberProvider.java index 14244c9ae7..e1ffb7afaf 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectMemberProvider.java @@ -18,9 +18,8 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; - -public interface GqlvMetaHolder extends GqlvHolder { - ObjectSpecification getObjectSpecification(); +import org.apache.causeway.core.metamodel.spec.feature.ObjectMember; +public interface ObjectMemberProvider<T extends ObjectMember> { + T getObjectMember(); } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectSpecificationProvider.java similarity index 94% copy from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java copy to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectSpecificationProvider.java index 14244c9ae7..5ef002274f 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/ObjectSpecificationProvider.java @@ -20,7 +20,6 @@ package org.apache.causeway.viewer.graphql.model.domain; import org.apache.causeway.core.metamodel.spec.ObjectSpecification; -public interface GqlvMetaHolder extends GqlvHolder { +public interface ObjectSpecificationProvider { ObjectSpecification getObjectSpecification(); - } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/OneToManyAssociationProvider.java similarity index 79% copy from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java copy to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/OneToManyAssociationProvider.java index 14244c9ae7..5bd93507e9 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/OneToManyAssociationProvider.java @@ -18,9 +18,8 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; - -public interface GqlvMetaHolder extends GqlvHolder { - ObjectSpecification getObjectSpecification(); +import org.apache.causeway.core.metamodel.spec.feature.OneToManyAssociation; +public interface OneToManyAssociationProvider extends ObjectAssociationProvider<OneToManyAssociation> { + OneToManyAssociation getOneToManyAssociation(); } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/OneToOneAssociationProvider.java similarity index 79% rename from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java rename to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/OneToOneAssociationProvider.java index 14244c9ae7..93ed7a5746 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMetaHolder.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/OneToOneAssociationProvider.java @@ -18,9 +18,8 @@ */ package org.apache.causeway.viewer.graphql.model.domain; -import org.apache.causeway.core.metamodel.spec.ObjectSpecification; - -public interface GqlvMetaHolder extends GqlvHolder { - ObjectSpecification getObjectSpecification(); +import org.apache.causeway.core.metamodel.spec.feature.OneToOneAssociation; +public interface OneToOneAssociationProvider extends ObjectAssociationProvider<OneToOneAssociation> { + OneToOneAssociation getOneToOneAssociation(); }
