You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by mg...@apache.org on 2015/01/05 08:02:27 UTC

[12/13] isis git commit: ISIS-995 Allow the label of a property to be rendered as HTML. Also, allow the label of boolean panels to be rendered on the right hand side.

ISIS-995 Allow the label of a property to be rendered as HTML. Also, allow the label of boolean panels to be rendered on the right hand side.

Add support for 'namedEscaped' attribute to @CollectionLayout, @PropertyLayout and @ParameterLayout.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/14f1047a
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/14f1047a
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/14f1047a

Branch: refs/heads/ISIS-995-namedEscaped
Commit: 14f1047aa62c0a40c31c19866db52b781c27a0f3
Parents: 6c75618
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sun Jan 4 13:54:07 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Jan 5 09:00:41 2015 +0200

----------------------------------------------------------------------
 .../scalars/primitive/BooleanPanel.java         |  5 ++++
 .../applib/annotation/CollectionLayout.java     |  7 +++++-
 .../isis/applib/annotation/LabelPosition.java   |  1 +
 .../isis/applib/annotation/ParameterLayout.java |  5 ++++
 .../isis/applib/annotation/PropertyLayout.java  |  5 ++++
 .../i18n/internal/NamedFacetWrapI18n.java       |  2 +-
 .../NamedFacetForActionLayoutAnnotation.java    |  5 ++--
 .../NamedFacetOnActionFromLayoutProperties.java | 22 +++++++++++++++---
 .../metamodel/facets/all/named/NamedFacet.java  | 13 +++++++++--
 .../facets/all/named/NamedFacetAbstract.java    | 24 ++++++++++++++++----
 .../facets/all/named/NamedFacetInferred.java    |  3 ++-
 ...NamedFacetForCollectionLayoutAnnotation.java | 10 +++++---
 ...edFacetOnCollectionFromLayoutProperties.java | 21 ++++++++++++++---
 .../facets/fallback/NamedFacetNone.java         |  2 +-
 .../annotprop/NamedFacetOnMemberAnnotation.java |  2 +-
 .../NamedFacetOnMemberFromProperties.java       | 11 +++++++--
 .../staticmethod/NamedFacetStaticMethod.java    |  2 +-
 ...edFacetForDomainServiceLayoutAnnotation.java |  2 +-
 ...medFacetForDomainObjectLayoutAnnotation.java |  2 +-
 .../annotation/NamedFacetOnTypeAnnotation.java  |  2 +-
 .../staticmethod/NamedFacetStaticMethod.java    |  2 +-
 .../NamedFacetForParameterLayoutAnnotation.java | 10 +++++---
 .../NamedFacetOnParameterAnnotation.java        |  2 +-
 .../NamedFacetForPropertyLayoutAnnotation.java  | 10 +++++---
 ...amedFacetOnPropertyFromLayoutProperties.java | 24 ++++++++++++++++----
 .../layoutmetadata/PropertyLayoutFacetRepr.java |  3 ++-
 .../NamedFacetOnStandaloneList.java             |  2 +-
 .../runtime/system/ObjectActionImplTest.java    |  8 +++++--
 .../system/ObjectMemberAbstractTest.java        | 14 ++++++++----
 29 files changed, 172 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
index ff670f9..38803e1 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
@@ -30,6 +30,7 @@ import org.apache.wicket.behavior.Behavior;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.model.Model;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
@@ -80,6 +81,10 @@ public class BooleanPanel extends ScalarPanelAbstract {
         
         final Label scalarName = new Label(ID_SCALAR_NAME, getRendering().getLabelCaption(checkBox));
         labelIfRegular.add(scalarName);
+        NamedFacet namedFacet = getModel().getFacet(NamedFacet.class);
+        if (namedFacet != null) {
+            scalarName.setEscapeModelStrings(namedFacet.escaped());
+        }
 
         final List<LinkAndLabel> entityActions = EntityActionUtil.getEntityActionLinksForAssociation(this.scalarModel, getDeploymentType());
 

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java
index 0df2ec8..ea794ed 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java
@@ -61,6 +61,11 @@ public @interface CollectionLayout {
     String named() default "";
 
     /**
+     * A flag indicating whether the value of {@linkplain #named()} should be HTML escaped or not.
+     */
+    boolean namedEscaped() default true;
+
+    /**
      * The page size for instances of this class when rendered within
      * a table.
      *
@@ -127,4 +132,4 @@ public @interface CollectionLayout {
     @SuppressWarnings("rawtypes")
     Class sortedBy() default Comparator.class;
 
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/applib/src/main/java/org/apache/isis/applib/annotation/LabelPosition.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/LabelPosition.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/LabelPosition.java
index 229806a..50d685c 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/LabelPosition.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/LabelPosition.java
@@ -27,6 +27,7 @@ package org.apache.isis.applib.annotation;
 public enum LabelPosition {
     DEFAULT,
     LEFT,
+    RIGHT,
     TOP,
     NONE
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/applib/src/main/java/org/apache/isis/applib/annotation/ParameterLayout.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/ParameterLayout.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/ParameterLayout.java
index fa37dbe..54cd96d 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/ParameterLayout.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/ParameterLayout.java
@@ -60,6 +60,11 @@ public @interface ParameterLayout {
     String named() default "";
 
     /**
+     * A flag indicating whether the value of {@linkplain #named()} should be HTML escaped or not.
+     */
+    boolean namedEscaped() default true;
+
+    /**
      * For string parameters (and properties), whether to render as a text area over multiple lines.
      */
     int multiLine() default -1;

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/applib/src/main/java/org/apache/isis/applib/annotation/PropertyLayout.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/PropertyLayout.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/PropertyLayout.java
index 2aa131c..12e556f 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/PropertyLayout.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/PropertyLayout.java
@@ -66,6 +66,11 @@ public @interface PropertyLayout {
     String named() default "";
 
     /**
+     * A flag indicating whether the value of {@linkplain #named()} should be HTML escaped or not.
+     */
+    boolean namedEscaped() default true;
+
+    /**
      * For date properties (and parameters) only, instructs the viewer that the date should be rendered as one day
      * prior to the actually stored date.
      *

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetdecorator/i18n/internal/NamedFacetWrapI18n.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetdecorator/i18n/internal/NamedFacetWrapI18n.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetdecorator/i18n/internal/NamedFacetWrapI18n.java
index 609c98f..b163150 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetdecorator/i18n/internal/NamedFacetWrapI18n.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetdecorator/i18n/internal/NamedFacetWrapI18n.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
 public class NamedFacetWrapI18n extends NamedFacetAbstract {
 
     public NamedFacetWrapI18n(final String value, final FacetHolder holder) {
-        super(value, holder);
+        super(value, /*escaped*/ true, holder);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionLayoutAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionLayoutAnnotation.java
index a01f19b..3bf2cab 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionLayoutAnnotation.java
@@ -35,8 +35,9 @@ public class NamedFacetForActionLayoutAnnotation extends NamedFacetAbstract {
         return named != null ? new NamedFacetForActionLayoutAnnotation(named, holder) : null;
     }
 
-    private NamedFacetForActionLayoutAnnotation(String value, FacetHolder holder) {
-        super(value, holder);
+    private NamedFacetForActionLayoutAnnotation(final String value, final FacetHolder holder) {
+
+        super(value, /*escaped*/ true, holder);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetOnActionFromLayoutProperties.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetOnActionFromLayoutProperties.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetOnActionFromLayoutProperties.java
index 9492f11..03e31b3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetOnActionFromLayoutProperties.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetOnActionFromLayoutProperties.java
@@ -29,11 +29,16 @@ public class NamedFacetOnActionFromLayoutProperties extends NamedFacetAbstract {
 
     public static NamedFacet create(Properties properties, FacetHolder holder) {
         final String named = named(properties);
-        return named != null? new NamedFacetOnActionFromLayoutProperties(named, holder): null;
+        final boolean namedEscaped = namedEscaped(properties);
+        return named != null? new NamedFacetOnActionFromLayoutProperties(named, namedEscaped, holder): null;
     }
 
-    private NamedFacetOnActionFromLayoutProperties(String named, FacetHolder holder) {
-        super(named, holder);
+    private NamedFacetOnActionFromLayoutProperties(
+        final String named,
+        final boolean namedEscaped,
+        final FacetHolder holder) {
+
+        super(named, namedEscaped, holder);
     }
 
     private static String named(Properties properties) {
@@ -48,4 +53,15 @@ public class NamedFacetOnActionFromLayoutProperties extends NamedFacetAbstract {
         return named;
     }
 
+    private static boolean namedEscaped(Properties properties) {
+        boolean escaped = true;
+        if(properties != null) {
+            String namedEscapedValue = Strings.emptyToNull(properties.getProperty("namedEscaped"));
+            if("false".equalsIgnoreCase(namedEscapedValue)) {
+                escaped = false;
+            }
+        }
+        return escaped;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacet.java
index 44bb1cc..f2a6c4e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacet.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.facets.all.named;
 
-import org.apache.isis.core.metamodel.facets.SingleStringValueFacet;
+import org.apache.isis.core.metamodel.facets.MultipleValueFacet;
 
 /**
  * The name of a class, a property, collection, an action or a parameter.
@@ -28,6 +28,15 @@ import org.apache.isis.core.metamodel.facets.SingleStringValueFacet;
  * In the standard Apache Isis Programming Model, corresponds to annotating the
  * member with <tt>@Named</tt>.
  */
-public interface NamedFacet extends SingleStringValueFacet {
+public interface NamedFacet extends MultipleValueFacet {
 
+    /**
+     * @return The name to use as a label for a collection, a property or a parameter
+     */
+    String value();
+
+    /**
+     * @return A flag indicating whether the label should be show as is, or should be HTML escaped
+     */
+    boolean escaped();
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacetAbstract.java
index 029fcca..1570d07 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacetAbstract.java
@@ -21,15 +21,31 @@ package org.apache.isis.core.metamodel.facets.all.named;
 
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.SingleStringValueFacetAbstract;
+import org.apache.isis.core.metamodel.facets.MultipleValueFacetAbstract;
 
-public abstract class NamedFacetAbstract extends SingleStringValueFacetAbstract implements NamedFacet {
+public abstract class NamedFacetAbstract extends MultipleValueFacetAbstract implements NamedFacet {
+
+    private final String value;
+    private final boolean escaped;
 
     public static Class<? extends Facet> type() {
         return NamedFacet.class;
     }
 
-    public NamedFacetAbstract(final String value, final FacetHolder holder) {
-        super(type(), holder, value);
+    public NamedFacetAbstract(final String value, final boolean escaped, final FacetHolder holder) {
+        super(type(), holder);
+
+        this.value = value;
+        this.escaped = escaped;
+    }
+
+    @Override
+    public String value() {
+        return value;
+    }
+
+    @Override
+    public boolean escaped() {
+        return escaped;
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacetInferred.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacetInferred.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacetInferred.java
index 1993d4c..9314378 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacetInferred.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/named/NamedFacetInferred.java
@@ -24,7 +24,8 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 public class NamedFacetInferred extends NamedFacetAbstract {
 
     public NamedFacetInferred(final String value, final FacetHolder holder) {
-        super(value, holder);
+
+        super(value, /*escaped*/ true, holder);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionLayoutAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionLayoutAnnotation.java
index 4b21538..a3b0070 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionLayoutAnnotation.java
@@ -32,11 +32,15 @@ public class NamedFacetForCollectionLayoutAnnotation extends NamedFacetAbstract
             return null;
         }
         final String named = Strings.emptyToNull(collectionLayout.named());
-        return named != null ? new NamedFacetForCollectionLayoutAnnotation(named, holder) : null;
+        return named != null ? new NamedFacetForCollectionLayoutAnnotation(named, collectionLayout.namedEscaped(), holder) : null;
     }
 
-    private NamedFacetForCollectionLayoutAnnotation(String value, FacetHolder holder) {
-        super(value, holder);
+    private NamedFacetForCollectionLayoutAnnotation(
+        final String value,
+        final boolean escaped,
+        final FacetHolder holder) {
+
+        super(value, escaped, holder);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetOnCollectionFromLayoutProperties.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetOnCollectionFromLayoutProperties.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetOnCollectionFromLayoutProperties.java
index ad2280e..80b123f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetOnCollectionFromLayoutProperties.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetOnCollectionFromLayoutProperties.java
@@ -29,11 +29,16 @@ public class NamedFacetOnCollectionFromLayoutProperties extends NamedFacetAbstra
 
     public static NamedFacet create(Properties properties, FacetHolder holder) {
         final String named = named(properties);
-        return named != null? new NamedFacetOnCollectionFromLayoutProperties(named, holder): null;
+        boolean namedEscaped = namedEscaped(properties);
+        return named != null? new NamedFacetOnCollectionFromLayoutProperties(named, namedEscaped, holder): null;
     }
 
-    private NamedFacetOnCollectionFromLayoutProperties(String named, FacetHolder holder) {
-        super(named, holder);
+    private NamedFacetOnCollectionFromLayoutProperties(
+        final String named,
+        final boolean escaped,
+        final FacetHolder holder) {
+
+        super(named, escaped, holder);
     }
 
     private static String named(Properties properties) {
@@ -48,4 +53,14 @@ public class NamedFacetOnCollectionFromLayoutProperties extends NamedFacetAbstra
         return named;
     }
 
+    private static boolean namedEscaped(final Properties properties) {
+        boolean escaped = true;
+        if(properties != null) {
+            String namedEscapedValue = Strings.emptyToNull(properties.getProperty("namedEscaped"));
+            if("false".equalsIgnoreCase(namedEscapedValue)) {
+                escaped = false;
+            }
+        }
+        return escaped;
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/NamedFacetNone.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/NamedFacetNone.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/NamedFacetNone.java
index d0536b0..86cbbf3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/NamedFacetNone.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/NamedFacetNone.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
 public class NamedFacetNone extends NamedFacetAbstract {
 
     public NamedFacetNone(final FacetHolder holder) {
-        super(null, holder);
+        super(null, /*escaped*/ true, holder);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberAnnotation.java
index 6aa73f0..91c3ca6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberAnnotation.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
 public class NamedFacetOnMemberAnnotation extends NamedFacetAbstract {
 
     public NamedFacetOnMemberAnnotation(final String value, final FacetHolder holder) {
-        super(value, holder);
+        super(value, /*escaped*/ true, holder);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFromProperties.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFromProperties.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFromProperties.java
index fac7931..20682e0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFromProperties.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFromProperties.java
@@ -20,18 +20,25 @@
 package org.apache.isis.core.metamodel.facets.members.named.annotprop;
 
 import java.util.Properties;
-
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
 
 public class NamedFacetOnMemberFromProperties extends NamedFacetAbstract {
 
     public NamedFacetOnMemberFromProperties(final Properties properties, final FacetHolder holder) {
-        super(valueFrom(properties), holder);
+        super(valueFrom(properties), namedEscapedFrom(properties), holder);
     }
 
     private static String valueFrom(Properties properties) {
         return properties.getProperty("value");
     }
 
+    private static boolean namedEscapedFrom(final Properties properties) {
+        boolean escaped = true;
+        String namedEscapedValue = properties.getProperty("namedEscaped");
+        if("false".equalsIgnoreCase(namedEscapedValue)) {
+            escaped = false;
+        }
+        return escaped;
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethod.java
index cbdf7d1..f03e98b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethod.java
@@ -32,7 +32,7 @@ public class NamedFacetStaticMethod extends NamedFacetAbstract implements Impera
     private final Method method;
 
     public NamedFacetStaticMethod(final String value, final Method method, final FacetHolder holder) {
-        super(value, holder);
+        super(value, /*escaped*/ true, holder);
         this.method = method;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java
index c764004..b769a95 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java
@@ -37,6 +37,6 @@ public class NamedFacetForDomainServiceLayoutAnnotation extends NamedFacetAbstra
     }
 
     private NamedFacetForDomainServiceLayoutAnnotation(String value, FacetHolder holder) {
-        super(value, holder);
+        super(value, /*escaped*/ true, holder);
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/layout/NamedFacetForDomainObjectLayoutAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/layout/NamedFacetForDomainObjectLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/layout/NamedFacetForDomainObjectLayoutAnnotation.java
index 474d243..10256c2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/layout/NamedFacetForDomainObjectLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/layout/NamedFacetForDomainObjectLayoutAnnotation.java
@@ -37,6 +37,6 @@ public class NamedFacetForDomainObjectLayoutAnnotation extends NamedFacetAbstrac
     }
 
     private NamedFacetForDomainObjectLayoutAnnotation(String value, FacetHolder holder) {
-        super(value, holder);
+        super(value, /*escaped*/ true, holder);
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotation.java
index 84385c7..f2d4873 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotation.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
 public class NamedFacetOnTypeAnnotation extends NamedFacetAbstract {
 
     public NamedFacetOnTypeAnnotation(final String value, final FacetHolder holder) {
-        super(value, holder);
+        super(value, /*escaped*/ true, holder);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethod.java
index 9412b81..fe420fc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethod.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
 public class NamedFacetStaticMethod extends NamedFacetAbstract {
 
     public NamedFacetStaticMethod(final String value, final FacetHolder holder) {
-        super(value, holder);
+        super(value, /*escaped*/ true, holder);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/NamedFacetForParameterLayoutAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/NamedFacetForParameterLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/NamedFacetForParameterLayoutAnnotation.java
index c8d3f25..daacce8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/NamedFacetForParameterLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/layout/NamedFacetForParameterLayoutAnnotation.java
@@ -32,11 +32,15 @@ public class NamedFacetForParameterLayoutAnnotation extends NamedFacetAbstract {
             return null;
         }
         final String named = Strings.emptyToNull(parameterLayout.named());
-        return named != null ? new NamedFacetForParameterLayoutAnnotation(named, holder) : null;
+        return named != null ? new NamedFacetForParameterLayoutAnnotation(named, parameterLayout.namedEscaped(), holder) : null;
     }
 
-    private NamedFacetForParameterLayoutAnnotation(String value, FacetHolder holder) {
-        super(value, holder);
+    private NamedFacetForParameterLayoutAnnotation(
+        final String value,
+        final boolean escaped,
+        final FacetHolder holder) {
+
+        super(value, escaped, holder);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/named/annotation/NamedFacetOnParameterAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/named/annotation/NamedFacetOnParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/named/annotation/NamedFacetOnParameterAnnotation.java
index 4de7e60..faf916e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/named/annotation/NamedFacetOnParameterAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/named/annotation/NamedFacetOnParameterAnnotation.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
 public class NamedFacetOnParameterAnnotation extends NamedFacetAbstract {
 
     public NamedFacetOnParameterAnnotation(final String value, final FacetHolder holder) {
-        super(value, holder);
+        super(value, /*escaped*/ true, holder);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/layout/NamedFacetForPropertyLayoutAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/layout/NamedFacetForPropertyLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/layout/NamedFacetForPropertyLayoutAnnotation.java
index ccdfb7e..ece1029 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/layout/NamedFacetForPropertyLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/layout/NamedFacetForPropertyLayoutAnnotation.java
@@ -32,11 +32,15 @@ public class NamedFacetForPropertyLayoutAnnotation extends NamedFacetAbstract {
             return null;
         }
         final String named = Strings.emptyToNull(propertyLayout.named());
-        return named != null ? new NamedFacetForPropertyLayoutAnnotation(named, holder) : null;
+        return named != null ? new NamedFacetForPropertyLayoutAnnotation(named, propertyLayout.namedEscaped(), holder) : null;
     }
 
-    private NamedFacetForPropertyLayoutAnnotation(String value, FacetHolder holder) {
-        super(value, holder);
+    private NamedFacetForPropertyLayoutAnnotation(
+        final String value,
+        final boolean escaped,
+        final FacetHolder holder) {
+
+        super(value, escaped, holder);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/layout/NamedFacetOnPropertyFromLayoutProperties.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/layout/NamedFacetOnPropertyFromLayoutProperties.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/layout/NamedFacetOnPropertyFromLayoutProperties.java
index 73513e4..49790d2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/layout/NamedFacetOnPropertyFromLayoutProperties.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/layout/NamedFacetOnPropertyFromLayoutProperties.java
@@ -28,12 +28,17 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
 public class NamedFacetOnPropertyFromLayoutProperties extends NamedFacetAbstract {
 
     public static NamedFacet create(Properties properties, FacetHolder holder) {
-        final String named = named(properties);
-        return named != null? new NamedFacetOnPropertyFromLayoutProperties(named, holder): null;
+        final String value = named(properties);
+        final boolean escaped = namedEscaped(properties);
+        return value != null? new NamedFacetOnPropertyFromLayoutProperties(value, escaped, holder): null;
     }
 
-    private NamedFacetOnPropertyFromLayoutProperties(String named, FacetHolder holder) {
-        super(named, holder);
+    private NamedFacetOnPropertyFromLayoutProperties(
+        final String named,
+        final boolean escaped,
+        final FacetHolder holder) {
+
+        super(named, escaped, holder);
     }
 
     private static String named(Properties properties) {
@@ -48,4 +53,15 @@ public class NamedFacetOnPropertyFromLayoutProperties extends NamedFacetAbstract
         return named;
     }
 
+    private static boolean namedEscaped(final Properties properties) {
+        boolean escaped = true;
+        if(properties != null) {
+            String namedEscapedValue = Strings.emptyToNull(properties.getProperty("namedEscaped"));
+            if("false".equalsIgnoreCase(namedEscapedValue)) {
+                escaped = false;
+            }
+        }
+        return escaped;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/PropertyLayoutFacetRepr.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/PropertyLayoutFacetRepr.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/PropertyLayoutFacetRepr.java
index 363af5d..2619428 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/PropertyLayoutFacetRepr.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/PropertyLayoutFacetRepr.java
@@ -28,7 +28,8 @@ public class PropertyLayoutFacetRepr {
     public LabelPosition labelPosition;
     public int multiLine;
     public String named;
+    public boolean namedEscaped;
     public boolean renderedAsDayBefore;
     public int typicalLength;
 
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/NamedFacetOnStandaloneList.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/NamedFacetOnStandaloneList.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/NamedFacetOnStandaloneList.java
index 2f8db6d..1c22da4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/NamedFacetOnStandaloneList.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/NamedFacetOnStandaloneList.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
 public class NamedFacetOnStandaloneList extends NamedFacetAbstract {
 
     public NamedFacetOnStandaloneList(final String value, final FacetHolder holder) {
-        super(value, holder);
+        super(value, /*escaped*/ true, holder);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java
index ba3e31c..31b93b6 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java
@@ -19,7 +19,10 @@
 
 package org.apache.isis.core.runtime.system;
 
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
 
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
@@ -81,7 +84,8 @@ public class ObjectActionImplTest {
 
     @Test
     public void testNameDefaultsToActionsMethodName() {
-        final NamedFacet facet = new NamedFacetAbstract("Reduceheadcount", mockFacetedMethod) {
+        final String name = "Reduceheadcount";
+        final NamedFacet facet = new NamedFacetAbstract(name, true, mockFacetedMethod) {
         };
         context.checking(new Expectations() {
             {
@@ -89,7 +93,7 @@ public class ObjectActionImplTest {
                 will(returnValue(facet));
             }
         });
-        assertEquals("Reduceheadcount", action.getName());
+        assertThat(action.getName(), is(equalTo(name)));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/isis/blob/14f1047a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
index 0e85b6c..5e1898d 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
@@ -19,8 +19,13 @@
 
 package org.apache.isis.core.runtime.system;
 
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.isEmptyString;
+import static org.hamcrest.Matchers.not;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
 import org.junit.Before;
@@ -78,11 +83,10 @@ public class ObjectMemberAbstractTest {
         testMember = new ObjectMemberAbstractImpl("id");
     }
 
-
     @Test
     public void testToString() throws Exception {
-        testMember.addFacet(new NamedFacetAbstract("", testMember) {});
-        assertTrue(testMember.toString().length() > 0);
+        testMember.addFacet(new NamedFacetAbstract("", true, testMember) {});
+        assertThat(testMember.toString(), not(isEmptyString()));
     }
 
     @Test
@@ -180,9 +184,9 @@ public class ObjectMemberAbstractTest {
     @Test
     public void testName() throws Exception {
         final String name = "action name";
-        testMember.addFacet(new NamedFacetAbstract(name, testMember) {
+        testMember.addFacet(new NamedFacetAbstract(name, true, testMember) {
         });
-        assertEquals(name, testMember.getName());
+        assertThat(testMember.getName(), is(equalTo(name)));
     }
 
     @Test