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"

Reply via email to