You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2017/10/03 12:02:48 UTC

[isis] branch dev/2.0.0/ISIS-1742-remove-deprecations updated: ISIS-1742: deletes @ActionSemantics annotation, replaced ActionSemantics.Of enum with SemanticsOf enum

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

danhaywood pushed a commit to branch dev/2.0.0/ISIS-1742-remove-deprecations
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/dev/2.0.0/ISIS-1742-remove-deprecations by this push:
     new bc3df4c  ISIS-1742: deletes @ActionSemantics annotation, replaced ActionSemantics.Of enum with SemanticsOf enum
bc3df4c is described below

commit bc3df4c95537fd9308fac986c50be138e30bfe13
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Oct 3 15:02:33 2017 +0300

    ISIS-1742: deletes @ActionSemantics annotation, replaced ActionSemantics.Of enum with SemanticsOf enum
---
 .../isis/applib/annotation/ActionSemantics.java    | 141 ---------------------
 .../apache/isis/applib/annotation/SemanticsOf.java |  25 ----
 .../services/eventbus/ActionDomainEvent.java       |   9 +-
 .../core/metamodel/adapter/mgr/AdapterManager.java |   4 +-
 .../action/ActionAnnotationFacetFactory.java       |  11 --
 ...ctionSemanticsFacetFallbackToNonIdempotent.java |   4 +-
 .../ActionSemanticsFacetForActionAnnotation.java   |   5 +-
 ...SemanticsFacetForActionSemanticsAnnotation.java |  50 --------
 ...tionSemanticsFacetFromIdempotentAnnotation.java |   4 +-
 ...ctionSemanticsFacetFromQueryOnlyAnnotation.java |   4 +-
 .../actions/semantics/ActionSemanticsFacet.java    |   4 +-
 .../semantics/ActionSemanticsFacetAbstract.java    |   7 +-
 .../ApplicationFeatureRepositoryDefault.java       |   2 +-
 .../services/swagger/internal/Generation.java      |  10 +-
 .../core/metamodel/spec/feature/ObjectAction.java  |   5 +-
 .../specloader/specimpl/ObjectActionDefault.java   |   6 +-
 .../action/ActionAnnotationFacetFactoryTest.java   |  43 +++----
 ...otationFacetFactoryTest_forActionSemantics.java |  65 ----------
 .../ApplicationFeatureRepositoryDefaultTest.java   |   8 +-
 .../rendering/domainobjects/InvokeKeys.java        |  14 +-
 .../rendering/domainobjects/MemberType.java        |   1 -
 .../domainobjects/ObjectActionReprRenderer.java    |   6 +-
 .../server/resources/DomainResourceHelper.java     |  10 +-
 .../viewer/wicket/model/links/LinkAndLabel.java    |   5 +-
 .../wicket/model/mementos/ActionMemento.java       |   4 +-
 .../actionlink/ActionLinkPanelFactory.java         |   4 +-
 .../components/actions/ActionParametersForm.java   |   4 +-
 27 files changed, 73 insertions(+), 382 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionSemantics.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionSemantics.java
deleted file mode 100644
index edcaade..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionSemantics.java
+++ /dev/null
@@ -1,141 +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.isis.applib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @deprecated - see {@link Action#semantics()}.
- */
-@Deprecated
-@Inherited
-@Target({ ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ActionSemantics {
-
-    /**
-     * @deprecated - see {@link SemanticsOf}
-     */
-    @Deprecated
-    public enum Of {
-        /**
-         * @deprecated - see {@link SemanticsOf#SAFE_AND_REQUEST_CACHEABLE}
-         */
-        @Deprecated
-        SAFE_AND_REQUEST_CACHEABLE,
-        /**
-         * @deprecated - see {@link SemanticsOf#SAFE}
-         */
-        @Deprecated
-        SAFE,
-        /**
-         * @deprecated - see {@link SemanticsOf#IDEMPOTENT}
-         */
-        @Deprecated
-        IDEMPOTENT,
-        /**
-         * @deprecated - see {@link SemanticsOf#NON_IDEMPOTENT}
-         */
-        @Deprecated
-        NON_IDEMPOTENT,
-        /**
-         * @deprecated - see {@link SemanticsOf#IDEMPOTENT_ARE_YOU_SURE}
-         */
-        @Deprecated
-        IDEMPOTENT_ARE_YOU_SURE,
-        /**
-         * @deprecated - see {@link SemanticsOf#NON_IDEMPOTENT_ARE_YOU_SURE}
-         */
-        @Deprecated
-        NON_IDEMPOTENT_ARE_YOU_SURE;
-
-        /**
-         * @deprecated - see {@link SemanticsOf#getFriendlyName()}
-         */
-        @Deprecated
-        public String getFriendlyName() {
-            return SemanticsOf.from(this).getFriendlyName();
-            //return Enums.getFriendlyNameOf(this);
-        }
-
-        /**
-         * @deprecated - see {@link SemanticsOf#getCamelCaseName()}
-         */
-        @Deprecated
-        public String getCamelCaseName() {
-            return SemanticsOf.from(this).getCamelCaseName();
-        }
-
-        /**
-         * Any of {@link #SAFE}, {@link #SAFE_AND_REQUEST_CACHEABLE} or (obviously) {@link #IDEMPOTENT}.
-         *
-         * @deprecated - see {@link SemanticsOf#isIdempotentInNature()}
-         */
-        @Deprecated
-        public boolean isIdempotentInNature() {
-            return SemanticsOf.from(this).isIdempotentInNature();
-        }
-
-        /**
-         * Either of {@link #SAFE} or {@link #SAFE_AND_REQUEST_CACHEABLE}.
-         *
-         * @deprecated - see {@link SemanticsOf#isSafeInNature()}.
-         */
-        @Deprecated
-        public boolean isSafeInNature() {
-            return SemanticsOf.from(this).isSafeInNature();
-        }
-
-        /**
-         * @deprecated - see {@link #isSafeInNature()} (avoid any ambiguity)
-         */
-        @Deprecated
-        public boolean isSafe() {
-            return isSafeInNature();
-        }
-
-        /**
-         * @deprecated - see {@link SemanticsOf#isSafeInNature()}.
-         */
-        @Deprecated
-        public boolean isSafeAndRequestCacheable() {
-            return SemanticsOf.from(this).isSafeAndRequestCacheable();
-        }
-
-        /**
-         * @deprecated - see {@link SemanticsOf#isAreYouSure()}.
-         */
-        @Deprecated
-        public boolean isAreYouSure() {
-            return SemanticsOf.from(this).isAreYouSure();
-        }
-    }
-
-    /**
-     * @deprecated - use {@link Action#semantics()} instead.
-     */
-    @Deprecated
-    Of value() default Of.NON_IDEMPOTENT;
-    
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/SemanticsOf.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/SemanticsOf.java
index 1fc8ce0..e834736 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/SemanticsOf.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/SemanticsOf.java
@@ -106,29 +106,4 @@ public enum SemanticsOf {
         return this == IDEMPOTENT_ARE_YOU_SURE || this == NON_IDEMPOTENT_ARE_YOU_SURE;
     }
 
-    @Deprecated
-    public static ActionSemantics.Of from(final SemanticsOf semantics) {
-        if(semantics == null) return null;
-        if(semantics == SAFE_AND_REQUEST_CACHEABLE) return ActionSemantics.Of.SAFE_AND_REQUEST_CACHEABLE;
-        if(semantics == SAFE) return ActionSemantics.Of.SAFE;
-        if(semantics == IDEMPOTENT) return ActionSemantics.Of.IDEMPOTENT;
-        if(semantics == IDEMPOTENT_ARE_YOU_SURE) return ActionSemantics.Of.IDEMPOTENT_ARE_YOU_SURE;
-        if(semantics == NON_IDEMPOTENT) return ActionSemantics.Of.NON_IDEMPOTENT;
-        if(semantics == NON_IDEMPOTENT_ARE_YOU_SURE) return ActionSemantics.Of.NON_IDEMPOTENT_ARE_YOU_SURE;
-        // shouldn't happen
-        throw new IllegalArgumentException("Unrecognized of: " + semantics);
-    }
-
-    @Deprecated
-    public static SemanticsOf from(final ActionSemantics.Of semantics) {
-        if(semantics == null) return null;
-        if(semantics == ActionSemantics.Of.SAFE_AND_REQUEST_CACHEABLE) return SAFE_AND_REQUEST_CACHEABLE;
-        if(semantics == ActionSemantics.Of.SAFE) return SAFE;
-        if(semantics == ActionSemantics.Of.IDEMPOTENT) return IDEMPOTENT;
-        if(semantics == ActionSemantics.Of.IDEMPOTENT_ARE_YOU_SURE) return IDEMPOTENT_ARE_YOU_SURE;
-        if(semantics == ActionSemantics.Of.NON_IDEMPOTENT) return NON_IDEMPOTENT;
-        if(semantics == ActionSemantics.Of.NON_IDEMPOTENT_ARE_YOU_SURE) return NON_IDEMPOTENT_ARE_YOU_SURE;
-        // shouldn't happen
-        throw new IllegalArgumentException("Unrecognized semantics: " + semantics);
-    }
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/ActionDomainEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/ActionDomainEvent.java
index 1e2f117..9ce00ca 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/ActionDomainEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/ActionDomainEvent.java
@@ -20,7 +20,6 @@ package org.apache.isis.applib.services.eventbus;
 
 import java.util.List;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.applib.services.command.CommandContext;
@@ -99,23 +98,23 @@ public abstract class ActionDomainEvent<S> extends AbstractDomainEvent<S> {
 
     //region > actionSemantics
     public SemanticsOf getSemantics() {
-        return SemanticsOf.from(actionSemantics);
+        return actionSemantics;
     }
 
-    private ActionSemantics.Of actionSemantics;
+    private SemanticsOf actionSemantics;
 
     /**
      * @deprecated - use {@link #getSemantics()} instead.
      */
     @Deprecated
-    public ActionSemantics.Of getActionSemantics() {
+    public SemanticsOf getActionSemantics() {
         return actionSemantics;
     }
 
     /**
      * Not API - set by the framework.
      */
-    public void setActionSemantics(ActionSemantics.Of actionSemantics) {
+    public void setActionSemantics(SemanticsOf actionSemantics) {
         this.actionSemantics = actionSemantics;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
index ffcc8c8..4cdcb7d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
@@ -21,8 +21,8 @@ package org.apache.isis.core.metamodel.adapter.mgr;
 
 import java.util.concurrent.Callable;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
 import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
@@ -51,7 +51,7 @@ public interface AdapterManager extends AdapterManagerBase {
             return this == CHECK;
         }
 
-        public static ConcurrencyChecking concurrencyCheckingFor(ActionSemantics.Of actionSemantics) {
+        public static ConcurrencyChecking concurrencyCheckingFor(SemanticsOf actionSemantics) {
             return actionSemantics.isSafeInNature()
                     ? ConcurrencyChecking.NO_CHECK
                     : ConcurrencyChecking.CHECK;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index 14e650c..64282df 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -22,7 +22,6 @@ package org.apache.isis.core.metamodel.facets.actions.action;
 import java.lang.reflect.Method;
 
 import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionSemantics;
 import org.apache.isis.applib.annotation.Bulk;
 import org.apache.isis.applib.annotation.Command;
 import org.apache.isis.applib.annotation.Disabled;
@@ -61,7 +60,6 @@ import org.apache.isis.core.metamodel.facets.actions.action.prototype.PrototypeF
 import org.apache.isis.core.metamodel.facets.actions.action.publishing.PublishedActionFacetForActionAnnotation;
 import org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent;
 import org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation;
-import org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionSemanticsAnnotation;
 import org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFromIdempotentAnnotation;
 import org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFromQueryOnlyAnnotation;
 import org.apache.isis.core.metamodel.facets.actions.action.typeof.TypeOfFacetForActionAnnotation;
@@ -83,7 +81,6 @@ import org.apache.isis.core.metamodel.util.EventUtil;
 public class ActionAnnotationFacetFactory extends FacetFactoryAbstract
             implements MetaModelValidatorRefiner {
 
-    private final MetaModelValidatorForDeprecatedAnnotation actionSemanticsValidator = new MetaModelValidatorForDeprecatedAnnotation(ActionSemantics.class);
     private final MetaModelValidatorForDeprecatedAnnotation bulkValidator = new MetaModelValidatorForDeprecatedAnnotation(Bulk.class);
     private final MetaModelValidatorForDeprecatedAnnotation commandValidator = new MetaModelValidatorForDeprecatedAnnotation(Command.class);
     private final MetaModelValidatorForDeprecatedAnnotation queryOnlyValidator = new MetaModelValidatorForDeprecatedAnnotation(QueryOnly.class);
@@ -256,12 +253,6 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract
             facet = idempotentValidator.flagIfPresent(ActionSemanticsFacetFromIdempotentAnnotation.create(idempotent, holder), processMethodContext);
         }
 
-        // else check for the deprecated @ActionSemantics ...
-        if(facet == null) {
-            final ActionSemantics actionSemantics = Annotations.getAnnotation(method, ActionSemantics.class);
-            facet = actionSemanticsValidator.flagIfPresent(ActionSemanticsFacetForActionSemanticsAnnotation.create(actionSemantics, holder), processMethodContext);
-        }
-
         // else check for @Action(semantics=...)
         if(facet == null) {
             final Action action = Annotations.getAnnotation(method, Action.class);
@@ -401,7 +392,6 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract
 
     @Override
     public void refineMetaModelValidator(final MetaModelValidatorComposite metaModelValidator, final IsisConfiguration configuration) {
-        metaModelValidator.add(actionSemanticsValidator);
         metaModelValidator.add(bulkValidator);
         metaModelValidator.add(commandValidator);
         metaModelValidator.add(queryOnlyValidator);
@@ -420,7 +410,6 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract
         super.setServicesInjector(servicesInjector);
         final IsisConfiguration configuration = getConfiguration();
 
-        actionSemanticsValidator.setConfiguration(configuration);
         bulkValidator.setConfiguration(configuration);
         commandValidator.setConfiguration(configuration);
         queryOnlyValidator.setConfiguration(configuration);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetFallbackToNonIdempotent.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetFallbackToNonIdempotent.java
index e531504..1dadd7f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetFallbackToNonIdempotent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetFallbackToNonIdempotent.java
@@ -19,14 +19,14 @@
 
 package org.apache.isis.core.metamodel.facets.actions.action.semantics;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacetAbstract;
 
 public class ActionSemanticsFacetFallbackToNonIdempotent extends ActionSemanticsFacetAbstract {
 
     public ActionSemanticsFacetFallbackToNonIdempotent(final FacetHolder holder) {
-        super(ActionSemantics.Of.NON_IDEMPOTENT, holder);
+        super(SemanticsOf.NON_IDEMPOTENT, holder);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetForActionAnnotation.java
index 41961d3..01b1204 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetForActionAnnotation.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.actions.action.semantics;
 
 import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionSemantics.Of;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
@@ -43,10 +42,10 @@ public class ActionSemanticsFacetForActionAnnotation extends ActionSemanticsFace
         }
 
         return new ActionSemanticsFacetForActionAnnotation(
-                SemanticsOf.from(semantics), holder);
+                semantics, holder);
     }
 
-    private ActionSemanticsFacetForActionAnnotation(Of of, final FacetHolder holder) {
+    private ActionSemanticsFacetForActionAnnotation(SemanticsOf of, final FacetHolder holder) {
         super(of, holder);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetForActionSemanticsAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetForActionSemanticsAnnotation.java
deleted file mode 100644
index 8dd1be7..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetForActionSemanticsAnnotation.java
+++ /dev/null
@@ -1,50 +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.isis.core.metamodel.facets.actions.action.semantics;
-
-import org.apache.isis.applib.annotation.ActionSemantics;
-import org.apache.isis.applib.annotation.ActionSemantics.Of;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
-import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacetAbstract;
-
-/**
- * @deprecated
- */
-@Deprecated
-public class ActionSemanticsFacetForActionSemanticsAnnotation extends ActionSemanticsFacetAbstract {
-
-    public static ActionSemanticsFacet create(
-            final ActionSemantics actionSemantics,
-            final FacetHolder holder) {
-
-        if (actionSemantics == null) {
-            return null;
-        }
-
-        return new ActionSemanticsFacetForActionSemanticsAnnotation(actionSemantics.value(), holder);
-    }
-
-    public ActionSemanticsFacetForActionSemanticsAnnotation(Of of, final FacetHolder holder) {
-        super(of, holder);
-    }
-
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetFromIdempotentAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetFromIdempotentAnnotation.java
index 375374d..329bf02 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetFromIdempotentAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetFromIdempotentAnnotation.java
@@ -19,8 +19,8 @@
 
 package org.apache.isis.core.metamodel.facets.actions.action.semantics;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
 import org.apache.isis.applib.annotation.Idempotent;
+import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacetAbstract;
@@ -32,7 +32,7 @@ import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFa
 public class ActionSemanticsFacetFromIdempotentAnnotation extends ActionSemanticsFacetAbstract {
 
     private ActionSemanticsFacetFromIdempotentAnnotation(final FacetHolder holder) {
-        super(ActionSemantics.Of.IDEMPOTENT, holder);
+        super(SemanticsOf.IDEMPOTENT, holder);
     }
 
     public static ActionSemanticsFacet create(final Idempotent idempotent, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetFromQueryOnlyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetFromQueryOnlyAnnotation.java
index f52f3be..ecf9722 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetFromQueryOnlyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetFromQueryOnlyAnnotation.java
@@ -19,8 +19,8 @@
 
 package org.apache.isis.core.metamodel.facets.actions.action.semantics;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
 import org.apache.isis.applib.annotation.QueryOnly;
+import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacetAbstract;
@@ -32,7 +32,7 @@ import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFa
 public class ActionSemanticsFacetFromQueryOnlyAnnotation extends ActionSemanticsFacetAbstract {
 
     private ActionSemanticsFacetFromQueryOnlyAnnotation(final FacetHolder holder) {
-        super(ActionSemantics.Of.SAFE, holder);
+        super(SemanticsOf.SAFE, holder);
     }
 
     public static ActionSemanticsFacet create(final QueryOnly queryOnly, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/semantics/ActionSemanticsFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/semantics/ActionSemanticsFacet.java
index b3614d0..37ebc61 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/semantics/ActionSemanticsFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/semantics/ActionSemanticsFacet.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.facets.actions.semantics;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.core.metamodel.facets.SingleValueFacet;
 
 /**
@@ -28,6 +28,6 @@ import org.apache.isis.core.metamodel.facets.SingleValueFacet;
  * <p>
  * Specifically, whether it is safe, idempotent or non-idempotent.
  */
-public interface ActionSemanticsFacet extends SingleValueFacet<ActionSemantics.Of> {
+public interface ActionSemanticsFacet extends SingleValueFacet<SemanticsOf> {
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/semantics/ActionSemanticsFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/semantics/ActionSemanticsFacetAbstract.java
index fa6f05a..e4b2107 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/semantics/ActionSemanticsFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/semantics/ActionSemanticsFacetAbstract.java
@@ -19,19 +19,18 @@
 
 package org.apache.isis.core.metamodel.facets.actions.semantics;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
-import org.apache.isis.applib.annotation.ActionSemantics.Of;
+import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleValueFacetAbstract;
 
-public abstract class ActionSemanticsFacetAbstract extends SingleValueFacetAbstract<ActionSemantics.Of> implements ActionSemanticsFacet {
+public abstract class ActionSemanticsFacetAbstract extends SingleValueFacetAbstract<SemanticsOf> implements ActionSemanticsFacet {
 
     public static Class<? extends Facet> type() {
         return ActionSemanticsFacet.class;
     }
 
-    public ActionSemanticsFacetAbstract(final Of of, final FacetHolder holder) {
+    public ActionSemanticsFacetAbstract(final SemanticsOf of, final FacetHolder holder) {
         super(type(), of, holder);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
index 3f612c0..3efd4d9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
@@ -170,7 +170,7 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
         }
         for (final ObjectAction action : actions) {
             final Class<?> returnType = correspondingClassFor(action.getReturnType());
-            final SemanticsOf actionSemantics = SemanticsOf.from(action.getSemantics());
+            final SemanticsOf actionSemantics = action.getSemantics();
             final boolean contributed = action instanceof ContributeeMember;
             addedMembers = newAction(classFeatureId, action, returnType, contributed, actionSemantics) || addedMembers;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/Generation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/Generation.java
index d76dfb9..64c4aa9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/Generation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/internal/Generation.java
@@ -35,8 +35,8 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.Sets;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
 import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.swagger.SwaggerService;
 import org.apache.isis.core.commons.factory.InstanceUtil;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
@@ -45,12 +45,12 @@ import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
 import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
 import org.apache.isis.core.metamodel.services.ServiceUtil;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 import io.swagger.models.Info;
 import io.swagger.models.ModelImpl;
@@ -465,7 +465,7 @@ class Generation {
                         .produces("application/json;profile=urn:org.restfulobjects:repr-types/action-result")
                 ;
 
-        final ActionSemantics.Of semantics = serviceAction.getSemantics();
+        final SemanticsOf semantics = serviceAction.getSemantics();
         if(semantics.isSafeInNature()) {
             path.get(invokeOperation);
 
@@ -584,7 +584,7 @@ class Generation {
                         .produces("application/json;profile=urn:org.apache.isis/v1;suppress=true")
                         .produces("application/json;profile=urn:org.restfulobjects:repr-types/action-result");
 
-        final ActionSemantics.Of semantics = objectAction.getSemantics();
+        final SemanticsOf semantics = objectAction.getSemantics();
         if(semantics.isSafeInNature()) {
             path.get(invokeOperation);
 
@@ -759,7 +759,7 @@ class Generation {
 
     // unused
     static String roSpecForResponseOf(final ObjectAction action) {
-        final ActionSemantics.Of semantics = action.getSemantics();
+        final SemanticsOf semantics = action.getSemantics();
         switch (semantics) {
         case SAFE_AND_REQUEST_CACHEABLE:
         case SAFE:
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
index 6ec249d..e5ad60b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
@@ -27,7 +27,6 @@ import com.google.common.collect.Lists;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.ActionSemantics;
 import org.apache.isis.applib.annotation.Bulk;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
@@ -63,7 +62,7 @@ public interface ObjectAction extends ObjectMember {
     /**
      * The semantics of this action.
      */
-    ActionSemantics.Of getSemantics();
+    SemanticsOf getSemantics();
 
     /**
      * Returns the specification for the type of object that this action can be
@@ -225,7 +224,7 @@ public interface ObjectAction extends ObjectMember {
         }
 
         public static SemanticsOf semanticsOf(final ObjectAction objectAction) {
-        	return SemanticsOf.from(objectAction.getSemantics());
+        	return objectAction.getSemantics();
         }
         
         public static boolean isAreYouSureSemantics(final ObjectAction objectAction) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
index a0bc998..aa98518 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
@@ -31,9 +31,9 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.isis.applib.ApplicationException;
 import org.apache.isis.applib.RecoverableException;
-import org.apache.isis.applib.annotation.ActionSemantics;
 import org.apache.isis.applib.annotation.Bulk;
 import org.apache.isis.applib.annotation.InvokedOn;
+import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.filter.Filter;
 import org.apache.isis.applib.services.command.Command;
@@ -139,9 +139,9 @@ public class ObjectActionDefault extends ObjectMemberAbstract implements ObjectA
     }
 
     @Override
-    public ActionSemantics.Of getSemantics() {
+    public SemanticsOf getSemantics() {
         final ActionSemanticsFacet facet = getFacet(ActionSemanticsFacet.class);
-        return facet != null? facet.value(): ActionSemantics.Of.NON_IDEMPOTENT;
+        return facet != null? facet.value(): SemanticsOf.NON_IDEMPOTENT;
     }
 
     //endregion
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
index 6f5177c..0edd382 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.metamodel.facets.actions.action;
 
 import java.lang.reflect.Method;
 import java.util.Collection;
-import java.util.List;
 import java.util.UUID;
 
 import org.jmock.Expectations;
@@ -31,10 +30,7 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
-import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionSemantics;
-import org.apache.isis.applib.annotation.ActionSemantics.Of;
 import org.apache.isis.applib.annotation.CommandExecuteIn;
 import org.apache.isis.applib.annotation.CommandPersistence;
 import org.apache.isis.applib.annotation.CommandReification;
@@ -79,7 +75,6 @@ import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 import static org.apache.isis.core.commons.matchers.IsisMatchers.classEqualTo;
-import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
@@ -447,7 +442,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             // then
             final ActionSemanticsFacet facet = facetedMethod.getFacet(ActionSemanticsFacet.class);
             Assert.assertNotNull(facet);
-            assertThat(facet.value(), is(Of.SAFE));
+            assertThat(facet.value(), is(SemanticsOf.SAFE));
         }
 
         @Test
@@ -470,14 +465,13 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             // then
             final ActionSemanticsFacet facet = facetedMethod.getFacet(ActionSemanticsFacet.class);
             Assert.assertNotNull(facet);
-            assertThat(facet.value(), is(Of.IDEMPOTENT));
+            assertThat(facet.value(), is(SemanticsOf.IDEMPOTENT));
         }
 
         @Test
         public void whenDeprecatedAnnotationSafe() {
 
             class Customer {
-                @ActionSemantics(Of.SAFE)
                 public void someAction() {
                 }
             }
@@ -493,7 +487,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             // then
             final ActionSemanticsFacet facet = facetedMethod.getFacet(ActionSemanticsFacet.class);
             Assert.assertNotNull(facet);
-            assertThat(facet.value(), is(Of.SAFE));
+            assertThat(facet.value(), is(SemanticsOf.SAFE));
         }
 
         @Test
@@ -516,7 +510,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             // then
             final ActionSemanticsFacet facet = facetedMethod.getFacet(ActionSemanticsFacet.class);
             Assert.assertNotNull(facet);
-            assertThat(facet.value(), is(Of.SAFE));
+            assertThat(facet.value(), is(SemanticsOf.SAFE));
         }
 
         @Test
@@ -539,7 +533,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             // then
             final ActionSemanticsFacet facet = facetedMethod.getFacet(ActionSemanticsFacet.class);
             Assert.assertNotNull(facet);
-            assertThat(facet.value(), is(Of.NON_IDEMPOTENT));
+            assertThat(facet.value(), is(SemanticsOf.NON_IDEMPOTENT));
         }
 
         @Test
@@ -561,7 +555,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             // then
             final ActionSemanticsFacet facet = facetedMethod.getFacet(ActionSemanticsFacet.class);
             Assert.assertNotNull(facet);
-            assertThat(facet.value(), is(Of.NON_IDEMPOTENT));
+            assertThat(facet.value(), is(SemanticsOf.NON_IDEMPOTENT));
         }
 
 
@@ -569,7 +563,6 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
         public void whenDeprecatedActionSemanticsAndAction() {
 
             class Customer {
-                @ActionSemantics(Of.SAFE)
                 @Action(semantics = SemanticsOf.IDEMPOTENT)
                 public void someAction() {
                 }
@@ -586,7 +579,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             // then
             final ActionSemanticsFacet facet = facetedMethod.getFacet(ActionSemanticsFacet.class);
             Assert.assertNotNull(facet);
-            assertThat(facet.value(), is(Of.SAFE));
+            assertThat(facet.value(), is(SemanticsOf.SAFE));
         }
 
         @Test
@@ -594,7 +587,6 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
 
             class Customer {
                 @QueryOnly
-                @ActionSemantics(Of.IDEMPOTENT)
                 public void someAction() {
                 }
             }
@@ -610,7 +602,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             // then
             final ActionSemanticsFacet facet = facetedMethod.getFacet(ActionSemanticsFacet.class);
             Assert.assertNotNull(facet);
-            assertThat(facet.value(), is(Of.SAFE));
+            assertThat(facet.value(), is(SemanticsOf.SAFE));
         }
 
         @Test
@@ -618,7 +610,6 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
 
             class Customer {
                 @Idempotent
-                @ActionSemantics(Of.SAFE)
                 public void someAction() {
                 }
             }
@@ -634,7 +625,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             // then
             final ActionSemanticsFacet facet = facetedMethod.getFacet(ActionSemanticsFacet.class);
             Assert.assertNotNull(facet);
-            assertThat(facet.value(), is(Of.IDEMPOTENT));
+            assertThat(facet.value(), is(SemanticsOf.IDEMPOTENT));
         }
 
 
@@ -812,7 +803,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             allowingCommandConfigurationToReturn("ignoreQueryOnly");
             final Method actionMethod = findMethod(ActionAnnotationFacetFactoryTest.Customer.class, "someAction");
 
-            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(Of.SAFE, facetedMethod) {});
+            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.SAFE, facetedMethod) {});
 
             // when
             facetFactory.processCommand(new ProcessMethodContext(ActionAnnotationFacetFactoryTest.Customer.class, null, null, actionMethod, mockMethodRemover, facetedMethod));
@@ -829,7 +820,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             allowingCommandConfigurationToReturn("ignoreQueryOnly");
             final Method actionMethod = findMethod(ActionAnnotationFacetFactoryTest.Customer.class, "someAction");
 
-            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(Of.IDEMPOTENT, facetedMethod) {});
+            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.IDEMPOTENT, facetedMethod) {});
 
             // when
             facetFactory.processCommand(new ProcessMethodContext(ActionAnnotationFacetFactoryTest.Customer.class, null, null, actionMethod, mockMethodRemover, facetedMethod));
@@ -900,7 +891,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             allowingCommandConfigurationToReturn("ignoreQueryOnly");
             final Method actionMethod = findMethod(Customer.class, "someAction");
 
-            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(Of.SAFE, facetedMethod) {});
+            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.SAFE, facetedMethod) {});
 
             facetFactory.processCommand(new ProcessMethodContext(Customer.class, null, null, actionMethod, mockMethodRemover, facetedMethod));
 
@@ -925,7 +916,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             allowingCommandConfigurationToReturn("ignoreQueryOnly");
             final Method actionMethod = findMethod(Customer.class, "someAction");
 
-            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(Of.IDEMPOTENT, facetedMethod) {});
+            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.IDEMPOTENT, facetedMethod) {});
 
             // when
             facetFactory.processCommand(new ProcessMethodContext(Customer.class, null, null, actionMethod, mockMethodRemover, facetedMethod));
@@ -1077,7 +1068,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             allowingPublishingConfigurationToReturn("ignoreQueryOnly");
             final Method actionMethod = findMethod(ActionAnnotationFacetFactoryTest.Customer.class, "someAction");
 
-            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(Of.SAFE, facetedMethod) {});
+            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.SAFE, facetedMethod) {});
 
             // when
             facetFactory.processPublishing(new ProcessMethodContext(ActionAnnotationFacetFactoryTest.Customer.class, null, null, actionMethod, mockMethodRemover, facetedMethod));
@@ -1094,7 +1085,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             allowingPublishingConfigurationToReturn("ignoreQueryOnly");
             final Method actionMethod = findMethod(ActionAnnotationFacetFactoryTest.Customer.class, "someAction");
 
-            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(Of.IDEMPOTENT, facetedMethod) {});
+            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.IDEMPOTENT, facetedMethod) {});
 
             // when
             facetFactory.processPublishing(new ProcessMethodContext(ActionAnnotationFacetFactoryTest.Customer.class, null, null, actionMethod, mockMethodRemover, facetedMethod));
@@ -1164,7 +1155,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             allowingPublishingConfigurationToReturn("ignoreQueryOnly");
             final Method actionMethod = findMethod(Customer.class, "someAction");
 
-            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(Of.SAFE, facetedMethod) {});
+            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.SAFE, facetedMethod) {});
 
             facetFactory.processPublishing(new ProcessMethodContext(Customer.class, null, null, actionMethod, mockMethodRemover, facetedMethod));
 
@@ -1189,7 +1180,7 @@ public class ActionAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4
             allowingPublishingConfigurationToReturn("ignoreQueryOnly");
             final Method actionMethod = findMethod(Customer.class, "someAction");
 
-            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(Of.IDEMPOTENT, facetedMethod) {});
+            facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.IDEMPOTENT, facetedMethod) {});
 
             // when
             facetFactory.processPublishing(new ProcessMethodContext(Customer.class, null, null, actionMethod, mockMethodRemover, facetedMethod));
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_forActionSemantics.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_forActionSemantics.java
deleted file mode 100644
index a4d10aa..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_forActionSemantics.java
+++ /dev/null
@@ -1,65 +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.isis.core.metamodel.facets.actions.action;
-
-import java.lang.reflect.Method;
-import org.apache.isis.applib.annotation.ActionSemantics;
-import org.apache.isis.applib.annotation.ActionSemantics.Of;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
-import org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionSemanticsAnnotation;
-
-public class ActionAnnotationFacetFactoryTest_forActionSemantics extends AbstractFacetFactoryTest {
-
-    ActionAnnotationFacetFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new ActionAnnotationFacetFactory();
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
-    public void testSafeAnnotationPickedUp() {
-        class Customer {
-            @ActionSemantics(Of.SAFE)
-            public void someAction() {
-            }
-        }
-        final Method actionMethod = findMethod(Customer.class, "someAction");
-
-        facetFactory.processSemantics(new ProcessMethodContext(Customer.class, null, null, actionMethod, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(ActionSemanticsFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof ActionSemanticsFacetForActionSemanticsAnnotation);
-
-        assertNoMethodsRemoved();
-    }
-
-}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
index e0757c2..08abba6 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
@@ -22,7 +22,6 @@ import java.util.List;
 
 import com.google.common.collect.Lists;
 
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.hamcrest.Matchers;
 import org.jmock.Expectations;
 import org.jmock.Sequence;
@@ -34,7 +33,7 @@ import org.junit.Rule;
 import org.junit.Test;
 
 import org.apache.isis.applib.DomainObjectContainer;
-import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.factory.FactoryService;
@@ -52,6 +51,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 
 import static org.hamcrest.CoreMatchers.equalTo;
@@ -169,7 +169,7 @@ public class ApplicationFeatureRepositoryDefaultTest {
                 will(returnValue(false));
 
                 allowing(mockAct).getSemantics();
-                will(returnValue(ActionSemantics.Of.SAFE));
+                will(returnValue(SemanticsOf.SAFE));
 
                 allowing(mockActThatIsHidden).getId();
                 will(returnValue("someActionThatIsHidden"));
@@ -178,7 +178,7 @@ public class ApplicationFeatureRepositoryDefaultTest {
                 will(returnValue(true));
 
                 allowing(mockActThatIsHidden).getSemantics();
-                will(returnValue(ActionSemantics.Of.SAFE));
+                will(returnValue(SemanticsOf.SAFE));
 
                 allowing(mockServiceRegistry).getRegisteredServices();
                 will(returnValue(Lists.newArrayList()));
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/InvokeKeys.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/InvokeKeys.java
index 760c87b..2c0d0a7 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/InvokeKeys.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/InvokeKeys.java
@@ -20,22 +20,22 @@ package org.apache.isis.viewer.restfulobjects.rendering.domainobjects;
 
 import java.util.EnumMap;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.SemanticsOf;
 
 public final class InvokeKeys {
     
-    private final static EnumMap<ActionSemantics.Of, String> map = new EnumMap<ActionSemantics.Of, String>(ActionSemantics.Of.class);
+    private final static EnumMap<SemanticsOf, String> map = new EnumMap<>(SemanticsOf.class);
     static {
-        map.put(ActionSemantics.Of.SAFE_AND_REQUEST_CACHEABLE, "invokeQueryOnly");
-        map.put(ActionSemantics.Of.SAFE, "invokeQueryOnly");
-        map.put(ActionSemantics.Of.IDEMPOTENT, "invokeIdempotent");
-        map.put(ActionSemantics.Of.NON_IDEMPOTENT, "invoke");
+        map.put(SemanticsOf.SAFE_AND_REQUEST_CACHEABLE, "invokeQueryOnly");
+        map.put(SemanticsOf.SAFE, "invokeQueryOnly");
+        map.put(SemanticsOf.IDEMPOTENT, "invokeIdempotent");
+        map.put(SemanticsOf.NON_IDEMPOTENT, "invoke");
     }
     
     private InvokeKeys() {
     }
     
-    public static String getKeyFor(ActionSemantics.Of actionSemantics) {
+    public static String getKeyFor(SemanticsOf actionSemantics) {
         return map.get(actionSemantics);
     }
 }
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/MemberType.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/MemberType.java
index 06cd3f3..a478b07 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/MemberType.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/MemberType.java
@@ -20,7 +20,6 @@ package org.apache.isis.viewer.restfulobjects.rendering.domainobjects;
 
 import java.util.Map;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
 import org.apache.isis.applib.util.Enums;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacet;
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
index 436db7e..c0ac077 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectActionReprRenderer.java
@@ -23,7 +23,7 @@ import com.fasterxml.jackson.databind.node.NullNode;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
@@ -90,7 +90,7 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
         }
         final Map<String, MutatorSpec> mutators = objectMemberType.getMutators();
         
-        final ActionSemantics.Of actionSemantics = objectMember.getSemantics();
+        final SemanticsOf actionSemantics = objectMember.getSemantics();
         final String mutator = InvokeKeys.getKeyFor(actionSemantics);
         final MutatorSpec mutatorSpec = mutators.get(mutator);
 
@@ -231,7 +231,7 @@ public class ObjectActionReprRenderer extends AbstractObjectMemberReprRenderer<O
     protected void putExtensionsIsisProprietary() {
         getExtensions().mapPut("actionType", objectMember.getType().name().toLowerCase());
 
-        final ActionSemantics.Of semantics = objectMember.getSemantics();
+        final SemanticsOf semantics = objectMember.getSemantics();
         getExtensions().mapPut("actionSemantics", semantics.getCamelCaseName());
     }
 
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
index da57bcd..82b689c 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
@@ -21,7 +21,7 @@ import java.util.List;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
@@ -296,7 +296,7 @@ public class DomainResourceHelper {
      * of the result of that action.
      *
      * <p>
-     *     The action must have {@link ActionSemantics.Of#isSafeInNature()} safe/request-cacheable}  semantics
+     *     The action must have {@link SemanticsOf#isSafeInNature()} safe/request-cacheable}  semantics
      *     otherwise an error response is thrown.
      * </p>
      */
@@ -306,7 +306,7 @@ public class DomainResourceHelper {
 
         final ObjectAction action = accessHelper.getObjectActionThatIsVisibleForIntent(actionId, ObjectAdapterAccessHelper.Intent.MUTATE);
 
-        final ActionSemantics.Of actionSemantics = action.getSemantics();
+        final SemanticsOf actionSemantics = action.getSemantics();
         if (! actionSemantics.isSafeInNature()) {
             throw RestfulObjectsApplicationException.createWithMessage(RestfulResponse.HttpStatusCode.METHOD_NOT_ALLOWED, "Method not allowed; action '%s' does not have safe semantics", action.getId());
         }
@@ -320,7 +320,7 @@ public class DomainResourceHelper {
      * of the result of that action.
      *
      * <p>
-     *     The action must have {@link org.apache.isis.applib.annotation.ActionSemantics.Of#IDEMPOTENT idempotent}
+     *     The action must have {@link SemanticsOf#IDEMPOTENT idempotent}
      *     semantics otherwise an error response is thrown.
      * </p>
      */
@@ -330,7 +330,7 @@ public class DomainResourceHelper {
 
         final ObjectAction action = accessHelper.getObjectActionThatIsVisibleForIntent(actionId, ObjectAdapterAccessHelper.Intent.MUTATE);
 
-        final ActionSemantics.Of actionSemantics = action.getSemantics();
+        final SemanticsOf actionSemantics = action.getSemantics();
         if (!actionSemantics.isIdempotentInNature()) {
             throw RestfulObjectsApplicationException.createWithMessage(RestfulResponse.HttpStatusCode.METHOD_NOT_ALLOWED, "Method not allowed; action '%s' is not idempotent", action.getId());
         }
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java
index e0966d2..4f84fb8 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java
@@ -28,7 +28,6 @@ import com.google.common.collect.Lists;
 import org.apache.wicket.markup.html.link.AbstractLink;
 
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.ActionSemantics;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -62,7 +61,7 @@ public class LinkAndLabel implements Serializable {
         final CssClassFaPosition cssClassFaPosition = ObjectAction.Util.cssClassFaPositionFor(objectAction);
         final ActionLayout.Position actionLayoutPosition = ObjectAction.Util.actionLayoutPositionOf(objectAction);
         final PromptStyle promptStyle = ObjectAction.Util.promptStyleFor(objectAction);
-        final ActionSemantics.Of semantics = objectAction.getSemantics();
+        final SemanticsOf semantics = objectAction.getSemantics();
 
         return new LinkAndLabel(
                 link, name,
@@ -70,7 +69,7 @@ public class LinkAndLabel implements Serializable {
                 blobOrClob, explorationOrPrototype,
                 actionIdentifier,
                 cssClass, cssClassFa, cssClassFaPosition, actionLayoutPosition,
-                SemanticsOf.from(semantics),
+                semantics,
                 promptStyle,
                 Parameters.fromParameterCount(objectAction.getParameterCount()));
     }
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ActionMemento.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ActionMemento.java
index 1b5b949..1c3217e 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ActionMemento.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ActionMemento.java
@@ -21,7 +21,7 @@ package org.apache.isis.viewer.wicket.model.mementos;
 
 import java.io.Serializable;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
@@ -39,7 +39,7 @@ public class ActionMemento implements Serializable {
     private final ObjectSpecId owningType;
     private final ActionType actionType;
     private final String nameParmsId;
-    private final ActionSemantics.Of actionSemantics;
+    private final SemanticsOf actionSemantics;
 
     private transient ObjectAction action;
 
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanelFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanelFactory.java
index cdef5be..c7a906f 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanelFactory.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanelFactory.java
@@ -22,7 +22,7 @@ package org.apache.isis.viewer.wicket.ui.components.actionlink;
 import org.apache.wicket.Component;
 import org.apache.wicket.model.IModel;
 
-import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract;
@@ -45,7 +45,7 @@ public class ActionLinkPanelFactory extends ComponentFactoryAbstract {
             return ApplicationAdvice.DOES_NOT_APPLY;
         }
         final ActionModel actionModel = (ActionModel) model;
-        final ActionSemantics.Of semantics = actionModel.getActionMemento().getAction(actionModel.getSpecificationLoader()).getSemantics();
+        final SemanticsOf semantics = actionModel.getActionMemento().getAction(actionModel.getSpecificationLoader()).getSemantics();
         return ApplicationAdvice.appliesIf(semantics.isSafeInNature());
     }
 
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
index 44f1fc7..64ca4fe 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
@@ -39,12 +39,10 @@ import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
 import org.apache.isis.viewer.wicket.model.models.ActionArgumentModel;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
-import org.apache.isis.viewer.wicket.model.models.FormExecutor;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.scalars.PanelWithChoices;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract2;
 import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
-import org.apache.isis.viewer.wicket.ui.panels.FormExecutorDefault;
 import org.apache.isis.viewer.wicket.ui.panels.FormExecutorStrategy;
 import org.apache.isis.viewer.wicket.ui.panels.PanelUtil;
 import org.apache.isis.viewer.wicket.ui.panels.PromptFormAbstract;
@@ -120,7 +118,7 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
     private void applyAreYouSure(AjaxButton button) {
         ActionModel actionModel = getActionModel();
         final ObjectAction action = actionModel.getActionMemento().getAction(getSpecificationLoader());
-        SemanticsOf semanticsOf = SemanticsOf.from(action.getSemantics());
+        SemanticsOf semanticsOf = action.getSemantics();
 
         final ServicesInjector servicesInjector = getPersistenceSession().getServicesInjector();
 

-- 
To stop receiving notification emails like this one, please contact
['"commits@isis.apache.org" <co...@isis.apache.org>'].