This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch CAUSEWAY-3546
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 752a8a4e3e37fcc9d02f2ec16007aee7c58c49d0
Author: danhaywood <[email protected]>
AuthorDate: Fri Sep 29 09:37:08 2023 +0100

    CAUSEWAY-3546: adds missing additional cases
---
 .../command/CommandPublishingFacetForActionAnnotation.java       | 9 +++------
 .../command/CommandPublishingFacetForPropertyAnnotation.java     | 7 ++++++-
 .../execution/ExecutionPublishingFacetForActionAnnotation.java   | 9 +++------
 .../execution/ExecutionPublishingFacetForPropertyAnnotation.java | 9 ++++++++-
 4 files changed, 20 insertions(+), 14 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotation.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotation.java
index d6f1aa2467..e4f6f711e6 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotation.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotation.java
@@ -100,12 +100,9 @@ public abstract class 
CommandPublishingFacetForActionAnnotation extends CommandP
                 });
     }
 
-    private static boolean hasSafeSemantics(final FacetHolder holder) {
-        final ActionSemanticsFacet actionSemanticsFacet = 
holder.getFacet(ActionSemanticsFacet.class);
-        if(actionSemanticsFacet == null) {
-            throw new IllegalStateException("Require ActionSemanticsFacet in 
order to process");
-        }
-        return actionSemanticsFacet.value().isSafeInNature();
+    static boolean hasSafeSemantics(final FacetHolder holder) {
+        val actionSemanticsFacet = holder.getFacet(ActionSemanticsFacet.class);
+        return actionSemanticsFacet != null && 
actionSemanticsFacet.value().isSafeInNature();
     }
 
     CommandPublishingFacetForActionAnnotation(
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotation.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotation.java
index 7354072226..7415b05ce3 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotation.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotation.java
@@ -113,10 +113,15 @@ public abstract class 
CommandPublishingFacetForPropertyAnnotation extends Comman
                     switch (actionPublishingPolicy) {
                         case NONE:
                             return new 
CommandPublishingFacetForActionFromConfiguration.None(holder, servicesInjector);
+                        case IGNORE_QUERY_ONLY:
+                        case IGNORE_SAFE:
+                            return 
CommandPublishingFacetForActionAnnotation.hasSafeSemantics(holder)
+                                    ? new 
CommandPublishingFacetForActionFromConfiguration.IgnoreSafe(holder, 
servicesInjector)
+                                    : new 
CommandPublishingFacetForActionFromConfiguration.IgnoreSafeYetNot(holder, 
servicesInjector);
                         case ALL:
                             return new 
CommandPublishingFacetForActionFromConfiguration.All(holder, servicesInjector);
                         default:
-                            throw new 
IllegalStateException(String.format("configured action publishingPolicy '%s' 
not recognised", publishingPolicy));
+                            throw new 
IllegalStateException(String.format("configured action publishingPolicy '%s' 
not recognised", actionPublishingPolicy));
                     }
                 }
             });
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForActionAnnotation.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForActionAnnotation.java
index 000b4d2737..da9b9ba8f0 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForActionAnnotation.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForActionAnnotation.java
@@ -90,12 +90,9 @@ public abstract class 
ExecutionPublishingFacetForActionAnnotation extends Execut
         });
     }
 
-    private static boolean hasSafeSemantics(final FacetHolder holder) {
-        final ActionSemanticsFacet actionSemanticsFacet = 
holder.getFacet(ActionSemanticsFacet.class);
-        if(actionSemanticsFacet == null) {
-            throw new IllegalStateException("Require ActionSemanticsFacet in 
order to process");
-        }
-        return actionSemanticsFacet.value().isSafeInNature();
+    static boolean hasSafeSemantics(final FacetHolder holder) {
+        val actionSemanticsFacet = holder.getFacet(ActionSemanticsFacet.class);
+        return actionSemanticsFacet != null && 
actionSemanticsFacet.value().isSafeInNature();
     }
 
     ExecutionPublishingFacetForActionAnnotation(final FacetHolder holder) {
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotation.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotation.java
index f97615d210..ad6bc81f20 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotation.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotation.java
@@ -29,6 +29,8 @@ import 
org.apache.causeway.core.metamodel.facetapi.FacetHolder;
 import org.apache.causeway.core.metamodel.facetapi.FeatureType;
 import org.apache.causeway.core.metamodel.facets.TypedHolder;
 import 
org.apache.causeway.core.metamodel.facets.actions.contributing.ContributingFacet;
+import 
org.apache.causeway.core.metamodel.facets.members.publish.command.CommandPublishingFacetForActionAnnotation;
+import 
org.apache.causeway.core.metamodel.facets.members.publish.command.CommandPublishingFacetForActionFromConfiguration;
 import org.apache.causeway.core.metamodel.facets.object.mixin.MixinFacet;
 
 import lombok.val;
@@ -106,10 +108,15 @@ extends ExecutionPublishingFacetAbstract {
                     switch (actionPublishingPolicy) {
                         case NONE:
                             return new 
ExecutionPublishingFacetForActionFromConfiguration.None(holder);
+                        case IGNORE_QUERY_ONLY:
+                        case IGNORE_SAFE:
+                            return 
ExecutionPublishingFacetForActionAnnotation.hasSafeSemantics(holder)
+                                    ? new 
ExecutionPublishingFacetForActionFromConfiguration.IgnoreSafe(holder)
+                                    : new 
ExecutionPublishingFacetForActionFromConfiguration.IgnoreSafeYetNot(holder);
                         case ALL:
                             return new 
ExecutionPublishingFacetForActionFromConfiguration.All(holder);
                         default:
-                            throw new 
IllegalStateException(String.format("configured action.executionPublishing 
policy '%s' not recognised", publishingPolicy));
+                            throw new 
IllegalStateException(String.format("configured action.executionPublishing 
policy '%s' not recognised", actionPublishingPolicy));
                     }
                 }
             }

Reply via email to