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 e59f731f1e08dc7efc63ca033903f0cc27a07146 Author: danhaywood <[email protected]> AuthorDate: Thu Sep 28 18:51:26 2023 +0100 CAUSEWAY-3546: adds isEnabled/isDisabled to both ... ... CommandPublishingFacet and ExecutionPublishingFacet. The logic previously was always installing a facet, and interpreting its existence as enabled --- .../action/ActionAnnotationFacetFactory.java | 4 +- .../publish/command/CommandPublishingFacet.java | 8 +- .../command/CommandPublishingFacetAbstract.java | 4 +- .../CommandPublishingFacetForActionAnnotation.java | 101 ++++++++++------- ...ishingFacetForActionAnnotationAsConfigured.java | 47 +++++++- ...dPublishingFacetForActionFromConfiguration.java | 80 +++++++++++++ ...ommandPublishingFacetForPropertyAnnotation.java | 75 ++++++++----- ...hingFacetForPropertyAnnotationAsConfigured.java | 28 ++++- ...blishingFacetForPropertyFromConfiguration.java} | 30 ++++- ...onPublishingActionFacetForActionAnnotation.java | 107 ------------------ ...ActionFacetForActionAnnotationAsConfigured.java | 31 ------ .../execution/ExecutionPublishingFacet.java | 5 +- .../ExecutionPublishingFacetAbstract.java | 2 +- ...xecutionPublishingFacetForActionAnnotation.java | 124 +++++++++++++++++++++ ...ishingFacetForActionAnnotationAsConfigured.java | 75 +++++++++++++ ...nPublishingFacetForActionFromConfiguration.java | 78 +++++++++++++ ...utionPublishingFacetForPropertyAnnotation.java} | 69 ++++++++---- ...ingFacetForPropertyAnnotationAsConfigured.java} | 30 ++++- ...blishingFacetForPropertyFromConfiguration.java} | 30 ++++- ...ertyFacetForPropertyAnnotationAsConfigured.java | 29 ----- .../property/PropertyAnnotationFacetFactory.java | 4 +- ...tationFacetFactoryTest_executionPublishing.java | 14 +-- .../FixtureResult.columnOrder.fallback.txt | 5 + 23 files changed, 684 insertions(+), 296 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 e1ac1db48d..3a95fd1367 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 @@ -40,7 +40,7 @@ import org.apache.causeway.core.metamodel.facets.actions.action.typeof.TypeOfFac 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; -import org.apache.causeway.core.metamodel.facets.members.publish.execution.ExecutionPublishingActionFacetForActionAnnotation; +import org.apache.causeway.core.metamodel.facets.members.publish.execution.ExecutionPublishingFacetForActionAnnotation; import org.apache.causeway.core.metamodel.specloader.validator.ValidationFailureUtils; import lombok.val; @@ -201,7 +201,7 @@ extends FacetFactoryAbstract { // check for @Action(executionPublishing=...) addFacetIfPresent( - ExecutionPublishingActionFacetForActionAnnotation + ExecutionPublishingFacetForActionAnnotation .create(actionIfAny, getConfiguration(), facetedMethod)); // check for @Action(executionPublishing=...) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacet.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacet.java index 1678c328f7..353506e62d 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacet.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacet.java @@ -26,6 +26,7 @@ import org.apache.causeway.core.metamodel.facetapi.FacetHolder; import org.apache.causeway.core.metamodel.services.publishing.CommandPublisher; import lombok.NonNull; +import lombok.val; /** * Indicates that details of the action invocation or property edit, @@ -40,9 +41,12 @@ import lombok.NonNull; */ public interface CommandPublishingFacet extends Facet { - public CommandDtoProcessor getProcessor(); + CommandDtoProcessor getProcessor(); public static boolean isPublishingEnabled(final @NonNull FacetHolder facetHolder) { - return facetHolder.containsFacet(CommandPublishingFacet.class); + val facet = facetHolder.getFacet(CommandPublishingFacet.class); + return facet != null && facet.isEnabled(); } + + boolean isEnabled(); } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetAbstract.java index 9a524effd3..15bcb0a30d 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetAbstract.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetAbstract.java @@ -31,7 +31,7 @@ public abstract class CommandPublishingFacetAbstract extends FacetAbstract implements CommandPublishingFacet { - private static final Class<? extends Facet> type() { + private static Class<? extends Facet> type() { return CommandPublishingFacet.class; } @@ -87,4 +87,6 @@ implements CommandPublishingFacet { super.visitAttributes(visitor); visitor.accept("dtoProcessor", processor); } + + } 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 afbb98bad9..26c2cbf3ac 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 @@ -32,7 +32,29 @@ import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanti import lombok.val; -public class CommandPublishingFacetForActionAnnotation extends CommandPublishingFacetAbstract { +public abstract class CommandPublishingFacetForActionAnnotation extends CommandPublishingFacetAbstract { + + static class Enabled extends CommandPublishingFacetForActionAnnotation { + Enabled(CommandDtoProcessor processor, FacetHolder holder, ServiceInjector servicesInjector) { + super(processor, holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return true; + } + } + + static class Disabled extends CommandPublishingFacetForActionAnnotation { + Disabled(CommandDtoProcessor processor, FacetHolder holder, ServiceInjector servicesInjector) { + super(processor, holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return false; + } + } public static Optional<CommandPublishingFacet> create( final Optional<Action> actionsIfAny, @@ -48,57 +70,54 @@ public class CommandPublishingFacetForActionAnnotation extends CommandPublishing .filter(action -> action.commandPublishing() != Publishing.NOT_SPECIFIED) .<CommandPublishingFacet>map(action -> { - Publishing commandPublishing = action.commandPublishing(); + Publishing publishing = action.commandPublishing(); final Class<? extends CommandDtoProcessor> processorClass = action.commandDtoProcessor(); final CommandDtoProcessor processor = newProcessorElseNull(processorClass); if(processor != null) { - commandPublishing = Publishing.ENABLED; + publishing = Publishing.ENABLED; } - switch (commandPublishing) { - case AS_CONFIGURED: - switch (publishingPolicy) { - case NONE: - return null; - case IGNORE_QUERY_ONLY: - case IGNORE_SAFE: - if (hasSafeSemantics(holder)) { - return null; + switch (publishing) { + case AS_CONFIGURED: + switch (publishingPolicy) { + case NONE: + return new CommandPublishingFacetForActionAnnotationAsConfigured.None(holder, servicesInjector); + case IGNORE_QUERY_ONLY: + case IGNORE_SAFE: + return hasSafeSemantics(holder) + ? new CommandPublishingFacetForActionAnnotationAsConfigured.IgnoreSafe(holder, servicesInjector) + : new CommandPublishingFacetForActionAnnotationAsConfigured.IgnoreSafeYetNot(holder, servicesInjector); + case ALL: + return new CommandPublishingFacetForActionAnnotationAsConfigured.All(holder, servicesInjector); + default: + throw new IllegalStateException(String.format("configured commandPublishing policy '%s' not recognised", publishingPolicy)); } - // else fall through + case DISABLED: + return new CommandPublishingFacetForActionAnnotation.Disabled(processor, holder, servicesInjector); + case ENABLED: + return new CommandPublishingFacetForActionAnnotation.Enabled(processor, holder, servicesInjector); default: - return new CommandPublishingFacetForActionAnnotationAsConfigured( - holder, servicesInjector); - } - case DISABLED: - return null; - case ENABLED: - return new CommandPublishingFacetForActionAnnotation( - processor, holder, servicesInjector); - default: + throw new IllegalStateException(String.format("commandPublishing '%s' not recognised", publishing)); } - throw new IllegalStateException("command '" + commandPublishing + "' not recognised"); }) - , - () -> { + // if not specified switch (publishingPolicy) { - case NONE: - return null; - case IGNORE_QUERY_ONLY: - case IGNORE_SAFE: - if (hasSafeSemantics(holder)) { - return null; - } - // else fall through - default: - return CommandPublishingFacetFromConfiguration.create(holder, servicesInjector); + case NONE: + return new CommandPublishingFacetForActionFromConfiguration.None(holder, servicesInjector); + case IGNORE_QUERY_ONLY: + case IGNORE_SAFE: + return 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 commandPublishing policy '%s' not recognised", publishingPolicy)); } - } - - ); + }); } private static boolean hasSafeSemantics(final FacetHolder holder) { @@ -106,10 +125,7 @@ public class CommandPublishingFacetForActionAnnotation extends CommandPublishing if(actionSemanticsFacet == null) { throw new IllegalStateException("Require ActionSemanticsFacet in order to process"); } - if(actionSemanticsFacet.value().isSafeInNature()) { - return true; - } - return false; + return actionSemanticsFacet.value().isSafeInNature(); } CommandPublishingFacetForActionAnnotation( @@ -119,5 +135,4 @@ public class CommandPublishingFacetForActionAnnotation extends CommandPublishing super(processor, holder, servicesInjector); } - } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotationAsConfigured.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotationAsConfigured.java index 5c166291e5..cfa812debb 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotationAsConfigured.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotationAsConfigured.java @@ -21,7 +21,51 @@ package org.apache.causeway.core.metamodel.facets.members.publish.command; import org.apache.causeway.applib.services.inject.ServiceInjector; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; -public class CommandPublishingFacetForActionAnnotationAsConfigured extends CommandPublishingFacetForActionAnnotation { +public abstract class CommandPublishingFacetForActionAnnotationAsConfigured extends CommandPublishingFacetForActionAnnotation { + + static class All extends CommandPublishingFacetForActionAnnotationAsConfigured { + All(FacetHolder holder, ServiceInjector servicesInjector) { + super(holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return true; + } + } + + static class None extends CommandPublishingFacetForActionAnnotationAsConfigured { + None(FacetHolder holder, ServiceInjector servicesInjector) { + super(holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return false; + } + } + + static class IgnoreSafe extends CommandPublishingFacetForActionAnnotationAsConfigured { + IgnoreSafe(FacetHolder holder, ServiceInjector servicesInjector) { + super(holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return false; + } + } + + static class IgnoreSafeYetNot extends CommandPublishingFacetForActionAnnotationAsConfigured { + IgnoreSafeYetNot(FacetHolder holder, ServiceInjector servicesInjector) { + super(holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return true; + } + } CommandPublishingFacetForActionAnnotationAsConfigured( final FacetHolder holder, @@ -29,5 +73,4 @@ public class CommandPublishingFacetForActionAnnotationAsConfigured extends Comma super(null, holder, servicesInjector); } - } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionFromConfiguration.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionFromConfiguration.java new file mode 100644 index 0000000000..ca2cdf62ef --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionFromConfiguration.java @@ -0,0 +1,80 @@ +/* + * 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.core.metamodel.facets.members.publish.command; + +import org.apache.causeway.applib.services.inject.ServiceInjector; +import org.apache.causeway.core.metamodel.facetapi.FacetHolder; + +public abstract class CommandPublishingFacetForActionFromConfiguration extends CommandPublishingFacetAbstract { + + static class All extends CommandPublishingFacetForActionFromConfiguration { + + All(FacetHolder holder, ServiceInjector servicesInjector) { + super(holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return true; + } + } + + static class None extends CommandPublishingFacetForActionFromConfiguration { + + None(FacetHolder holder, ServiceInjector servicesInjector) { + super(holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return false; + } + } + + static class IgnoreSafe extends CommandPublishingFacetForActionFromConfiguration { + + IgnoreSafe(FacetHolder holder, ServiceInjector servicesInjector) { + super(holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return false; + } + } + + static class IgnoreSafeYetNot extends CommandPublishingFacetForActionFromConfiguration { + + IgnoreSafeYetNot(FacetHolder holder, ServiceInjector servicesInjector) { + super(holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return true; + } + } + + CommandPublishingFacetForActionFromConfiguration( + final FacetHolder holder, + final ServiceInjector servicesInjector) { + super(null, holder, servicesInjector); + } + +} 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 ca62b789a4..132d7c0959 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 @@ -31,7 +31,29 @@ import org.apache.causeway.core.metamodel.facetapi.FacetHolder; import lombok.val; -public class CommandPublishingFacetForPropertyAnnotation extends CommandPublishingFacetAbstract { +public abstract class CommandPublishingFacetForPropertyAnnotation extends CommandPublishingFacetAbstract { + + static class Enabled extends CommandPublishingFacetForPropertyAnnotation { + Enabled(CommandDtoProcessor processor, FacetHolder holder, ServiceInjector servicesInjector) { + super(processor, holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return true; + } + } + + static class Disabled extends CommandPublishingFacetForPropertyAnnotation { + Disabled(CommandDtoProcessor processor, FacetHolder holder, ServiceInjector servicesInjector) { + super(processor, holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return false; + } + } public static Optional<CommandPublishingFacet> create( final Optional<Property> propertyIfAny, @@ -46,50 +68,51 @@ public class CommandPublishingFacetForPropertyAnnotation extends CommandPublishi propertyIfAny .filter(property -> property.commandPublishing() != Publishing.NOT_SPECIFIED) .map(property -> { - Publishing commandReification = property.commandPublishing(); + Publishing publishing = property.commandPublishing(); - final Class<? extends CommandDtoProcessor> processorClass = - property.commandDtoProcessor(); + final Class<? extends CommandDtoProcessor> processorClass = property.commandDtoProcessor(); final CommandDtoProcessor processor = newProcessorElseNull(processorClass); if(processor != null) { - commandReification = Publishing.ENABLED; + publishing = Publishing.ENABLED; } - switch (commandReification) { - case AS_CONFIGURED: - switch (publishingPolicy) { - case NONE: - return null; + switch (publishing) { + case AS_CONFIGURED: + switch (publishingPolicy) { + case NONE: + return new CommandPublishingFacetForPropertyAnnotationAsConfigured.None(holder, servicesInjector); + case ALL: + return new CommandPublishingFacetForPropertyAnnotationAsConfigured.All(holder, servicesInjector); + default: + throw new IllegalStateException(String.format("configured publishingPolicy '%s' not recognised", publishingPolicy)); + } + case DISABLED: + return new CommandPublishingFacetForPropertyAnnotation.Disabled(processor, holder, servicesInjector); + case ENABLED: + return new CommandPublishingFacetForPropertyAnnotation.Enabled(processor, holder, servicesInjector); default: - return (CommandPublishingFacet)new CommandPublishingFacetForPropertyAnnotationAsConfigured(holder, servicesInjector); - } - case DISABLED: - return null; - case ENABLED: - return new CommandPublishingFacetForPropertyAnnotation(holder, processor, servicesInjector); - default: + throw new IllegalStateException(String.format("commandPublishing '%s' not recognised", publishing)); } - throw new IllegalStateException("command '" + commandReification + "' not recognised"); }) - , - + // if not specified () -> { switch (publishingPolicy) { - case NONE: - return null; - default: - return CommandPublishingFacetFromConfiguration.create(holder, servicesInjector); + case NONE: + return new CommandPublishingFacetForPropertyFromConfiguration.None(holder, servicesInjector); + case ALL: + return new CommandPublishingFacetForPropertyFromConfiguration.All(holder, servicesInjector); + default: + throw new IllegalStateException(String.format("configured publishingPolicy '%s' not recognised", publishingPolicy)); } } - ); } CommandPublishingFacetForPropertyAnnotation( - final FacetHolder holder, final CommandDtoProcessor processor, + final FacetHolder holder, final ServiceInjector servicesInjector) { super(processor, holder, servicesInjector); } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotationAsConfigured.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotationAsConfigured.java index 0b7a573a68..793ac6c262 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotationAsConfigured.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotationAsConfigured.java @@ -21,12 +21,32 @@ package org.apache.causeway.core.metamodel.facets.members.publish.command; import org.apache.causeway.applib.services.inject.ServiceInjector; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; -public class CommandPublishingFacetForPropertyAnnotationAsConfigured extends CommandPublishingFacetForPropertyAnnotation { +public abstract class CommandPublishingFacetForPropertyAnnotationAsConfigured extends CommandPublishingFacetForPropertyAnnotation { - CommandPublishingFacetForPropertyAnnotationAsConfigured( - final FacetHolder holder, final ServiceInjector servicesInjector) { - super(holder, null, servicesInjector); + static class All extends CommandPublishingFacetForPropertyAnnotationAsConfigured { + All(FacetHolder holder, ServiceInjector servicesInjector) { + super(holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return true; + } } + static class None extends CommandPublishingFacetForPropertyAnnotationAsConfigured { + None(FacetHolder holder, ServiceInjector servicesInjector) { + super(holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return false; + } + } + CommandPublishingFacetForPropertyAnnotationAsConfigured( + final FacetHolder holder, final ServiceInjector servicesInjector) { + super(null, holder, servicesInjector); + } } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyFromConfiguration.java similarity index 60% rename from core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetFromConfiguration.java rename to core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyFromConfiguration.java index 818038d8d7..f1fc44f434 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetFromConfiguration.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyFromConfiguration.java @@ -21,15 +21,33 @@ package org.apache.causeway.core.metamodel.facets.members.publish.command; import org.apache.causeway.applib.services.inject.ServiceInjector; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; -public class CommandPublishingFacetFromConfiguration extends CommandPublishingFacetAbstract { +public abstract class CommandPublishingFacetForPropertyFromConfiguration extends CommandPublishingFacetAbstract { - public static CommandPublishingFacet create( - final FacetHolder holder, - final ServiceInjector servicesInjector) { - return new CommandPublishingFacetFromConfiguration(holder, servicesInjector); + static class All extends CommandPublishingFacetForPropertyFromConfiguration { + + All(FacetHolder holder, ServiceInjector servicesInjector) { + super(holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return true; + } + } + + static class None extends CommandPublishingFacetForPropertyFromConfiguration { + + None(FacetHolder holder, ServiceInjector servicesInjector) { + super(holder, servicesInjector); + } + + @Override + public boolean isEnabled() { + return false; + } } - private CommandPublishingFacetFromConfiguration( + CommandPublishingFacetForPropertyFromConfiguration( final FacetHolder holder, final ServiceInjector servicesInjector) { super(null, holder, servicesInjector); diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingActionFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingActionFacetForActionAnnotation.java deleted file mode 100644 index 7f55be2d45..0000000000 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingActionFacetForActionAnnotation.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * 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.core.metamodel.facets.members.publish.execution; - -import java.util.Optional; - -import org.apache.causeway.applib.annotation.Action; -import org.apache.causeway.applib.annotation.Publishing; -import org.apache.causeway.commons.internal.base._Optionals; -import org.apache.causeway.core.config.CausewayConfiguration; -import org.apache.causeway.core.config.metamodel.facets.ActionConfigOptions; -import org.apache.causeway.core.metamodel.facetapi.FacetHolder; -import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet; - -import lombok.val; - -public class ExecutionPublishingActionFacetForActionAnnotation -extends ExecutionPublishingFacetAbstract { - - public static Optional<ExecutionPublishingFacet> create( - final Optional<Action> actionsIfAny, - final CausewayConfiguration configuration, - final FacetHolder holder) { - - val publishingPolicy = ActionConfigOptions.actionExecutionPublishingPolicy(configuration); - - return _Optionals.orNullable( - - actionsIfAny - .map(Action::executionPublishing) - .filter(publishing -> publishing != Publishing.NOT_SPECIFIED) - .<ExecutionPublishingFacet>map(publishing -> { - switch (publishing) { - case AS_CONFIGURED: - - switch (publishingPolicy) { - case NONE: - return null; - case IGNORE_QUERY_ONLY: - case IGNORE_SAFE: - if (hasSafeSemantics(holder)) { - return null; - } - // else fall through - default: - return new ExecutionPublishingActionFacetForActionAnnotationAsConfigured(holder); - } - case DISABLED: - return null; - case ENABLED: - return new ExecutionPublishingActionFacetForActionAnnotation(holder); - default: - } - throw new IllegalStateException("publishing '" + publishing + "' not recognised"); - }) - - , - - () -> { - switch (publishingPolicy) { - case NONE: - return null; - case IGNORE_QUERY_ONLY: - case IGNORE_SAFE: - if (hasSafeSemantics(holder)) { - return null; - } - // else fall through - default: - return new ExecutionPublishingActionFacetFromConfiguration(holder); - } - } - - ); - } - - 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(); - } - - ExecutionPublishingActionFacetForActionAnnotation( - final FacetHolder holder) { - super(holder); - } - -} diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingActionFacetForActionAnnotationAsConfigured.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingActionFacetForActionAnnotationAsConfigured.java deleted file mode 100644 index 606d406712..0000000000 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingActionFacetForActionAnnotationAsConfigured.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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.core.metamodel.facets.members.publish.execution; - -import org.apache.causeway.core.metamodel.facetapi.FacetHolder; - -public class ExecutionPublishingActionFacetForActionAnnotationAsConfigured -extends ExecutionPublishingActionFacetForActionAnnotation { - - public ExecutionPublishingActionFacetForActionAnnotationAsConfigured( - final FacetHolder holder) { - super(holder); - } - -} diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacet.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacet.java index 6b06cd0ab2..511f30fc8b 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacet.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacet.java @@ -42,8 +42,9 @@ import lombok.val; public interface ExecutionPublishingFacet extends Facet { public static boolean isPublishingEnabled(final @NonNull FacetHolder facetHolder) { - val executionPublishingFacet = facetHolder.getFacet(ExecutionPublishingFacet.class); - return executionPublishingFacet!=null; + val facet = facetHolder.getFacet(ExecutionPublishingFacet.class); + return facet != null && facet.isEnabled(); } + boolean isEnabled(); } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetAbstract.java index c53a1312ee..0623f9d36d 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetAbstract.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetAbstract.java @@ -26,7 +26,7 @@ public abstract class ExecutionPublishingFacetAbstract extends FacetAbstract implements ExecutionPublishingFacet { - private static final Class<? extends Facet> type() { + private static Class<? extends Facet> type() { return ExecutionPublishingFacet.class; } 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 new file mode 100644 index 0000000000..cf84dca10c --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForActionAnnotation.java @@ -0,0 +1,124 @@ +/* + * 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.core.metamodel.facets.members.publish.execution; + +import java.util.Optional; + +import org.apache.causeway.applib.annotation.Action; +import org.apache.causeway.applib.annotation.Publishing; +import org.apache.causeway.commons.internal.base._Optionals; +import org.apache.causeway.core.config.CausewayConfiguration; +import org.apache.causeway.core.config.metamodel.facets.ActionConfigOptions; +import org.apache.causeway.core.metamodel.facetapi.FacetHolder; +import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacet; + +import lombok.val; + +public abstract class ExecutionPublishingFacetForActionAnnotation extends ExecutionPublishingFacetAbstract { + + static class Enabled extends ExecutionPublishingFacetForActionAnnotation { + Enabled(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return true; + } + } + + static class Disabled extends ExecutionPublishingFacetForActionAnnotation { + Disabled(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return false; + } + } + + public static Optional<ExecutionPublishingFacet> create( + final Optional<Action> actionsIfAny, + final CausewayConfiguration configuration, + final FacetHolder holder) { + + val publishingPolicy = ActionConfigOptions.actionExecutionPublishingPolicy(configuration); + + return _Optionals.orNullable( + + actionsIfAny + .map(Action::executionPublishing) + .filter(publishing -> publishing != Publishing.NOT_SPECIFIED) + .<ExecutionPublishingFacet>map(publishing -> { + switch (publishing) { + case AS_CONFIGURED: + switch (publishingPolicy) { + case NONE: + return new ExecutionPublishingFacetForActionAnnotationAsConfigured.None(holder); + case IGNORE_QUERY_ONLY: + case IGNORE_SAFE: + return hasSafeSemantics(holder) + ? new ExecutionPublishingFacetForActionAnnotationAsConfigured.IgnoreSafe(holder) + : new ExecutionPublishingFacetForActionAnnotationAsConfigured.IgnoreSafeYetNot(holder); + case ALL: + return new ExecutionPublishingFacetForActionAnnotationAsConfigured.All(holder); + default: + throw new IllegalStateException(String.format("configured executionPublishing policy '%s' not recognised", publishingPolicy)); + } + case DISABLED: + return new ExecutionPublishingFacetForActionAnnotation.Disabled(holder); + case ENABLED: + return new ExecutionPublishingFacetForActionAnnotation.Enabled(holder); + default: + throw new IllegalStateException(String.format("executionPublishing '%s' not recognised", publishing)); + } + }) + , + () -> { + // if not specified + switch (publishingPolicy) { + case NONE: + return new ExecutionPublishingFacetForActionFromConfiguration.None(holder); + case IGNORE_QUERY_ONLY: + case IGNORE_SAFE: + return hasSafeSemantics(holder) + ? new ExecutionPublishingFacetForActionFromConfiguration.IgnoreSafe(holder) + : new ExecutionPublishingFacetForActionFromConfiguration.IgnoreSafeYetNot(holder); + case ALL: + return new ExecutionPublishingFacetForActionFromConfiguration.All(holder); + default: + throw new IllegalStateException(String.format("configured executionPublishing policy '%s' not recognised", publishingPolicy)); + } + }); + } + + 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(); + } + + ExecutionPublishingFacetForActionAnnotation(final FacetHolder holder) { + super(holder); + } + +} diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForActionAnnotationAsConfigured.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForActionAnnotationAsConfigured.java new file mode 100644 index 0000000000..c5c76ea074 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForActionAnnotationAsConfigured.java @@ -0,0 +1,75 @@ +/* + * 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.core.metamodel.facets.members.publish.execution; + +import org.apache.causeway.core.metamodel.facetapi.FacetHolder; + +public abstract class ExecutionPublishingFacetForActionAnnotationAsConfigured +extends ExecutionPublishingFacetForActionAnnotation { + + static class All extends ExecutionPublishingFacetForActionAnnotationAsConfigured { + All(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return true; + } + } + + static class None extends ExecutionPublishingFacetForActionAnnotationAsConfigured { + None(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return false; + } + } + + static class IgnoreSafe extends ExecutionPublishingFacetForActionAnnotationAsConfigured { + IgnoreSafe(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return false; + } + } + + static class IgnoreSafeYetNot extends ExecutionPublishingFacetForActionAnnotationAsConfigured { + IgnoreSafeYetNot(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return true; + } + } + + + public ExecutionPublishingFacetForActionAnnotationAsConfigured(final FacetHolder holder) { + super(holder); + } + +} diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForActionFromConfiguration.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForActionFromConfiguration.java new file mode 100644 index 0000000000..cdc723b4ae --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForActionFromConfiguration.java @@ -0,0 +1,78 @@ +/* + * 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.core.metamodel.facets.members.publish.execution; + +import org.apache.causeway.core.metamodel.facetapi.FacetHolder; + +public abstract class ExecutionPublishingFacetForActionFromConfiguration +extends ExecutionPublishingFacetAbstract { + + static class All extends ExecutionPublishingFacetForActionFromConfiguration { + + All(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return true; + } + } + + static class None extends ExecutionPublishingFacetForActionFromConfiguration { + + None(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return false; + } + } + + static class IgnoreSafe extends ExecutionPublishingFacetForActionFromConfiguration { + + IgnoreSafe(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return false; + } + } + + static class IgnoreSafeYetNot extends ExecutionPublishingFacetForActionFromConfiguration { + + IgnoreSafeYetNot(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return true; + } + } + + public ExecutionPublishingFacetForActionFromConfiguration(final FacetHolder holder) { + super(holder); + } + +} diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingPropertyFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotation.java similarity index 51% rename from core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingPropertyFacetForPropertyAnnotation.java rename to core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotation.java index 91ea71be6b..a6af7734f4 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingPropertyFacetForPropertyAnnotation.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotation.java @@ -29,9 +29,31 @@ import org.apache.causeway.core.metamodel.facetapi.FacetHolder; import lombok.val; -public class ExecutionPublishingPropertyFacetForPropertyAnnotation +public abstract class ExecutionPublishingFacetForPropertyAnnotation extends ExecutionPublishingFacetAbstract { + static class Enabled extends ExecutionPublishingFacetForPropertyAnnotation { + Enabled(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return true; + } + } + + static class Disabled extends ExecutionPublishingFacetForPropertyAnnotation { + Disabled(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return false; + } + } + public static Optional<ExecutionPublishingFacet> create( final Optional<Property> propertyIfAny, final CausewayConfiguration configuration, @@ -47,40 +69,39 @@ extends ExecutionPublishingFacetAbstract { .map(publishing -> { switch (publishing) { - case AS_CONFIGURED: - switch (publishingPolicy) { - case NONE: - return null; + case AS_CONFIGURED: + switch (publishingPolicy) { + case NONE: + return new ExecutionPublishingFacetForPropertyAnnotationAsConfigured.None(holder); + case ALL: + return new ExecutionPublishingFacetForPropertyAnnotationAsConfigured.All(holder); + default: + throw new IllegalStateException(String.format("configured publishingPolicy '%s' not recognised", publishingPolicy)); + } + case DISABLED: + return new ExecutionPublishingFacetForPropertyAnnotation.Disabled(holder); + case ENABLED: + return new ExecutionPublishingFacetForPropertyAnnotation.Enabled(holder); default: - return (ExecutionPublishingFacet) - new ExecutionPublishingPropertyFacetForPropertyAnnotationAsConfigured(holder); - } - case DISABLED: - return null; - case ENABLED: - return new ExecutionPublishingPropertyFacetForPropertyAnnotation(holder); - default: + throw new IllegalStateException(String.format("executionPublishing '%s' not recognised", publishing)); } - return null; - }) - , - + // if not specified () -> { switch (publishingPolicy) { - case NONE: - return null; - default: - return new ExecutionPublishingPropertyFacetFromConfiguration(holder); + case NONE: + return new ExecutionPublishingFacetForPropertyFromConfiguration.None(holder); + case ALL: + return new ExecutionPublishingFacetForPropertyFromConfiguration.All(holder); + default: + throw new IllegalStateException(String.format("configured publishingPolicy '%s' not recognised", publishingPolicy)); } } - ); - } - public ExecutionPublishingPropertyFacetForPropertyAnnotation(final FacetHolder holder) { + public ExecutionPublishingFacetForPropertyAnnotation(final FacetHolder holder) { super(holder); } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingActionFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotationAsConfigured.java similarity index 57% rename from core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingActionFacetFromConfiguration.java rename to core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotationAsConfigured.java index 56b0fa5b52..5256119dc5 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingActionFacetFromConfiguration.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotationAsConfigured.java @@ -20,12 +20,32 @@ package org.apache.causeway.core.metamodel.facets.members.publish.execution; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; -public class ExecutionPublishingActionFacetFromConfiguration -extends ExecutionPublishingFacetAbstract { +public abstract class ExecutionPublishingFacetForPropertyAnnotationAsConfigured +extends ExecutionPublishingFacetForPropertyAnnotation { - public ExecutionPublishingActionFacetFromConfiguration( - final FacetHolder holder) { - super(holder); + static class All extends ExecutionPublishingFacetForPropertyAnnotationAsConfigured { + All(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return true; + } } + static class None extends ExecutionPublishingFacetForPropertyAnnotationAsConfigured { + None(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return false; + } + } + + public ExecutionPublishingFacetForPropertyAnnotationAsConfigured(final FacetHolder holder) { + super(holder); + } } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingPropertyFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyFromConfiguration.java similarity index 54% rename from core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingPropertyFacetFromConfiguration.java rename to core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyFromConfiguration.java index 06726b5dd2..e31b71b026 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingPropertyFacetFromConfiguration.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyFromConfiguration.java @@ -18,12 +18,38 @@ */ package org.apache.causeway.core.metamodel.facets.members.publish.execution; +import org.apache.causeway.applib.services.inject.ServiceInjector; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; +import org.apache.causeway.core.metamodel.facets.members.publish.command.CommandPublishingFacetForPropertyFromConfiguration; -public class ExecutionPublishingPropertyFacetFromConfiguration +public abstract class ExecutionPublishingFacetForPropertyFromConfiguration extends ExecutionPublishingFacetAbstract { - public ExecutionPublishingPropertyFacetFromConfiguration(final FacetHolder holder) { + static class All extends ExecutionPublishingFacetForPropertyFromConfiguration { + + All(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return true; + } + } + + static class None extends ExecutionPublishingFacetForPropertyFromConfiguration { + + None(FacetHolder holder) { + super(holder); + } + + @Override + public boolean isEnabled() { + return false; + } + } + + public ExecutionPublishingFacetForPropertyFromConfiguration(final FacetHolder holder) { super(holder); } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingPropertyFacetForPropertyAnnotationAsConfigured.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingPropertyFacetForPropertyAnnotationAsConfigured.java deleted file mode 100644 index 0a1097cfcd..0000000000 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingPropertyFacetForPropertyAnnotationAsConfigured.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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.core.metamodel.facets.members.publish.execution; - -import org.apache.causeway.core.metamodel.facetapi.FacetHolder; - -public class ExecutionPublishingPropertyFacetForPropertyAnnotationAsConfigured -extends ExecutionPublishingPropertyFacetForPropertyAnnotation { - - public ExecutionPublishingPropertyFacetForPropertyAnnotationAsConfigured(final FacetHolder holder) { - super(holder); - } -} diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java index e33c6c360d..d362da3316 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java @@ -33,7 +33,7 @@ import org.apache.causeway.core.metamodel.facets.FacetedMethod; 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.members.publish.command.CommandPublishingFacetForPropertyAnnotation; -import org.apache.causeway.core.metamodel.facets.members.publish.execution.ExecutionPublishingPropertyFacetForPropertyAnnotation; +import org.apache.causeway.core.metamodel.facets.members.publish.execution.ExecutionPublishingFacetForPropertyAnnotation; import org.apache.causeway.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet; import org.apache.causeway.core.metamodel.facets.properties.projection.ProjectingFacetFromPropertyAnnotation; import org.apache.causeway.core.metamodel.facets.properties.property.disabled.DisabledFacetForPropertyAnnotation; @@ -218,7 +218,7 @@ extends FacetFactoryAbstract { // check for @Property(executionPublishing=...) addFacetIfPresent( - ExecutionPublishingPropertyFacetForPropertyAnnotation + ExecutionPublishingFacetForPropertyAnnotation .create(propertyIfAny, getConfiguration(), holder)); } diff --git a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_executionPublishing.java b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_executionPublishing.java index 7d8b6dfdf0..ca0c5ef886 100644 --- a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_executionPublishing.java +++ b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_executionPublishing.java @@ -32,8 +32,8 @@ import org.apache.causeway.core.config.metamodel.facets.ActionConfigOptions; import org.apache.causeway.core.metamodel.facetapi.Facet; import org.apache.causeway.core.metamodel.facets.FacetFactory.ProcessMethodContext; import org.apache.causeway.core.metamodel.facets.actions.semantics.ActionSemanticsFacetAbstract; -import org.apache.causeway.core.metamodel.facets.members.publish.execution.ExecutionPublishingActionFacetForActionAnnotation; -import org.apache.causeway.core.metamodel.facets.members.publish.execution.ExecutionPublishingActionFacetFromConfiguration; +import org.apache.causeway.core.metamodel.facets.members.publish.execution.ExecutionPublishingFacetForActionAnnotation; +import org.apache.causeway.core.metamodel.facets.members.publish.execution.ExecutionPublishingFacetForActionFromConfiguration; import org.apache.causeway.core.metamodel.facets.members.publish.execution.ExecutionPublishingFacet; import lombok.val; @@ -82,7 +82,7 @@ extends ActionAnnotationFacetFactoryTest { // then final Facet facet = facetedMethod.getFacet(ExecutionPublishingFacet.class); assertNotNull(facet); - assertTrue(facet instanceof ExecutionPublishingActionFacetFromConfiguration); + assertTrue(facet instanceof ExecutionPublishingFacetForActionFromConfiguration); }); } @@ -123,7 +123,7 @@ extends ActionAnnotationFacetFactoryTest { // then final Facet facet = facetedMethod.getFacet(ExecutionPublishingFacet.class); assertNotNull(facet); - assertTrue(facet instanceof ExecutionPublishingActionFacetFromConfiguration); + assertTrue(facet instanceof ExecutionPublishingFacetForActionFromConfiguration); }); } @@ -163,7 +163,7 @@ extends ActionAnnotationFacetFactoryTest { // then final Facet facet = facetedMethod.getFacet(ExecutionPublishingFacet.class); assertNotNull(facet); - final ExecutionPublishingActionFacetForActionAnnotation facetImpl = (ExecutionPublishingActionFacetForActionAnnotation) facet; + final ExecutionPublishingFacetForActionAnnotation facetImpl = (ExecutionPublishingFacetForActionAnnotation) facet; _Blackhole.consume(facetImpl); assertNoMethodsRemoved(); }); @@ -218,7 +218,7 @@ extends ActionAnnotationFacetFactoryTest { // then final Facet facet = facetedMethod.getFacet(ExecutionPublishingFacet.class); assertNotNull(facet); - assertTrue(facet instanceof ExecutionPublishingActionFacetForActionAnnotation); + assertTrue(facet instanceof ExecutionPublishingFacetForActionAnnotation); assertNoMethodsRemoved(); }); } @@ -239,7 +239,7 @@ extends ActionAnnotationFacetFactoryTest { // then final Facet facet = facetedMethod.getFacet(ExecutionPublishingFacet.class); assertNotNull(facet); - assertTrue(facet instanceof ExecutionPublishingActionFacetForActionAnnotation); + assertTrue(facet instanceof ExecutionPublishingFacetForActionAnnotation); }); } diff --git a/testing/fixtures/applib/src/main/java/org/apache/causeway/testing/fixtures/applib/fixturescripts/FixtureResult.columnOrder.fallback.txt b/testing/fixtures/applib/src/main/java/org/apache/causeway/testing/fixtures/applib/fixturescripts/FixtureResult.columnOrder.fallback.txt new file mode 100644 index 0000000000..9bf5dff4b7 --- /dev/null +++ b/testing/fixtures/applib/src/main/java/org/apache/causeway/testing/fixtures/applib/fixturescripts/FixtureResult.columnOrder.fallback.txt @@ -0,0 +1,5 @@ +object +fixtureScriptClassName +logicalTypeName +objectIdentifier +className
