http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFactory.java
index 1bd5733..8d27f74 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/annotprop/NamedFacetOnMemberFactory.java
@@ -20,17 +20,24 @@
 package org.apache.isis.core.metamodel.facets.members.named.annotprop;
 
 import java.util.Properties;
-
 import org.apache.isis.applib.annotation.Named;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
+
+public class NamedFacetOnMemberFactory extends FacetFactoryAbstract implements 
ContributeeMemberFacetFactory, MetaModelValidatorRefiner, 
IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(Named.class);
 
-public class NamedFacetOnMemberFactory extends FacetFactoryAbstract implements 
ContributeeMemberFacetFactory {
 
     public NamedFacetOnMemberFactory() {
         super(FeatureType.MEMBERS);
@@ -40,7 +47,7 @@ public class NamedFacetOnMemberFactory extends 
FacetFactoryAbstract implements C
     public void process(final ProcessMethodContext processMethodContext) {
         NamedFacet namedFacet = 
createFromMetadataPropertiesIfPossible(processMethodContext);
         if(namedFacet == null) {
-            namedFacet = createFromAnnotationIfPossible(processMethodContext);
+            namedFacet = 
validator.invalidIfPresent(createFromAnnotationIfPossible(processMethodContext));
         }
         // no-op if null
         FacetUtil.addFacet(namedFacet);
@@ -66,4 +73,15 @@ public class NamedFacetOnMemberFactory extends 
FacetFactoryAbstract implements C
         final Named annotation = 
Annotations.getAnnotation(processMethodContext.getMethod(), Named.class);
         return annotation != null ? new 
NamedFacetOnMemberAnnotation(annotation.value(), 
processMethodContext.getFacetHolder()) : null;
     }
+
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethodFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethodFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethodFactory.java
index 4a953c5..6d5a8de 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethodFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/named/staticmethod/NamedFacetStaticMethodFactory.java
@@ -20,28 +20,33 @@
 package org.apache.isis.core.metamodel.facets.members.named.staticmethod;
 
 import java.lang.reflect.Method;
-
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.commons.lang.MethodExtensions;
 import org.apache.isis.core.commons.lang.StringExtensions;
 import org.apache.isis.core.metamodel.exceptions.MetaModelException;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
-import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import 
org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
+import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
 
 /**
  * Sets up a {@link NamedFacet} if a {@value MethodPrefixConstants#NAME_PREFIX}
  * -prefixed method is present.
  */
-public class NamedFacetStaticMethodFactory extends 
MethodPrefixBasedFacetFactoryAbstract {
+public class NamedFacetStaticMethodFactory extends 
MethodPrefixBasedFacetFactoryAbstract implements MetaModelValidatorRefiner, 
IsisConfigurationAware {
 
     private static final String[] PREFIXES = { 
MethodPrefixConstants.NAME_PREFIX };
 
+    private final MetaModelValidatorForDeprecatedMethodPrefix validator = new 
MetaModelValidatorForDeprecatedMethodPrefix(PREFIXES[0]);
+
     /**
      * Note that the {@link Facet}s registered are the generic ones from
      * noa-architecture (where they exist)
@@ -62,7 +67,7 @@ public class NamedFacetStaticMethodFactory extends 
MethodPrefixBasedFacetFactory
 
     }
 
-    public static void attachNamedFacetIfNamedMethodIsFound(final 
ProcessMethodContext processMethodContext) {
+    public void attachNamedFacetIfNamedMethodIsFound(final 
ProcessMethodContext processMethodContext) {
         final Method method = processMethodContext.getMethod();
         final String capitalizedName = 
StringExtensions.asJavaBaseNameStripAccessorPrefixIfRequired(method.getName());
 
@@ -77,7 +82,7 @@ public class NamedFacetStaticMethodFactory extends 
MethodPrefixBasedFacetFactory
         final String name = invokeNameMethod(nameMethod);
 
         final FacetHolder facetHolder = processMethodContext.getFacetHolder();
-        FacetUtil.addFacet(new NamedFacetStaticMethod(name, nameMethod, 
facetHolder));
+        validator.addFacet(new NamedFacetStaticMethod(name, nameMethod, 
facetHolder));
     }
 
     private static String invokeNameMethod(final Method nameMethod) {
@@ -93,4 +98,16 @@ public class NamedFacetStaticMethodFactory extends 
MethodPrefixBasedFacetFactory
         return name;
     }
 
+
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/render/annotprop/RenderFacetOrResolveFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/render/annotprop/RenderFacetOrResolveFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/render/annotprop/RenderFacetOrResolveFactory.java
index f4633d9..9164319 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/render/annotprop/RenderFacetOrResolveFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/render/annotprop/RenderFacetOrResolveFactory.java
@@ -20,18 +20,26 @@
 package org.apache.isis.core.metamodel.facets.members.render.annotprop;
 
 import java.util.Properties;
-
 import org.apache.isis.applib.annotation.Render;
+import org.apache.isis.applib.annotation.Resolve;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.members.render.RenderFacet;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 
 public class RenderFacetOrResolveFactory extends FacetFactoryAbstract
-        implements ContributeeMemberFacetFactory {
+        implements ContributeeMemberFacetFactory, MetaModelValidatorRefiner, 
IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation renderValidator = 
new MetaModelValidatorForDeprecatedAnnotation(Render.class);
+    private final MetaModelValidatorForDeprecatedAnnotation resolveValidator = 
new MetaModelValidatorForDeprecatedAnnotation(Resolve.class);
 
     public RenderFacetOrResolveFactory() {
         super(FeatureType.MEMBERS);
@@ -42,10 +50,10 @@ public class RenderFacetOrResolveFactory extends 
FacetFactoryAbstract
         
         RenderFacet renderFacet = 
createFromMetadataPropertiesIfPossible(processMethodContext);
         if(renderFacet == null) {
-            renderFacet = 
createFromRenderAnnotationIfPossible(processMethodContext);
+            renderFacet = 
renderValidator.invalidIfPresent(createFromRenderAnnotationIfPossible(processMethodContext));
         }
         if(renderFacet == null) {
-            renderFacet = 
createFromResolveAnnotationIfPossible(processMethodContext);
+            renderFacet = 
resolveValidator.invalidIfPresent(createFromResolveAnnotationIfPossible(processMethodContext));
         }
 
         // no-op if null
@@ -80,4 +88,18 @@ public class RenderFacetOrResolveFactory extends 
FacetFactoryAbstract
         Annotations.getAnnotation(processMethodContext.getMethod(), 
org.apache.isis.applib.annotation.Resolve.class);
         return resolveAnnotation == null ? null : new 
RenderFacetViaResolveAnnotation(processMethodContext.getFacetHolder(), 
resolveAnnotation.value());
     }
+
+
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(renderValidator);
+        metaModelValidator.add(resolveValidator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        renderValidator.setConfiguration(configuration);
+        resolveValidator.setConfiguration(configuration);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactory.java
index 60a079c..75ba412 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactory.java
@@ -30,9 +30,8 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorAbstract;
 import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
-import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForValidationFailures;
 
 
 public class ViewModelSemanticCheckingFacetFactory extends 
FacetFactoryAbstract implements MetaModelValidatorRefiner {
@@ -41,7 +40,7 @@ public class ViewModelSemanticCheckingFacetFactory extends 
FacetFactoryAbstract
         super(FeatureType.OBJECTS_ONLY);
     }
 
-    private final ValidationFailures failures = new ValidationFailures();
+    private final MetaModelValidatorForValidationFailures validator = new 
MetaModelValidatorForValidationFailures();
 
     @Override
     public void process(final ProcessClassContext processClassContext) {
@@ -61,7 +60,7 @@ public class ViewModelSemanticCheckingFacetFactory extends 
FacetFactoryAbstract
         final boolean annotatedWithViewModel = viewModel != null;
 
         if(implementsViewModel && implementsRecreatableDomainObject) {
-            failures.add(
+            validator.addFailure(
                     "Inconsistent view model / domain object semantics; %s 
should not implement both %s and %s interfaces (implement one or the other)",
                     cls.getName(),
                     org.apache.isis.applib.ViewModel.class.getSimpleName(),
@@ -69,17 +68,17 @@ public class ViewModelSemanticCheckingFacetFactory extends 
FacetFactoryAbstract
 
         }
         if(implementsViewModel && annotatedWithDomainObject) {
-            failures.add(
+            validator.addFailure(
                     "Inconsistent view model / domain object semantics; %1$s 
should not implement %2$s and be annotated with @%3$s (annotate with %4$s 
instead of %2$s, or implement %6s instead of %2$s)",
                     cls.getName(),
                     org.apache.isis.applib.ViewModel.class.getSimpleName(),
                     DomainObject.class.getSimpleName(),
                     ViewModel.class.getSimpleName(),
                     RecreatableDomainObject.class.getSimpleName()
-                    );
+            );
         }
         if(implementsViewModel && annotatedWithDomainObjectLayout) {
-            failures.add(
+            validator.addFailure(
                     "Inconsistent view model / domain object semantics; %1$s 
should not implement %2$s and be annotated with @%3$s (annotate with @%4$s 
instead of %3$s, or implement %5$s instead of %2$s)",
                     cls.getName(),
                     org.apache.isis.applib.ViewModel.class.getSimpleName(),
@@ -90,7 +89,7 @@ public class ViewModelSemanticCheckingFacetFactory extends 
FacetFactoryAbstract
 
 
         if(annotatedWithViewModel && implementsRecreatableDomainObject) {
-            failures.add(
+            validator.addFailure(
                     "Inconsistent view model / domain object semantics; %1$s 
should not be annotated with @%2$s but implement @%3$s (implement %4$s instead 
of %3$s, or annotate with @%5$s with nature of %6s, %7s or %8s instead of 
annotating with @%2$s)",
                     cls.getName(),
                     
org.apache.isis.applib.annotation.ViewModel.class.getSimpleName(),
@@ -103,7 +102,7 @@ public class ViewModelSemanticCheckingFacetFactory extends 
FacetFactoryAbstract
                     );
         }
         if(annotatedWithViewModel && annotatedWithDomainObject) {
-            failures.add(
+            validator.addFailure(
                     "Inconsistent view model / domain object semantics; %1$s 
should not be annotated with both @%2$s and @%3$s (annotate with one or the 
other)",
                     cls.getName(),
                     
org.apache.isis.applib.annotation.ViewModel.class.getSimpleName(),
@@ -111,7 +110,7 @@ public class ViewModelSemanticCheckingFacetFactory extends 
FacetFactoryAbstract
 
         }
         if(annotatedWithViewModel && annotatedWithDomainObjectLayout) {
-            failures.add(
+            validator.addFailure(
                     "Inconsistent view model / domain object semantics; %1$s 
should not be annotated with both @%2$s and @%3$s (annotate with @%4$s instead 
of @%3$s, or annotate with @%5$s instead of @%2$s)",
                     cls.getName(),
                     
org.apache.isis.applib.annotation.ViewModel.class.getSimpleName(),
@@ -121,7 +120,7 @@ public class ViewModelSemanticCheckingFacetFactory extends 
FacetFactoryAbstract
         }
 
         if(annotatedWithViewModelLayout && implementsRecreatableDomainObject) {
-            failures.add(
+            validator.addFailure(
                     "Inconsistent view model / domain object semantics; %1$s 
should not be annotated with @%2$s but implement @%3$s (implement %4$s instead 
of %3$s, or annotate with %5$s instead of %2$s)",
                     cls.getName(),
                     
org.apache.isis.applib.annotation.ViewModelLayout.class.getSimpleName(),
@@ -130,7 +129,7 @@ public class ViewModelSemanticCheckingFacetFactory extends 
FacetFactoryAbstract
                     DomainObjectLayout.class.getSimpleName());
         }
         if(annotatedWithViewModelLayout && annotatedWithDomainObject) {
-            failures.add(
+            validator.addFailure(
                     "Inconsistent view model / domain object semantics; %1$s 
should not be annotated with @%2$s and also be annotated with @%3$s (annotate 
with @%4$s instead of @%3$s, or instead annotate with @%5$s instead of @%2$s)",
                     cls.getName(),
                     
org.apache.isis.applib.annotation.ViewModelLayout.class.getSimpleName(),
@@ -139,7 +138,7 @@ public class ViewModelSemanticCheckingFacetFactory extends 
FacetFactoryAbstract
                     DomainObjectLayout.class.getSimpleName());
         }
         if(annotatedWithViewModelLayout && annotatedWithDomainObjectLayout) {
-            failures.add(
+            validator.addFailure(
                     "Inconsistent view model / domain object semantics; %1$s 
should not be annotated with both @%2$s and @%3$s (annotate with one or the 
other)",
                     cls.getName(),
                     
org.apache.isis.applib.annotation.ViewModel.class.getSimpleName(),
@@ -150,7 +149,7 @@ public class ViewModelSemanticCheckingFacetFactory extends 
FacetFactoryAbstract
         if(     annotatedWithDomainObject &&
                 (domainObject.nature() == Nature.NOT_SPECIFIED || 
domainObject.nature() == Nature.JDO_ENTITY) &&
                 implementsRecreatableDomainObject) {
-            failures.add(
+            validator.addFailure(
                     "Inconsistent view model / domain object semantics; %1$s 
should not be annotated with @%2$s with nature of %3$s and also implement %4$s 
(specify a nature of %5$s, %6$s or %7$s)",
                     cls.getName(),
                     DomainObject.class.getSimpleName(),
@@ -164,13 +163,7 @@ public class ViewModelSemanticCheckingFacetFactory extends 
FacetFactoryAbstract
 
     @Override
     public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
-        if(failures.occurred()) {
-            metaModelValidator.add(new MetaModelValidatorAbstract() {
-                @Override
-                public void validate(final ValidationFailures 
validationFailures) {
-                    validationFailures.addAll(failures);
-                }
-            });
-        }
+        metaModelValidator.add(validator);
     }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/actionorder/annotation/ActionOrderFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/actionorder/annotation/ActionOrderFacetAnnotationFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/actionorder/annotation/ActionOrderFacetAnnotationFactory.java
index 16eb608..3fe4642 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/actionorder/annotation/ActionOrderFacetAnnotationFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/actionorder/annotation/ActionOrderFacetAnnotationFactory.java
@@ -20,27 +20,43 @@
 package org.apache.isis.core.metamodel.facets.object.actionorder.annotation;
 
 import org.apache.isis.applib.annotation.ActionOrder;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import 
org.apache.isis.core.metamodel.facets.object.actionorder.ActionOrderFacet;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 
-public class ActionOrderFacetAnnotationFactory extends FacetFactoryAbstract {
+public class ActionOrderFacetAnnotationFactory extends FacetFactoryAbstract 
implements MetaModelValidatorRefiner, IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(ActionOrder.class);
 
     public ActionOrderFacetAnnotationFactory() {
         super(FeatureType.OBJECTS_ONLY);
     }
 
     @Override
-    public void process(final ProcessClassContext processClassContaxt) {
-        final ActionOrder annotation = 
Annotations.getAnnotation(processClassContaxt.getCls(), ActionOrder.class);
-        FacetUtil.addFacet(create(annotation, 
processClassContaxt.getFacetHolder()));
+    public void process(final ProcessClassContext processClassContext) {
+        final ActionOrder annotation = 
Annotations.getAnnotation(processClassContext.getCls(), ActionOrder.class);
+        validator.addFacet(create(annotation, 
processClassContext.getFacetHolder()));
     }
 
     private ActionOrderFacet create(final ActionOrder annotation, final 
FacetHolder facetHolder) {
         return annotation == null ? null : new 
ActionOrderFacetAnnotation(annotation.value(), facetHolder);
     }
 
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/annotation/AutoCompleteFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/annotation/AutoCompleteFacetAnnotationFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/annotation/AutoCompleteFacetAnnotationFactory.java
index 51c942e..128968d 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/annotation/AutoCompleteFacetAnnotationFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/annotation/AutoCompleteFacetAnnotationFactory.java
@@ -20,19 +20,25 @@
 package org.apache.isis.core.metamodel.facets.object.autocomplete.annotation;
 
 import org.apache.isis.applib.annotation.AutoComplete;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import 
org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 
-public class AutoCompleteFacetAnnotationFactory extends FacetFactoryAbstract 
implements AdapterManagerAware, ServicesInjectorAware, SpecificationLoaderAware 
{
+public class AutoCompleteFacetAnnotationFactory extends FacetFactoryAbstract 
implements AdapterManagerAware, ServicesInjectorAware, 
SpecificationLoaderAware, MetaModelValidatorRefiner, IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(AutoComplete.class);
 
     private AdapterManager adapterManager;
     private ServicesInjector servicesInjector;
@@ -44,7 +50,7 @@ public class AutoCompleteFacetAnnotationFactory extends 
FacetFactoryAbstract imp
     @Override
     public void process(final ProcessClassContext processClassContext) {
         final AutoComplete annotation = 
Annotations.getAnnotation(processClassContext.getCls(), AutoComplete.class);
-        FacetUtil.addFacet(create(annotation, 
processClassContext.getFacetHolder()));
+        validator.addFacet(create(annotation, 
processClassContext.getFacetHolder()));
     }
 
     private AutoCompleteFacet create(final AutoComplete annotation, final 
FacetHolder holder) {
@@ -57,6 +63,13 @@ public class AutoCompleteFacetAnnotationFactory extends 
FacetFactoryAbstract imp
     }
 
     @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    // //////////////////////////////////////
+
+    @Override
     public void setAdapterManager(AdapterManager adapterManager) {
         this.adapterManager = adapterManager;
     }
@@ -66,4 +79,9 @@ public class AutoCompleteFacetAnnotationFactory extends 
FacetFactoryAbstract imp
         this.servicesInjector = servicesInjector;
     }
 
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
index 0a81675..be9ab8a 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
@@ -20,13 +20,12 @@
 package 
org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.bookmarkable;
 
 import java.util.List;
-
 import org.apache.isis.applib.annotation.ActionSemantics.Of;
 import org.apache.isis.applib.annotation.BookmarkPolicy;
 import org.apache.isis.applib.annotation.Bookmarkable;
 import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
@@ -38,10 +37,13 @@ import 
org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting;
 import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
 
-public class BookmarkPolicyFacetViaBookmarkableAnnotationFactory extends 
FacetFactoryAbstract implements MetaModelValidatorRefiner {
+public class BookmarkPolicyFacetViaBookmarkableAnnotationFactory extends 
FacetFactoryAbstract implements  MetaModelValidatorRefiner, 
IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(Bookmarkable.class);
 
     public BookmarkPolicyFacetViaBookmarkableAnnotationFactory() {
         super(FeatureType.OBJECTS_AND_ACTIONS);
@@ -50,13 +52,13 @@ public class 
BookmarkPolicyFacetViaBookmarkableAnnotationFactory extends FacetFa
     @Override
     public void process(final ProcessClassContext processClassContext) {
         final Bookmarkable annotation = 
Annotations.getAnnotation(processClassContext.getCls(), Bookmarkable.class);
-        FacetUtil.addFacet(create(annotation, 
processClassContext.getFacetHolder()));
+        validator.addFacet(create(annotation, 
processClassContext.getFacetHolder()));
     }
 
     @Override
     public void process(final ProcessMethodContext processMethodContext) {
         final Bookmarkable annotation = 
Annotations.getAnnotation(processMethodContext.getMethod(), Bookmarkable.class);
-        FacetUtil.addFacet(create(annotation, 
processMethodContext.getFacetHolder()));
+        validator.addFacet(create(annotation, 
processMethodContext.getFacetHolder()));
     }
 
     private BookmarkPolicyFacet create(final Bookmarkable annotation, final 
FacetHolder holder) {
@@ -92,6 +94,13 @@ public class 
BookmarkPolicyFacetViaBookmarkableAnnotationFactory extends FacetFa
                 return true;
             }
         }));
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
     }
 
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/annotation/CssClassFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/annotation/CssClassFacetOnTypeAnnotationFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/annotation/CssClassFacetOnTypeAnnotationFactory.java
index e97602c..d075550 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/annotation/CssClassFacetOnTypeAnnotationFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclass/annotation/CssClassFacetOnTypeAnnotationFactory.java
@@ -20,14 +20,21 @@
 package org.apache.isis.core.metamodel.facets.object.cssclass.annotation;
 
 import org.apache.isis.applib.annotation.CssClass;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 
-public class CssClassFacetOnTypeAnnotationFactory extends FacetFactoryAbstract 
{
+public class CssClassFacetOnTypeAnnotationFactory extends FacetFactoryAbstract 
implements MetaModelValidatorRefiner, IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(CssClass.class);
 
     public CssClassFacetOnTypeAnnotationFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -36,10 +43,21 @@ public class CssClassFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract {
     @Override
     public void process(final ProcessClassContext processClassContext) {
         final CssClass annotation = 
Annotations.getAnnotation(processClassContext.getCls(), CssClass.class);
-        FacetUtil.addFacet(create(annotation, 
processClassContext.getFacetHolder()));
+        validator.addFacet(create(annotation, 
processClassContext.getFacetHolder()));
     }
 
     private static CssClassFacet create(final CssClass annotation, final 
FacetHolder holder) {
         return annotation == null ? null : new 
CssClassFacetOnTypeAnnotation(annotation, holder);
     }
+
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/annotation/CssClassFaFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/annotation/CssClassFaFacetOnTypeAnnotationFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/annotation/CssClassFaFacetOnTypeAnnotationFactory.java
index ef537c9..4ed7218 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/annotation/CssClassFaFacetOnTypeAnnotationFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/annotation/CssClassFaFacetOnTypeAnnotationFactory.java
@@ -20,14 +20,20 @@
 package org.apache.isis.core.metamodel.facets.object.cssclassfa.annotation;
 
 import org.apache.isis.applib.annotation.CssClassFa;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import 
org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 
-public class CssClassFaFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract {
+public class CssClassFaFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract implements MetaModelValidatorRefiner, 
IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(CssClassFa.class);
 
     public CssClassFaFacetOnTypeAnnotationFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -36,10 +42,21 @@ public class CssClassFaFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract
     @Override
     public void process(final ProcessClassContext processClassContext) {
         final CssClassFa annotation = 
Annotations.getAnnotation(processClassContext.getCls(), CssClassFa.class);
-        FacetUtil.addFacet(create(annotation, 
processClassContext.getFacetHolder()));
+        validator.addFacet(create(annotation, 
processClassContext.getFacetHolder()));
     }
 
     private static CssClassFaFacet create(final CssClassFa annotation, final 
FacetHolder holder) {
         return annotation == null ? null : new 
CssClassFaFacetOnTypeAnnotation(annotation, holder);
     }
+
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java
index 347e0da..f85c3bc 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java
@@ -20,14 +20,20 @@
 package org.apache.isis.core.metamodel.facets.object.describedas.annotation;
 
 import org.apache.isis.applib.annotation.DescribedAs;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 
-public class DescribedAsFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract {
+public class DescribedAsFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract implements MetaModelValidatorRefiner, 
IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(DescribedAs.class);
 
     public DescribedAsFacetOnTypeAnnotationFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -36,11 +42,21 @@ public class DescribedAsFacetOnTypeAnnotationFactory 
extends FacetFactoryAbstrac
     @Override
     public void process(final ProcessClassContext processClassContaxt) {
         final DescribedAs annotation = 
Annotations.getAnnotation(processClassContaxt.getCls(), DescribedAs.class);
-        FacetUtil.addFacet(create(annotation, 
processClassContaxt.getFacetHolder()));
+        validator.addFacet(create(annotation, 
processClassContaxt.getFacetHolder()));
     }
 
     private DescribedAsFacet create(final DescribedAs annotation, final 
FacetHolder holder) {
         return annotation == null ? null : new 
DescribedAsFacetOnTypeAnnotation(annotation.value(), holder);
     }
 
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java
index 4fb85cc..28bf9e5 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java
@@ -20,14 +20,21 @@
 package org.apache.isis.core.metamodel.facets.object.fieldorder.annotation;
 
 import org.apache.isis.applib.annotation.FieldOrder;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.fieldorder.FieldOrderFacet;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 
-public class FieldOrderFacetAnnotationFactory extends FacetFactoryAbstract {
+public class FieldOrderFacetAnnotationFactory extends FacetFactoryAbstract 
implements MetaModelValidatorRefiner, IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(FieldOrder.class);
 
     public FieldOrderFacetAnnotationFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -36,11 +43,21 @@ public class FieldOrderFacetAnnotationFactory extends 
FacetFactoryAbstract {
     @Override
     public void process(final ProcessClassContext processClassContaxt) {
         final FieldOrder annotation = 
Annotations.getAnnotation(processClassContaxt.getCls(), FieldOrder.class);
-        FacetUtil.addFacet(create(annotation, 
processClassContaxt.getFacetHolder()));
+        validator.addFacet(create(annotation, 
processClassContaxt.getFacetHolder()));
     }
 
     private FieldOrderFacet create(final FieldOrder annotation, final 
FacetHolder holder) {
         return annotation == null ? null : new 
FieldOrderFacetAnnotation(annotation.value(), holder);
     }
 
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java
index c2a0011..262c40c 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java
@@ -20,14 +20,21 @@
 package org.apache.isis.core.metamodel.facets.object.hidden.annotation;
 
 import org.apache.isis.applib.annotation.Hidden;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 
-public class HiddenFacetOnTypeAnnotationFactory extends FacetFactoryAbstract {
+public class HiddenFacetOnTypeAnnotationFactory extends FacetFactoryAbstract 
implements MetaModelValidatorRefiner, IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(Hidden.class);
 
     public HiddenFacetOnTypeAnnotationFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -36,11 +43,21 @@ public class HiddenFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract {
     @Override
     public void process(final ProcessClassContext processClassContext) {
         final Hidden annotation = 
Annotations.getAnnotation(processClassContext.getCls(), Hidden.class);
-        FacetUtil.addFacet(create(annotation, 
processClassContext.getFacetHolder()));
+        validator.addFacet(create(annotation, 
processClassContext.getFacetHolder()));
     }
 
     private static HiddenFacet create(final Hidden annotation, final 
FacetHolder holder) {
         return annotation == null ? null : new 
HiddenFacetOnTypeAnnotation(annotation.when(), holder);
     }
 
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mask/annotation/MaskFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mask/annotation/MaskFacetOnTypeAnnotationFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mask/annotation/MaskFacetOnTypeAnnotationFactory.java
index 2ae6cf2..e7ebc42 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mask/annotation/MaskFacetOnTypeAnnotationFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mask/annotation/MaskFacetOnTypeAnnotationFactory.java
@@ -20,14 +20,21 @@
 package org.apache.isis.core.metamodel.facets.object.mask.annotation;
 
 import org.apache.isis.applib.annotation.Mask;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.mask.MaskFacet;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
+
+public class MaskFacetOnTypeAnnotationFactory extends FacetFactoryAbstract 
implements MetaModelValidatorRefiner, IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(Mask.class);
 
-public class MaskFacetOnTypeAnnotationFactory extends FacetFactoryAbstract {
 
     public MaskFacetOnTypeAnnotationFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -39,11 +46,21 @@ public class MaskFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract {
     @Override
     public void process(final ProcessClassContext processClassContaxt) {
         final Mask annotation = 
Annotations.getAnnotation(processClassContaxt.getCls(), Mask.class);
-        FacetUtil.addFacet(createMaskFacet(annotation, 
processClassContaxt.getFacetHolder()));
+        validator.addFacet(createMaskFacet(annotation, 
processClassContaxt.getFacetHolder()));
     }
 
     private MaskFacet createMaskFacet(final Mask annotation, final FacetHolder 
holder) {
         return annotation != null ? new 
MaskFacetOnTypeAnnotation(annotation.value(), null, holder) : null;
     }
 
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java
index 74a3a94..0ad616f 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java
@@ -20,14 +20,20 @@
 package org.apache.isis.core.metamodel.facets.object.maxlen.annotation;
 
 import org.apache.isis.applib.annotation.MaxLength;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.propparam.maxlen.MaxLengthFacet;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 
-public class MaxLengthFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract {
+public class MaxLengthFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract implements MetaModelValidatorRefiner, 
IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(MaxLength.class);
 
     public MaxLengthFacetOnTypeAnnotationFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -39,10 +45,21 @@ public class MaxLengthFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract
     @Override
     public void process(final ProcessClassContext processClassContaxt) {
         final MaxLength annotation = 
Annotations.getAnnotation(processClassContaxt.getCls(), MaxLength.class);
-        FacetUtil.addFacet(create(annotation, 
processClassContaxt.getFacetHolder()));
+        validator.addFacet(create(annotation, 
processClassContaxt.getFacetHolder()));
     }
 
     private MaxLengthFacet create(final MaxLength annotation, final 
FacetHolder holder) {
         return annotation == null ? null : new 
MaxLengthFacetOnTypeAnnotation(annotation.value(), holder);
     }
+
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java
index 232eb2d..2480c6f 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java
@@ -20,14 +20,21 @@
 package org.apache.isis.core.metamodel.facets.object.multiline.annotation;
 
 import org.apache.isis.applib.annotation.MultiLine;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import 
org.apache.isis.core.metamodel.facets.propparam.multiline.MultiLineFacet;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
+
+public class MultiLineFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract implements MetaModelValidatorRefiner, 
IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(MultiLine.class);
 
-public class MultiLineFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract {
 
     public MultiLineFacetOnTypeAnnotationFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -39,11 +46,21 @@ public class MultiLineFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract
     @Override
     public void process(final ProcessClassContext processClassContaxt) {
         final MultiLine annotation = 
Annotations.getAnnotation(processClassContaxt.getCls(), MultiLine.class);
-        FacetUtil.addFacet(create(annotation, 
processClassContaxt.getFacetHolder()));
+        validator.addFacet(create(annotation, 
processClassContaxt.getFacetHolder()));
     }
 
     private MultiLineFacet create(final MultiLine annotation, final 
FacetHolder holder) {
         return (annotation != null) ? new 
MultiLineFacetOnTypeAnnotation(annotation.numberOfLines(), 
annotation.preventWrapping(), holder) : null;
     }
 
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java
index 968325c..e06a702 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java
@@ -20,14 +20,22 @@
 package org.apache.isis.core.metamodel.facets.object.named.annotation;
 
 import org.apache.isis.applib.annotation.Named;
+import org.apache.isis.applib.annotation.NotPersisted;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
+
+public class NamedFacetOnTypeAnnotationFactory extends FacetFactoryAbstract 
implements MetaModelValidatorRefiner, IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(NotPersisted.class);
 
-public class NamedFacetOnTypeAnnotationFactory extends FacetFactoryAbstract {
 
     public NamedFacetOnTypeAnnotationFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -36,11 +44,21 @@ public class NamedFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract {
     @Override
     public void process(final ProcessClassContext processClassContaxt) {
         final Named annotation = 
Annotations.getAnnotation(processClassContaxt.getCls(), Named.class);
-        FacetUtil.addFacet(create(annotation, 
processClassContaxt.getFacetHolder()));
+        validator.addFacet(create(annotation, 
processClassContaxt.getFacetHolder()));
     }
 
     private NamedFacet create(final Named annotation, final FacetHolder 
holder) {
         return annotation != null ? new 
NamedFacetOnTypeAnnotation(annotation.value(), holder) : null;
     }
 
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java
index 636cc10..a91ae5e 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java
@@ -20,20 +20,25 @@
 package org.apache.isis.core.metamodel.facets.object.named.staticmethod;
 
 import java.lang.reflect.Method;
-
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.commons.lang.MethodExtensions;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import 
org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
 
-public class NamedFacetStaticMethodFactory extends 
MethodPrefixBasedFacetFactoryAbstract {
+public class NamedFacetStaticMethodFactory extends 
MethodPrefixBasedFacetFactoryAbstract implements MetaModelValidatorRefiner, 
IsisConfigurationAware {
 
     private static final String[] PREFIXES = { 
MethodPrefixConstants.SINGULAR_NAME, };
 
+    private final MetaModelValidatorForDeprecatedMethodPrefix validator = new 
MetaModelValidatorForDeprecatedMethodPrefix(PREFIXES[0]);
+
     public NamedFacetStaticMethodFactory() {
         super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
     }
@@ -47,7 +52,20 @@ public class NamedFacetStaticMethodFactory extends 
MethodPrefixBasedFacetFactory
         if (method != null) {
             final String name = (String) MethodExtensions.invokeStatic(method);
             processClassContext.removeMethod(method);
-            FacetUtil.addFacet(new NamedFacetStaticMethod(name, facetHolder));
+            validator.addFacet(new NamedFacetStaticMethod(name, facetHolder));
         }
     }
+
+
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/annotation/ObjectSpecIdFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/annotation/ObjectSpecIdFacetAnnotationFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/annotation/ObjectSpecIdFacetAnnotationFactory.java
deleted file mode 100644
index c33d7c2..0000000
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/annotation/ObjectSpecIdFacetAnnotationFactory.java
+++ /dev/null
@@ -1,46 +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.object.objectspecid.annotation;
-
-import org.apache.isis.applib.annotation.ObjectType;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.Annotations;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import 
org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
-
-public class ObjectSpecIdFacetAnnotationFactory extends FacetFactoryAbstract {
-
-    public ObjectSpecIdFacetAnnotationFactory() {
-        super(FeatureType.OBJECTS_ONLY);
-    }
-
-    @Override
-    public void process(final ProcessClassContext processClassContext) {
-        final ObjectType annotation = 
Annotations.getAnnotation(processClassContext.getCls(), ObjectType.class);
-        FacetUtil.addFacet(create(annotation, 
processClassContext.getFacetHolder()));
-    }
-
-    private ObjectSpecIdFacet create(final ObjectType annotation, final 
FacetHolder holder) {
-        return annotation != null ? new 
ObjectSpecIdFacetAnnotation(annotation.value(), holder) : null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/annotation/ObjectSpecIdFacetForObjectTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/annotation/ObjectSpecIdFacetForObjectTypeAnnotationFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/annotation/ObjectSpecIdFacetForObjectTypeAnnotationFactory.java
new file mode 100644
index 0000000..b97a4cc
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/annotation/ObjectSpecIdFacetForObjectTypeAnnotationFactory.java
@@ -0,0 +1,64 @@
+/*
+ *  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.object.objectspecid.annotation;
+
+import org.apache.isis.applib.annotation.ObjectType;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
+import org.apache.isis.core.metamodel.facets.Annotations;
+import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import 
org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
+
+public class ObjectSpecIdFacetForObjectTypeAnnotationFactory extends 
FacetFactoryAbstract implements MetaModelValidatorRefiner, 
IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(ObjectType.class);
+
+
+    public ObjectSpecIdFacetForObjectTypeAnnotationFactory() {
+        super(FeatureType.OBJECTS_ONLY);
+    }
+
+    @Override
+    public void process(final ProcessClassContext processClassContext) {
+        final ObjectType annotation = 
Annotations.getAnnotation(processClassContext.getCls(), ObjectType.class);
+        validator.addFacet(create(annotation, 
processClassContext.getFacetHolder()));
+    }
+
+    private ObjectSpecIdFacet create(final ObjectType annotation, final 
FacetHolder holder) {
+        return annotation != null ? new 
ObjectSpecIdFacetAnnotation(annotation.value(), holder) : null;
+    }
+
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java
index 30f4cd7..980878b 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java
@@ -23,14 +23,19 @@ import org.apache.isis.applib.annotation.Paged;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import 
org.apache.isis.core.metamodel.facets.objcoll.paged.PagedFacetAnnotation;
 import org.apache.isis.core.metamodel.facets.object.paged.PagedFacet;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
+
+public class PagedFacetOnTypeAnnotationFactory extends FacetFactoryAbstract 
implements MetaModelValidatorRefiner, IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(Paged.class);
 
-public class PagedFacetOnTypeAnnotationFactory extends FacetFactoryAbstract 
implements IsisConfigurationAware {
 
     private IsisConfiguration configuration;
 
@@ -38,16 +43,25 @@ public class PagedFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract impl
         super(FeatureType.OBJECTS_ONLY);
     }
 
+    // //////////////////////////////////////
+
     @Override
     public void process(final ProcessClassContext processClassContext) {
         final Paged annotation = 
Annotations.getAnnotation(processClassContext.getCls(), Paged.class);
-        FacetUtil.addFacet(create(annotation, 
processClassContext.getFacetHolder()));
+        validator.addFacet(create(annotation, 
processClassContext.getFacetHolder()));
     }
 
-    private PagedFacet create(final Paged annotation, final FacetHolder 
holder) {
+    private static PagedFacet create(final Paged annotation, final FacetHolder 
holder) {
         return annotation != null ? new PagedFacetAnnotation(holder, 
annotation.value()) : null;
     }
 
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    // //////////////////////////////////////
+
     public IsisConfiguration getConfiguration() {
         return configuration;
     }
@@ -55,6 +69,7 @@ public class PagedFacetOnTypeAnnotationFactory extends 
FacetFactoryAbstract impl
     @Override
     public void setConfiguration(IsisConfiguration configuration) {
         this.configuration = configuration;
+        validator.setConfiguration(configuration);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java
index 7acec57..dfdd76e 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java
@@ -20,14 +20,20 @@
 package org.apache.isis.core.metamodel.facets.object.plural.annotation;
 
 import org.apache.isis.applib.annotation.Plural;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
 
-public class PluralAnnotationFacetFactory extends FacetFactoryAbstract {
+public class PluralAnnotationFacetFactory extends FacetFactoryAbstract 
implements MetaModelValidatorRefiner, IsisConfigurationAware {
+
+    private final MetaModelValidatorForDeprecatedAnnotation validator = new 
MetaModelValidatorForDeprecatedAnnotation(Plural.class);
 
     public PluralAnnotationFacetFactory() {
         super(FeatureType.OBJECTS_ONLY);
@@ -36,11 +42,22 @@ public class PluralAnnotationFacetFactory extends 
FacetFactoryAbstract {
     @Override
     public void process(final ProcessClassContext processClassContaxt) {
         final Plural annotation = 
Annotations.getAnnotation(processClassContaxt.getCls(), Plural.class);
-        FacetUtil.addFacet(create(annotation, 
processClassContaxt.getFacetHolder()));
+        validator.addFacet(create(annotation, 
processClassContaxt.getFacetHolder()));
     }
 
     private PluralFacet create(final Plural annotation, final FacetHolder 
holder) {
         return annotation == null ? null : new 
PluralFacetAnnotation(annotation.value(), holder);
     }
 
+
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetMethodFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetMethodFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetMethodFactory.java
deleted file mode 100644
index ae9ca1e..0000000
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetMethodFactory.java
+++ /dev/null
@@ -1,54 +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.object.plural.staticmethod;
-
-import java.lang.reflect.Method;
-
-import org.apache.isis.core.commons.lang.MethodExtensions;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.methodutils.MethodScope;
-import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
-import 
org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
-
-public class PluralFacetMethodFactory extends 
MethodPrefixBasedFacetFactoryAbstract {
-
-    private static final String PLURAL_NAME = "pluralName";
-
-    private static final String[] PREFIXES = { PLURAL_NAME, };
-
-    public PluralFacetMethodFactory() {
-        super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
-    }
-
-    @Override
-    public void process(final ProcessClassContext processClassContext) {
-        final Class<?> type = processClassContext.getCls();
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
-        final Method method = MethodFinderUtils.findMethod(type, 
MethodScope.CLASS, PLURAL_NAME, String.class, NO_PARAMETERS_TYPES);
-        if (method != null) {
-            final String name = (String) MethodExtensions.invokeStatic(method);
-            processClassContext.removeMethod(method);
-            FacetUtil.addFacet(new PluralFacetMethod(name, facetHolder));
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java
new file mode 100644
index 0000000..1d053ff
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java
@@ -0,0 +1,71 @@
+/*
+ *  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.object.plural.staticmethod;
+
+import java.lang.reflect.Method;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
+import org.apache.isis.core.commons.lang.MethodExtensions;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
+import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
+import 
org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
+import 
org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedMethodPrefix;
+
+public class PluralFacetStaticMethodFactory extends 
MethodPrefixBasedFacetFactoryAbstract implements MetaModelValidatorRefiner, 
IsisConfigurationAware {
+
+    private static final String PLURAL_NAME = "pluralName";
+
+    private static final String[] PREFIXES = { PLURAL_NAME, };
+
+    private final MetaModelValidatorForDeprecatedMethodPrefix validator = new 
MetaModelValidatorForDeprecatedMethodPrefix(PREFIXES[0]);
+
+    public PluralFacetStaticMethodFactory() {
+        super(FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, PREFIXES);
+    }
+
+    @Override
+    public void process(final ProcessClassContext processClassContext) {
+        final Class<?> type = processClassContext.getCls();
+        final FacetHolder facetHolder = processClassContext.getFacetHolder();
+
+        final Method method = MethodFinderUtils.findMethod(type, 
MethodScope.CLASS, PLURAL_NAME, String.class, NO_PARAMETERS_TYPES);
+        if (method != null) {
+            final String name = (String) MethodExtensions.invokeStatic(method);
+            processClassContext.removeMethod(method);
+            validator.addFacet(new PluralFacetMethod(name, facetHolder));
+        }
+    }
+
+
+    @Override
+    public void refineMetaModelValidator(final MetaModelValidatorComposite 
metaModelValidator, final IsisConfiguration configuration) {
+        metaModelValidator.add(validator);
+    }
+
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        validator.setConfiguration(configuration);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/128f23c2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnCollectionDerivedFromRecreatableObjectFacetFactory.java
----------------------------------------------------------------------
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnCollectionDerivedFromRecreatableObjectFacetFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnCollectionDerivedFromRecreatableObjectFacetFactory.java
deleted file mode 100644
index 5c297de..0000000
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnCollectionDerivedFromRecreatableObjectFacetFactory.java
+++ /dev/null
@@ -1,49 +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.object.recreatable;
-
-import java.lang.reflect.Method;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-
-public class DisabledFacetOnCollectionDerivedFromRecreatableObjectFacetFactory 
extends FacetFactoryAbstract {
-
-    public DisabledFacetOnCollectionDerivedFromRecreatableObjectFacetFactory() 
{
-        super(FeatureType.COLLECTIONS_ONLY);
-    }
-
-    @Override
-    public void process(final ProcessMethodContext processMethodContext) {
-        final Method method = processMethodContext.getMethod();
-        final Class<?> declaringClass = method.getDeclaringClass();
-        final ObjectSpecification spec = 
getSpecificationLoader().loadSpecification(declaringClass);
-
-        if (!spec.containsDoOpFacet(ViewModelFacet.class)) {
-            return;
-        }
-        final FacetedMethod facetHolder = 
processMethodContext.getFacetHolder();
-        FacetUtil.addFacet(new 
DisabledFacetOnCollectionDerivedFromRecreatableObject(facetHolder));
-    }
-
-}

Reply via email to