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 4667b1a8aa404d4f36eac93dbba9d6b4c4e2b6ce Author: danhaywood <[email protected]> AuthorDate: Mon Mar 11 08:50:31 2024 +0000 CAUSEWAY-3676: adds asciiId to @Property, @Collection, @Action, @Parameter ... and uses it within graphql viewer (2) --- .../action/ActionAnnotationFacetFactory.java | 2 +- .../ascii/AsciiFacetForActionAnnotation.java | 23 +++++---- .../CollectionAnnotationFacetFactory.java | 1 - .../parameter/ParameterAnnotationFacetFactory.java | 4 +- .../viewer/test/domain/i18n/I18nCalculator.java | 45 ++++++++++++++++++ .../I18nCalculator_IntegTest.each.concat._.gql | 11 +++++ .../e2e/i18ncalc/I18nCalculator_IntegTest.java | 41 ++++++++++++++++ viewers/graphql/test/src/test/resources/schema.gql | 55 ++++++++++++++++++++++ 8 files changed, 168 insertions(+), 14 deletions(-) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java index 8894cf93e6..dde09ec048 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java @@ -29,6 +29,7 @@ import org.apache.causeway.core.metamodel.context.MetaModelContext; import org.apache.causeway.core.metamodel.facetapi.FeatureType; import org.apache.causeway.core.metamodel.facets.FacetFactoryAbstract; import org.apache.causeway.core.metamodel.facets.actcoll.typeof.TypeOfFacet; +import org.apache.causeway.core.metamodel.facets.actions.action.ascii.AsciiFacetForActionAnnotation; import org.apache.causeway.core.metamodel.facets.actions.action.choicesfrom.ChoicesFromFacetForActionAnnotation; import org.apache.causeway.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation; import org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet; @@ -37,7 +38,6 @@ import org.apache.causeway.core.metamodel.facets.actions.action.invocation.Actio import org.apache.causeway.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation; import org.apache.causeway.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation; import org.apache.causeway.core.metamodel.facets.actions.action.typeof.TypeOfFacetForActionAnnotation; -import org.apache.causeway.core.metamodel.facets.actions.ascii.AsciiFacetForActionAnnotation; import org.apache.causeway.core.metamodel.facets.actions.fileaccept.FileAcceptFacetForActionAnnotation; import org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetForActionAnnotation; import org.apache.causeway.core.metamodel.facets.members.publish.command.CommandPublishingFacetForActionAnnotation; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/ascii/AsciiFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ascii/AsciiFacetForActionAnnotation.java similarity index 65% rename from core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/ascii/AsciiFacetForActionAnnotation.java rename to core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ascii/AsciiFacetForActionAnnotation.java index 512dcbcfd9..281540895b 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/ascii/AsciiFacetForActionAnnotation.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ascii/AsciiFacetForActionAnnotation.java @@ -16,30 +16,33 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.causeway.core.metamodel.facets.actions.ascii; +package org.apache.causeway.core.metamodel.facets.actions.action.ascii; import java.util.Optional; import org.apache.causeway.applib.annotation.Action; +import org.apache.causeway.applib.annotation.Property; import org.apache.causeway.commons.internal.base._Strings; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; -import org.apache.causeway.core.metamodel.facets.objectvalue.fileaccept.FileAcceptFacet; -import org.apache.causeway.core.metamodel.facets.objectvalue.fileaccept.FileAcceptFacetAbstract; +import org.apache.causeway.core.metamodel.facets.FacetedMethod; +import org.apache.causeway.core.metamodel.facets.all.ascii.AsciiFacet; +import org.apache.causeway.core.metamodel.facets.all.ascii.AsciiFacetAbstract; public class AsciiFacetForActionAnnotation -extends FileAcceptFacetAbstract { +extends AsciiFacetAbstract { - public static Optional<FileAcceptFacet> create( - final Optional<Action> actionIfAny, - final FacetHolder holder) { + public static Optional<AsciiFacet> create( + final Optional<Action> collectionIfAny, + final FacetedMethod facetHolder) { - return actionIfAny + return collectionIfAny .map(Action::asciiId) .filter(_Strings::isNotEmpty) - .map(asciiName -> new AsciiFacetForActionAnnotation(asciiName, holder)); + .map(asciiName -> new AsciiFacetForActionAnnotation(asciiName, facetHolder)); } - private AsciiFacetForActionAnnotation(final String value, final FacetHolder holder) { + private AsciiFacetForActionAnnotation( + final String value, final FacetHolder holder) { super(value, holder); } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java index 158d314ca5..6cf71705d1 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java @@ -31,7 +31,6 @@ import org.apache.causeway.core.metamodel.facetapi.FeatureType; import org.apache.causeway.core.metamodel.facets.FacetFactoryAbstract; import org.apache.causeway.core.metamodel.facets.FacetedMethod; import org.apache.causeway.core.metamodel.facets.actcoll.typeof.TypeOfFacet; -import org.apache.causeway.core.metamodel.facets.actions.ascii.AsciiFacetForActionAnnotation; import org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacetAbstract; import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacetAbstract; import org.apache.causeway.core.metamodel.facets.collections.collection.ascii.AsciiFacetForCollectionAnnotation; diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java index 00f5179d55..459a394ee6 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java @@ -53,7 +53,7 @@ extends FacetFactoryAbstract { processParamsRegEx(processParameterContext); processParamsOptional(processParameterContext); processParamsFileAccept(processParameterContext); - processParamsAsciiName(processParameterContext); + processParamsAsciiId(processParameterContext); } // check for @Parameter(precedingParamsPolicy=...) @@ -134,7 +134,7 @@ extends FacetFactoryAbstract { .create(parameterIfAny, holder)); } - void processParamsAsciiName(final ProcessParameterContext processParameterContext) { + void processParamsAsciiId(final ProcessParameterContext processParameterContext) { val holder = processParameterContext.getFacetHolder(); val parameterIfAny = processParameterContext.synthesizeOnParameter(Parameter.class); diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/i18n/I18nCalculator.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/i18n/I18nCalculator.java new file mode 100644 index 0000000000..ce261e3938 --- /dev/null +++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/i18n/I18nCalculator.java @@ -0,0 +1,45 @@ +package org.apache.causeway.viewer.graphql.viewer.test.domain.i18n; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.net.URL; +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.OffsetDateTime; +import java.time.OffsetTime; +import java.time.ZonedDateTime; +import java.util.Locale; +import java.util.UUID; + +import javax.annotation.Priority; +import javax.inject.Inject; +import javax.inject.Named; + +import org.apache.causeway.applib.annotation.Action; +import org.apache.causeway.applib.annotation.DomainService; +import org.apache.causeway.applib.annotation.NatureOfService; +import org.apache.causeway.applib.annotation.Optionality; +import org.apache.causeway.applib.annotation.Parameter; +import org.apache.causeway.applib.annotation.PriorityPrecedence; +import org.apache.causeway.applib.annotation.SemanticsOf; +import org.apache.causeway.viewer.graphql.viewer.test.domain.calc.Month; + +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; + +@Named("university.calc.I18nCalculator") +@DomainService(nature= NatureOfService.VIEW) +@Priority(PriorityPrecedence.EARLY) +@RequiredArgsConstructor(onConstructor_ = {@Inject}) +public class I18nCalculator { + + @Action(semantics = SemanticsOf.SAFE, asciiId = "concat") + public String concät( + @Parameter(asciiId = "a1") + String ä1, + @Parameter(asciiId = "a2") + String ä2) { + return ä1 + ä2; + } + +} diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/i18ncalc/I18nCalculator_IntegTest.each.concat._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/i18ncalc/I18nCalculator_IntegTest.each.concat._.gql new file mode 100644 index 0000000000..f08768ce0d --- /dev/null +++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/i18ncalc/I18nCalculator_IntegTest.each.concat._.gql @@ -0,0 +1,11 @@ +{ + rich { + university_calc_I18nCalculator { + concat { + invoke(a1: "Fizz", a2: "Buzz") { + results + } + } + } + } +} diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/i18ncalc/I18nCalculator_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/i18ncalc/I18nCalculator_IntegTest.java new file mode 100644 index 0000000000..5b4e2c62d2 --- /dev/null +++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/i18ncalc/I18nCalculator_IntegTest.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.causeway.viewer.graphql.viewer.test.e2e.i18ncalc; + +import java.io.IOException; +import java.net.URISyntaxException; + +import org.junit.jupiter.api.DynamicTest; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.TestFactory; + +import org.apache.causeway.viewer.graphql.viewer.test.e2e.Abstract_IntegTest; + + +//NOT USING @Transactional since we are running server within same transaction otherwise +@Order(30) +public class I18nCalculator_IntegTest extends Abstract_IntegTest { + + @Override + @TestFactory + public Iterable<DynamicTest> each() throws IOException, URISyntaxException { + return super.each(); + } + +} diff --git a/viewers/graphql/test/src/test/resources/schema.gql b/viewers/graphql/test/src/test/resources/schema.gql index cfeb86a041..e16867c265 100644 --- a/viewers/graphql/test/src/test/resources/schema.gql +++ b/viewers/graphql/test/src/test/resources/schema.gql @@ -112,6 +112,7 @@ type RICHSchema { org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript(object: rich__org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__gqlv_input): rich__org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript university_admin_AdminMenu: rich__university_admin_AdminMenu university_calc_Calculator: rich__university_calc_Calculator + university_calc_I18nCalculator: rich__university_calc_I18nCalculator university_dept_Department(object: rich__university_dept_Department__gqlv_input): rich__university_dept_Department university_dept_Departments: rich__university_dept_Departments university_dept_DeptHead(object: rich__university_dept_DeptHead__gqlv_input): rich__university_dept_DeptHead @@ -162,6 +163,7 @@ type SIMPLESchema { org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript(object: simple__org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__gqlv_input): simple__org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript university_admin_AdminMenu: simple__university_admin_AdminMenu university_calc_Calculator: simple__university_calc_Calculator + university_calc_I18nCalculator: simple__university_calc_I18nCalculator university_dept_Department(object: simple__university_dept_Department__gqlv_input): simple__university_dept_Department university_dept_Departments: simple__university_dept_Departments university_dept_DeptHead(object: simple__university_dept_DeptHead__gqlv_input): simple__university_dept_DeptHead @@ -222,6 +224,7 @@ type ScenarioStep { org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript(object: rich__org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__gqlv_input): rich__org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript university_admin_AdminMenu: rich__university_admin_AdminMenu university_calc_Calculator: rich__university_calc_Calculator + university_calc_I18nCalculator: rich__university_calc_I18nCalculator university_dept_Department(object: rich__university_dept_Department__gqlv_input): rich__university_dept_Department university_dept_Departments: rich__university_dept_Departments university_dept_DeptHead(object: rich__university_dept_DeptHead__gqlv_input): rich__university_dept_DeptHead @@ -3350,6 +3353,53 @@ type rich__university_calc_Calculator__someUuid__gqlv_action_invoke { target: String } +type rich__university_calc_I18nCalculator { + "Concät" + concat: rich__university_calc_I18nCalculator__concat__gqlv_action +} + +type rich__university_calc_I18nCalculator__concat__a1__gqlv_action_parameter { + datatype: String + disabled(a1: String): String + hidden: Boolean + validity: String +} + +type rich__university_calc_I18nCalculator__concat__a2__gqlv_action_parameter { + datatype: String + disabled(a1: String, a2: String): String + hidden(a1: String): Boolean + validity: String +} + +type rich__university_calc_I18nCalculator__concat__gqlv_action { + disabled: String + hidden: Boolean + invoke(a1: String!, a2: String!): rich__university_calc_I18nCalculator__concat__gqlv_action_invoke + "Parameters of this action" + params: rich__university_calc_I18nCalculator__concat__gqlv_action_params + validate(a1: String, a2: String): String +} + +type rich__university_calc_I18nCalculator__concat__gqlv_action_args { + a1: String + a2: String +} + +type rich__university_calc_I18nCalculator__concat__gqlv_action_invoke { + "Arguments used to invoke this action" + args: rich__university_calc_I18nCalculator__concat__gqlv_action_args + results: String + target: String +} + +type rich__university_calc_I18nCalculator__concat__gqlv_action_params { + "Ä1" + a1: rich__university_calc_I18nCalculator__concat__a1__gqlv_action_parameter + "Ä2" + a2: rich__university_calc_I18nCalculator__concat__a2__gqlv_action_parameter +} + "University department specializing in a field of study" type rich__university_dept_Department { "Object metadata" @@ -4841,6 +4891,11 @@ type simple__university_calc_Calculator { someUuid: UUID } +type simple__university_calc_I18nCalculator { + "Concät" + concat(a1: String!, a2: String!): String +} + "University department specializing in a field of study" type simple__university_dept_Department { "Object metadata"
