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

[isis] branch dev/2.0.0/ISIS-1742-remove-deprecations updated (b80c00f -> 136a712)

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

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


    from b80c00f  ISIS-1742: updates version to 2.0.0-SNAPSHOT
     new e292120  ISIS-1742: removes @NotPersistable annotation + supporting facets
     new d3c960c  ISIS-1742: deletes ProgramPersistable marker interface
     new 4873f8f  ISIS-1742: markes Auditable, AlwaysImmutable and Bounded marker interfaces as deprecated
     new d73b685  ISIS-1742: deletes AlwaysImmutable, NeverImmutable, ImmutableOncePersistend and ImmutableUntilPersisted marker interfaces
     new 2cef4b7  ISIS-1742: removes Bounded marker interface
     new fd13487  ISIS-1742: deletes @Bounded annotation + facets
     new 91ac16a  ISIS-1742: deletes @Auditable annotation + Auditable marker inteface (both applib and jdo applib) + supporting facets and facet factories
     new 1500212  ISIS-1742: deletes unused nested test classes from unit tests
     new 1fe3fd9  ISIS-1742: deletes When enum from @Hidden, @Disabled, @Immutable
     new b1dfa02  ISIS-1742: removes @Bookmarkable annotation + facets
     new 701cc9a  removes @Bookmarkable annotation; removes @Debug, @Exploration and @Prototype annotations + supporting facets
     new 7513e83  ISIS-1742: deletes AbstractService, AbstractViewModel, AbstractContainedObject, AbstractDomainObject, AbstractFactoryAndRepository, AbstractHomePageDashboardService.  Also deletes allInstances/allMatches/firstMatch/uniqueMatch from DomainObjectContainer.
     new 136a712  ISIS-1742: updates docs, removal of query APIs from DomainObjectContainer

The 13 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../guides/rgant/_rgant_aaa_deprecated.adoc        |  53 +-
 .../asciidoc/guides/rgant/_rgant_aaa_partial.adoc  |  19 -
 ...gsvc_core-domain-api_DomainObjectContainer.adoc |   1 -
 ...mainObjectContainer_generic-repository-api.adoc |  84 ---
 ...mainObjectContainer_object-persistence-api.adoc |   3 +-
 ...rgsvc_persistence-layer-api_IsisJdoSupport.adoc |   2 +-
 ...vc_persistence-layer-api_RepositoryService.adoc |   3 +-
 .../src/main/asciidoc/pages/tg/_tg_pet-clinic.adoc |  20 +-
 .../isis/applib/AbstractContainedObject.java       | 808 ---------------------
 .../apache/isis/applib/AbstractDomainObject.java   | 144 ----
 .../isis/applib/AbstractFactoryAndRepository.java  |  47 --
 .../org/apache/isis/applib/AbstractService.java    |   2 +-
 .../org/apache/isis/applib/AbstractViewModel.java  |   2 +-
 .../apache/isis/applib/DomainObjectContainer.java  | 218 ------
 .../org/apache/isis/applib/annotation/Audited.java |  43 --
 .../isis/applib/annotation/AutoComplete.java       |  70 --
 .../isis/applib/annotation/Bookmarkable.java       |  47 --
 .../org/apache/isis/applib/annotation/Bounded.java |  36 -
 .../org/apache/isis/applib/annotation/Debug.java   |  38 -
 .../apache/isis/applib/annotation/Disabled.java    |   5 -
 .../apache/isis/applib/annotation/Exploration.java |  38 -
 .../org/apache/isis/applib/annotation/Hidden.java  |   7 -
 .../isis/applib/annotation/NotPersistable.java     |  66 --
 .../apache/isis/applib/annotation/Prototype.java   |  36 -
 .../org/apache/isis/applib/annotation/When.java    | 110 ---
 .../apache/isis/applib/fixtures/BaseFixture.java   |   3 +-
 .../isis/applib/fixturescripts/FixtureScript.java  |   2 +-
 .../isis/applib/fixturescripts/FixtureScripts.java |  27 +-
 .../apache/isis/applib/marker/AlwaysImmutable.java |  31 -
 .../org/apache/isis/applib/marker/Auditable.java   |  40 -
 .../org/apache/isis/applib/marker/Bounded.java     |  29 -
 .../isis/applib/marker/ImmutableOncePersisted.java |  34 -
 .../applib/marker/ImmutableUntilPersisted.java     |  35 -
 .../apache/isis/applib/marker/NeverImmutable.java  |  35 -
 .../apache/isis/applib/marker/NonPersistable.java  |  30 -
 .../isis/applib/marker/ProgramPersistable.java     |  30 -
 .../apache/isis/applib/marker/package-info.java    |  28 -
 .../isis/applib/query/QueryBuiltInAbstract.java    |  58 --
 .../isis/applib/query/QueryFindAllInstances.java   |   2 +-
 .../apache/isis/applib/security/RoleMemento.java   |   2 -
 .../apache/isis/applib/security/UserMemento.java   |   2 -
 .../homepage/AbstractHomePageDashboardService.java |  97 ---
 .../jdo/applib/annotations/Auditable.java          |  36 -
 .../isis/objectstore/jdo/applib/Auditable.java     |  26 -
 .../apache/isis/applib/ContainedObjectTest.java    | 107 ---
 .../isis/applib/FactoryAndRepositoryTest.java      | 122 ----
 .../org/apache/isis/applib/util/EnumsTest.java     |  16 +-
 .../isis/core/metamodel/facets/WhenValueFacet.java |  29 -
 .../metamodel/facets/WhenValueFacetAbstract.java   |  44 --
 ...ndWhereValueFacet.java => WhereValueFacet.java} |   3 +-
 ...tAbstract.java => WhereValueFacetAbstract.java} |  11 +-
 .../action/ActionAnnotationFacetFactory.java       |  19 +-
 ...DisabledFacetForDisabledAnnotationOnAction.java |  10 +-
 .../hidden/HiddenFacetForActionAnnotation.java     |   3 +-
 .../HiddenFacetForHiddenAnnotationOnAction.java    |   7 +-
 .../PrototypeFacetForPrototypeAnnotation.java      |  47 --
 .../PrototypeFacetForExplorationAnnotation.java    |  36 -
 ...totypeFacetForExplorationAnnotationFactory.java |  71 --
 .../annotation/HomePageFacetAnnotationFactory.java |   5 -
 .../HiddenFacetForActionLayoutAnnotation.java      |   3 +-
 .../actions/layout/HiddenFacetForActionXml.java    |   3 +-
 .../metamodel/facets/all/hide/HiddenFacet.java     |   4 +-
 .../DisabledFacetForCollectionAnnotation.java      |   3 +-
 ...bledFacetForDisabledAnnotationOnCollection.java |  10 +-
 .../hidden/HiddenFacetForCollectionAnnotation.java |   3 +-
 ...HiddenFacetForHiddenAnnotationOnCollection.java |   7 +-
 ...abledFacetOnCollectionDerivedFromImmutable.java |   4 +-
 .../HiddenFacetForCollectionLayoutAnnotation.java  |   3 +-
 .../layout/HiddenFacetForCollectionXml.java        |   3 +-
 .../facets/fallback/FallbackFacetFactory.java      |   3 +-
 .../facets/fallback/NotPersistableFacetNull.java   |  46 --
 .../facets/members/disabled/DisabledFacet.java     |   4 +-
 .../members/disabled/DisabledFacetAbstract.java    |  15 +-
 .../DisabledFacetAbstractAlwaysEverywhere.java     |   3 +-
 .../disabled/DisabledFacetAbstractImpl.java        |  47 +-
 .../disabled/DisabledFacetForContributee.java      |   3 +-
 .../facets/members/hidden/HiddenFacetAbstract.java |  16 +-
 .../HiddenFacetAbstractAlwaysEverywhere.java       |   5 +-
 .../members/hidden/HiddenFacetAbstractImpl.java    |  31 +-
 .../HiddenFacetFromLayoutPropertiesAbstract.java   |   4 +-
 .../facets/object/audit/AuditableFacet.java        |   2 -
 .../markerifc/AuditableFacetMarkerInterface.java   |  33 -
 .../AuditableFacetMarkerInterfaceFactory.java      |  50 --
 .../object/bookmarkpolicy/BookmarkPolicyFacet.java |   1 -
 ...ava => BookmarkPolicyFacetFallbackFactory.java} |  30 +-
 ...okmarkPolicyFacetViaBookmarkableAnnotation.java |  37 -
 .../choices/ChoicesFacetFromBoundedAbstract.java   |   1 -
 .../ChoicesFacetFromBoundedMarkerInterface.java    |  38 -
 ...icesFacetFromBoundedMarkerInterfaceFactory.java |  66 --
 .../DomainObjectAnnotationFacetFactory.java        |  78 +-
 .../AuditableFacetForAuditedAnnotation.java        |  43 --
 .../choices/ChoicesFacetFromBoundedAnnotation.java |  60 --
 .../ImmutableFacetForDomainObjectAnnotation.java   |   3 +-
 .../editing/ImmutableFacetFromConfiguration.java   |   4 +-
 .../annotation/HiddenFacetOnTypeAnnotation.java    |   5 +-
 .../HiddenFacetOnTypeAnnotationFactory.java        |   2 +-
 .../facets/object/immutable/ImmutableFacet.java    |  27 +-
 .../object/immutable/ImmutableFacetAbstract.java   |  30 +-
 .../object/immutable/ImmutableFacetUtils.java      |  38 -
 .../ImmutableFacetForImmutableAnnotation.java      |   9 +-
 .../ImmutableFacetMarkerInterface.java             |  40 -
 .../ImmutableFacetMarkerInterfaceFactory.java      |  50 --
 .../object/notpersistable/NotPersistableFacet.java |  36 -
 .../NotPersistableFacetAbstract.java               |  37 -
 .../notpersistable/NotPersistableFacetImpl.java    |  50 --
 .../NotPersistableFacetAnnotation.java             |  32 -
 .../NotPersistableFacetAnnotationFactory.java      |  90 ---
 .../NotPersistableFacetMarkerInterface.java        |  32 -
 .../NotPersistableFacetMarkerInterfaceFactory.java |  90 ---
 ...etOnCollectionDerivedFromRecreatableObject.java |   3 +-
 ...acetOnPropertyDerivedFromRecreatableObject.java |   3 +-
 .../value/ImmutableFacetViaValueSemantics.java     |   3 +-
 ...isabledFacetOnPropertyDerivedFromImmutable.java |   7 +-
 ...FacetOnPropertyDerivedFromImmutableFactory.java |   2 +-
 ...sabledFacetForDisabledAnnotationOnProperty.java |   7 +-
 .../DisabledFacetForPropertyAnnotation.java        |   3 +-
 ...acetForPropertyAnnotationInvertedSemantics.java |   3 +-
 .../HiddenFacetForHiddenAnnotationOnProperty.java  |   7 +-
 .../hidden/HiddenFacetForPropertyAnnotation.java   |   3 +-
 .../HiddenFacetForPropertyLayoutAnnotation.java    |   3 +-
 .../propertylayout/HiddenFacetForPropertyXml.java  |   3 +-
 .../update/PropertySetAndClearFacetFactory.java    |   1 -
 .../ApplicationFeatureRepositoryDefault.java       |   4 +-
 .../container/DomainObjectContainerDefault.java    | 136 ----
 .../container/query/QueryFindByPattern.java        |  57 --
 .../services/container/query/QueryFindByTitle.java |  56 --
 .../core/metamodel/spec/ObjectSpecification.java   |   9 -
 .../isis/core/metamodel/spec/Persistability.java   |  54 --
 .../metamodel/spec/feature/ObjectAssociation.java  |  11 +-
 .../core/metamodel/spec/feature/ObjectMember.java  |   2 -
 .../specloader/specimpl/ObjectMemberAbstract.java  |   2 -
 .../specimpl/ObjectSpecificationAbstract.java      |  29 +-
 .../specimpl/OneToManyAssociationContributee.java  |   2 -
 .../specimpl/OneToManyAssociationMixedIn.java      |   2 -
 .../specimpl/OneToOneAssociationContributee.java   |   2 -
 .../specimpl/OneToOneAssociationMixedIn.java       |   2 -
 .../specimpl/dflt/ObjectSpecificationDefault.java  |   1 -
 ...AuditableAnnotationInJdoApplibFacetFactory.java |  81 ---
 .../AuditableFacetAnnotationInJdoApplib.java       |  33 -
 .../AuditableFacetMarkerInterfaceInJdoApplib.java  |  32 -
 ...ableMarkerInterfaceInJdoApplibFacetFactory.java |  56 --
 ...ledFacetDerivedFromJdoPrimaryKeyAnnotation.java |   3 +-
 .../dflt/ProgrammingModelFacetsJava5.java          |  19 +-
 .../actions/ActionMethodsFacetFactoryTest.java     |   3 -
 ...DisabledAnnotationOnActionFacetFactoryTest.java |  47 +-
 .../HiddenAnnotationOnActionFacetFactoryTest.java  |  54 +-
 .../PrototypeFacetAnnotationFactoryTest.java       |   2 -
 ...kmarkableAnnotationFacetFactoryTest_action.java |   9 +-
 ...peFacetForExplorationAnnotationFactoryTest.java |  68 --
 .../CollectionFieldMethodsFacetFactoryTest.java    |   3 -
 .../CollectionAnnotationFacetFactoryTest.java      |   3 -
 ...okmarkableAnnotationFacetFactoryTest_class.java |  24 +-
 ...FacetFromBoundedMarkerInterfaceFactoryTest.java |  61 --
 ...oicesFacetFromBoundedAnnotationFactoryTest.java |   2 -
 .../DomainObjectAnnotationFacetFactoryTest.java    |  42 --
 ...ObjectAnnotationFacetFactoryTest_immutable.java |  41 +-
 .../ImmutableFacetMarkerInterfaceFactoryTest.java  | 110 ---
 .../NotPersistableFacetAnnotationFactoryTest.java  |  98 ---
 ...PersistableMarkerInterfaceFacetFactoryTest.java |  80 --
 .../PropertyAnnotationFacetFactoryTest.java        |   5 +-
 .../DomainObjectWithMustSatisfyAnnotations.java    |   7 +-
 .../DomainObjectWithoutMustSatisfyAnnotations.java |   8 +-
 .../ObjectAssociationFiltersTest_visibleWhere.java |  48 +-
 .../ApplicationFeatureRepositoryDefaultTest.java   |   3 +-
 .../ObjectReflectorDefaultTest_object.java         |   2 -
 ...ObjectAssociationAbstractTest_alwaysHidden.java |  18 +-
 .../testspec/ObjectSpecificationStub.java          |  14 -
 .../GivenAuditableAnnotationFacetFactoryTest.java  |  99 ---
 ...enAuditableFacetMarkerInterfaceFactoryTest.java |  99 ---
 .../fixturedomainservice/ObjectFixtureService.java |  10 +-
 .../query/PersistenceQueryAbstract.java            |  32 +-
 .../persistence/query/PersistenceQueryBuiltIn.java |  45 --
 .../query/PersistenceQueryBuiltInAbstract.java     |  74 --
 .../query/PersistenceQueryFindAllInstances.java    |  29 +-
 .../query/PersistenceQueryFindByPattern.java       | 117 ---
 .../query/PersistenceQueryFindByTitle.java         |  66 --
 ...ersistenceQueryFindUsingApplibQueryDefault.java |  35 +-
 ...tenceQueryFindUsingApplibQuerySerializable.java |  89 ---
 .../persistence/PersistenceQueryFactory.java       |  23 +-
 .../system/persistence/PersistenceSession.java     |   5 +-
 .../PersistenceSessionFactoryMetamodelRefiner.java |   4 -
 .../system/JavaObjectMarkedAsTransient.java        |  26 -
 .../runtime/system/ObjectMemberAbstractTest.java   |   9 +-
 .../domainobjects/DomainObjectReprRenderer.java    |   4 -
 .../progmodel/wrapper/dom/employees/Employee.java  |   8 +-
 todo-deprecation-list.txt                          | 331 +++++----
 186 files changed, 483 insertions(+), 6228 deletions(-)
 delete mode 100644 adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer_generic-repository-api.adoc
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/AbstractContainedObject.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/AbstractDomainObject.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/AbstractFactoryAndRepository.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/annotation/Audited.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/annotation/AutoComplete.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/annotation/Bookmarkable.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/annotation/Bounded.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/annotation/Debug.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/annotation/Exploration.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/annotation/NotPersistable.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/annotation/Prototype.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/annotation/When.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/marker/AlwaysImmutable.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/marker/Auditable.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/marker/Bounded.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/marker/ImmutableOncePersisted.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/marker/ImmutableUntilPersisted.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/marker/NeverImmutable.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/marker/NonPersistable.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/marker/ProgramPersistable.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/marker/package-info.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/query/QueryBuiltInAbstract.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/services/homepage/AbstractHomePageDashboardService.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/core/objectstore/jdo/applib/annotations/Auditable.java
 delete mode 100644 core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/Auditable.java
 delete mode 100644 core/applib/src/test/java/org/apache/isis/applib/ContainedObjectTest.java
 delete mode 100644 core/applib/src/test/java/org/apache/isis/applib/FactoryAndRepositoryTest.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhenValueFacet.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhenValueFacetAbstract.java
 rename core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/{WhenAndWhereValueFacet.java => WhereValueFacet.java} (90%)
 rename core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/{WhenAndWhereValueFacetAbstract.java => WhereValueFacetAbstract.java} (77%)
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForPrototypeAnnotation.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/PrototypeFacetForExplorationAnnotation.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/PrototypeFacetForExplorationAnnotationFactory.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/NotPersistableFacetNull.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/markerifc/AuditableFacetMarkerInterface.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/markerifc/AuditableFacetMarkerInterfaceFactory.java
 rename core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/{BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory.java => BookmarkPolicyFacetFallbackFactory.java} (68%)
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotation.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterface.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/auditing/AuditableFacetForAuditedAnnotation.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetFromBoundedAnnotation.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetUtils.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/immutablemarkerifc/ImmutableFacetMarkerInterface.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/immutablemarkerifc/ImmutableFacetMarkerInterfaceFactory.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacet.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacetAbstract.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacetImpl.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistableannot/NotPersistableFacetAnnotation.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistableannot/NotPersistableFacetAnnotationFactory.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistablemarkerifc/NotPersistableFacetMarkerInterface.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistablemarkerifc/NotPersistableFacetMarkerInterfaceFactory.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/query/QueryFindByPattern.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/query/QueryFindByTitle.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Persistability.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotationInJdoApplib.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterfaceInJdoApplib.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceInJdoApplibFacetFactory.java
 delete mode 100644 core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/exploration/PrototypeFacetForPrototypeFacetForExplorationAnnotationFactoryTest.java
 delete mode 100644 core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/bounded/ChoicesFacetFromBoundedMarkerInterfaceFactoryTest.java
 delete mode 100644 core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetMarkerInterfaceFactoryTest.java
 delete mode 100644 core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacetAnnotationFactoryTest.java
 delete mode 100644 core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableMarkerInterfaceFacetFactoryTest.java
 delete mode 100644 core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
 delete mode 100644 core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableFacetMarkerInterfaceFactoryTest.java
 delete mode 100644 core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryBuiltIn.java
 delete mode 100644 core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryBuiltInAbstract.java
 delete mode 100644 core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindByPattern.java
 delete mode 100644 core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindByTitle.java
 delete mode 100644 core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindUsingApplibQuerySerializable.java
 delete mode 100644 core/runtime/src/test/java/org/apache/isis/core/runtime/system/JavaObjectMarkedAsTransient.java

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

[isis] 01/13: ISIS-1742: removes @NotPersistable annotation + supporting facets

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit e2921207e02816452af1cc5a7c0b07e310279c6f
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Oct 5 15:46:40 2017 +0300

    ISIS-1742: removes @NotPersistable annotation + supporting facets
---
 .../asciidoc/guides/rgant/_rgant_aaa_partial.adoc  | 19 -----
 .../isis/applib/annotation/NotPersistable.java     | 66 ---------------
 .../apache/isis/applib/marker/NonPersistable.java  | 30 -------
 .../apache/isis/applib/security/RoleMemento.java   |  2 -
 .../apache/isis/applib/security/UserMemento.java   |  2 -
 .../facets/fallback/FallbackFacetFactory.java      |  3 +-
 .../facets/fallback/NotPersistableFacetNull.java   | 46 ----------
 .../object/notpersistable/NotPersistableFacet.java | 36 --------
 .../NotPersistableFacetAbstract.java               | 37 --------
 .../notpersistable/NotPersistableFacetImpl.java    | 50 -----------
 .../NotPersistableFacetAnnotation.java             | 32 -------
 .../NotPersistableFacetAnnotationFactory.java      | 90 --------------------
 .../NotPersistableFacetMarkerInterface.java        | 32 -------
 .../NotPersistableFacetMarkerInterfaceFactory.java | 90 --------------------
 .../update/PropertySetAndClearFacetFactory.java    |  1 -
 .../core/metamodel/spec/ObjectSpecification.java   |  9 --
 .../isis/core/metamodel/spec/Persistability.java   | 54 ------------
 .../specimpl/ObjectSpecificationAbstract.java      | 26 ------
 .../specimpl/dflt/ObjectSpecificationDefault.java  |  1 -
 .../dflt/ProgrammingModelFacetsJava5.java          |  5 --
 .../NotPersistableFacetAnnotationFactoryTest.java  | 98 ----------------------
 ...PersistableMarkerInterfaceFacetFactoryTest.java | 80 ------------------
 .../ObjectReflectorDefaultTest_object.java         |  2 -
 .../testspec/ObjectSpecificationStub.java          | 14 ----
 .../fixturedomainservice/ObjectFixtureService.java | 10 +--
 .../system/persistence/PersistenceSession.java     |  5 +-
 .../system/JavaObjectMarkedAsTransient.java        | 26 ------
 .../domainobjects/DomainObjectReprRenderer.java    |  4 -
 todo-deprecation-list.txt                          | 23 ++++-
 29 files changed, 26 insertions(+), 867 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_partial.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_partial.adoc
index ee0c0f6..6b66307 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_partial.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_partial.adoc
@@ -33,25 +33,6 @@ For these reasons the `@Encodable` annotation is generally never applied directl
 Currently neither the Wicket viewer nor the RO viewer use this API.  The Wicket viewer uses Wicket APIs, while RO viewer has its own mechanisms (parsing data from input JSON representations, etc.)
 |Persistence
 
-|`@NotPersistable`
-|Indicates that a domain object may not be programmatically persisted. +
-+
-This annotation  indicates that transient instances of this class may be created but may not be persisted. The framework will not provide the user with an option to 'save' the object, and attempting to persist such an object programmatically would be an error.
-
-For example:
-
-[source,java]
-----
-@NotPersistable(By.USER)
-public class InputForm {
-    ...
-}
-----
-
-By default the annotated object is effectively transient (ie default to `By.USER_OR_PROGRAM`).
-
-This annotation is not supported by: Wicket viewer (which does not support transient objects).  See also link:https://issues.apache.org/jira/browse/ISIS-743[ISIS-743] contemplating the removal of this annotation.
-|Domain, Persistence
 
 |`@Parseable`
 |Indicates that a (value) class can be reconstructed from a string. +
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/NotPersistable.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/NotPersistable.java
deleted file mode 100644
index 83d5225..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/NotPersistable.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.apache.isis.applib.marker.NonPersistable;
-import org.apache.isis.applib.marker.ProgramPersistable;
-import org.apache.isis.applib.util.Enums;
-
-/**
- * No longer supported - the MetaModel validator will reject any domain classes annotated with this annotation.
- *
- * @deprecated
- */
-@Deprecated
-@Inherited
-@Target({ ElementType.TYPE })
-@Retention(RetentionPolicy.RUNTIME)
-public @interface NotPersistable {
-
-    public enum By {
-        USER, 
-        USER_OR_PROGRAM;
-        
-        public static By lookupForMarkerInterface(final Class<?> cls) {
-            if(cls.isInterface()) {
-                return null;
-            }
-            if (ProgramPersistable.class.isAssignableFrom(cls)) {
-                return USER;
-            } else if (NonPersistable.class.isAssignableFrom(cls)) {
-                return USER_OR_PROGRAM;
-            }
-            return null;
-        }
-        
-        public String getFriendlyName() {
-            return Enums.getFriendlyNameOf(this);
-        }
-    }
-
-    By value() default By.USER_OR_PROGRAM;
-
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/marker/NonPersistable.java b/core/applib/src/main/java/org/apache/isis/applib/marker/NonPersistable.java
deleted file mode 100644
index 1b53b64..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/marker/NonPersistable.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.marker;
-
-/**
- * No longer supported - the MetaModel validator will reject any domain classes that implement this marker interface.
- *
- * @deprecated
- */
-@Deprecated
-public interface NonPersistable {
-
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/security/RoleMemento.java b/core/applib/src/main/java/org/apache/isis/applib/security/RoleMemento.java
index 21a25f6..f9802fd 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/security/RoleMemento.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/security/RoleMemento.java
@@ -20,9 +20,7 @@
 package org.apache.isis.applib.security;
 
 import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.NotPersistable;
 
-@NotPersistable
 public final class RoleMemento {
 
     /**
diff --git a/core/applib/src/main/java/org/apache/isis/applib/security/UserMemento.java b/core/applib/src/main/java/org/apache/isis/applib/security/UserMemento.java
index 70876e3..489181f 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/security/UserMemento.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/security/UserMemento.java
@@ -24,13 +24,11 @@ import java.util.Arrays;
 import java.util.List;
 
 import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.NotPersistable;
 
 /**
  * Details, obtained from the container, about the user and his roles.
  * Read-only.
  */
-@NotPersistable
 public final class UserMemento {
 
     //region > constructors
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/FallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/FallbackFacetFactory.java
index dde4d3c..ac4d3a9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/FallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/FallbackFacetFactory.java
@@ -75,7 +75,6 @@ public class FallbackFacetFactory extends FacetFactoryAbstract {
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
         final DescribedAsFacetNone describedAsFacet = new DescribedAsFacetNone(facetHolder);
-        final NotPersistableFacetNull notPersistableFacet = new NotPersistableFacetNull(facetHolder);
         final TitleFacetNone titleFacet = new TitleFacetNone(facetHolder);
 
         final int pagedStandalone = getPagedConfigSetting("standalone", PAGE_SIZE_STANDALONE_DEFAULT);
@@ -84,7 +83,7 @@ public class FallbackFacetFactory extends FacetFactoryAbstract {
         final Facet[] facets = new Facet[] { describedAsFacet,
                 // commenting these out, think this whole isNoop business is a little bogus
                 // new ImmutableFacetNever(holder),
-                notPersistableFacet, titleFacet, pagedFacet};
+                titleFacet, pagedFacet};
         FacetUtil.addFacets(facets);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/NotPersistableFacetNull.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/NotPersistableFacetNull.java
deleted file mode 100644
index ef3ddc6..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/NotPersistableFacetNull.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.fallback;
-
-import org.apache.isis.applib.events.UsabilityEvent;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet;
-import org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacetAbstract;
-import org.apache.isis.core.metamodel.interactions.UsabilityContext;
-
-/**
- * Installed by the {@link org.apache.isis.core.metamodel.facets.fallback.FallbackFacetFactory}, and means that this class
- * <i>is</i> persistable (ie not {@link NotPersistableFacet not persistable}).
- */
-public class NotPersistableFacetNull extends NotPersistableFacetAbstract {
-
-    public NotPersistableFacetNull(final FacetHolder holder) {
-        super(null, holder);
-    }
-
-    /**
-     * Always returns <tt>null</tt> (that is, does <i>not</i> disable).
-     */
-    @Override
-    public String disables(final UsabilityContext<? extends UsabilityEvent> ic) {
-        return null;
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacet.java
deleted file mode 100644
index 86501e1..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacet.java
+++ /dev/null
@@ -1,36 +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.notpersistable;
-
-import org.apache.isis.applib.annotation.NotPersistable;
-import org.apache.isis.core.metamodel.facets.SingleValueFacet;
-import org.apache.isis.core.metamodel.interactions.DisablingInteractionAdvisor;
-
-/**
- * Indicates that the instances of this class are not persistable either by the
- * user (through the viewer) or at all (either by the user or programmatically).
- * 
- * <p>
- * In the standard Apache Isis Programming Model, typically corresponds to
- * applying the <tt>@NotPersistable</tt> annotation at the class level.
- */
-public interface NotPersistableFacet extends SingleValueFacet<NotPersistable.By>, DisablingInteractionAdvisor {
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacetAbstract.java
deleted file mode 100644
index 3c98c1e..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacetAbstract.java
+++ /dev/null
@@ -1,37 +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.notpersistable;
-
-import org.apache.isis.applib.annotation.NotPersistable;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.SingleValueFacetAbstract;
-
-public abstract class NotPersistableFacetAbstract extends SingleValueFacetAbstract<NotPersistable.By> implements NotPersistableFacet {
-
-    public static Class<? extends Facet> type() {
-        return NotPersistableFacet.class;
-    }
-
-    public NotPersistableFacetAbstract(final NotPersistable.By value, final FacetHolder holder) {
-        super(type(), value, holder);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacetImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacetImpl.java
deleted file mode 100644
index 0dc8be8..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacetImpl.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.object.notpersistable;
-
-import org.apache.isis.applib.annotation.NotPersistable;
-import org.apache.isis.applib.events.UsabilityEvent;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.interactions.UsabilityContext;
-
-public class NotPersistableFacetImpl extends NotPersistableFacetAbstract {
-
-    public NotPersistableFacetImpl(final NotPersistable.By value, final FacetHolder holder) {
-        super(value, holder);
-    }
-
-    @Override
-    public String disables(final UsabilityContext<? extends UsabilityEvent> ic) {
-        final NotPersistable.By initiatedBy = value();
-        if (initiatedBy == NotPersistable.By.USER_OR_PROGRAM) {
-            // never persistable
-            return "Not persistable";
-        } else {
-            if (ic.isFrameworkInitiated()) {
-                // enabled only in this case
-                return null;
-            } else {
-                // not programmatic, ie by user, so disabled
-                return "Not persistable";
-            }
-        }
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistableannot/NotPersistableFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistableannot/NotPersistableFacetAnnotation.java
deleted file mode 100644
index ee8601b..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistableannot/NotPersistableFacetAnnotation.java
+++ /dev/null
@@ -1,32 +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.notpersistable.notpersistableannot;
-
-import org.apache.isis.applib.annotation.NotPersistable;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacetImpl;
-
-public class NotPersistableFacetAnnotation extends NotPersistableFacetImpl {
-
-    public NotPersistableFacetAnnotation(final NotPersistable.By value, final FacetHolder holder) {
-        super(value, holder);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistableannot/NotPersistableFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistableannot/NotPersistableFacetAnnotationFactory.java
deleted file mode 100644
index a4cfce6..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistableannot/NotPersistableFacetAnnotationFactory.java
+++ /dev/null
@@ -1,90 +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.notpersistable.notpersistableannot;
-
-import org.apache.isis.applib.annotation.NotPersistable;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-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.notpersistable.NotPersistableFacet;
-import org.apache.isis.core.metamodel.progmodel.DeprecatedMarker;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting;
-import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
-
-/**
- * @deprecated
- */
-@Deprecated
-public class NotPersistableFacetAnnotationFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner, DeprecatedMarker {
-
-    public NotPersistableFacetAnnotationFactory() {
-        super(FeatureType.OBJECTS_ONLY);
-    }
-
-    @Override
-    public void process(final ProcessClassContext processClassContaxt) {
-        final NotPersistable annotation = Annotations.getAnnotation(processClassContaxt.getCls(), NotPersistable.class);
-        FacetUtil.addFacet(create(annotation, processClassContaxt.getFacetHolder()));
-    }
-
-    @Override
-    public void process(final ProcessMethodContext processMethodContext) {
-        final NotPersistable annotation = Annotations.getAnnotation(processMethodContext.getMethod(), NotPersistable.class);
-        FacetUtil.addFacet(create(annotation, processMethodContext.getFacetHolder()));
-    }
-
-    private NotPersistableFacet create(final NotPersistable annotation, final FacetHolder holder) {
-        return annotation != null ? new NotPersistableFacetAnnotation(annotation.value(), holder) : null;
-    }
-
-    @Override
-    public void refineMetaModelValidator(
-            final MetaModelValidatorComposite metaModelValidator, final IsisConfiguration configuration) {
-        metaModelValidator.add(new MetaModelValidatorVisiting(newValidatorVisitor()));
-    }
-
-    private MetaModelValidatorVisiting.Visitor newValidatorVisitor() {
-        return new MetaModelValidatorVisiting.Visitor() {
-            @Override
-            public boolean visit(
-                    final ObjectSpecification objectSpec,
-                    final ValidationFailures validationFailures) {
-
-                if (objectSpec.containsDoOpFacet(NotPersistableFacet.class)) {
-                    final NotPersistableFacet notPersistableFacet = objectSpec.getFacet(NotPersistableFacet.class);
-                    if(notPersistableFacet instanceof NotPersistableFacetAnnotation) {
-                        final Class<?> type = NotPersistable.class;
-                        validationFailures.add(String.format(
-                                "%s is annotated with %s; this annotation is no longer supported",
-                                objectSpec.getFullIdentifier(), type.getSimpleName()));
-                    }
-                }
-                return true;
-            }
-        };
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistablemarkerifc/NotPersistableFacetMarkerInterface.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistablemarkerifc/NotPersistableFacetMarkerInterface.java
deleted file mode 100644
index f31bf69..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistablemarkerifc/NotPersistableFacetMarkerInterface.java
+++ /dev/null
@@ -1,32 +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.notpersistable.notpersistablemarkerifc;
-
-import org.apache.isis.applib.annotation.NotPersistable;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacetImpl;
-
-public class NotPersistableFacetMarkerInterface extends NotPersistableFacetImpl {
-
-    public NotPersistableFacetMarkerInterface(final NotPersistable.By value, final FacetHolder holder) {
-        super(value, holder);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistablemarkerifc/NotPersistableFacetMarkerInterfaceFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistablemarkerifc/NotPersistableFacetMarkerInterfaceFactory.java
deleted file mode 100644
index a49f555..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/notpersistable/notpersistablemarkerifc/NotPersistableFacetMarkerInterfaceFactory.java
+++ /dev/null
@@ -1,90 +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.notpersistable.notpersistablemarkerifc;
-
-import org.apache.isis.applib.annotation.NotPersistable;
-import org.apache.isis.applib.marker.NonPersistable;
-import org.apache.isis.applib.marker.ProgramPersistable;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-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.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet;
-import org.apache.isis.core.metamodel.progmodel.DeprecatedMarker;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting;
-import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
-
-/**
- * @deprecated
- */
-@Deprecated
-public class NotPersistableFacetMarkerInterfaceFactory extends FacetFactoryAbstract implements
-        MetaModelValidatorRefiner, DeprecatedMarker {
-
-    public NotPersistableFacetMarkerInterfaceFactory() {
-        super(FeatureType.OBJECTS_ONLY);
-    }
-
-    @Override
-    public void process(final ProcessClassContext processClassContext) {
-        final NotPersistable.By initiatedBy = NotPersistable.By.lookupForMarkerInterface(processClassContext.getCls());
-        FacetUtil.addFacet(create(initiatedBy, processClassContext.getFacetHolder()));
-    }
-
-    private NotPersistableFacet create(final NotPersistable.By initiatedBy, final FacetHolder holder) {
-        return initiatedBy != null ? new NotPersistableFacetMarkerInterface(initiatedBy, holder) : null;
-    }
-
-    @Override
-    public void refineMetaModelValidator(
-            final MetaModelValidatorComposite metaModelValidator, final IsisConfiguration configuration) {
-        metaModelValidator.add(new MetaModelValidatorVisiting(newValidatorVisitor()));
-    }
-
-    private MetaModelValidatorVisiting.Visitor newValidatorVisitor() {
-        return new MetaModelValidatorVisiting.Visitor() {
-            @Override
-            public boolean visit(
-                    final ObjectSpecification objectSpec,
-                    final ValidationFailures validationFailures) {
-
-                if (objectSpec.containsDoOpFacet(NotPersistableFacet.class)) {
-                    final NotPersistableFacet notPersistableFacet = objectSpec.getFacet(NotPersistableFacet.class);
-                    if(notPersistableFacet instanceof NotPersistableFacetMarkerInterface) {
-                        final NotPersistable.By by = ((NotPersistableFacetMarkerInterface) notPersistableFacet).value();
-                        final Class<?> type =
-                                by == NotPersistable.By.USER
-                                    ? ProgramPersistable.class
-                                    : NonPersistable.class;
-                        validationFailures.add(String.format(
-                                "%s implements %s; this interface is no longer supported",
-                                objectSpec.getFullIdentifier(), type.getSimpleName()));
-                    }
-                }
-                return true;
-            }
-        };
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
index 9c2d997..559004d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/update/PropertySetAndClearFacetFactory.java
@@ -28,7 +28,6 @@ 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.members.disabled.DisabledFacet;
-import org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacetViaClearMethod;
 import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod;
 import org.apache.isis.core.metamodel.facets.properties.update.init.PropertyInitializationFacetViaSetterMethod;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
index 29e6bb7..f2dea29 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
@@ -248,15 +248,6 @@ public interface ObjectSpecification extends Specification, ObjectActionContaine
     // Facets
     // //////////////////////////////////////////////////////////////
 
-    /**
-     * Determines if objects of this specification can be persisted or not. If
-     * it can be persisted (i.e. it return something other than
-     * {@link Persistability}.TRANSIENT ObjectAdapter.isPersistent() will
-     * indicated whether the object is persistent or not. If they cannot be
-     * persisted then {@link ObjectAdapter}. {@link #persistability()} should be
-     * ignored.
-     */
-    Persistability persistability();
 
     /**
      * Determines if the object represents an value or object.
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Persistability.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Persistability.java
deleted file mode 100644
index 72143cc..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Persistability.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.spec;
-
-public enum Persistability {
-    /**
-     * Marks a class as being persistable, but only by under application program
-     * control.
-     */
-    PROGRAM_PERSISTABLE("Program Persistable", true),
-    /**
-     * Marks a class as transient - such an object cannot be persisted.
-     */
-    TRANSIENT("Transient", false),
-    /**
-     * Marks a class as being persistable by the user (or under application
-     * program control).
-     */
-    USER_PERSISTABLE("User Persistable", true);
-
-    private final String name;
-    private final boolean persistable;
-
-    private Persistability(final String name, final boolean persistable) {
-        this.name = name;
-        this.persistable = persistable;
-    }
-
-    public boolean isPersistable() {
-        return persistable;
-    }
-
-    @Override
-    public String toString() {
-        return name;
-    }
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index b705c89..0d50f87 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -38,7 +38,6 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.isis.applib.AppManifest;
 import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.annotation.NotPersistable;
 import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.filter.Filter;
@@ -69,7 +68,6 @@ import org.apache.isis.core.metamodel.facets.object.icon.IconFacet;
 import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
 import org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet;
 import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
-import org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet;
 import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
 import org.apache.isis.core.metamodel.facets.object.parented.ParentedCollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
@@ -86,7 +84,6 @@ import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.ObjectSpecificationException;
-import org.apache.isis.core.metamodel.spec.Persistability;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
@@ -163,8 +160,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
 
     private ObjectSpecification superclassSpec;
 
-    private Persistability persistability = Persistability.USER_PERSISTABLE;
-
     private TitleFacet titleFacet;
     private IconFacet iconFacet;
     private CssClassFacet cssClassFacet;
@@ -356,24 +351,8 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
         titleFacet = getFacet(TitleFacet.class);
         iconFacet = getFacet(IconFacet.class);
         cssClassFacet = getFacet(CssClassFacet.class);
-
-        this.persistability = determinePersistability();
     }
 
-    private Persistability determinePersistability() {
-        final NotPersistableFacet notPersistableFacet = getFacet(NotPersistableFacet.class);
-        if (notPersistableFacet == null) {
-            return Persistability.USER_PERSISTABLE;
-        }
-        final NotPersistable.By initiatedBy = notPersistableFacet.value();
-        if (initiatedBy == NotPersistable.By.USER_OR_PROGRAM) {
-            return Persistability.TRANSIENT;
-        } else if (initiatedBy == NotPersistable.By.USER) {
-            return Persistability.PROGRAM_PERSISTABLE;
-        } else {
-            return Persistability.USER_PERSISTABLE;
-        }
-    }
 
     //endregion
 
@@ -499,11 +478,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
         return helpFacet == null ? null : helpFacet.value();
     }
 
-    @Override
-    public Persistability persistability() {
-        return persistability;
-    }
-
 
     //endregion
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index 4a3e275..7c298bc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -404,7 +404,6 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
         final ToString str = new ToString(this);
         str.append("class", getFullIdentifier());
         str.append("type", (isParentedOrFreeCollection() ? "Collection" : "Object"));
-        str.append("persistable", persistability());
         str.append("superclass", superclass() == null ? "Object" : superclass().getFullIdentifier());
         return str.toString();
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
index cb592dd..ce3ee25 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
@@ -91,8 +91,6 @@ import org.apache.isis.core.metamodel.facets.object.immutable.immutableannot.Cop
 import org.apache.isis.core.metamodel.facets.object.immutable.immutablemarkerifc.ImmutableFacetMarkerInterfaceFactory;
 import org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacetForMixinAnnotationFactory;
-import org.apache.isis.core.metamodel.facets.object.notpersistable.notpersistableannot.NotPersistableFacetAnnotationFactory;
-import org.apache.isis.core.metamodel.facets.object.notpersistable.notpersistablemarkerifc.NotPersistableFacetMarkerInterfaceFactory;
 import org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassNameFactory;
 import org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImplFactory;
 import org.apache.isis.core.metamodel.facets.object.parseable.annotcfg.ParseableFacetAnnotationElseConfigurationFactory;
@@ -375,9 +373,6 @@ public final class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract
         addFactory(new ActionLayoutFacetFactory());
         addFactory(new CollectionLayoutFacetFactory());
 
-        addFactory(new NotPersistableFacetAnnotationFactory());
-        addFactory(new NotPersistableFacetMarkerInterfaceFactory());
-
         addFactory(new ParseableFacetAnnotationElseConfigurationFactory());
         
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacetAnnotationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacetAnnotationFactoryTest.java
deleted file mode 100644
index 46e0422..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableFacetAnnotationFactoryTest.java
+++ /dev/null
@@ -1,98 +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.notpersistable;
-
-import org.apache.isis.applib.annotation.NotPersistable;
-import org.apache.isis.applib.annotation.NotPersistable.By;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.object.notpersistable.notpersistableannot.NotPersistableFacetAnnotation;
-import org.apache.isis.core.metamodel.facets.object.notpersistable.notpersistableannot.NotPersistableFacetAnnotationFactory;
-
-public class NotPersistableFacetAnnotationFactoryTest extends AbstractFacetFactoryTest {
-
-    private NotPersistableFacetAnnotationFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new NotPersistableFacetAnnotationFactory();
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
-    public void testNotPersistableAnnotationPickedUpOnClassAndDefaultsToUserOrProgram() {
-        @NotPersistable
-        class Customer {
-        }
-
-        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(NotPersistableFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof NotPersistableFacetAnnotation);
-        final NotPersistableFacetAnnotation notPersistableFacetAnnotation = (NotPersistableFacetAnnotation) facet;
-        final NotPersistable.By value = notPersistableFacetAnnotation.value();
-        assertEquals(NotPersistable.By.USER_OR_PROGRAM, value);
-
-        assertNoMethodsRemoved();
-    }
-
-    public void testNotPersistableAnnotationUserOrProgramPickedUpOn() {
-        @NotPersistable(By.USER_OR_PROGRAM)
-        class Customer {
-        }
-
-        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(NotPersistableFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof NotPersistableFacetAnnotation);
-        final NotPersistableFacetAnnotation notPersistableFacetAnnotation = (NotPersistableFacetAnnotation) facet;
-        final NotPersistable.By value = notPersistableFacetAnnotation.value();
-        assertEquals(NotPersistable.By.USER_OR_PROGRAM, value);
-
-        assertNoMethodsRemoved();
-    }
-
-    public void testNotPersistableAnnotationUserPickedUpOn() {
-        @NotPersistable(By.USER)
-        class Customer {
-        }
-
-        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(NotPersistableFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof NotPersistableFacetAnnotation);
-        final NotPersistableFacetAnnotation notPersistableFacetAnnotation = (NotPersistableFacetAnnotation) facet;
-        final NotPersistable.By value = notPersistableFacetAnnotation.value();
-        assertEquals(NotPersistable.By.USER, value);
-
-        assertNoMethodsRemoved();
-    }
-
-}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableMarkerInterfaceFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableMarkerInterfaceFacetFactoryTest.java
deleted file mode 100644
index e7aa9f3..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/notpersistable/NotPersistableMarkerInterfaceFacetFactoryTest.java
+++ /dev/null
@@ -1,80 +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.notpersistable;
-
-import org.apache.isis.applib.annotation.NotPersistable;
-import org.apache.isis.applib.marker.NonPersistable;
-import org.apache.isis.applib.marker.ProgramPersistable;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.object.notpersistable.notpersistablemarkerifc.NotPersistableFacetMarkerInterface;
-import org.apache.isis.core.metamodel.facets.object.notpersistable.notpersistablemarkerifc.NotPersistableFacetMarkerInterfaceFactory;
-
-public class NotPersistableMarkerInterfaceFacetFactoryTest extends AbstractFacetFactoryTest {
-
-    private NotPersistableFacetMarkerInterfaceFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new NotPersistableFacetMarkerInterfaceFactory();
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
-    public void testProgramPersistableMeansNotPersistableByUser() {
-        class Customer implements ProgramPersistable {
-        }
-
-        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(NotPersistableFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof NotPersistableFacetMarkerInterface);
-        final NotPersistableFacetMarkerInterface notPersistableFacetMarkerInterface = (NotPersistableFacetMarkerInterface) facet;
-        final NotPersistable.By value = notPersistableFacetMarkerInterface.value();
-        assertEquals(NotPersistable.By.USER, value);
-
-        assertNoMethodsRemoved();
-    }
-
-    public void testNotPersistable() {
-        class Customer implements NonPersistable {
-        }
-
-        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(NotPersistableFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof NotPersistableFacetMarkerInterface);
-        final NotPersistableFacetMarkerInterface notPersistableFacetMarkerInterface = (NotPersistableFacetMarkerInterface) facet;
-        final NotPersistable.By value = notPersistableFacetMarkerInterface.value();
-        assertEquals(NotPersistable.By.USER_OR_PROGRAM, value);
-
-        assertNoMethodsRemoved();
-    }
-
-}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_object.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_object.java
index 3c99d61..99b1d5b 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_object.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefaultTest_object.java
@@ -28,7 +28,6 @@ import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
-import org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet;
 import org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet;
 import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
@@ -60,7 +59,6 @@ public class ObjectReflectorDefaultTest_object extends SpecificationLoaderTestAb
         Assert.assertNotNull(specification.getFacet(DescribedAsFacet.class));
         Assert.assertNotNull(specification.getFacet(TitleFacet.class));
         Assert.assertNotNull(specification.getFacet(PluralFacet.class));
-        Assert.assertNotNull(specification.getFacet(NotPersistableFacet.class));
         Assert.assertNotNull(specification.getFacet(ObjectValidPropertiesFacet.class));
     }
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
index 8f0614a..36f1f0d 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
@@ -45,7 +45,6 @@ import org.apache.isis.core.metamodel.services.configinternal.ConfigurationServi
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.Persistability;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
@@ -64,8 +63,6 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
      */
     private ObjectSpecId specId;
 
-    private Persistability persistable;
-
     private ServicesInjector servicesInjector;
 
     public ObjectSpecificationStub(final Class<?> type) {
@@ -87,7 +84,6 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
     public ObjectSpecificationStub(final String name) {
         this.name = name;
         title = "";
-        persistable = Persistability.USER_PERSISTABLE;
     }
 
     @Override
@@ -292,11 +288,6 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
     }
 
     @Override
-    public Persistability persistability() {
-        return persistable;
-    }
-
-    @Override
     public List<ObjectSpecification> subclasses() {
         return subclasses;
     }
@@ -326,11 +317,6 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
         return Identifier.classIdentifier(name);
     }
 
-    // TODO: not used
-    public void setupPersistable(final Persistability persistable) {
-        this.persistable = persistable;
-    }
-
     @Override
     public boolean isParentedOrFreeCollection() {
         return false;
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureService.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureService.java
index 4e8b7a6a..c05cb27 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureService.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureService.java
@@ -28,7 +28,6 @@ import java.util.List;
 import java.util.Set;
 
 import javax.annotation.PostConstruct;
-import javax.inject.Inject;
 
 import com.google.common.collect.Sets;
 
@@ -49,7 +48,6 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.Persistability;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -97,11 +95,9 @@ public class ObjectFixtureService {
     @MemberOrder(sequence = "1")
     public void save(final Object object) {
         final ObjectAdapter adapter = getPersistenceSession().adapterFor(object);
-        if (adapter.getSpecification().persistability() != Persistability.TRANSIENT) {
-            LOG.info("Saving object for fixture: " + adapter);
-            addObjectAndAssociates(adapter);
-            saveAll();
-        }
+        LOG.info("Saving object for fixture: " + adapter);
+        addObjectAndAssociates(adapter);
+        saveAll();
     }
 
     private void addObjectAndAssociates(final ObjectAdapter adapter) {
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index 308508b..ca30d29 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -1077,9 +1077,6 @@ public class PersistenceSession implements
         if (adapter.representsPersistent()) {
             throw new NotPersistableException("Object already persistent: " + adapter);
         }
-        if (!adapter.getSpecification().persistability().isPersistable()) {
-            throw new NotPersistableException("Object is not persistable: " + adapter);
-        }
         final ObjectSpecification specification = adapter.getSpecification();
         if (specification.isService()) {
             throw new NotPersistableException("Cannot persist services: " + adapter);
@@ -1135,7 +1132,7 @@ public class PersistenceSession implements
 
 
     private static boolean objectSpecNotPersistable(final ObjectAdapter adapter) {
-        return !adapter.getSpecification().persistability().isPersistable() || adapter.isParentedCollection();
+        return adapter.isParentedCollection();
     }
 
 
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/JavaObjectMarkedAsTransient.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/JavaObjectMarkedAsTransient.java
deleted file mode 100644
index 1c00c7a..0000000
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/JavaObjectMarkedAsTransient.java
+++ /dev/null
@@ -1,26 +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.runtime.system;
-
-import org.apache.isis.applib.marker.NonPersistable;
-
-public class JavaObjectMarkedAsTransient implements NonPersistable {
-
-}
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
index 883d5cd..5f9d8f9 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
@@ -22,7 +22,6 @@ import org.apache.isis.applib.annotation.DomainServiceLayout;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet;
-import org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
 import org.apache.isis.core.metamodel.services.ServiceUtil;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -355,9 +354,6 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
         if (objectAdapter.representsPersistent()) {
             return;
         }
-        if(objectAdapter.getSpecification().containsDoOpFacet(NotPersistableFacet.class)) {
-            return;
-        }
         final DomainObjectReprRenderer renderer =
                 new DomainObjectReprRenderer(getRendererContext(), null, JsonRepresentation.newMap());
         final JsonRepresentation domainObjectRepr = renderer.with(objectAdapter).asPersistLinkArguments().render();
diff --git a/todo-deprecation-list.txt b/todo-deprecation-list.txt
index 2e0a877..4b647dd 100644
--- a/todo-deprecation-list.txt
+++ b/todo-deprecation-list.txt
@@ -76,6 +76,19 @@ org.apache.isis.applib.annotation
     TypeOf.java - entire annotation, use @Collection(typeOf=...) or @Action(typeOf=...) instead.
 
 
+    NotPersistable.java - entire annotation, not supported and does nothing
+
+
+org.apache.isis.applib.marker
+
+    NotPersistable.java
+
+
+
+
+
+
+
 TO REMOVE:
 
 org.apache.isis.applib
@@ -93,7 +106,6 @@ org.apache.isis.applib.annotation
 
 
 
-    NotPersistable.java - entire annotation, not supported and does nothing
 
     AutoComplete.java - entire annotation, use @DomainObject(autoComplete...=...)
     Bookmarkable.java - entire annotation, use @DomainObjectLayout(bookmarking=...)
@@ -159,12 +171,14 @@ org.apache.isis.applib.fixturescripts
     FixtureScripts.java - remove deprecated methods;
                           framework provides an implementation of this service, and use FixtureScriptsSpecificatoinProvider to configure instead.
 
+
 org.apache.isis.applib.marker - remove these marker interaces (tend to use annotations in preference)
     ImmutableOncePersisted.java
     ImmutableUntilPersisted.java
     NeverImmutable.java
-    NonPersistable.java
     ProgramPersistable.java
+
+
 org.apache.isis.applib.services.actinvoc
     ActionInvocationContext.java -remove unused constructors
 
@@ -319,6 +333,10 @@ Also for 2.0.0, new features/deprecations:
 OTHER STUFF:
 
 
+debug() stuff
+
+ObjectFixtureService
+
 
 
 inline paraname8 from incode platform
@@ -357,3 +375,4 @@ update .xsd for layout, make render optional and deprecated.
 
 
 
+link:https://issues.apache.org/jira/browse/ISIS-743[ISIS-743] - @NotPersistable annotation

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

[isis] 09/13: ISIS-1742: deletes When enum from @Hidden, @Disabled, @Immutable

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 1fe3fd98d1799b59dcd1fdbfd6d49101f9413116
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Oct 5 16:43:15 2017 +0300

    ISIS-1742: deletes When enum from @Hidden, @Disabled, @Immutable
---
 .../apache/isis/applib/annotation/Disabled.java    |   5 -
 .../org/apache/isis/applib/annotation/Hidden.java  |   7 -
 .../org/apache/isis/applib/annotation/When.java    |  89 ---------
 .../org/apache/isis/applib/util/EnumsTest.java     |  16 +-
 .../isis/core/metamodel/facets/WhenValueFacet.java |  29 ---
 .../metamodel/facets/WhenValueFacetAbstract.java   |  44 -----
 ...ndWhereValueFacet.java => WhereValueFacet.java} |   3 +-
 ...tAbstract.java => WhereValueFacetAbstract.java} |  11 +-
 ...DisabledFacetForDisabledAnnotationOnAction.java |  10 +-
 .../hidden/HiddenFacetForActionAnnotation.java     |   3 +-
 .../HiddenFacetForHiddenAnnotationOnAction.java    |   7 +-
 .../HiddenFacetForActionLayoutAnnotation.java      |   3 +-
 .../actions/layout/HiddenFacetForActionXml.java    |   3 +-
 .../metamodel/facets/all/hide/HiddenFacet.java     |   4 +-
 .../DisabledFacetForCollectionAnnotation.java      |   3 +-
 ...bledFacetForDisabledAnnotationOnCollection.java |  10 +-
 .../hidden/HiddenFacetForCollectionAnnotation.java |   3 +-
 ...HiddenFacetForHiddenAnnotationOnCollection.java |   7 +-
 ...abledFacetOnCollectionDerivedFromImmutable.java |   4 +-
 .../HiddenFacetForCollectionLayoutAnnotation.java  |   3 +-
 .../layout/HiddenFacetForCollectionXml.java        |   3 +-
 .../facets/members/disabled/DisabledFacet.java     |   4 +-
 .../members/disabled/DisabledFacetAbstract.java    |  15 +-
 .../DisabledFacetAbstractAlwaysEverywhere.java     |   3 +-
 .../disabled/DisabledFacetAbstractImpl.java        |  47 +++--
 .../disabled/DisabledFacetForContributee.java      |   3 +-
 .../facets/members/hidden/HiddenFacetAbstract.java |  16 +-
 .../HiddenFacetAbstractAlwaysEverywhere.java       |   5 +-
 .../members/hidden/HiddenFacetAbstractImpl.java    |  31 +---
 .../HiddenFacetFromLayoutPropertiesAbstract.java   |   4 +-
 .../ImmutableFacetForDomainObjectAnnotation.java   |   3 +-
 .../editing/ImmutableFacetFromConfiguration.java   |   4 +-
 .../annotation/HiddenFacetOnTypeAnnotation.java    |   5 +-
 .../HiddenFacetOnTypeAnnotationFactory.java        |   2 +-
 .../facets/object/immutable/ImmutableFacet.java    |  27 +--
 .../object/immutable/ImmutableFacetAbstract.java   |  30 +--
 .../object/immutable/ImmutableFacetUtils.java      |  38 ----
 .../ImmutableFacetForImmutableAnnotation.java      |   9 +-
 ...etOnCollectionDerivedFromRecreatableObject.java |   3 +-
 ...acetOnPropertyDerivedFromRecreatableObject.java |   3 +-
 .../value/ImmutableFacetViaValueSemantics.java     |   3 +-
 ...isabledFacetOnPropertyDerivedFromImmutable.java |   7 +-
 ...FacetOnPropertyDerivedFromImmutableFactory.java |   2 +-
 ...sabledFacetForDisabledAnnotationOnProperty.java |   7 +-
 .../DisabledFacetForPropertyAnnotation.java        |   3 +-
 ...acetForPropertyAnnotationInvertedSemantics.java |   3 +-
 .../HiddenFacetForHiddenAnnotationOnProperty.java  |   7 +-
 .../hidden/HiddenFacetForPropertyAnnotation.java   |   3 +-
 .../HiddenFacetForPropertyLayoutAnnotation.java    |   3 +-
 .../propertylayout/HiddenFacetForPropertyXml.java  |   3 +-
 .../ApplicationFeatureRepositoryDefault.java       |   4 +-
 .../metamodel/spec/feature/ObjectAssociation.java  |  11 +-
 .../core/metamodel/spec/feature/ObjectMember.java  |   2 -
 .../specloader/specimpl/ObjectMemberAbstract.java  |   2 -
 .../specimpl/ObjectSpecificationAbstract.java      |   3 +-
 .../specimpl/OneToManyAssociationContributee.java  |   2 -
 .../specimpl/OneToManyAssociationMixedIn.java      |   2 -
 .../specimpl/OneToOneAssociationContributee.java   |   2 -
 .../specimpl/OneToOneAssociationMixedIn.java       |   2 -
 ...ledFacetDerivedFromJdoPrimaryKeyAnnotation.java |   3 +-
 .../actions/ActionMethodsFacetFactoryTest.java     |   3 -
 ...DisabledAnnotationOnActionFacetFactoryTest.java |  47 +----
 .../HiddenAnnotationOnActionFacetFactoryTest.java  |  54 +-----
 .../CollectionFieldMethodsFacetFactoryTest.java    |   3 -
 .../CollectionAnnotationFacetFactoryTest.java      |   3 -
 ...ObjectAnnotationFacetFactoryTest_immutable.java |  41 +----
 .../PropertyAnnotationFacetFactoryTest.java        |   5 +-
 .../ObjectAssociationFiltersTest_visibleWhere.java |  48 ++---
 .../ApplicationFeatureRepositoryDefaultTest.java   |   3 +-
 ...ObjectAssociationAbstractTest_alwaysHidden.java |  18 +-
 .../runtime/system/ObjectMemberAbstractTest.java   |   9 +-
 .../progmodel/wrapper/dom/employees/Employee.java  |   3 -
 todo-deprecation-list.txt                          | 203 +++++++++++----------
 73 files changed, 300 insertions(+), 733 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Disabled.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Disabled.java
index 531d81b..f438672 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Disabled.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Disabled.java
@@ -34,11 +34,6 @@ import java.lang.annotation.Target;
 @Deprecated
 public @interface Disabled {
 
-    /**
-     * @deprecated.  There is no corresponding attribute in {@link org.apache.isis.applib.annotation.Property}, {@link org.apache.isis.applib.annotation.Collection}; the feature is assumed to be disabled ALWAYS.
-     */
-    @Deprecated
-    When when() default When.ALWAYS;
 
     /**
      * @deprecated - see {@link Property#editing()} and {@link Collection#editing()}.
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Hidden.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Hidden.java
index 6dbe0b6..9c02608 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Hidden.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Hidden.java
@@ -35,13 +35,6 @@ import java.lang.annotation.Target;
 public @interface Hidden {
 
     /**
-     * @deprecated.  There is no corresponding attribute in {@link org.apache.isis.applib.annotation.Property}, {@link org.apache.isis.applib.annotation.Collection} and {@link org.apache.isis.applib.annotation.Action}, if the
-     * corresponding <code>hidden()</code> attribute is set then the feature is assumed to be hidden ALWAYS.
-     */
-    @Deprecated
-    When when() default When.ALWAYS;
-
-    /**
      * @deprecated - see {@link Property#hidden()}, {@link Collection#hidden()} and {@link Action#hidden()}.
      */
     @Deprecated
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/When.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/When.java
deleted file mode 100644
index 5e866f5..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/When.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.annotation;
-
-import org.apache.isis.applib.util.Enums;
-
-/**
- * @deprecated - the concept of evaluating whether a feature is hidden/disabled based on the object's persistence is deprecated and will (probably) be removed in a future version; use only {@link #ALWAYS}.
- */
-@Deprecated
-public enum When {
-
-    /**
-     * If annotated on a member, then that member should be disabled/hidden for persisted objects, but should be
-     * visible for transient objects.
-     * 
-     * <p>
-     * If annotated on an class, then applies to all members of that class.
-     */
-    @Deprecated
-    ONCE_PERSISTED,
-
-    /**
-     * If annotated on a member, then that member should be disabled/hidden for transient objects, but should be
-     * visible for persisted objects.
-     * 
-     * <p>
-     * If annotated on an class, then applies to all members of that class.
-     */
-    @Deprecated
-    UNTIL_PERSISTED,
-
-    /**
-     * If annotated on a member, then that member should be disabled/hidden both for objects that are persisted
-     * and for objects that are not persisted.
-     * 
-     * <p>
-     * Combines {@link #ONCE_PERSISTED} and {@link #UNTIL_PERSISTED}. 
-     * 
-     * <p>
-     * If annotated on an class, then applies to all members of that class.
-     */
-    @Deprecated
-    ALWAYS,
-
-    /**
-     * If annotated on a member, then that member should not be disabled/hidden.
-     * 
-     * <p>
-     * If annotated on an class, then applies to all members of that class.
-     */
-    NEVER;
-
-    @Deprecated
-    public String getFriendlyName() {
-        return Enums.getFriendlyNameOf(this);
-    }
-    
-
-    @Deprecated
-    public interface Persistable {
-        public boolean isTransient();
-    }
-
-    @Deprecated
-    public boolean appliesTo(final Persistable persistable) {
-        final boolean isTransient = persistable.isTransient();
-        return this == When.ALWAYS || 
-               this == When.ONCE_PERSISTED && !isTransient || 
-               this == When.UNTIL_PERSISTED && isTransient;
-    }
-}
diff --git a/core/applib/src/test/java/org/apache/isis/applib/util/EnumsTest.java b/core/applib/src/test/java/org/apache/isis/applib/util/EnumsTest.java
index 341476f..536af97 100644
--- a/core/applib/src/test/java/org/apache/isis/applib/util/EnumsTest.java
+++ b/core/applib/src/test/java/org/apache/isis/applib/util/EnumsTest.java
@@ -19,25 +19,25 @@
 
 package org.apache.isis.applib.util;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
 import org.junit.Test;
 
-import org.apache.isis.applib.annotation.When;
+import org.apache.isis.applib.annotation.Where;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
 
 public class EnumsTest {
 
     @Test
     public void getFriendlyNameOf() {
-        assertThat(Enums.getFriendlyNameOf(When.ALWAYS), is("Always"));
-        assertThat(Enums.getFriendlyNameOf(When.ONCE_PERSISTED), is("Once Persisted"));
+        assertThat(Enums.getFriendlyNameOf(Where.ANYWHERE), is("Anywhere"));
+        assertThat(Enums.getFriendlyNameOf(Where.ALL_TABLES), is("All Tables"));
     }
 
     @Test
     public void getEnumNameFromFriendly() {
-        assertThat(Enums.getEnumNameFromFriendly("Always"), is("ALWAYS"));
-        assertThat(Enums.getEnumNameFromFriendly("Once Persisted"), is("ONCE_PERSISTED"));
+        assertThat(Enums.getEnumNameFromFriendly("Anywhere"), is("ANYWHERE"));
+        assertThat(Enums.getEnumNameFromFriendly("All Tables"), is("ALL_TABLES"));
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhenValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhenValueFacet.java
deleted file mode 100644
index 172bf4b..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhenValueFacet.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets;
-
-import org.apache.isis.applib.annotation.When;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-
-public interface WhenValueFacet extends Facet {
-
-    public When when();
-    
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhenValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhenValueFacetAbstract.java
deleted file mode 100644
index d565377..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhenValueFacetAbstract.java
+++ /dev/null
@@ -1,44 +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;
-
-import org.apache.isis.applib.annotation.When;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-public abstract class WhenValueFacetAbstract extends FacetAbstract implements WhenValueFacet {
-    private final When when;
-
-    public WhenValueFacetAbstract(final Class<? extends Facet> facetType, final FacetHolder holder, final When when) {
-        super(facetType, holder, Derivation.NOT_DERIVED);
-        this.when = when;
-    }
-
-    @Override
-    public When when() {
-        return when;
-    }
-
-    @Override
-    protected String toStringValues() {
-        return "when=" + when.getFriendlyName();
-    }
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhenAndWhereValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhereValueFacet.java
similarity index 90%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhenAndWhereValueFacet.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhereValueFacet.java
index 11dd922..52d47af 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhenAndWhereValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhereValueFacet.java
@@ -20,8 +20,9 @@
 package org.apache.isis.core.metamodel.facets;
 
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.metamodel.facetapi.Facet;
 
-public interface WhenAndWhereValueFacet extends WhenValueFacet {
+public interface WhereValueFacet extends Facet {
 
     public Where where();
     
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhenAndWhereValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhereValueFacetAbstract.java
similarity index 77%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhenAndWhereValueFacetAbstract.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhereValueFacetAbstract.java
index 2312461..2c2a979 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhenAndWhereValueFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/WhereValueFacetAbstract.java
@@ -19,16 +19,19 @@
 
 package org.apache.isis.core.metamodel.facets;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 
-public abstract class WhenAndWhereValueFacetAbstract extends WhenValueFacetAbstract implements WhenAndWhereValueFacet {
+public abstract class WhereValueFacetAbstract extends FacetAbstract implements WhereValueFacet {
     private final Where where;
 
-    public WhenAndWhereValueFacetAbstract(final Class<? extends Facet> facetType, final FacetHolder holder, final When when, final Where where) {
-        super(facetType, holder, when);
+    public WhereValueFacetAbstract(
+            final Class<? extends Facet> facetType,
+            final FacetHolder holder,
+            final Where where) {
+        super(facetType, holder, Derivation.NOT_DERIVED);
         this.where = where;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/disabled/DisabledFacetForDisabledAnnotationOnAction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/disabled/DisabledFacetForDisabledAnnotationOnAction.java
index e6ff03f..d66cbe7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/disabled/DisabledFacetForDisabledAnnotationOnAction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/disabled/DisabledFacetForDisabledAnnotationOnAction.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.actions.action.disabled;
 
 import org.apache.isis.applib.annotation.Disabled;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
@@ -34,12 +33,15 @@ public class DisabledFacetForDisabledAnnotationOnAction extends DisabledFacetAbs
 
     public static DisabledFacet create(final Disabled annotation, final FacetHolder facetHolder) {
         return annotation != null
-                ? new DisabledFacetForDisabledAnnotationOnAction(annotation.when(), annotation.where(), annotation.reason(), facetHolder)
+                ? new DisabledFacetForDisabledAnnotationOnAction(annotation.where(), annotation.reason(), facetHolder)
                 : null;
     }
 
-    private DisabledFacetForDisabledAnnotationOnAction(final When when, Where where, String reason, final FacetHolder holder) {
-        super(when, where, reason, holder);
+    private DisabledFacetForDisabledAnnotationOnAction(
+            Where where,
+            String reason,
+            final FacetHolder holder) {
+        super(where, reason, holder);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
index 5631252..61c2477 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.actions.action.hidden;
 
 import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -45,7 +44,7 @@ public class HiddenFacetForActionAnnotation extends HiddenFacetAbstract {
     }
 
     private HiddenFacetForActionAnnotation(final Where where, final FacetHolder holder) {
-        super(HiddenFacetForActionAnnotation.class, When.ALWAYS, where, holder);
+        super(HiddenFacetForActionAnnotation.class, where, holder);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForHiddenAnnotationOnAction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForHiddenAnnotationOnAction.java
index 51bedb5..783679a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForHiddenAnnotationOnAction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForHiddenAnnotationOnAction.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.actions.action.hidden;
 
 import org.apache.isis.applib.annotation.Hidden;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
@@ -36,11 +35,11 @@ public class HiddenFacetForHiddenAnnotationOnAction extends HiddenFacetAbstractI
         if (hiddenAnnotation == null) {
             return null;
         }
-        return new HiddenFacetForHiddenAnnotationOnAction(hiddenAnnotation.when(), hiddenAnnotation.where(), facetHolder);
+        return new HiddenFacetForHiddenAnnotationOnAction(hiddenAnnotation.where(), facetHolder);
     }
 
-    private HiddenFacetForHiddenAnnotationOnAction(final When when, Where where, final FacetHolder holder) {
-        super(HiddenFacetForHiddenAnnotationOnAction.class, when, where, holder);
+    private HiddenFacetForHiddenAnnotationOnAction(Where where, final FacetHolder holder) {
+        super(HiddenFacetForHiddenAnnotationOnAction.class, where, holder);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutAnnotation.java
index 5f9d3a9..48f8a53 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutAnnotation.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.actions.layout;
 
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -38,7 +37,7 @@ public class HiddenFacetForActionLayoutAnnotation extends HiddenFacetAbstract {
     }
 
     private HiddenFacetForActionLayoutAnnotation(final Where where, final FacetHolder holder) {
-        super(When.ALWAYS, where, holder);
+        super(where, holder);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionXml.java
index 433a859..91477a8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionXml.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.actions.layout;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.layout.component.ActionLayoutData;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -38,7 +37,7 @@ public class HiddenFacetForActionXml extends HiddenFacetAbstract {
     }
 
     private HiddenFacetForActionXml(final Where where, final FacetHolder holder) {
-        super(When.ALWAYS, where, holder);
+        super(where, holder);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/hide/HiddenFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/hide/HiddenFacet.java
index 60de2e3..22f45d0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/hide/HiddenFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/all/hide/HiddenFacet.java
@@ -20,13 +20,13 @@
 package org.apache.isis.core.metamodel.facets.all.hide;
 
 import org.apache.isis.core.metamodel.facetapi.MultiTypedFacet;
-import org.apache.isis.core.metamodel.facets.WhenAndWhereValueFacet;
+import org.apache.isis.core.metamodel.facets.WhereValueFacet;
 import org.apache.isis.core.metamodel.interactions.HidingInteractionAdvisor;
 
 /**
  * Hide a property, collection or action.
  */
-public interface HiddenFacet extends WhenAndWhereValueFacet, HidingInteractionAdvisor, MultiTypedFacet {
+public interface HiddenFacet extends WhereValueFacet, HidingInteractionAdvisor, MultiTypedFacet {
 
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForCollectionAnnotation.java
index f63c5b7..c2ea273 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForCollectionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForCollectionAnnotation.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.metamodel.facets.collections.collection.disabled;
 
 import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
@@ -58,7 +57,7 @@ public class DisabledFacetForCollectionAnnotation extends DisabledFacetAbstractI
     }
 
     private DisabledFacetForCollectionAnnotation(final String reason, final FacetHolder holder) {
-        super(When.ALWAYS, Where.EVERYWHERE, reason, holder);
+        super(Where.EVERYWHERE, reason, holder);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForDisabledAnnotationOnCollection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForDisabledAnnotationOnCollection.java
index b1bcb87..cbe8763 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForDisabledAnnotationOnCollection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForDisabledAnnotationOnCollection.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.collections.collection.disabled;
 
 import org.apache.isis.applib.annotation.Disabled;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
@@ -34,12 +33,15 @@ public class DisabledFacetForDisabledAnnotationOnCollection extends DisabledFace
 
     public static DisabledFacet create(final Disabled annotation, final FacetHolder facetHolder) {
         return annotation != null
-                ? new DisabledFacetForDisabledAnnotationOnCollection(annotation.when(), annotation.where(), annotation.reason(), facetHolder)
+                ? new DisabledFacetForDisabledAnnotationOnCollection(annotation.where(), annotation.reason(), facetHolder)
                 : null;
     }
 
-    private DisabledFacetForDisabledAnnotationOnCollection(final When when, Where where, String reason, final FacetHolder holder) {
-        super(when, where, reason, holder);
+    private DisabledFacetForDisabledAnnotationOnCollection(
+            Where where,
+            String reason,
+            final FacetHolder holder) {
+        super(where, reason, holder);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java
index 35a9a56..7fc16f0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.collections.collection.hidden;
 
 import org.apache.isis.applib.annotation.Collection;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -46,7 +45,7 @@ public class HiddenFacetForCollectionAnnotation extends HiddenFacetAbstract {
     }
 
     private HiddenFacetForCollectionAnnotation(final Where where, final FacetHolder holder) {
-        super(HiddenFacetForCollectionAnnotation.class, When.ALWAYS, where, holder);
+        super(HiddenFacetForCollectionAnnotation.class, where, holder);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForHiddenAnnotationOnCollection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForHiddenAnnotationOnCollection.java
index 6335aab..8cc787b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForHiddenAnnotationOnCollection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForHiddenAnnotationOnCollection.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.collections.collection.hidden;
 
 import org.apache.isis.applib.annotation.Hidden;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
@@ -36,11 +35,11 @@ public class HiddenFacetForHiddenAnnotationOnCollection extends HiddenFacetAbstr
         if (hiddenAnnotation == null) {
             return null;
         }
-        return new HiddenFacetForHiddenAnnotationOnCollection(hiddenAnnotation.when(), hiddenAnnotation.where(), facetHolder);
+        return new HiddenFacetForHiddenAnnotationOnCollection(hiddenAnnotation.where(), facetHolder);
     }
 
-    private HiddenFacetForHiddenAnnotationOnCollection(final When when, Where where, final FacetHolder holder) {
-        super(HiddenFacetForHiddenAnnotationOnCollection.class, when, where, holder);
+    private HiddenFacetForHiddenAnnotationOnCollection(Where where, final FacetHolder holder) {
+        super(HiddenFacetForHiddenAnnotationOnCollection.class, where, holder);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/disabled/fromimmutable/DisabledFacetOnCollectionDerivedFromImmutable.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/disabled/fromimmutable/DisabledFacetOnCollectionDerivedFromImmutable.java
index 9641c0a..db0a7b2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/disabled/fromimmutable/DisabledFacetOnCollectionDerivedFromImmutable.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/disabled/fromimmutable/DisabledFacetOnCollectionDerivedFromImmutable.java
@@ -28,12 +28,12 @@ import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstr
 public class DisabledFacetOnCollectionDerivedFromImmutable extends DisabledFacetAbstract {
 
     public DisabledFacetOnCollectionDerivedFromImmutable(final ImmutableFacet immutableFacet, final FacetHolder holder) {
-        super(immutableFacet.when(), Where.ANYWHERE, holder);
+        super(Where.ANYWHERE, holder);
     }
 
     @Override
     public String disabledReason(final ObjectAdapter target) {
-        return when().appliesTo(target) ? "Immutable" : null;
+        return "Immutable";
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionLayoutAnnotation.java
index 16dfd8a..787c095 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionLayoutAnnotation.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.collections.layout;
 
 import org.apache.isis.applib.annotation.CollectionLayout;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -38,7 +37,7 @@ public class HiddenFacetForCollectionLayoutAnnotation extends HiddenFacetAbstrac
     }
 
     private HiddenFacetForCollectionLayoutAnnotation(final Where where, final FacetHolder holder) {
-        super(When.ALWAYS, where, holder);
+        super(where, holder);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionXml.java
index a8466e4..6bb31c1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionXml.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.collections.layout;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -38,7 +37,7 @@ public class HiddenFacetForCollectionXml extends HiddenFacetAbstract {
     }
 
     private HiddenFacetForCollectionXml(final Where where, final FacetHolder holder) {
-        super(When.ALWAYS, where, holder);
+        super(where, holder);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java
index d1f3988..a8298e1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacet.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.members.disabled;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.WhenAndWhereValueFacet;
+import org.apache.isis.core.metamodel.facets.WhereValueFacet;
 import org.apache.isis.core.metamodel.interactions.DisablingInteractionAdvisor;
 
 /**
@@ -32,7 +32,7 @@ import org.apache.isis.core.metamodel.interactions.DisablingInteractionAdvisor;
  * In the standard Apache Isis Programming Model, corresponds to annotating the
  * member with <tt>@Disabled</tt>.
  */
-public interface DisabledFacet extends WhenAndWhereValueFacet, DisablingInteractionAdvisor {
+public interface DisabledFacet extends WhereValueFacet, DisablingInteractionAdvisor {
 
     /**
      * The reason why the (feature of the) target object is currently disabled,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
index bb907ee..15bb6a3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstract.java
@@ -19,19 +19,18 @@
 
 package org.apache.isis.core.metamodel.facets.members.disabled;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.events.UsabilityEvent;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.WhenAndWhereValueFacetAbstract;
+import org.apache.isis.core.metamodel.facets.WhereValueFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.ActionUsabilityContext;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.specloader.specimpl.OneToManyAssociationContributee;
 import org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationContributee;
 
-public abstract class DisabledFacetAbstract extends WhenAndWhereValueFacetAbstract implements DisabledFacet {
+public abstract class DisabledFacetAbstract extends WhereValueFacetAbstract implements DisabledFacet {
 
     public static Class<? extends Facet> type() {
         return DisabledFacet.class;
@@ -44,25 +43,23 @@ public abstract class DisabledFacetAbstract extends WhenAndWhereValueFacetAbstra
         ENABLED;
     }
 
-    public DisabledFacetAbstract(final When when, Where where, final FacetHolder holder) {
-        this(when, where, holder, Semantics.DISABLED);
+    public DisabledFacetAbstract(Where where, final FacetHolder holder) {
+        this(where, holder, Semantics.DISABLED);
     }
 
     public DisabledFacetAbstract(
-            final When when,
             final Where where,
             final FacetHolder holder,
             final Semantics semantics) {
-        this(type(), when, where, holder, semantics);
+        this(type(), where, holder, semantics);
     }
 
     protected DisabledFacetAbstract(
             final Class<? extends Facet> type,
-            final When when,
             final Where where,
             final FacetHolder holder,
             final Semantics semantics) {
-        super(type, holder, when, where);
+        super(type, holder, where);
         this.semantics = semantics;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractAlwaysEverywhere.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractAlwaysEverywhere.java
index 52057c6..15d13f9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractAlwaysEverywhere.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractAlwaysEverywhere.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.members.disabled;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -27,7 +26,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 public abstract class DisabledFacetAbstractAlwaysEverywhere extends DisabledFacetAbstract {
 
     public DisabledFacetAbstractAlwaysEverywhere(final FacetHolder holder) {
-        super(When.ALWAYS, Where.ANYWHERE, holder);
+        super(Where.ANYWHERE, holder);
     }
 
     /**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java
index 2d25ced..4a67b46 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetAbstractImpl.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.metamodel.facets.members.disabled;
 
 import com.google.common.base.Strings;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -30,46 +29,42 @@ public abstract class DisabledFacetAbstractImpl extends DisabledFacetAbstract {
 
     private final String reason;
 
-    public DisabledFacetAbstractImpl(final When when, final Where where, final FacetHolder holder) {
-        this(when, where, null, holder);
+    public DisabledFacetAbstractImpl(final Where where, final FacetHolder holder) {
+        this(where, null, holder);
     }
 
-    public DisabledFacetAbstractImpl(final When when, final Where where, final FacetHolder holder, final Semantics semantics) {
-        this(when, where, null, holder, semantics);
+    public DisabledFacetAbstractImpl(
+            final Where where,
+            final FacetHolder holder,
+            final Semantics semantics) {
+        this(where, null, holder, semantics);
     }
 
-    public DisabledFacetAbstractImpl(final When when, final Where where, final String reason, final FacetHolder holder) {
-        super(when, where, holder);
+    public DisabledFacetAbstractImpl(
+            final Where where,
+            final String reason,
+            final FacetHolder holder) {
+        super(where, holder);
         this.reason = reason;
     }
 
-    public DisabledFacetAbstractImpl(final When when, final Where where, final String reason, final FacetHolder holder, final Semantics semantics) {
-        super(when, where, holder, semantics);
+    public DisabledFacetAbstractImpl(
+            final Where where,
+            final String reason,
+            final FacetHolder holder,
+            final Semantics semantics) {
+        super(where, holder, semantics);
         this.reason = reason;
     }
 
     @Override
     public String disabledReason(final ObjectAdapter targetAdapter) {
-        if (when() == When.ALWAYS) {
-            return disabledReasonElse("Always disabled");
-        } else if (when() == When.NEVER) {
-            return null;
-        }
+        return disabledReasonElse("Always disabled");
 
-        // remaining tests depend upon the actual target in question
-        if (targetAdapter == null) {
-            return null;
-        }
-
-        if (when() == When.UNTIL_PERSISTED) {
-            return targetAdapter.isTransient() ? disabledReasonElse("Disabled until persisted") : null;
-        } else if (when() == When.ONCE_PERSISTED) {
-            return targetAdapter.representsPersistent() ? disabledReasonElse("Disabled once persisted") : null;
-        }
-        return null;
     }
 
-    private String disabledReasonElse(final String defaultReason) {
+    private String disabledReasonElse(
+            final String defaultReason) {
         return !Strings.isNullOrEmpty(reason) ? reason : defaultReason;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetForContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetForContributee.java
index ea13bf8..8a134bd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetForContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/disabled/DisabledFacetForContributee.java
@@ -19,13 +19,12 @@
 
 package org.apache.isis.core.metamodel.facets.members.disabled;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 
 public class DisabledFacetForContributee extends DisabledFacetAbstractImpl {
 
     public DisabledFacetForContributee(String reason, FacetHolder holder) {
-        super(When.ALWAYS, Where.ANYWHERE, reason, holder);
+        super(Where.ANYWHERE, reason, holder);
     }
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
index 6986076..83280f1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
@@ -19,13 +19,12 @@
 
 package org.apache.isis.core.metamodel.facets.members.hidden;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.events.VisibilityEvent;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.WhenAndWhereValueFacetAbstract;
+import org.apache.isis.core.metamodel.facets.WhereValueFacetAbstract;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 
@@ -46,17 +45,20 @@ import org.apache.isis.core.metamodel.interactions.VisibilityContext;
  *     of facets returned contains no duplicates.
  * </p>
  */
-public abstract class HiddenFacetAbstract extends WhenAndWhereValueFacetAbstract implements HiddenFacet {
+public abstract class HiddenFacetAbstract extends WhereValueFacetAbstract implements HiddenFacet {
 
-    public HiddenFacetAbstract(final Class<? extends Facet> facetType, final When when, Where where, final FacetHolder holder) {
-        super(facetType, holder, when, where);
+    public HiddenFacetAbstract(
+            final Class<? extends Facet> facetType,
+            Where where,
+            final FacetHolder holder) {
+        super(facetType, holder, where);
     }
 
     /**
      * For testing only.
      */
-    public HiddenFacetAbstract(final When when, Where where, final FacetHolder holder) {
-        super(HiddenFacetAbstract.class, holder, when, where);
+    public HiddenFacetAbstract(Where where, final FacetHolder holder) {
+        super(HiddenFacetAbstract.class, holder, where);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractAlwaysEverywhere.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractAlwaysEverywhere.java
index a819827..055a4dd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractAlwaysEverywhere.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractAlwaysEverywhere.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.members.hidden;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -29,7 +28,7 @@ public abstract class HiddenFacetAbstractAlwaysEverywhere extends HiddenFacetAbs
 
     public HiddenFacetAbstractAlwaysEverywhere(
             final Class<? extends Facet> facetType, final FacetHolder holder) {
-        super(facetType, When.ALWAYS, Where.ANYWHERE, holder);
+        super(facetType, Where.ANYWHERE, holder);
     }
 
     /**
@@ -37,7 +36,7 @@ public abstract class HiddenFacetAbstractAlwaysEverywhere extends HiddenFacetAbs
      */
     public HiddenFacetAbstractAlwaysEverywhere(
             final FacetHolder holder) {
-        super(HiddenFacetAbstractAlwaysEverywhere.class, When.ALWAYS, Where.ANYWHERE, holder);
+        super(HiddenFacetAbstractAlwaysEverywhere.class, Where.ANYWHERE, holder);
     }
 
     /**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractImpl.java
index bd8a15d..9bbb2de 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractImpl.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstractImpl.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.members.hidden;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -27,15 +26,18 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 
 public abstract class HiddenFacetAbstractImpl extends HiddenFacetAbstract {
 
-    public HiddenFacetAbstractImpl(final Class<? extends Facet> facetType, final When when, Where where, final FacetHolder holder) {
-        super(facetType, when, where, holder);
+    public HiddenFacetAbstractImpl(
+            final Class<? extends Facet> facetType,
+            Where where,
+            final FacetHolder holder) {
+        super(facetType, where, holder);
     }
 
     /**
      * For testing only.
      */
-    public HiddenFacetAbstractImpl(final When when, Where where, final FacetHolder holder) {
-        super(HiddenFacetAbstractImpl.class, when, where, holder);
+    public HiddenFacetAbstractImpl(Where where, final FacetHolder holder) {
+        super(HiddenFacetAbstractImpl.class, where, holder);
     }
 
     @Override
@@ -44,24 +46,7 @@ public abstract class HiddenFacetAbstractImpl extends HiddenFacetAbstract {
             return null;
         }
         
-        if (when() == When.ALWAYS) {
-            return "Always hidden";
-        }
-        if (when() == When.NEVER) {
-            return null;
-        }
-
-        // remaining tests depend on target in question.
-        if (targetAdapter == null) {
-            return null;
-        }
-
-        if (when() == When.UNTIL_PERSISTED) {
-            return targetAdapter.isTransient() ? "Hidden until persisted" : null;
-        } else if (when() == When.ONCE_PERSISTED) {
-            return targetAdapter.representsPersistent() ? "Hidden once persisted" : null;
-        }
-        return null;
+        return "Always hidden";
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetFromLayoutPropertiesAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetFromLayoutPropertiesAbstract.java
index 4c57da2..5611dd2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetFromLayoutPropertiesAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetFromLayoutPropertiesAbstract.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.members.hidden;
 
 import java.util.Properties;
 import com.google.common.base.Strings;
-import org.apache.isis.applib.annotation.When;
+
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -40,7 +40,7 @@ public abstract class HiddenFacetFromLayoutPropertiesAbstract extends HiddenFace
     }
 
     protected HiddenFacetFromLayoutPropertiesAbstract(final Where where, final FacetHolder holder) {
-        super(HiddenFacetFromLayoutPropertiesAbstract.class, When.ALWAYS, where, holder);
+        super(HiddenFacetFromLayoutPropertiesAbstract.class, where, holder);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java
index e931ddc..f657963 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java
@@ -22,7 +22,6 @@ package org.apache.isis.core.metamodel.facets.object.domainobject.editing;
 import com.google.common.base.Strings;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -66,7 +65,7 @@ public class ImmutableFacetForDomainObjectAnnotation extends ImmutableFacetAbstr
     }
 
     public ImmutableFacetForDomainObjectAnnotation(final String reason, final FacetHolder holder) {
-        super(When.ALWAYS, holder);
+        super(holder);
         this.reason = reason;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetFromConfiguration.java
index afe6786..e76e694 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetFromConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetFromConfiguration.java
@@ -20,7 +20,7 @@
 package org.apache.isis.core.metamodel.facets.object.domainobject.editing;
 
 import com.google.common.base.Strings;
-import org.apache.isis.applib.annotation.When;
+
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -32,7 +32,7 @@ public class ImmutableFacetFromConfiguration extends ImmutableFacetAbstract {
     private final String reason;
 
     public ImmutableFacetFromConfiguration(final String reason, final FacetHolder holder) {
-        super(When.ALWAYS, holder);
+        super(holder);
         this.reason = reason;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotation.java
index d14221c..5917eb5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotation.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.object.hidden.annotation;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstractImpl;
@@ -30,8 +29,8 @@ import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstractI
 @Deprecated
 public class HiddenFacetOnTypeAnnotation extends HiddenFacetAbstractImpl {
 
-    public HiddenFacetOnTypeAnnotation(final When when, final FacetHolder holder) {
-        super(HiddenFacetOnTypeAnnotation.class, when, Where.ANYWHERE, holder);
+    public HiddenFacetOnTypeAnnotation(final Object whenUNUSED, final FacetHolder holder) {
+        super(HiddenFacetOnTypeAnnotation.class, Where.ANYWHERE, holder);
     }
 
 }
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 43db454..2b0907b 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
@@ -53,7 +53,7 @@ public class HiddenFacetOnTypeAnnotationFactory extends FacetFactoryAbstract imp
     }
 
     private static HiddenFacet create(final Hidden annotation, final FacetHolder holder) {
-        return annotation == null ? null : new HiddenFacetOnTypeAnnotation(annotation.when(), holder);
+        return annotation == null ? null : new HiddenFacetOnTypeAnnotation(null, holder);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacet.java
index 7d6ba57..bc59691 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacet.java
@@ -19,9 +19,8 @@
 
 package org.apache.isis.core.metamodel.facets.object.immutable;
 
-import org.apache.isis.applib.annotation.When;
+import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.WhenValueFacet;
 import org.apache.isis.core.metamodel.facets.object.value.EqualByContentFacet;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
 import org.apache.isis.core.metamodel.interactions.DisablingInteractionAdvisor;
@@ -39,7 +38,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
  * @see EqualByContentFacet
  * @see ValueFacet
  */
-public interface ImmutableFacet extends WhenValueFacet, DisablingInteractionAdvisor {
+public interface ImmutableFacet extends Facet, DisablingInteractionAdvisor {
 
     /**
      * Clone this facet onto another {@link FacetHolder}.
@@ -54,31 +53,17 @@ public interface ImmutableFacet extends WhenValueFacet, DisablingInteractionAdvi
     public final static class Utils {
 
         private Utils(){}
-        public static boolean isAlwaysImmutable(final ObjectSpecification specification) {
-            // this is a workaround for a dubious test
-            if (specification == null) {
-                return false;
-            }
+        public static boolean isAlwaysImmutable(
+                final ObjectSpecification specification) {
 
-            final ImmutableFacet immutableFacet = specification.getFacet(ImmutableFacet.class);
-            if (immutableFacet == null) {
-                return false;
-            }
-            return immutableFacet.when() == When.ALWAYS;
-        }
-
-        public static boolean isImmutableOncePersisted(final ObjectSpecification specification) {
             // this is a workaround for a dubious test
             if (specification == null) {
                 return false;
             }
 
-            final ImmutableFacet immutableFacet = specification.getFacet(ImmutableFacet.class);
-            if (immutableFacet == null) {
-                return false;
-            }
-            return immutableFacet.when() == When.ONCE_PERSISTED;
+            return specification.getFacet(ImmutableFacet.class) != null;
         }
 
+
     }
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetAbstract.java
index 3d196a9..d9f5ab2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetAbstract.java
@@ -19,22 +19,21 @@
 
 package org.apache.isis.core.metamodel.facets.object.immutable;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.events.UsabilityEvent;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.WhenValueFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 
-public abstract class ImmutableFacetAbstract extends WhenValueFacetAbstract implements ImmutableFacet {
+public abstract class ImmutableFacetAbstract extends FacetAbstract implements ImmutableFacet {
 
     public static Class<? extends Facet> type() {
         return ImmutableFacet.class;
     }
 
-    public ImmutableFacetAbstract(final When value, final FacetHolder holder) {
-        super(type(), holder, value);
+    public ImmutableFacetAbstract(final FacetHolder holder) {
+        super(type(), holder, Derivation.NOT_DERIVED);
     }
 
     /**
@@ -53,24 +52,9 @@ public abstract class ImmutableFacetAbstract extends WhenValueFacetAbstract impl
         }
     }
 
-    public String disabledReason(final ObjectAdapter targetAdapter) {
-        if (when() == When.ALWAYS) {
-            return "Always immmutable";
-        } else if (when() == When.NEVER) {
-            return null;
-        }
-
-        // remaining tests depend on target in question.
-        if (targetAdapter == null) {
-            return null;
-        }
-
-        if (when() == When.UNTIL_PERSISTED) {
-            return targetAdapter.isTransient() ? "Immutable until persisted" : null;
-        } else if (when() == When.ONCE_PERSISTED) {
-            return targetAdapter.representsPersistent() ? "Immutable once persisted" : null;
-        }
-        return null;
+    public String disabledReason(
+            final ObjectAdapter targetAdapter) {
+        return "Always immmutable";
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetUtils.java
deleted file mode 100644
index c56a697..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetUtils.java
+++ /dev/null
@@ -1,38 +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.immutable;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-
-@Deprecated
-public final class ImmutableFacetUtils {
-
-    @Deprecated
-    public static boolean isAlwaysImmutable(final ObjectSpecification specification) {
-        return ImmutableFacet.Utils.isAlwaysImmutable(specification);
-    }
-
-    public static boolean isImmutableOncePersisted(final ObjectSpecification specification) {
-        return ImmutableFacet.Utils.isImmutableOncePersisted(specification);
-    }
-
-    private ImmutableFacetUtils() {
-    }
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/immutableannot/ImmutableFacetForImmutableAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/immutableannot/ImmutableFacetForImmutableAnnotation.java
index 4576d93..db9424c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/immutableannot/ImmutableFacetForImmutableAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/immutableannot/ImmutableFacetForImmutableAnnotation.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.object.immutable.immutableannot;
 
 import org.apache.isis.applib.annotation.Immutable;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
@@ -34,16 +33,16 @@ public class ImmutableFacetForImmutableAnnotation extends ImmutableFacetAbstract
         if (annotation == null) {
             return null;
         }
-        return new ImmutableFacetForImmutableAnnotation(annotation.value(), facetHolder);
+        return new ImmutableFacetForImmutableAnnotation(facetHolder);
     }
 
-    private ImmutableFacetForImmutableAnnotation(final When value, final FacetHolder holder) {
-        super(value, holder);
+    private ImmutableFacetForImmutableAnnotation(final FacetHolder holder) {
+        super(holder);
     }
 
     @Override
     public void copyOnto(final FacetHolder holder) {
-        final Facet facet = new ImmutableFacetForImmutableAnnotation(this.when(), holder);
+        final Facet facet = new ImmutableFacetForImmutableAnnotation(holder);
         FacetUtil.addFacet(facet);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnCollectionDerivedFromRecreatableObject.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnCollectionDerivedFromRecreatableObject.java
index 900d021..1409812 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnCollectionDerivedFromRecreatableObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnCollectionDerivedFromRecreatableObject.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.object.recreatable;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -33,7 +32,7 @@ public class DisabledFacetOnCollectionDerivedFromRecreatableObject extends Disab
             final Semantics semantics) {
         super(
                 DisabledFacetOnCollectionDerivedFromRecreatableObject.class, // so don't clobber any other DisabledFacet's
-                When.ALWAYS, Where.ANYWHERE, holder, semantics);
+                Where.ANYWHERE, holder, semantics);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnPropertyDerivedFromRecreatableObject.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnPropertyDerivedFromRecreatableObject.java
index 5279303..49a67dd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnPropertyDerivedFromRecreatableObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/DisabledFacetOnPropertyDerivedFromRecreatableObject.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.object.recreatable;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -34,7 +33,7 @@ public class DisabledFacetOnPropertyDerivedFromRecreatableObject extends Disable
             final Semantics semantics) {
         super(
                 DisabledFacetOnPropertyDerivedFromRecreatableObject.class, // so don't clobber any other DisabledFacet's
-                When.ALWAYS, Where.ANYWHERE, holder, semantics);
+                Where.ANYWHERE, holder, semantics);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ImmutableFacetViaValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ImmutableFacetViaValueSemantics.java
index a2eee36..14256ee 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ImmutableFacetViaValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ImmutableFacetViaValueSemantics.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.object.value;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
@@ -28,7 +27,7 @@ import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacetAbst
 public class ImmutableFacetViaValueSemantics extends ImmutableFacetAbstract {
 
     public ImmutableFacetViaValueSemantics(final FacetHolder holder) {
-        super(When.ALWAYS, holder);
+        super(holder);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutable.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutable.java
index 1ca6f48..3d97c2d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutable.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutable.java
@@ -22,18 +22,17 @@ package org.apache.isis.core.metamodel.facets.properties.disabled.fromimmutable;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstract;
 
 public class DisabledFacetOnPropertyDerivedFromImmutable extends DisabledFacetAbstract {
 
-    public DisabledFacetOnPropertyDerivedFromImmutable(final ImmutableFacet immutableFacet, final FacetHolder holder) {
-        super(immutableFacet.when(), Where.ANYWHERE, holder);
+    public DisabledFacetOnPropertyDerivedFromImmutable(final FacetHolder holder) {
+        super(Where.ANYWHERE, holder);
     }
 
     @Override
     public String disabledReason(final ObjectAdapter target) {
-        return when().appliesTo(target) ? "Immutable" : null;
+        return "Immutable";
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutableFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutableFactory.java
index 88e53b3..c33d11a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutableFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/disabled/fromimmutable/DisabledFacetOnPropertyDerivedFromImmutableFactory.java
@@ -50,7 +50,7 @@ public class DisabledFacetOnPropertyDerivedFromImmutableFactory extends FacetFac
                 // @Property(editing=ENABLED)
                 return;
             }
-            FacetUtil.addFacet(new DisabledFacetOnPropertyDerivedFromImmutable(immutableFacet, facetHolder));
+            FacetUtil.addFacet(new DisabledFacetOnPropertyDerivedFromImmutable(facetHolder));
         }
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForDisabledAnnotationOnProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForDisabledAnnotationOnProperty.java
index 608afd1..8f9a76b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForDisabledAnnotationOnProperty.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForDisabledAnnotationOnProperty.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.properties.property.disabled;
 
 import org.apache.isis.applib.annotation.Disabled;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
@@ -34,12 +33,12 @@ public class DisabledFacetForDisabledAnnotationOnProperty extends DisabledFacetA
 
     public static DisabledFacet create(final Disabled annotation, final FacetHolder facetHolder) {
         return annotation != null
-                ? new DisabledFacetForDisabledAnnotationOnProperty(annotation.when(), annotation.where(), annotation.reason(), facetHolder)
+                ? new DisabledFacetForDisabledAnnotationOnProperty(annotation.where(), annotation.reason(), facetHolder)
                 : null;
     }
 
-    private DisabledFacetForDisabledAnnotationOnProperty(final When when, Where where, String reason, final FacetHolder holder) {
-        super(when, where, reason, holder);
+    private DisabledFacetForDisabledAnnotationOnProperty(final Where where, String reason, final FacetHolder holder) {
+        super(where, reason, holder);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java
index 8725cdc..147fbb4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.metamodel.facets.properties.property.disabled;
 
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
@@ -56,7 +55,7 @@ public class DisabledFacetForPropertyAnnotation extends DisabledFacetAbstractImp
     }
 
     private DisabledFacetForPropertyAnnotation(final String reason, final FacetHolder holder) {
-        super(When.ALWAYS, Where.EVERYWHERE, reason, holder);
+        super(Where.EVERYWHERE, reason, holder);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotationInvertedSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotationInvertedSemantics.java
index 257ee4e..af6ae2c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotationInvertedSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotationInvertedSemantics.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.properties.property.disabled;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractImpl;
@@ -27,7 +26,7 @@ import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstr
 public class DisabledFacetForPropertyAnnotationInvertedSemantics extends DisabledFacetAbstractImpl {
 
     DisabledFacetForPropertyAnnotationInvertedSemantics(final FacetHolder holder) {
-        super(When.ALWAYS, Where.EVERYWHERE, null, holder, Semantics.ENABLED);
+        super(Where.EVERYWHERE, null, holder, Semantics.ENABLED);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForHiddenAnnotationOnProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForHiddenAnnotationOnProperty.java
index b491840..a81f797 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForHiddenAnnotationOnProperty.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForHiddenAnnotationOnProperty.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.properties.property.hidden;
 
 import org.apache.isis.applib.annotation.Hidden;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
@@ -36,11 +35,11 @@ public class HiddenFacetForHiddenAnnotationOnProperty extends HiddenFacetAbstrac
         if (hiddenAnnotation == null) {
             return null;
         }
-        return new HiddenFacetForHiddenAnnotationOnProperty(hiddenAnnotation.when(), hiddenAnnotation.where(), facetHolder);
+        return new HiddenFacetForHiddenAnnotationOnProperty(hiddenAnnotation.where(), facetHolder);
     }
 
-    private HiddenFacetForHiddenAnnotationOnProperty(final When when, Where where, final FacetHolder holder) {
-        super(HiddenFacetForHiddenAnnotationOnProperty.class, when, where, holder);
+    private HiddenFacetForHiddenAnnotationOnProperty(Where where, final FacetHolder holder) {
+        super(HiddenFacetForHiddenAnnotationOnProperty.class, where, holder);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java
index 33f5796..0b9ea1e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.properties.property.hidden;
 
 import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -44,7 +43,7 @@ public class HiddenFacetForPropertyAnnotation extends HiddenFacetAbstract {
     }
 
     private HiddenFacetForPropertyAnnotation(final Where where, final FacetHolder holder) {
-        super(HiddenFacetForPropertyAnnotation.class, When.ALWAYS, where, holder);
+        super(HiddenFacetForPropertyAnnotation.class, where, holder);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyLayoutAnnotation.java
index f01a022..307ef7e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyLayoutAnnotation.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.properties.propertylayout;
 
 import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -38,7 +37,7 @@ public class HiddenFacetForPropertyLayoutAnnotation extends HiddenFacetAbstract
     }
 
     private HiddenFacetForPropertyLayoutAnnotation(final Where where, final FacetHolder holder) {
-        super(HiddenFacetForPropertyLayoutAnnotation.class, When.ALWAYS, where, holder);
+        super(HiddenFacetForPropertyLayoutAnnotation.class, where, holder);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyXml.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyXml.java
index 8e83321..d114869 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyXml.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyXml.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.properties.propertylayout;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.layout.component.PropertyLayoutData;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -38,7 +37,7 @@ public class HiddenFacetForPropertyXml extends HiddenFacetAbstract {
     }
 
     private HiddenFacetForPropertyXml(final Where where, final FacetHolder holder) {
-        super(HiddenFacetForPropertyXml.class, When.ALWAYS, where, holder);
+        super(HiddenFacetForPropertyXml.class, where, holder);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
index 3efd4d9..158c033 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
@@ -36,7 +36,6 @@ import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.fixturescripts.FixtureScript;
 import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
@@ -381,8 +380,7 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
         final HiddenFacet facet = spec.getFacet(HiddenFacet.class);
         return facet != null &&
                 !facet.isNoop() &&
-                (facet.where() == Where.EVERYWHERE || facet.where() == Where.ANYWHERE) &&
-                facet.when() == When.ALWAYS;
+                (facet.where() == Where.EVERYWHERE || facet.where() == Where.ANYWHERE);
     }
 
     protected boolean isBuiltIn(final ObjectSpecification spec) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
index a3f944b..a9cd981 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
@@ -30,14 +30,13 @@ import com.google.common.base.Strings;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.filter.Filter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.WhenAndWhereValueFacet;
+import org.apache.isis.core.metamodel.facets.WhereValueFacet;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
 import org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet;
@@ -338,7 +337,7 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
             @Override
             public boolean accept(final ObjectAssociation property) {
                 final HiddenFacet hiddenFacet = property.getFacet(HiddenFacet.class);
-                return hiddenFacet == null || hiddenFacet.when() != When.ALWAYS || hiddenFacet.where() != Where.ANYWHERE;
+                return hiddenFacet == null || hiddenFacet.where() != Where.ANYWHERE;
             }
         };
 
@@ -352,12 +351,12 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
                 public boolean accept(final ObjectAssociation association) {
                     final List<Facet> facets = association.getFacets(new Filter<Facet>() {
                         @Override public boolean accept(final Facet facet) {
-                            return facet instanceof WhenAndWhereValueFacet && facet instanceof HiddenFacet;
+                            return facet instanceof WhereValueFacet && facet instanceof HiddenFacet;
                         }
                     });
                     for (Facet facet : facets) {
-                        final WhenAndWhereValueFacet wawF = (WhenAndWhereValueFacet) facet;
-                        if (wawF.where().includes(context) && wawF.when() == When.ALWAYS) {
+                        final WhereValueFacet wawF = (WhereValueFacet) facet;
+                        if (wawF.where().includes(context) ) {
                             return false;
                         }
                     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
index 39b2177..c3547ab 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
@@ -26,10 +26,8 @@ import java.util.List;
 import javax.annotation.Nullable;
 
 import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
index b059bf9..66a22e5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
@@ -23,7 +23,6 @@ import java.util.List;
 import java.util.Objects;
 
 import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.filter.Filter;
 import org.apache.isis.applib.services.bookmark.Bookmark;
@@ -234,7 +233,6 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
         final HiddenFacet facet = getFacet(HiddenFacet.class);
         return facet != null &&
                 !facet.isNoop() &&
-                facet.when() == When.ALWAYS &&
                 (facet.where() == Where.EVERYWHERE || facet.where() == Where.ANYWHERE)
                 ;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index 0d50f87..d0b2d45 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -38,7 +38,6 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.isis.applib.AppManifest;
 import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.filter.Filter;
 import org.apache.isis.applib.filter.Filters;
@@ -1098,7 +1097,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
 
     private boolean isAlwaysHidden(final FacetHolder holder) {
         final HiddenFacet hiddenFacet = holder.getFacet(HiddenFacet.class);
-        return hiddenFacet != null && hiddenFacet.when() == When.ALWAYS && hiddenFacet.where() == Where.ANYWHERE;
+        return hiddenFacet != null && hiddenFacet.where() == Where.ANYWHERE;
     }
 
     
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
index e25d5b5..3460f5f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
@@ -19,7 +19,6 @@ package org.apache.isis.core.metamodel.specloader.specimpl;
 import java.util.List;
 
 import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
@@ -110,7 +109,6 @@ public class OneToManyAssociationContributee extends OneToManyAssociationDefault
     private DisabledFacet disabledFacet() {
         final DisabledFacet originalFacet = facetHolder.getFacet(DisabledFacet.class);
         if( originalFacet != null && 
-            originalFacet.when() == When.ALWAYS && 
             originalFacet.where() == Where.ANYWHERE) {
             return originalFacet;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
index d82e7d5..87c2f8a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
@@ -21,7 +21,6 @@ import java.util.List;
 import com.google.common.base.Strings;
 
 import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
@@ -135,7 +134,6 @@ public class OneToManyAssociationMixedIn extends OneToManyAssociationDefault imp
     private DisabledFacet disabledFacet() {
         final DisabledFacet originalFacet = facetHolder.getFacet(DisabledFacet.class);
         if( originalFacet != null && 
-            originalFacet.when() == When.ALWAYS && 
             originalFacet.where() == Where.ANYWHERE) {
             return originalFacet;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
index 99b0467..13749fa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
@@ -19,7 +19,6 @@ package org.apache.isis.core.metamodel.specloader.specimpl;
 import java.util.List;
 
 import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
@@ -92,7 +91,6 @@ public class OneToOneAssociationContributee extends OneToOneAssociationDefault i
     private DisabledFacet disabledFacet() {
         final DisabledFacet originalFacet = facetHolder.getFacet(DisabledFacet.class);
         if( originalFacet != null && 
-            originalFacet.when() == When.ALWAYS && 
             originalFacet.where() == Where.ANYWHERE) {
             return originalFacet;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
index 668465e..6bc66c0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
@@ -21,7 +21,6 @@ import java.util.List;
 import com.google.common.base.Strings;
 
 import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
@@ -115,7 +114,6 @@ public class OneToOneAssociationMixedIn extends OneToOneAssociationDefault imple
     private DisabledFacet disabledFacet() {
         final DisabledFacet originalFacet = facetHolder.getFacet(DisabledFacet.class);
         if( originalFacet != null && 
-            originalFacet.when() == When.ALWAYS && 
             originalFacet.where() == Where.ANYWHERE) {
             return originalFacet;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/DisabledFacetDerivedFromJdoPrimaryKeyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/DisabledFacetDerivedFromJdoPrimaryKeyAnnotation.java
index 4f23ce6..381aef3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/DisabledFacetDerivedFromJdoPrimaryKeyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/DisabledFacetDerivedFromJdoPrimaryKeyAnnotation.java
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.objectstore.jdo.metamodel.facets.prop.primarykey;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractImpl;
@@ -30,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstr
 public class DisabledFacetDerivedFromJdoPrimaryKeyAnnotation extends DisabledFacetAbstractImpl {
 
     public DisabledFacetDerivedFromJdoPrimaryKeyAnnotation(final FacetHolder holder) {
-        super(When.ALWAYS, Where.ANYWHERE, holder);
+        super(Where.ANYWHERE, holder);
     }
 
 }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
index 8f8cc18..3831a72 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
@@ -27,7 +27,6 @@ import java.util.Set;
 
 import org.jmock.Expectations;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.security.UserMemento;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
@@ -476,7 +475,6 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
 
         final HiddenFacetOnStaticMethod facet = facetedMethod.getFacet(HiddenFacetOnStaticMethod.class);
         assertNotNull(facet);
-        assertEquals(When.ALWAYS, facet.when());
 
         assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(alwaysHideMethod));
     }
@@ -513,7 +511,6 @@ public class ActionMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
         assertNotNull(facet);
         assertTrue(facet instanceof DisabledFacetAbstract);
         final DisabledFacetAbstract disabledFacetAbstract = (DisabledFacetAbstract) facet;
-        assertEquals(When.ALWAYS, disabledFacetAbstract.when());
 
         assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(protectMethod));
     }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/DisabledAnnotationOnActionFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/DisabledAnnotationOnActionFacetFactoryTest.java
index c02ca77..264ffb2 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/DisabledAnnotationOnActionFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/DisabledAnnotationOnActionFacetFactoryTest.java
@@ -20,8 +20,8 @@
 package org.apache.isis.core.metamodel.facets.actions.action;
 
 import java.lang.reflect.Method;
+
 import org.apache.isis.applib.annotation.Disabled;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
@@ -68,7 +68,7 @@ public class DisabledAnnotationOnActionFacetFactoryTest extends AbstractFacetFac
 
     public void testDisabledWhenAlwaysAnnotationPickedUpOn() {
         class Customer {
-            @Disabled(when = When.ALWAYS)
+            @Disabled
             public void someAction() {
             }
         }
@@ -82,12 +82,10 @@ public class DisabledAnnotationOnActionFacetFactoryTest extends AbstractFacetFac
         final DisabledFacet disabledFacet = (DisabledFacet) facet;
         assertThat(disabledFacet.disabledReason(null), is("Always disabled"));
 
-        assertEquals(When.ALWAYS, disabledFacetAbstract.when());
     }
 
     public void testDisabledWhenNeverAnnotationPickedUpOn() {
         class Customer {
-            @Disabled(when = When.NEVER)
             public void someAction() {
             }
         }
@@ -98,40 +96,7 @@ public class DisabledAnnotationOnActionFacetFactoryTest extends AbstractFacetFac
         final Facet facet = facetedMethod.getFacet(DisabledFacet.class);
         final DisabledFacetAbstract disabledFacetAbstract = (DisabledFacetAbstract) facet;
 
-        assertEquals(When.NEVER, disabledFacetAbstract.when());
-    }
-
-    public void testDisabledWhenOncePersistedAnnotationPickedUpOn() {
-        class Customer {
-            @Disabled(when = When.ONCE_PERSISTED)
-            public void someAction() {
-            }
-        }
-        final Method actionMethod = findMethod(Customer.class, "someAction");
-
-        facetFactory.processDisabled(new ProcessMethodContext(Customer.class, null, actionMethod, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(DisabledFacet.class);
-        final DisabledFacetAbstract disabledFacetAbstract = (DisabledFacetAbstract) facet;
-
-        assertEquals(When.ONCE_PERSISTED, disabledFacetAbstract.when());
-    }
-
-    public void testDisabledWhenUntilPersistedAnnotationPickedUpOn() {
-        class Customer {
-            @Disabled(when = When.UNTIL_PERSISTED)
-            public void someAction() {
-            }
-        }
-        final Method actionMethod = findMethod(Customer.class, "someAction");
-
-        facetFactory.processDisabled(new ProcessMethodContext(Customer.class, null, actionMethod, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(DisabledFacet.class);
-        final DisabledFacetAbstract disabledFacetAbstract = (DisabledFacetAbstract) facet;
-
-        assertEquals(When.UNTIL_PERSISTED, disabledFacetAbstract.when());
-        assertEquals(Where.ANYWHERE, disabledFacetAbstract.where());
+        assertNull(disabledFacetAbstract);
     }
 
 
@@ -148,14 +113,13 @@ public class DisabledAnnotationOnActionFacetFactoryTest extends AbstractFacetFac
         final Facet facet = facetedMethod.getFacet(DisabledFacet.class);
         final DisabledFacetAbstract disabledFacetAbstract = (DisabledFacetAbstract) facet;
 
-        assertEquals(When.ALWAYS, disabledFacetAbstract.when());
         assertEquals(Where.PARENTED_TABLES, disabledFacetAbstract.where());
     }
 
 
-    public void testDisabledWhenAndWhereAnnotationPickedUpOn() {
+    public void testDisabledWhereAnnotationPickedUpOn() {
         class Customer {
-            @Disabled(where = Where.PARENTED_TABLES, when=When.UNTIL_PERSISTED)
+            @Disabled(where = Where.PARENTED_TABLES)
             public void someAction() {
             }
         }
@@ -166,7 +130,6 @@ public class DisabledAnnotationOnActionFacetFactoryTest extends AbstractFacetFac
         final Facet facet = facetedMethod.getFacet(DisabledFacet.class);
         final DisabledFacetAbstract disabledFacetAbstract = (DisabledFacetAbstract) facet;
 
-        assertEquals(When.UNTIL_PERSISTED, disabledFacetAbstract.when());
         assertEquals(Where.PARENTED_TABLES, disabledFacetAbstract.where());
     }
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/HiddenAnnotationOnActionFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/HiddenAnnotationOnActionFacetFactoryTest.java
index f9656b7..8241abc 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/HiddenAnnotationOnActionFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/HiddenAnnotationOnActionFacetFactoryTest.java
@@ -20,8 +20,8 @@
 package org.apache.isis.core.metamodel.facets.actions.action;
 
 import java.lang.reflect.Method;
+
 import org.apache.isis.applib.annotation.Hidden;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
@@ -62,7 +62,7 @@ public class HiddenAnnotationOnActionFacetFactoryTest extends AbstractFacetFacto
 
     public void testHiddenWhenAlwaysAnnotationPickedUpOn() {
         class Customer {
-            @Hidden(when=When.ALWAYS)
+            @Hidden()
             public void someAction() {
             }
         }
@@ -72,54 +72,10 @@ public class HiddenAnnotationOnActionFacetFactoryTest extends AbstractFacetFacto
 
         final HiddenFacetForHiddenAnnotationOnAction facet = facetedMethod.getFacet(HiddenFacetForHiddenAnnotationOnAction.class);
 
-        assertEquals(When.ALWAYS, facet.when());
-    }
-
-    public void testHiddenWhenNeverAnnotationPickedUpOn() {
-        class Customer {
-            @Hidden(when=When.NEVER)
-            public void someAction() {
-            }
-        }
-        final Method actionMethod = findMethod(Customer.class, "someAction");
-
-        facetFactory.processHidden(new ProcessMethodContext(Customer.class, null, actionMethod, methodRemover, facetedMethod));
-
-        final HiddenFacetForHiddenAnnotationOnAction facet = facetedMethod.getFacet(HiddenFacetForHiddenAnnotationOnAction.class);
-
-        assertEquals(When.NEVER, facet.when());
-    }
-
-    public void testHiddenWhenOncePersistedAnnotationPickedUpOn() {
-        class Customer {
-            @Hidden(when=When.ONCE_PERSISTED)
-            public void someAction() {
-            }
-        }
-        final Method actionMethod = findMethod(Customer.class, "someAction");
-
-        facetFactory.processHidden(new ProcessMethodContext(Customer.class, null, actionMethod, methodRemover, facetedMethod));
-
-        final HiddenFacetForHiddenAnnotationOnAction facet = facetedMethod.getFacet(HiddenFacetForHiddenAnnotationOnAction.class);
+        assertNotNull(facet);
 
-        assertEquals(When.ONCE_PERSISTED, facet.when());
     }
 
-    public void testHiddenWhenUntilPersistedAnnotationPickedUpOn() {
-        class Customer {
-            @Hidden(when=When.UNTIL_PERSISTED)
-            public void someAction() {
-            }
-        }
-        final Method actionMethod = findMethod(Customer.class, "someAction");
-
-        facetFactory.processHidden(new ProcessMethodContext(Customer.class, null, actionMethod, methodRemover, facetedMethod));
-
-        final HiddenFacetForHiddenAnnotationOnAction facet = facetedMethod.getFacet(HiddenFacetForHiddenAnnotationOnAction.class);
-
-        assertEquals(When.UNTIL_PERSISTED, facet.when());
-        assertEquals(Where.ANYWHERE, facet.where());
-    }
 
     public void testHiddenWhereCollectionTableAnnotationPickedUpOn() {
         class Customer {
@@ -134,13 +90,12 @@ public class HiddenAnnotationOnActionFacetFactoryTest extends AbstractFacetFacto
         final HiddenFacetForHiddenAnnotationOnAction facet = facetedMethod.getFacet(HiddenFacetForHiddenAnnotationOnAction.class);
 
         assertEquals(Where.PARENTED_TABLES, facet.where());
-        assertEquals(When.ALWAYS, facet.when());
     }
 
 
     public void testHiddenWhenAndWhereTableAnnotationPickedUpOn() {
         class Customer {
-            @Hidden(where=Where.PARENTED_TABLES, when=When.UNTIL_PERSISTED)
+            @Hidden(where=Where.PARENTED_TABLES)
             public void someAction() {
             }
         }
@@ -151,7 +106,6 @@ public class HiddenAnnotationOnActionFacetFactoryTest extends AbstractFacetFacto
         final HiddenFacetForHiddenAnnotationOnAction facet = facetedMethod.getFacet(HiddenFacetForHiddenAnnotationOnAction.class);
 
         assertEquals(Where.PARENTED_TABLES, facet.where());
-        assertEquals(When.UNTIL_PERSISTED, facet.when());
     }
 
 }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
index b663d8e..40cd72e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/CollectionFieldMethodsFacetFactoryTest.java
@@ -26,7 +26,6 @@ import java.util.Set;
 
 import org.jmock.auto.Mock;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.security.UserMemento;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
@@ -711,7 +710,6 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
 
         final HiddenFacetOnStaticMethod facet = facetedMethod.getFacet(HiddenFacetOnStaticMethod.class);
         assertNotNull(facet);
-        assertEquals(When.ALWAYS, facet.when());
 
         assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(alwaysHideMethod));
     }
@@ -745,7 +743,6 @@ public class CollectionFieldMethodsFacetFactoryTest extends AbstractFacetFactory
         assertNotNull(facet);
         assertTrue(facet instanceof DisabledFacetAbstractAlwaysEverywhere);
         final DisabledFacetAbstractAlwaysEverywhere disabledFacetAlways = (DisabledFacetAbstractAlwaysEverywhere) facet;
-        assertEquals(When.ALWAYS, disabledFacetAlways.when());
 
         assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(protectMethod));
     }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
index 09fcef3..16a3e65 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
@@ -27,7 +27,6 @@ import org.junit.Before;
 import org.junit.Test;
 
 import org.apache.isis.applib.annotation.Collection;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -401,7 +400,6 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
             Assert.assertTrue(hiddenFacet instanceof HiddenFacetForCollectionAnnotation);
             final HiddenFacetForCollectionAnnotation hiddenFacetImpl = (HiddenFacetForCollectionAnnotation) hiddenFacet;
             assertThat(hiddenFacetImpl.where(), is(Where.REFERENCES_PARENT));
-            assertThat(hiddenFacetImpl.when(), is(When.ALWAYS));
 
             final Facet hiddenFacetForColl = facetedMethod.getFacet(HiddenFacetForCollectionAnnotation.class);
             Assert.assertNotNull(hiddenFacetForColl);
@@ -445,7 +443,6 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
             Assert.assertTrue(disabledFacet instanceof DisabledFacetForCollectionAnnotation);
             final DisabledFacetForCollectionAnnotation disabledFacetImpl = (DisabledFacetForCollectionAnnotation) disabledFacet;
             assertThat(disabledFacet.where(), is(Where.EVERYWHERE));
-            assertThat(disabledFacet.when(), is(When.ALWAYS));
             assertThat(disabledFacetImpl.getReason(), is("you cannot edit the orders collection"));
         }
     }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest_immutable.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest_immutable.java
index 9d5c7bc..3e14cbc 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest_immutable.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest_immutable.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.object.domainobject;
 
 import org.apache.isis.applib.annotation.Immutable;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
@@ -55,13 +54,13 @@ public class DomainObjectAnnotationFacetFactoryTest_immutable extends AbstractFa
         assertNotNull(facet);
         assertTrue(facet instanceof ImmutableFacetForImmutableAnnotation);
         final ImmutableFacetForImmutableAnnotation immutableFacetAnnotation = (ImmutableFacetForImmutableAnnotation) facet;
-        assertEquals(When.ALWAYS, immutableFacetAnnotation.when());
 
+        assertNotNull(immutableFacetAnnotation);
         assertNoMethodsRemoved();
     }
 
     public void testImmutableAnnotationAlwaysPickedUpOnClass() {
-        @Immutable(When.ALWAYS)
+        @Immutable
         class Customer {
         }
 
@@ -71,53 +70,19 @@ public class DomainObjectAnnotationFacetFactoryTest_immutable extends AbstractFa
         assertNotNull(facet);
         assertTrue(facet instanceof ImmutableFacetForImmutableAnnotation);
         final ImmutableFacetForImmutableAnnotation immutableFacetAnnotation = (ImmutableFacetForImmutableAnnotation) facet;
-        assertEquals(When.ALWAYS, immutableFacetAnnotation.when());
 
         assertNoMethodsRemoved();
     }
 
     public void testImmutableAnnotationNeverPickedUpOnClass() {
-        @Immutable(When.NEVER)
-        class Customer {
-        }
-
-        facetFactory.processEditing(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(ImmutableFacet.class);
-        final ImmutableFacetForImmutableAnnotation immutableFacetAnnotation = (ImmutableFacetForImmutableAnnotation) facet;
-        assertEquals(When.NEVER, immutableFacetAnnotation.when());
-
-        assertNoMethodsRemoved();
-    }
-
-    public void testImmutableAnnotationOncePersistedPickedUpOnClass() {
-        @Immutable(When.ONCE_PERSISTED)
         class Customer {
         }
 
         facetFactory.processEditing(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
 
         final Facet facet = facetedMethod.getFacet(ImmutableFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof ImmutableFacetForImmutableAnnotation);
-        final ImmutableFacetForImmutableAnnotation immutableFacetAnnotation = (ImmutableFacetForImmutableAnnotation) facet;
-        assertEquals(When.ONCE_PERSISTED, immutableFacetAnnotation.when());
-
-        assertNoMethodsRemoved();
-    }
-
-    public void testImmutableAnnotationUntilPersistedPickedUpOnClass() {
-        @Immutable(When.UNTIL_PERSISTED)
-        class Customer {
-        }
-
-        facetFactory.processEditing(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(ImmutableFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof ImmutableFacetForImmutableAnnotation);
         final ImmutableFacetForImmutableAnnotation immutableFacetAnnotation = (ImmutableFacetForImmutableAnnotation) facet;
-        assertEquals(When.UNTIL_PERSISTED, immutableFacetAnnotation.when());
+        assertNull(immutableFacetAnnotation);
 
         assertNoMethodsRemoved();
     }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
index 8272f6f..c8ccc7e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
@@ -22,6 +22,8 @@ import java.lang.reflect.Method;
 import java.util.List;
 import java.util.regex.Pattern;
 
+import javax.annotation.meta.When;
+
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
 import org.junit.After;
@@ -31,7 +33,6 @@ import org.junit.Test;
 
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.eventbus.PropertyDomainEvent;
 import org.apache.isis.applib.spec.Specification;
@@ -397,7 +398,6 @@ public class PropertyAnnotationFacetFactoryTest extends AbstractFacetFactoryJUni
             Assert.assertTrue(hiddenFacet instanceof HiddenFacetForPropertyAnnotation);
             final HiddenFacetForPropertyAnnotation hiddenFacetImpl = (HiddenFacetForPropertyAnnotation) hiddenFacet;
             assertThat(hiddenFacetImpl.where(), is(Where.REFERENCES_PARENT));
-            assertThat(hiddenFacetImpl.when(), is(When.ALWAYS));
 
             final Facet hiddenFacetForProp = facetedMethod.getFacet(HiddenFacetForPropertyAnnotation.class);
             Assert.assertNotNull(hiddenFacetForProp);
@@ -438,7 +438,6 @@ public class PropertyAnnotationFacetFactoryTest extends AbstractFacetFactoryJUni
             Assert.assertTrue(disabledFacet instanceof DisabledFacetForPropertyAnnotation);
             final DisabledFacetForPropertyAnnotation disabledFacetImpl = (DisabledFacetForPropertyAnnotation) disabledFacet;
             assertThat(disabledFacet.where(), is(Where.EVERYWHERE));
-            assertThat(disabledFacet.when(), is(When.ALWAYS));
             assertThat(disabledFacetImpl.getReason(), is("you cannot edit the name property"));
         }
     }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/feature/ObjectAssociationFiltersTest_visibleWhere.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/feature/ObjectAssociationFiltersTest_visibleWhere.java
index 01926cc..6398389 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/feature/ObjectAssociationFiltersTest_visibleWhere.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/feature/ObjectAssociationFiltersTest_visibleWhere.java
@@ -34,7 +34,7 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 import org.junit.runners.Parameterized.Parameters;
-import org.apache.isis.applib.annotation.When;
+
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.filter.Filter;
 import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -59,7 +59,6 @@ public class ObjectAssociationFiltersTest_visibleWhere {
     private HiddenFacet mockHiddenFacet;
 
     // given
-    private When when;
     private Where where;
 
     // when
@@ -72,33 +71,29 @@ public class ObjectAssociationFiltersTest_visibleWhere {
     @Parameters
     public static Collection<Object[]> data() {
         return Arrays.asList(new Object[][]{
-                {When.ALWAYS, Where.ANYWHERE, Where.ANYWHERE, false},
-                {When.UNTIL_PERSISTED, Where.ANYWHERE, Where.ANYWHERE, true},
-                {When.ONCE_PERSISTED, Where.ANYWHERE, Where.ANYWHERE, true},
-                {When.NEVER, Where.ANYWHERE, Where.ANYWHERE, true},
-                {When.ALWAYS, Where.OBJECT_FORMS, Where.OBJECT_FORMS, false},
-                {When.ALWAYS, Where.OBJECT_FORMS, Where.ALL_TABLES, true},
-                {When.ALWAYS, Where.OBJECT_FORMS, Where.PARENTED_TABLES, true},
-                {When.ALWAYS, Where.OBJECT_FORMS, Where.REFERENCES_PARENT, true},
-                {When.ALWAYS, Where.OBJECT_FORMS, Where.STANDALONE_TABLES, true},
-                {When.ALWAYS, Where.STANDALONE_TABLES, Where.OBJECT_FORMS, true},
-                {When.ALWAYS, Where.STANDALONE_TABLES, Where.PARENTED_TABLES, true},
-                {When.ALWAYS, Where.STANDALONE_TABLES, Where.REFERENCES_PARENT, true},
-                {When.ALWAYS, Where.STANDALONE_TABLES, Where.STANDALONE_TABLES, false},
-                {When.ALWAYS, Where.PARENTED_TABLES, Where.OBJECT_FORMS, true},
-                {When.ALWAYS, Where.PARENTED_TABLES, Where.PARENTED_TABLES, false},
-                {When.ALWAYS, Where.PARENTED_TABLES, Where.REFERENCES_PARENT, true},
-                {When.ALWAYS, Where.PARENTED_TABLES, Where.STANDALONE_TABLES, true},
-                {When.ALWAYS, Where.ALL_TABLES, Where.OBJECT_FORMS, true},
-                {When.ALWAYS, Where.ALL_TABLES, Where.PARENTED_TABLES, false},
-                {When.ALWAYS, Where.ALL_TABLES, Where.STANDALONE_TABLES, false},
-                {When.ALWAYS, Where.ALL_TABLES, Where.REFERENCES_PARENT, true},
+                {Where.ANYWHERE, Where.ANYWHERE, false},
+                {Where.OBJECT_FORMS, Where.OBJECT_FORMS, false},
+                {Where.OBJECT_FORMS, Where.ALL_TABLES, true},
+                {Where.OBJECT_FORMS, Where.PARENTED_TABLES, true},
+                {Where.OBJECT_FORMS, Where.REFERENCES_PARENT, true},
+                {Where.OBJECT_FORMS, Where.STANDALONE_TABLES, true},
+                {Where.STANDALONE_TABLES, Where.OBJECT_FORMS, true},
+                {Where.STANDALONE_TABLES, Where.PARENTED_TABLES, true},
+                {Where.STANDALONE_TABLES, Where.REFERENCES_PARENT, true},
+                {Where.STANDALONE_TABLES, Where.STANDALONE_TABLES, false},
+                {Where.PARENTED_TABLES, Where.OBJECT_FORMS, true},
+                {Where.PARENTED_TABLES, Where.PARENTED_TABLES, false},
+                {Where.PARENTED_TABLES, Where.REFERENCES_PARENT, true},
+                {Where.PARENTED_TABLES, Where.STANDALONE_TABLES, true},
+                {Where.ALL_TABLES, Where.OBJECT_FORMS, true},
+                {Where.ALL_TABLES, Where.PARENTED_TABLES, false},
+                {Where.ALL_TABLES, Where.STANDALONE_TABLES, false},
+                {Where.ALL_TABLES, Where.REFERENCES_PARENT, true},
                 });
     }
 
     public ObjectAssociationFiltersTest_visibleWhere(
-            final When when, final Where where, final Where context, final boolean visible) {
-        this.when = when;
+            final Where where, final Where context, final boolean visible) {
         this.where = where;
         this.whereContext = context;
         this.expectedVisibility = visible;
@@ -110,9 +105,6 @@ public class ObjectAssociationFiltersTest_visibleWhere {
             allowing(mockHiddenFacet).where();
             will(returnValue(where));
 
-            allowing(mockHiddenFacet).when();
-            will(returnValue(when));
-
             allowing(mockObjectAssociation).getFacets(with(any(Filter.class)));
             will(returnValue(Lists.newArrayList(mockHiddenFacet)));
         }});
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
index 08abba6..d09c5e2 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
@@ -34,7 +34,6 @@ import org.junit.Test;
 
 import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.registry.ServiceRegistry2;
@@ -131,7 +130,7 @@ public class ApplicationFeatureRepositoryDefaultTest {
                 will(returnValue(collections));
 
                 allowing(mockSpec).getFacet(HiddenFacet.class);
-                will(returnValue(new HiddenFacetAbstract(When.ALWAYS, Where.EVERYWHERE, mockSpec) {
+                will(returnValue(new HiddenFacetAbstract(Where.EVERYWHERE, mockSpec) {
                     @Override
                     protected String hiddenReason(final ObjectAdapter target, final Where whereContext) {
                         return null;
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
index a46851e..6f63a65 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
@@ -25,7 +25,6 @@ import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
@@ -169,7 +168,7 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
     public void whenNoop() throws Exception {
 
         // given
-        addHiddenFacet(When.ALWAYS, Where.EVERYWHERE, facetedMethod, true);
+        addHiddenFacet(Where.EVERYWHERE, facetedMethod, true);
 
         // when, then
         assertFalse(objectAssociation.isAlwaysHidden());
@@ -179,7 +178,7 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
     public void whenNotAlwaysEverywhere() throws Exception {
 
         // given
-        addHiddenFacet(When.ONCE_PERSISTED, Where.EVERYWHERE, facetedMethod, false);
+        addHiddenFacet(Where.EVERYWHERE, facetedMethod, false);
 
         // when, then
         assertFalse(objectAssociation.isAlwaysHidden());
@@ -189,7 +188,7 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
     public void whenAlwaysNotEverywhere() throws Exception {
 
         // given
-        addHiddenFacet(When.ALWAYS, Where.OBJECT_FORMS, facetedMethod, false);
+        addHiddenFacet(Where.OBJECT_FORMS, facetedMethod, false);
 
         // when, then
         assertFalse(objectAssociation.isAlwaysHidden());
@@ -199,7 +198,7 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
     public void whenAlwaysEverywhere() throws Exception {
 
         // given
-        addHiddenFacet(When.ALWAYS, Where.EVERYWHERE, facetedMethod, false);
+        addHiddenFacet(Where.EVERYWHERE, facetedMethod, false);
 
         // when, then
         assertTrue(objectAssociation.isAlwaysHidden());
@@ -209,14 +208,17 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
     public void whenAlwaysAnywhere() throws Exception {
 
         // given
-        addHiddenFacet(When.ALWAYS, Where.ANYWHERE, facetedMethod, false);
+        addHiddenFacet(Where.ANYWHERE, facetedMethod, false);
 
         // when, then
         assertTrue(objectAssociation.isAlwaysHidden());
     }
 
-    private static void addHiddenFacet(final When when, final Where where, final FacetedMethod holder, final boolean noop) {
-        HiddenFacet facet = new HiddenFacetAbstract(HiddenFacet.class, when, where, holder) {
+    private static void addHiddenFacet(
+            final Where where,
+            final FacetedMethod holder,
+            final boolean noop) {
+        HiddenFacet facet = new HiddenFacetAbstract(HiddenFacet.class, where, holder) {
             @Override
             protected String hiddenReason(final ObjectAdapter target, final Where whereContext) {
                 return null;
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 cc5bdc2..5afc28e 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
@@ -28,7 +28,6 @@ import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
@@ -163,7 +162,7 @@ public class ObjectMemberAbstractTest {
     @Test
     public void testVisibleWhenHiddenFacetSetToAlways() {
         testMember.addFacet(new HideForContextFacetNone(testMember));
-        testMember.addFacet(new HiddenFacetAbstract(When.ALWAYS, Where.ANYWHERE, testMember) {
+        testMember.addFacet(new HiddenFacetAbstract(Where.ANYWHERE, testMember) {
             @Override
             public String hiddenReason(final ObjectAdapter target, final Where whereContext) {
                 return null;
@@ -176,7 +175,7 @@ public class ObjectMemberAbstractTest {
     @Test
     public void testVisibleWhenTargetPersistentAndHiddenFacetSetToOncePersisted() {
         testMember.addFacet(new HideForContextFacetNone(testMember));
-        testMember.addFacet(new HiddenFacetAbstractImpl(When.ONCE_PERSISTED, Where.ANYWHERE, testMember){});
+        testMember.addFacet(new HiddenFacetAbstractImpl(Where.ANYWHERE, testMember){});
 
         context.checking(new Expectations() {{
             allowing(mockPersistable).dnIsPersistent();
@@ -192,7 +191,7 @@ public class ObjectMemberAbstractTest {
     @Test
     public void testVisibleWhenTargetPersistentAndHiddenFacetSetToUntilPersisted() {
         testMember.addFacet(new HideForContextFacetNone(testMember));
-        testMember.addFacet(new HiddenFacetAbstractImpl(When.UNTIL_PERSISTED, Where.ANYWHERE, testMember){});
+        testMember.addFacet(new HiddenFacetAbstractImpl(Where.ANYWHERE, testMember){});
 
         context.checking(new Expectations() {{
             allowing(mockPersistable).dnIsPersistent();
@@ -209,7 +208,7 @@ public class ObjectMemberAbstractTest {
     @Test
     public void testVisibleWhenTargetTransientAndHiddenFacetSetToUntilPersisted() {
         testMember.addFacet(new HideForContextFacetNone(testMember));
-        testMember.addFacet(new HiddenFacetAbstractImpl(When.UNTIL_PERSISTED, Where.ANYWHERE, testMember){});
+        testMember.addFacet(new HiddenFacetAbstractImpl(Where.ANYWHERE, testMember){});
 
         context.checking(new Expectations() {{
             allowing(mockPersistable).dnIsPersistent();
diff --git a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/dom/employees/Employee.java b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/dom/employees/Employee.java
index f20c865..8929b09 100644
--- a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/dom/employees/Employee.java
+++ b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/dom/employees/Employee.java
@@ -20,9 +20,7 @@
 package org.apache.isis.progmodel.wrapper.dom.employees;
 
 import org.apache.isis.applib.AbstractDomainObject;
-import org.apache.isis.applib.annotation.Disabled;
 import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.When;
 import org.apache.isis.progmodel.wrapper.dom.claims.Approver;
 import org.apache.isis.progmodel.wrapper.dom.claims.Claimant;
 
@@ -79,7 +77,6 @@ public class Employee extends AbstractDomainObject implements Claimant, Approver
     private String password;
 
     @MemberOrder(sequence = "2")
-    @Disabled(when = When.ONCE_PERSISTED)
     public String getPassword() {
         return password;
     }
diff --git a/todo-deprecation-list.txt b/todo-deprecation-list.txt
index 1ec6d99..fa71f54 100644
--- a/todo-deprecation-list.txt
+++ b/todo-deprecation-list.txt
@@ -1,102 +1,4 @@
 
-
-DONE:
-
-    removed support for Xxx.layout.json
-    - "reflector.layoutMetadataReaders" config prop
-
-
-
-
-org.apache.isis.applib
-
-    IsisApplibModule.java
-        ActionDomainEvent - the N-arg constructors (just use the 0-arg ones)
-        CollectionDomainEvent - the N arg constructors (just use the 0-arg ones)
-        PropertyDomainEvent  - the N arg constructors (just use the 0-arg ones)
-
-
-
-org.apache.isis.applib.annotation
-
-    ActionInteraction.java  - entire annotation, use @Action(domainEvent=...)
-    CollectionInteraction.java - entire annotation, use @Collection(domainEvent=...)
-    PostsActionInvokedEvent.java - entire annotation, use @Action(domainEvent=...) instead
-    PostsCollectionAddedToEvent.java - entire annotation, use @Collection(domainEvent=...) instead.
-    PostsCollectionRemovedFromEvent.java - entire annotation, use @Collection(domainEvent=...) instead.
-    PostsPropertyChangedEvent.java - entire annotation, use @Property(domainEvent=...) instead.
-    PropertyInteraction.java - entire annotation, use @Property(domainEvent=...) instead.
-        
-    Action.java
-        publishingPayloadFactory()  - attribute; use the simpler PublisherService SPI instead
-    DomainObject.java
-        publishingPayloadFactory() - attribute, use the simpler PublisherService SPI instead
-    PublishedAction.java - entire annotation, use @Action(publishing=...) instead
-    PublishedObject.java - entire annotation, use @DomainObject(publishing=...) instead
-    PublishingPayloadFactoryForAction.java - entire annotation, replaced with simpler PublisherService SPI
-    PublishingPayloadFactoryForObject.java - entire annotation, replaced with simpler PublisherService SPI
-
-    ActionSemantics.java  - entire annotation, use @Action(semantics=...)
-    Idempotent.java - entire annotation, use @Action(semantics=...) instead.
-    QueryOnly.java - entire annotation, use @Action(semantics=...) instead.
-
-    ActionOrder.java - entire annotation, use @MemberOrder instead
-    FieldOrder.java - entire annotation, use @MemberOrder instead
-
-    Aggregated.java - entire annotation, not supported internally
-
-    Bounded.java - entire annotation, use @DomainObject(bounded=...)
-
-    CollectionLayout.java
-        render() - use @CollectionLayout(defaultView=...) instead
-    RenderType.java - supporting enum for @Render annotation
-    Render.java - entire annotation, use @CollectionLayout(defaultView=...) instead
-    Resolve.java - entire annotation, use @CollectionLayout(defaultView=...) instead
-
-    CssClass.java - entire annotation, use @XxxLayout(cssClass=...) instead, where Xxx is Property, Collection, Action, Parameter, DomainObject, ViewModel
-    CssClassFa.java - entire annotation, use @XxxLayout(cssClass=...) instead, where Xxx is Property, Collection, Action, Parameter, DomainObject, ViewModel
-
-    DescribedAs.java - entire annotation, use @XxxLayout(describedAs=...) instead
-
-    Mask.java - entire annotation, not supported by either Wicket viewer or RO viewer
-    MaxLength.java - entire annotation, use @Property(maxLength=...) and @Parameter(maxLength=...)
-    MultiLine.java - entire annotation, use @PropertyLayout(multiLine=...) and @ParameterLayout(multiLine=...) instead.
-    Named.java - entire annotation, use @XxxLayout(named=...) instead, where Xxx is Property, Collection, Action, Parameter, DomainObject, ViewModel
-    Plural.java - entire annotation, use @DomainObjectLayout(plural=...) instead
-
-    MemberGroups.java - entire annotation, use Xxx.layout.xml instead
-
-    RenderedAsDayBefore.java - entire annotation, use @PropertyLayout(renderedAsDayBefore=...) and @ParameterLayout(renderedAsDayBefore=...)
-
-    Paged.java - entire annotation, use @DomainObjectLayout(paged=...) or @CollectionLayout(paged=...) instead.
-    SortedBy.java - entire annotation, use @CollectionLayout(sortedBy=...) instead
-
-    TypicalLength.java - entire annotation, use @PropertyLayout(typicalLength=...) instead.
-
-
-    TypeOf.java - entire annotation, use @Collection(typeOf=...) or @Action(typeOf=...) instead.
-
-
-    NotPersistable.java - entire annotation, not supported and does nothing
-
-
-org.apache.isis.applib.marker - remove these marker interfaces (tend to use annotations in preference)
-
-    Auditable.java
-    Bounded.java
-
-    NotPersistable.java
-    ProgramPersistable.java
-
-    AlwaysImmutable.java
-    ImmutableOncePersisted.java
-    ImmutableUntilPersisted.java
-    NeverImmutable.java
-
-
-
-
-
 TO REMOVE:
 
 org.apache.isis.applib
@@ -154,7 +56,6 @@ org.apache.isis.applib.annotation
     Parameter.java
         minLength() attribute; not supported.  For autocomplete, use @MinLength annotation.
 
-    When.java - entire enum, no replacement (believe is unused within the framwork)
 
 
 org.apache.isis.applib.clock
@@ -377,3 +278,107 @@ update .xsd for layout, make render optional and deprecated.
 
 
 link:https://issues.apache.org/jira/browse/ISIS-743[ISIS-743] - @NotPersistable annotation
+
+
+
+
+*************************************************************************
+
+DONE:
+
+    removed support for Xxx.layout.json
+    - "reflector.layoutMetadataReaders" config prop
+
+
+
+
+org.apache.isis.applib
+
+    IsisApplibModule.java
+        ActionDomainEvent - the N-arg constructors (just use the 0-arg ones)
+        CollectionDomainEvent - the N arg constructors (just use the 0-arg ones)
+        PropertyDomainEvent  - the N arg constructors (just use the 0-arg ones)
+
+
+
+org.apache.isis.applib.annotation
+
+    ActionInteraction.java  - entire annotation, use @Action(domainEvent=...)
+    CollectionInteraction.java - entire annotation, use @Collection(domainEvent=...)
+    PostsActionInvokedEvent.java - entire annotation, use @Action(domainEvent=...) instead
+    PostsCollectionAddedToEvent.java - entire annotation, use @Collection(domainEvent=...) instead.
+    PostsCollectionRemovedFromEvent.java - entire annotation, use @Collection(domainEvent=...) instead.
+    PostsPropertyChangedEvent.java - entire annotation, use @Property(domainEvent=...) instead.
+    PropertyInteraction.java - entire annotation, use @Property(domainEvent=...) instead.
+
+    Action.java
+        publishingPayloadFactory()  - attribute; use the simpler PublisherService SPI instead
+    DomainObject.java
+        publishingPayloadFactory() - attribute, use the simpler PublisherService SPI instead
+    PublishedAction.java - entire annotation, use @Action(publishing=...) instead
+    PublishedObject.java - entire annotation, use @DomainObject(publishing=...) instead
+    PublishingPayloadFactoryForAction.java - entire annotation, replaced with simpler PublisherService SPI
+    PublishingPayloadFactoryForObject.java - entire annotation, replaced with simpler PublisherService SPI
+
+    ActionSemantics.java  - entire annotation, use @Action(semantics=...)
+    Idempotent.java - entire annotation, use @Action(semantics=...) instead.
+    QueryOnly.java - entire annotation, use @Action(semantics=...) instead.
+
+    ActionOrder.java - entire annotation, use @MemberOrder instead
+    FieldOrder.java - entire annotation, use @MemberOrder instead
+
+    Aggregated.java - entire annotation, not supported internally
+
+    Bounded.java - entire annotation, use @DomainObject(bounded=...)
+
+    CollectionLayout.java
+        render() - use @CollectionLayout(defaultView=...) instead
+    RenderType.java - supporting enum for @Render annotation
+    Render.java - entire annotation, use @CollectionLayout(defaultView=...) instead
+    Resolve.java - entire annotation, use @CollectionLayout(defaultView=...) instead
+
+    CssClass.java - entire annotation, use @XxxLayout(cssClass=...) instead, where Xxx is Property, Collection, Action, Parameter, DomainObject, ViewModel
+    CssClassFa.java - entire annotation, use @XxxLayout(cssClass=...) instead, where Xxx is Property, Collection, Action, Parameter, DomainObject, ViewModel
+
+    DescribedAs.java - entire annotation, use @XxxLayout(describedAs=...) instead
+
+    Mask.java - entire annotation, not supported by either Wicket viewer or RO viewer
+    MaxLength.java - entire annotation, use @Property(maxLength=...) and @Parameter(maxLength=...)
+    MultiLine.java - entire annotation, use @PropertyLayout(multiLine=...) and @ParameterLayout(multiLine=...) instead.
+    Named.java - entire annotation, use @XxxLayout(named=...) instead, where Xxx is Property, Collection, Action, Parameter, DomainObject, ViewModel
+    Plural.java - entire annotation, use @DomainObjectLayout(plural=...) instead
+
+    MemberGroups.java - entire annotation, use Xxx.layout.xml instead
+
+    RenderedAsDayBefore.java - entire annotation, use @PropertyLayout(renderedAsDayBefore=...) and @ParameterLayout(renderedAsDayBefore=...)
+
+    Paged.java - entire annotation, use @DomainObjectLayout(paged=...) or @CollectionLayout(paged=...) instead.
+    SortedBy.java - entire annotation, use @CollectionLayout(sortedBy=...) instead
+
+    TypicalLength.java - entire annotation, use @PropertyLayout(typicalLength=...) instead.
+
+
+    TypeOf.java - entire annotation, use @Collection(typeOf=...) or @Action(typeOf=...) instead.
+
+
+    NotPersistable.java - entire annotation, not supported and does nothing
+
+    When.java - entire enum, no replacement (believe is unused within the framwork)
+
+org.apache.isis.applib.marker - remove these marker interfaces (tend to use annotations in preference)
+
+    Auditable.java
+    Bounded.java
+
+    NotPersistable.java
+    ProgramPersistable.java
+
+    AlwaysImmutable.java
+    ImmutableOncePersisted.java
+    ImmutableUntilPersisted.java
+    NeverImmutable.java
+
+
+
+
+

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

[isis] 10/13: ISIS-1742: removes @Bookmarkable annotation + facets

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit b1dfa020f8428e5b57e71a3c423abd921a3a6c8e
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Oct 5 16:52:05 2017 +0300

    ISIS-1742: removes @Bookmarkable annotation + facets
---
 .../guides/rgant/_rgant_aaa_deprecated.adoc        |  7 ---
 .../isis/applib/annotation/AutoComplete.java       | 70 ----------------------
 .../isis/applib/annotation/Bookmarkable.java       | 47 ---------------
 .../object/bookmarkpolicy/BookmarkPolicyFacet.java |  1 -
 ...aBookmarkableAnnotationElseFallbackFactory.java | 25 +-------
 .../DomainObjectAnnotationFacetFactory.java        | 39 +-----------
 ...kmarkableAnnotationFacetFactoryTest_action.java |  3 -
 ...okmarkableAnnotationFacetFactoryTest_class.java |  2 -
 todo-deprecation-list.txt                          |  8 +--
 9 files changed, 9 insertions(+), 193 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc
index 00d78a8..3baf515 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc
@@ -22,13 +22,6 @@ The annotations listed in the table below are still supported by Apache Isis, bu
 |Layer
 |xref:../ugvw/ugvw.adoc#_ugvw_layout_file-based[File-based layout]?
 
-|`@AutoComplete`
-|Repository method to search for entities
-|xref:../rgant/rgant.adoc#_rgant-DomainObject_autoCompleteRepository[`@DomainObject` +
-`#autoCompleteRepository()`]
-|UI/Domain
-|
-
 |`@Bookmarkable`
 |Whether (and how) to create a bookmark for visited object.
 |xref:../rgant/rgant.adoc#_rgant-DomainObjectLayout_bookmarking[`@DomainObjectLayout` +
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/AutoComplete.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/AutoComplete.java
deleted file mode 100644
index c08d544..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/AutoComplete.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.apache.isis.applib.services.bookmark.Bookmark;
-
-/**
- * @deprecated - see {@link DomainObject#autoCompleteRepository()}.
- */
-@Inherited
-@Target({ ElementType.TYPE })
-@Retention(RetentionPolicy.RUNTIME)
-@Deprecated
-public @interface AutoComplete {
-
-    /**
-     * @deprecated - never implemented, also not required.
-     */
-    @Deprecated
-    public static class Candidate {
-        private final String title;
-        private final Bookmark bookmark;
-        public Candidate(String title, Bookmark bookmark) {
-            this.title = title;
-            this.bookmark = bookmark;
-        }
-        public String getTitle() {
-            return title;
-        }
-        public Bookmark getBookmark() {
-            return bookmark;
-        }
-    }
-    
-    /**
-     * @deprecated - see {@link DomainObject#autoCompleteRepository()}.
-     */
-    @Deprecated
-    Class<?> repository();
-    
-    /**
-     * @deprecated - see {@link DomainObject#autoCompleteAction()}.
-     */
-    @Deprecated
-    String action() default "autoComplete";
-
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Bookmarkable.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Bookmarkable.java
deleted file mode 100644
index 18e2b06..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Bookmarkable.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Indicates the policy by which the entity or action can be bookmarked.
- * 
- * <p>
- * Three {@link BookmarkPolicy policies} are defined, which control how bookmarked entities are organized.
- * These have no meaning for bookmarkable actions.
- *
- * @deprecated - see {@link DomainObjectLayout#bookmarking()}.
- */
-@Inherited
-@Target({ ElementType.TYPE, ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Bookmarkable {
-
-    /**
-     * @deprecated - see {@link DomainObjectLayout#bookmarking()}.
-     */
-    @Deprecated
-    BookmarkPolicy value() default BookmarkPolicy.AS_ROOT;  
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/BookmarkPolicyFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/BookmarkPolicyFacet.java
index 07cd2c1..e2c5525 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/BookmarkPolicyFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/BookmarkPolicyFacet.java
@@ -20,7 +20,6 @@ package org.apache.isis.core.metamodel.facets.object.bookmarkpolicy;
 
 
 import org.apache.isis.applib.annotation.BookmarkPolicy;
-import org.apache.isis.applib.annotation.Bookmarkable;
 import org.apache.isis.core.metamodel.facets.SingleValueFacet;
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory.java
index 09e23dd..17bf942 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory.java
@@ -22,13 +22,10 @@ package org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.bookmarkable
 import java.util.List;
 
 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.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.actions.semantics.ActionSemanticsFacet;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
@@ -38,36 +35,25 @@ 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 BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory extends FacetFactoryAbstract implements  MetaModelValidatorRefiner {
 
-    private final MetaModelValidatorForDeprecatedAnnotation validator = new MetaModelValidatorForDeprecatedAnnotation(Bookmarkable.class);
-
     public BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory() {
         super(FeatureType.OBJECTS_AND_ACTIONS);
     }
 
     @Override
     public void process(final ProcessClassContext processClassContext) {
-        final Bookmarkable annotation = Annotations.getAnnotation(processClassContext.getCls(), Bookmarkable.class);
-        FacetUtil.addFacet(create(annotation, processClassContext.getFacetHolder(), null));
+        FacetUtil.addFacet(new BookmarkPolicyFacetFallback(processClassContext.getFacetHolder()));
     }
 
     @Override
     public void process(final ProcessMethodContext processMethodContext) {
-        final Bookmarkable annotation = Annotations.getAnnotation(processMethodContext.getMethod(), Bookmarkable.class);
-        final BookmarkPolicyFacet facet = create(annotation, processMethodContext.getFacetHolder(), processMethodContext);
-        FacetUtil.addFacet(facet);
-    }
-
-    private BookmarkPolicyFacet create(final Bookmarkable annotation, final FacetHolder holder, final ProcessMethodContext processMethodContext) {
-        return annotation == null ? new BookmarkPolicyFacetFallback(holder) : validator.flagIfPresent(new BookmarkPolicyFacetViaBookmarkableAnnotation(annotation.value(), holder), processMethodContext);
+        FacetUtil.addFacet(new BookmarkPolicyFacetFallback(processMethodContext.getFacetHolder()));
     }
 
-
     /**
      * Violation if there is an action that is bookmarkable but does not have safe action semantics.
      */
@@ -96,15 +82,8 @@ public class BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory ext
                 return true;
             }
         }));
-        metaModelValidator.add(validator);
     }
 
-    @Override
-    public void setServicesInjector(final ServicesInjector servicesInjector) {
-        super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = servicesInjector.getConfigurationServiceInternal();
-        validator.setConfiguration(configuration);
-    }
 
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index b0ea49d..89e938b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -26,7 +26,6 @@ import javax.annotation.PostConstruct;
 
 import com.google.common.collect.Maps;
 
-import org.apache.isis.applib.annotation.AutoComplete;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Immutable;
 import org.apache.isis.applib.annotation.Nature;
@@ -60,7 +59,6 @@ import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingLifecycleE
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetForDomainObjectAnnotation;
-import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.AutoCompleteFacetForAutoCompleteAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.AutoCompleteFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.choices.ChoicesFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.editing.ImmutableFacetForDomainObjectAnnotation;
@@ -92,7 +90,6 @@ import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapabl
 public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
         implements MetaModelValidatorRefiner, PostConstructMethodCache {
 
-    private final MetaModelValidatorForDeprecatedAnnotation autoCompleteValidator = new MetaModelValidatorForDeprecatedAnnotation(AutoComplete.class);
     private final MetaModelValidatorForDeprecatedAnnotation immutableValidator = new MetaModelValidatorForDeprecatedAnnotation(Immutable.class);
     private final MetaModelValidatorForDeprecatedAnnotation objectTypeValidator = new MetaModelValidatorForDeprecatedAnnotation(ObjectType.class);
     private final MetaModelValidatorForValidationFailures autoCompleteInvalid = new MetaModelValidatorForValidationFailures();
@@ -170,43 +167,15 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
         final Class<?> cls = processClassContext.getCls();
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
-        // check for the deprecated @AutoComplete annotation first
-        final AutoComplete autoCompleteAnnot = Annotations.getAnnotation(cls, AutoComplete.class);
-        Facet facet = autoCompleteValidator.flagIfPresent(createFor(facetHolder, autoCompleteAnnot, cls));
-
-        // else check from @DomainObject(auditing=...)
-        if(facet == null) {
-            final DomainObject domainObjectAnnot = Annotations.getAnnotation(cls, DomainObject.class);
-            facet = createFor(domainObjectAnnot, facetHolder, cls);
-        }
+        // check from @DomainObject(auditing=...)
+        final DomainObject domainObjectAnnot = Annotations.getAnnotation(cls, DomainObject.class);
+        Facet facet = createFor(domainObjectAnnot, facetHolder, cls);
 
         // then add
         FacetUtil.addFacet(facet);
     }
 
     private AutoCompleteFacet createFor(
-            final FacetHolder facetHolder,
-            final AutoComplete annotation,
-            final Class<?> cls) {
-        if(annotation == null) {
-            return null;
-        }
-
-        final Class<?> repositoryClass = annotation.repository();
-        final String actionName = annotation.action();
-
-        if(!isServiceType(cls, "@AutoComplete", repositoryClass)) {
-            return null;
-        }
-        final Method repositoryMethod = findRepositoryMethod(cls, "@AutoComplete", repositoryClass, actionName);
-        if(repositoryMethod == null) {
-            return null;
-        }
-        return new AutoCompleteFacetForAutoCompleteAnnotation(
-                        facetHolder, repositoryClass, repositoryMethod, servicesInjector);
-    }
-
-    private AutoCompleteFacet createFor(
             final DomainObject domainObject,
             final FacetHolder facetHolder,
             final Class<?> cls) {
@@ -543,7 +512,6 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
 
         }));
 
-        metaModelValidator.add(autoCompleteValidator);
         metaModelValidator.add(immutableValidator);
         metaModelValidator.add(objectTypeValidator);
 
@@ -559,7 +527,6 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
         super.setServicesInjector(servicesInjector);
         IsisConfiguration configuration = getConfiguration();
 
-        autoCompleteValidator.setConfiguration(configuration);
         immutableValidator.setConfiguration(configuration);
         objectTypeValidator.setConfiguration(configuration);
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/bookmarkable/BookmarkableAnnotationFacetFactoryTest_action.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/bookmarkable/BookmarkableAnnotationFacetFactoryTest_action.java
index bb230eb..d3df165 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/bookmarkable/BookmarkableAnnotationFacetFactoryTest_action.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/bookmarkable/BookmarkableAnnotationFacetFactoryTest_action.java
@@ -21,8 +21,6 @@ package org.apache.isis.core.metamodel.facets.actions.bookmarkable;
 
 import java.lang.reflect.Method;
 
-import org.apache.isis.applib.annotation.BookmarkPolicy;
-import org.apache.isis.applib.annotation.Bookmarkable;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
@@ -49,7 +47,6 @@ public class BookmarkableAnnotationFacetFactoryTest_action extends AbstractFacet
 
     public void testBookmarkableAnnotationPickedUpOnClass() {
         class Customer {
-            @Bookmarkable(BookmarkPolicy.AS_CHILD)
             public void placeOrder(){}
         }
         final Method actionMethod = findMethod(Customer.class, "placeOrder");
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/BookmarkableAnnotationFacetFactoryTest_class.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/BookmarkableAnnotationFacetFactoryTest_class.java
index 8b28064..d3d9147 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/BookmarkableAnnotationFacetFactoryTest_class.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/BookmarkableAnnotationFacetFactoryTest_class.java
@@ -20,7 +20,6 @@
 package org.apache.isis.core.metamodel.facets.object.bookmarkpolicy;
 
 import org.apache.isis.applib.annotation.BookmarkPolicy;
-import org.apache.isis.applib.annotation.Bookmarkable;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
@@ -48,7 +47,6 @@ public class BookmarkableAnnotationFacetFactoryTest_class extends AbstractFacetF
     }
 
     public void testBookmarkableAnnotationPickedUpOnClass() {
-        @Bookmarkable(BookmarkPolicy.AS_CHILD)
         class Customer {
         }
 
diff --git a/todo-deprecation-list.txt b/todo-deprecation-list.txt
index fa71f54..f7e78af 100644
--- a/todo-deprecation-list.txt
+++ b/todo-deprecation-list.txt
@@ -10,13 +10,9 @@ org.apache.isis.applib
     DomainObjectContainer.java  - entire class
 
 
-
-
 org.apache.isis.applib.annotation
 
 
-    AutoComplete.java - entire annotation, use @DomainObject(autoComplete...=...)
-    Bookmarkable.java - entire annotation, use @DomainObjectLayout(bookmarking=...)
 
     Bulk.java - entire annotation, use @Action(invokeOn=...)
     Bulk.InteractionContext - entire service, use ActionInvocationContext service instead
@@ -320,6 +316,10 @@ org.apache.isis.applib.annotation
     PublishingPayloadFactoryForAction.java - entire annotation, replaced with simpler PublisherService SPI
     PublishingPayloadFactoryForObject.java - entire annotation, replaced with simpler PublisherService SPI
 
+    AutoComplete.java - entire annotation, use @DomainObject(autoComplete...=...)
+
+    Bookmarkable.java - entire annotation, use @DomainObjectLayout(bookmarking=...)
+
     ActionSemantics.java  - entire annotation, use @Action(semantics=...)
     Idempotent.java - entire annotation, use @Action(semantics=...) instead.
     QueryOnly.java - entire annotation, use @Action(semantics=...) instead.

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

[isis] 02/13: ISIS-1742: deletes ProgramPersistable marker interface

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit d3c960ca2199515354435f6eed0763294d0f8c65
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Oct 5 15:49:23 2017 +0300

    ISIS-1742: deletes ProgramPersistable marker interface
---
 .../isis/applib/marker/ProgramPersistable.java     | 30 ----------------------
 1 file changed, 30 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/marker/ProgramPersistable.java b/core/applib/src/main/java/org/apache/isis/applib/marker/ProgramPersistable.java
deleted file mode 100644
index a1f31d3..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/marker/ProgramPersistable.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.marker;
-
-/**
- * No longer supported - the MetaModel validator will reject any domain classes that implement this marker interface.
- *
- * @deprecated
- */
-@Deprecated
-public interface ProgramPersistable {
-
-}

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

[isis] 13/13: ISIS-1742: updates docs, removal of query APIs from DomainObjectContainer

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 136a7127ac759638cdc96d9c74caa660f27d8428
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Oct 5 17:54:22 2017 +0300

    ISIS-1742: updates docs, removal of query APIs from DomainObjectContainer
---
 ...gsvc_core-domain-api_DomainObjectContainer.adoc |  1 -
 ...mainObjectContainer_generic-repository-api.adoc | 84 ----------------------
 ...mainObjectContainer_object-persistence-api.adoc |  3 +-
 ...rgsvc_persistence-layer-api_IsisJdoSupport.adoc |  2 +-
 ...vc_persistence-layer-api_RepositoryService.adoc |  3 +-
 5 files changed, 5 insertions(+), 88 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer.adoc
index e044413..8a56bb8 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer.adoc
@@ -22,7 +22,6 @@ The sections below discuss the functions provided by the service, broken out int
 
 
 include::_rgsvc_core-domain-api_DomainObjectContainer_object-creation-api.adoc[leveloffset=+2]
-include::_rgsvc_core-domain-api_DomainObjectContainer_generic-repository-api.adoc[leveloffset=+2]
 include::_rgsvc_core-domain-api_DomainObjectContainer_object-persistence-api.adoc[leveloffset=+2]
 include::_rgsvc_core-domain-api_DomainObjectContainer_messages-api.adoc[leveloffset=+2]
 include::_rgsvc_core-domain-api_DomainObjectContainer_security-api.adoc[leveloffset=+2]
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer_generic-repository-api.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer_generic-repository-api.adoc
deleted file mode 100644
index bb922ec..0000000
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer_generic-repository-api.adoc
+++ /dev/null
@@ -1,84 +0,0 @@
-[[_rgsvc_core-domain-api_DomainObjectContainer_generic-repository-api]]
-= Generic Repository API
-:Notice: 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 ag [...]
-:_basedir: ../../
-:_imagesdir: images/
-
-
-
-The repository API acts as an abstraction over the JDO/DataNucleus objectstore.  You can use it during prototyping to write naive queries (find all rows, then filter using the Guava `Predicate` API, or you can use it to call JDO link:http://www.datanucleus.org/products/accessplatform_4_0/jdo/query.html#named[named queries] using JDOQL.
-
-As an alternative, you could also use link:http://www.datanucleus.org/products/accessplatform_4_0/jdo/jdoql_typesafe.html[JDO typesafe queries] through the xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-api_IsisJdoSupport[`IsisJdoSupport`] service.
-
-
-[source,java]
-----
-public interface DomainObjectContainer {
-    public <T> List<T> allInstances(Class<T> ofType, long... range);                        // <1>
-    <T> List<T> allMatches(Query<T> query);                                                 // <2>
-    <T> List<T> allMatches(Class<T> ofType, Predicate<? super T> predicate, long... range); // <3>
-    <T> List<T> allMatches(Class<T> ofType, String title, long... range);                   // <4>
-    <T> List<T> allMatches(Class<T> ofType, T pattern, long... range);                      // <5>
-    ...
-}
-----
-<1> all persisted instances of specified type.  Mostly for prototyping, though can be useful to obtain all instances of domain entities if the number is known to be small.  The optional varargs parameters are for paging control; more on this below.
-<2> all persistence instances matching the specified `Query`.  Query itself is an Isis abstraction on top of JDO/DataNucleus' Query API.  *This is the primary API used for querying*
-<3> all persistenced instances of specified type matching `Predicate`.  Only really intended for prototyping because in effect constitutes a client-side WHERE clause
-<4> all persisted instances with the specified string as their title.  Only very occasionally used
-<5> all persisted instances matching object (query-by-example).  Only very occasionally used
-
-There are various implementations of the `Query` API, but these either duplicate functionality of the other overloads of `allMatches(...)` or they are not supported by the JDO/DataNucleus object store.   The only significant implementation of `Query` to be aware of is `QueryDefault`, which identifies a named query and a set of parameter/argument tuples.
-
-For example, in the (non-ASF) http://github.com/isisaddons/isis-app-todoapp[Isis addons' todoapp] the `ToDoItem` is annotated:
-
-[source,java]
-----
-@javax.jdo.annotations.Queries( {
-    @javax.jdo.annotations.Query(
-            name = "findByAtPathAndComplete", language = "JDOQL",               // <1>
-            value = "SELECT "
-                    + "FROM todoapp.dom.module.todoitem.ToDoItem "
-                    + "WHERE atPath.indexOf(:atPath) == 0 "                     // <2>
-                    + "   && complete == :complete"),                           // <3>
-    ...
-})
-public class ToDoItem ... {
-    ...
-}
-----
-<1> name of the query
-<2> defines the `atPath` parameter
-<3> defines the `complete` parameter
-
-This JDO query definitions are used in the `ToDoItemRepositoryImplUsingJdoql` service:
-
-[source,java]
-----
-@DomainService(nature = NatureOfService.DOMAIN)
-public class ToDoItemRepositoryImplUsingJdoql implements ToDoItemRepositoryImpl {
-    @Programmatic
-    public List<ToDoItem> findByAtPathAndCategory(final String atPath, final Category category) {
-        return container.allMatches(
-                new QueryDefault<>(ToDoItem.class,
-                        "findByAtPathAndCategory",                              // <1>
-                        "atPath", atPath,                                       // <2>
-                        "category", category));                                 // <3>
-    }
-    ...
-    @javax.inject.Inject
-    DomainObjectContainer container;
-}
-----
-<1> corresponds to the "findByAtPathAndCategory" JDO named query
-<2> provide argument for the `atPath` parameter.  The pattern is parameter, argument, parameter, argument, ... and so on.
-<3> provide argument for the `category` parameter.  The pattern is parameter, argument, parameter, argument, ... and so on.
-
-Other JDOQL named queries (not shown) follow the exact same pattern.
-
-With respect to the other query APIs, the varargs parameters are optional, but allow for (client-side and managed) paging.  The first parameter is the `start` (0-based, the second is the `count`.
-
-[TIP]
-====
-It is also possible to query using DataNucleus' type-safe query API.  For more details, see xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-api_IsisJdoSupport[`IsisJdoSupport`].
-====
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer_object-persistence-api.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer_object-persistence-api.adoc
index f3ed151..f75f782 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer_object-persistence-api.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer_object-persistence-api.adoc
@@ -50,7 +50,8 @@ container.persistIfNotAlready(cust);
 
 You should be aware that by default Apache Isis queues up calls to `#persist()` and `#remove()`.  These are then executed either when the request completes (and the transaction commits), or if the queue is flushed.  This can be done either implicitly by the framework, or as the result of a direct call to `#flush()`.
 
-By default the framework itself will cause `#flush()` to be called whenever a query is executed by way of `#allMatches(Query)`, as documented xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_DomainObjectContainer_generic-repository-api[above].  However, this behaviour can be disabled using the  xref:../rgcfg/rgcfg.adoc#_rgcfg_configuring-core[configuration property] `isis.services.container.disableAutoFlush`.
+By default the framework itself will cause `#flush()` to be called whenever a query is executed by way of `#allMatches(Query)`, as documented xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-api_RepositoryService[above].
+However, this behaviour can be disabled using the  xref:../rgcfg/rgcfg.adoc#_rgcfg_configuring-core[configuration property] `isis.services.container.disableAutoFlush`.
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_IsisJdoSupport.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_IsisJdoSupport.adoc
index 6c46609..f9fb125 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_IsisJdoSupport.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_IsisJdoSupport.adoc
@@ -118,7 +118,7 @@ public List<ToDoItem> findByAtPathAndCategory(final String atPath, final Categor
 
 [NOTE]
 ====
-You can find the full example of the JDOQL equivalent in the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_DomainObjectContainer_generic-repository-api[`DomainObjectContainer`]
+You can find the full example of the JDOQL equivalent in the xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-api_RepositoryService[`RepositoryService`]
 ====
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_RepositoryService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_RepositoryService.adoc
index e51cc95..3bad5ff 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_RepositoryService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_RepositoryService.adoc
@@ -83,7 +83,8 @@ repositoryService.persist(cust);
 
 You should be aware that by default Apache Isis queues up calls to `#persist()` and `#remove()`.  These are then executed either when the request completes (and the transaction commits), or if the queue is flushed.  This can be done either implicitly by the framework, or as the result of a direct call to `#flush()`.
 
-By default the framework itself will cause `#flush()` to be called whenever a query is executed by way of `#allMatches(Query)`, as documented xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_DomainObjectContainer_generic-repository-api[above].  However, this behaviour can be disabled using the  xref:../rgcfg/rgcfg.adoc#_rgcfg_configuring-core[configuration property] `isis.services.container.disableAutoFlush`.
+By default the framework itself will cause `#flush()` to be called whenever a query is executed by way of `#allMatches(Query)`.
+However, this behaviour can be disabled using the  xref:../rgcfg/rgcfg.adoc#_rgcfg_configuring-core[configuration property] `isis.services.container.disableAutoFlush`.
 
 
 

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

[isis] 06/13: ISIS-1742: deletes @Bounded annotation + facets

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit fd1348764c805a0464e72a4e48508de45dece5da
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Oct 5 15:58:19 2017 +0300

    ISIS-1742: deletes @Bounded annotation + facets
---
 .../guides/rgant/_rgant_aaa_deprecated.adoc        |  6 ---
 .../org/apache/isis/applib/annotation/Bounded.java | 36 -------------
 .../DomainObjectAnnotationFacetFactory.java        | 20 +-------
 .../choices/ChoicesFacetFromBoundedAnnotation.java | 60 ----------------------
 ...oicesFacetFromBoundedAnnotationFactoryTest.java |  2 -
 todo-deprecation-list.txt                          |  4 +-
 6 files changed, 4 insertions(+), 124 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc
index 34988d6..6891776 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc
@@ -43,12 +43,6 @@ The annotations listed in the table below are still supported by Apache Isis, bu
 |UI
 |
 
-|`@Bounded`
-|Bounded (and limited) number of instances of an entity type, translates into a drop-down for any property of that type.
-|xref:../rgant/rgant.adoc#_rgant-DomainObject_bounded[`@DomainObject#bounded()`]
-|Domain
-|
-
 |`@Bulk`
 |Indicates an action is a bulk action, can be applied to multiple instances.
 |xref:../rgant/rgant.adoc#_rgant-Action_invokeOn[`@Action#invokeOn()`]
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Bounded.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Bounded.java
deleted file mode 100644
index 38f4708..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Bounded.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @deprecated - use {@link DomainObject#bounded()} instead.
- */
-@Inherited
-@Target({ ElementType.TYPE })
-@Retention(RetentionPolicy.RUNTIME)
-@Deprecated
-public @interface Bounded {
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index 1a717ae..f5e34f3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -28,7 +28,6 @@ import com.google.common.collect.Maps;
 
 import org.apache.isis.applib.annotation.Audited;
 import org.apache.isis.applib.annotation.AutoComplete;
-import org.apache.isis.applib.annotation.Bounded;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Immutable;
 import org.apache.isis.applib.annotation.Nature;
@@ -66,7 +65,6 @@ import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.Audita
 import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.AutoCompleteFacetForAutoCompleteAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.AutoCompleteFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.choices.ChoicesFacetForDomainObjectAnnotation;
-import org.apache.isis.core.metamodel.facets.object.domainobject.choices.ChoicesFacetFromBoundedAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.editing.ImmutableFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForJdoPersistenceCapableAnnotation;
@@ -98,7 +96,6 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
 
     private final MetaModelValidatorForDeprecatedAnnotation auditedValidator = new MetaModelValidatorForDeprecatedAnnotation(Audited.class);
     private final MetaModelValidatorForDeprecatedAnnotation autoCompleteValidator = new MetaModelValidatorForDeprecatedAnnotation(AutoComplete.class);
-    private final MetaModelValidatorForDeprecatedAnnotation boundedValidator = new MetaModelValidatorForDeprecatedAnnotation(Bounded.class);
     private final MetaModelValidatorForDeprecatedAnnotation immutableValidator = new MetaModelValidatorForDeprecatedAnnotation(Immutable.class);
     private final MetaModelValidatorForDeprecatedAnnotation objectTypeValidator = new MetaModelValidatorForDeprecatedAnnotation(ObjectType.class);
     private final MetaModelValidatorForValidationFailures autoCompleteInvalid = new MetaModelValidatorForValidationFailures();
@@ -284,19 +281,8 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
         final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
-        // check for the deprecated @Bounded annotation first
-        final Bounded annotation = Annotations.getAnnotation(processClassContext.getCls(), Bounded.class);
-        Facet facet = boundedValidator.flagIfPresent(
-            ChoicesFacetFromBoundedAnnotation.create(annotation, processClassContext.getFacetHolder(),
-                    getDeploymentCategory(),
-                    getAuthenticationSessionProvider(),
-                    persistenceSessionServiceInternal));
-
-        // else check from @DomainObject(bounded=...)
-        if(facet == null) {
-            facet = ChoicesFacetForDomainObjectAnnotation.create(domainObject, facetHolder, getDeploymentCategory(),
-                    getAuthenticationSessionProvider(), persistenceSessionServiceInternal);
-        }
+        // check from @DomainObject(bounded=...)
+        Facet facet = ChoicesFacetForDomainObjectAnnotation.create(domainObject, facetHolder, getDeploymentCategory(), getAuthenticationSessionProvider(), persistenceSessionServiceInternal);
 
         // then add
         FacetUtil.addFacet(facet);
@@ -570,7 +556,6 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
 
         metaModelValidator.add(auditedValidator);
         metaModelValidator.add(autoCompleteValidator);
-        metaModelValidator.add(boundedValidator);
         metaModelValidator.add(immutableValidator);
         metaModelValidator.add(objectTypeValidator);
 
@@ -588,7 +573,6 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
 
         auditedValidator.setConfiguration(configuration);
         autoCompleteValidator.setConfiguration(configuration);
-        boundedValidator.setConfiguration(configuration);
         immutableValidator.setConfiguration(configuration);
         objectTypeValidator.setConfiguration(configuration);
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetFromBoundedAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetFromBoundedAnnotation.java
deleted file mode 100644
index e5af986..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetFromBoundedAnnotation.java
+++ /dev/null
@@ -1,60 +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.domainobject.choices;
-
-import org.apache.isis.applib.annotation.Bounded;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.choices.ChoicesFacetFromBoundedAbstract;
-import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-
-/**
- * @deprecated
- */
-@Deprecated
-public class ChoicesFacetFromBoundedAnnotation extends ChoicesFacetFromBoundedAbstract {
-
-    private ChoicesFacetFromBoundedAnnotation(
-            final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
-            final AuthenticationSessionProvider authenticationSessionProvider,
-            final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
-        super(holder, deploymentCategory, authenticationSessionProvider, persistenceSessionServiceInternal);
-    }
-
-    public static ChoicesFacet create(
-            final Bounded annotation,
-            final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
-            final AuthenticationSessionProvider authenticationSessionProvider,
-            final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
-        if (annotation == null) {
-            return null;
-        }
-
-        return new ChoicesFacetFromBoundedAnnotation(holder, deploymentCategory, authenticationSessionProvider,
-                persistenceSessionServiceInternal);
-    }
-
-
-
-}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetFromBoundedAnnotationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetFromBoundedAnnotationFactoryTest.java
index 4bd3637..0aee06e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetFromBoundedAnnotationFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetFromBoundedAnnotationFactoryTest.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.core.metamodel.facets.object.domainobject;
 
-import org.apache.isis.applib.annotation.Bounded;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
@@ -45,7 +44,6 @@ public class ChoicesFacetFromBoundedAnnotationFactoryTest extends AbstractFacetF
     }
 
     public void testBoundedAnnotationPickedUpOnClass() {
-        @Bounded
         class Customer {
         }
 
diff --git a/todo-deprecation-list.txt b/todo-deprecation-list.txt
index 4976002..b7393d9 100644
--- a/todo-deprecation-list.txt
+++ b/todo-deprecation-list.txt
@@ -35,7 +35,7 @@ org.apache.isis.applib.annotation
     PublishedObject.java - entire annotation, use @DomainObject(publishing=...) instead
     PublishingPayloadFactoryForAction.java - entire annotation, replaced with simpler PublisherService SPI
     PublishingPayloadFactoryForObject.java - entire annotation, replaced with simpler PublisherService SPI
-        
+
     ActionSemantics.java  - entire annotation, use @Action(semantics=...)
     Idempotent.java - entire annotation, use @Action(semantics=...) instead.
     QueryOnly.java - entire annotation, use @Action(semantics=...) instead.
@@ -45,6 +45,7 @@ org.apache.isis.applib.annotation
 
     Aggregated.java - entire annotation, not supported internally
 
+    Bounded.java - entire annotation, use @DomainObject(bounded=...)
 
     CollectionLayout.java
         render() - use @CollectionLayout(defaultView=...) instead
@@ -113,7 +114,6 @@ org.apache.isis.applib.annotation
 
     AutoComplete.java - entire annotation, use @DomainObject(autoComplete...=...)
     Bookmarkable.java - entire annotation, use @DomainObjectLayout(bookmarking=...)
-    Bounded.java - entire annotation, use @DomainObject(bounded=...)
 
     Bulk.java - entire annotation, use @Action(invokeOn=...)
     Bulk.InteractionContext - entire service, use ActionInvocationContext service instead

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

[isis] 05/13: ISIS-1742: removes Bounded marker interface

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 2cef4b7c1dec6bee1a41ae98d84d80c3abbae996
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Oct 5 15:55:21 2017 +0300

    ISIS-1742: removes Bounded marker interface
---
 .../org/apache/isis/applib/marker/Bounded.java     | 32 -----------
 .../choices/ChoicesFacetFromBoundedAbstract.java   |  1 -
 .../ChoicesFacetFromBoundedMarkerInterface.java    | 38 -------------
 ...icesFacetFromBoundedMarkerInterfaceFactory.java | 66 ----------------------
 .../dflt/ProgrammingModelFacetsJava5.java          |  2 -
 ...FacetFromBoundedMarkerInterfaceFactoryTest.java | 61 --------------------
 todo-deprecation-list.txt                          |  3 +-
 7 files changed, 2 insertions(+), 201 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/marker/Bounded.java b/core/applib/src/main/java/org/apache/isis/applib/marker/Bounded.java
deleted file mode 100644
index 15be01f..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/marker/Bounded.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.marker;
-
-/**
- * Marker interface to indicate that a class has a static set of instances; they
- * are loaded on first use and are not refreshed.
- * 
- * Use {@link Bounded} annotation in preference to this marker interface.
- *
- * @deprecated
- */
-@Deprecated
-public interface Bounded {
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
index 99a605b..a7b675d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
@@ -25,7 +25,6 @@ import com.google.common.collect.Lists;
 
 import org.apache.isis.applib.events.UsabilityEvent;
 import org.apache.isis.applib.events.ValidityEvent;
-import org.apache.isis.applib.marker.Bounded;
 import org.apache.isis.applib.query.Query;
 import org.apache.isis.applib.query.QueryFindAllInstances;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterface.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterface.java
deleted file mode 100644
index 4e27bac..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterface.java
+++ /dev/null
@@ -1,38 +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.choices.boundedmarkerifc;
-
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.choices.ChoicesFacetFromBoundedAbstract;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-
-public class ChoicesFacetFromBoundedMarkerInterface extends ChoicesFacetFromBoundedAbstract {
-
-    public ChoicesFacetFromBoundedMarkerInterface(
-            final FacetHolder holder,
-            final DeploymentCategory deploymentCategory,
-            final AuthenticationSessionProvider authenticationSessionProvider,
-            final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
-        super(holder, deploymentCategory, authenticationSessionProvider, persistenceSessionServiceInternal);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java
deleted file mode 100644
index 756dbf8..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/boundedmarkerifc/ChoicesFacetFromBoundedMarkerInterfaceFactory.java
+++ /dev/null
@@ -1,66 +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.choices.boundedmarkerifc;
-
-import java.lang.reflect.Method;
-
-import org.apache.isis.applib.marker.Bounded;
-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.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
-import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-
-public class ChoicesFacetFromBoundedMarkerInterfaceFactory extends FacetFactoryAbstract {
-
-    private PersistenceSessionServiceInternal persistenceSessionServiceInternal;
-
-    public ChoicesFacetFromBoundedMarkerInterfaceFactory() {
-        super(FeatureType.OBJECTS_ONLY);
-    }
-
-    @Override
-    public void process(final ProcessClassContext processClassContaxt) {
-        final boolean implementsMarker = Bounded.class.isAssignableFrom(processClassContaxt.getCls());
-        FacetUtil.addFacet(create(implementsMarker, processClassContaxt.getFacetHolder()));
-    }
-
-    private ChoicesFacet create(
-            final boolean implementsMarker,
-            final FacetHolder holder) {
-        return implementsMarker
-                ? new ChoicesFacetFromBoundedMarkerInterface(
-                    holder, getDeploymentCategory(), getAuthenticationSessionProvider(),
-                persistenceSessionServiceInternal) : null;
-    }
-
-    public boolean recognizes(final Method method) {
-        return false;
-    }
-
-    @Override
-    public void setServicesInjector(final ServicesInjector servicesInjector) {
-        super.setServicesInjector(servicesInjector);
-        this.persistenceSessionServiceInternal = servicesInjector.getPersistenceSessionServiceInternal();
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
index fa124cc..ac13063 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
@@ -64,7 +64,6 @@ import org.apache.isis.core.metamodel.facets.object.callbacks.PersistCallbackFac
 import org.apache.isis.core.metamodel.facets.object.callbacks.PersistCallbackViaSaveMethodFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.callbacks.RemoveCallbackFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdateCallbackFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.choices.boundedmarkerifc.ChoicesFacetFromBoundedMarkerInterfaceFactory;
 import org.apache.isis.core.metamodel.facets.object.choices.enums.EnumFacetUsingValueFacetUsingSemanticsProviderFactory;
 import org.apache.isis.core.metamodel.facets.object.cssclass.method.CssClassFacetMethodFactory;
 import org.apache.isis.core.metamodel.facets.object.defaults.annotcfg.DefaultedFacetAnnotationElseConfigurationFactory;
@@ -282,7 +281,6 @@ public final class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract
 
         addFactory(new BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory());
         addFactory(new HomePageFacetAnnotationFactory());
-        addFactory(new ChoicesFacetFromBoundedMarkerInterfaceFactory());
 
         addFactory(new DefaultedFacetAnnotationElseConfigurationFactory());
         addFactory(new PropertyDefaultFacetDerivedFromTypeFactory());
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/bounded/ChoicesFacetFromBoundedMarkerInterfaceFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/bounded/ChoicesFacetFromBoundedMarkerInterfaceFactoryTest.java
deleted file mode 100644
index f8db4f9..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/bounded/ChoicesFacetFromBoundedMarkerInterfaceFactoryTest.java
+++ /dev/null
@@ -1,61 +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.bounded;
-
-import org.apache.isis.applib.marker.Bounded;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.object.choices.ChoicesFacetFromBoundedAbstract;
-import org.apache.isis.core.metamodel.facets.object.choices.boundedmarkerifc.ChoicesFacetFromBoundedMarkerInterfaceFactory;
-import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
-
-public class ChoicesFacetFromBoundedMarkerInterfaceFactoryTest extends AbstractFacetFactoryTest {
-
-    private ChoicesFacetFromBoundedMarkerInterfaceFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new ChoicesFacetFromBoundedMarkerInterfaceFactory();
-        facetFactory.setServicesInjector(stubServicesInjector);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
-    public void testBoundedInterfaceAnnotationPickedUpOnClass() {
-        class Customer implements Bounded {
-        }
-
-        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(ChoicesFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof ChoicesFacetFromBoundedAbstract);
-
-        assertNoMethodsRemoved();
-    }
-
-}
diff --git a/todo-deprecation-list.txt b/todo-deprecation-list.txt
index 79373c9..4976002 100644
--- a/todo-deprecation-list.txt
+++ b/todo-deprecation-list.txt
@@ -81,6 +81,8 @@ org.apache.isis.applib.annotation
 
 org.apache.isis.applib.marker
 
+    Bounded.java
+
     NotPersistable.java
     ProgramPersistable.java
 
@@ -176,7 +178,6 @@ org.apache.isis.applib.fixturescripts
 
 org.apache.isis.applib.marker - remove these marker interaces (tend to use annotations in preference)
     Auditable.java
-    Bounded.java
 
 
 org.apache.isis.applib.services.actinvoc

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

[isis] 11/13: removes @Bookmarkable annotation; removes @Debug, @Exploration and @Prototype annotations + supporting facets

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 701cc9a8f0f03a2dbe713dccf8fe9c4ed300d3c2
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Oct 5 17:08:32 2017 +0300

    removes @Bookmarkable annotation; removes @Debug, @Exploration and @Prototype annotations + supporting facets
---
 .../guides/rgant/_rgant_aaa_deprecated.adoc        |  33 +------
 .../src/main/asciidoc/pages/tg/_tg_pet-clinic.adoc |  20 +++-
 .../org/apache/isis/applib/annotation/Debug.java   |  38 -------
 .../apache/isis/applib/annotation/Exploration.java |  38 -------
 .../apache/isis/applib/annotation/Prototype.java   |  36 -------
 .../action/ActionAnnotationFacetFactory.java       |  19 +---
 .../PrototypeFacetForPrototypeAnnotation.java      |  47 ---------
 .../PrototypeFacetForExplorationAnnotation.java    |  36 -------
 ...totypeFacetForExplorationAnnotationFactory.java |  71 --------------
 ...ava => BookmarkPolicyFacetFallbackFactory.java} |   5 +-
 ...okmarkPolicyFacetViaBookmarkableAnnotation.java |  37 -------
 .../dflt/ProgrammingModelFacetsJava5.java          |   7 +-
 .../PrototypeFacetAnnotationFactoryTest.java       |   2 -
 ...kmarkableAnnotationFacetFactoryTest_action.java |   6 +-
 ...peFacetForExplorationAnnotationFactoryTest.java |  68 -------------
 ...okmarkableAnnotationFacetFactoryTest_class.java |  22 +----
 todo-deprecation-list.txt                          | 109 ++++++++++++---------
 17 files changed, 90 insertions(+), 504 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc
index 3baf515..875f436 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc
@@ -22,13 +22,6 @@ The annotations listed in the table below are still supported by Apache Isis, bu
 |Layer
 |xref:../ugvw/ugvw.adoc#_ugvw_layout_file-based[File-based layout]?
 
-|`@Bookmarkable`
-|Whether (and how) to create a bookmark for visited object.
-|xref:../rgant/rgant.adoc#_rgant-DomainObjectLayout_bookmarking[`@DomainObjectLayout` +
-`#bookmarking()`]
-|UI
-|
-
 |`@Bulk`
 |Indicates an action is a bulk action, can be applied to multiple instances.
 |xref:../rgant/rgant.adoc#_rgant-Action_invokeOn[`@Action#invokeOn()`]
@@ -38,13 +31,7 @@ The annotations listed in the table below are still supported by Apache Isis, bu
 |`@Command`
 |Action invocation should be reified as a command object, optionally persistable for profiling and enhanced auditing, and background/async support.
 |xref:../rgant/rgant.adoc#_rgant-Action_command[`@Action#command()`]
-|Domain
-|
-
-|`@Debug`
-|Action only invokable in debug mode.
-|Not supported by either the xref:../ugvw/ugvw.adoc#[Wicket viewer] or the xref:../ugvro/ugvro.adoc#[RestfulObjects viewer]; use prototype mode instead (xref:../rgant/rgant.adoc#_rgant-Action_restrictTo[`@Action#restrictTo()`])
-|UI
+q|Domain
 |
 
 
@@ -54,12 +41,6 @@ The annotations listed in the table below are still supported by Apache Isis, bu
 |UI, Domain
 |Yes
 
-|`@Exploration`
-|Action available in special 'exploration' mode.
-|Not supported by either the xref:../ugvw/ugvw.adoc#[Wicket viewer] or the xref:../ugvro/ugvro.adoc#[RestfulObjects viewer]; use prototype mode instead (xref:../rgant/rgant.adoc#_rgant-Action_restrictTo[`@Action#restrictTo()`])
-|UI
-|
-
 |`@Hidden`
 |Object member is not visible, or on domain service (to indicate that none of its actions are visible).
 |For domain object members, use `#hidden()` attribute of xref:../rgant/rgant.adoc#_rgant-Action_hidden[`Action`], xref:../rgant/rgant.adoc#_rgant-Property_hidden[`Property`] or xref:../rgant/rgant.adoc#_rgant-Collection_hidden[`Collection`].  +
@@ -126,18 +107,6 @@ Also part of the toString representation of bookmarks, if using the Bookmark Ser
 |
 
 
-|`@Prototype`
-|Indicates that an action should only be visible in 'prototype' mode.
-|xref:../rgant/rgant.adoc#_rgant-Action_restrictTo[`@Action#restrictTo()`]
-|UI
-|Yes
-
-|`@QueryOnly`
-|Whether an action is query-only (has no side-effects).
-|xref:../rgant/rgant.adoc#_rgant-Action_semantics[`@Action#semantics()`]
-|Domain
-|
-
 |`@RegEx`
 |Validate change to value of string property.
 |`#regexPattern()` for xref:../rgant/rgant.adoc#_rgant-Property_regexPattern[`@Property`] or  xref:../rgant/rgant.adoc#_rgant-Property_regexPattern[`@Parameter`].
diff --git a/adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic.adoc b/adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic.adoc
index f3e3eeb..fcf3605 100644
--- a/adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic.adoc
+++ b/adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic.adoc
@@ -1,5 +1,5 @@
 [[_tg_pet-clinic]]
-= Pet Clinic (<= 1.13.1)
+= Pet Clinic (up to v1.13.1)
 :Notice: 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 ag [...]
 :_basedir: ../../
 :_imagesdir: images/
@@ -8,6 +8,12 @@
 This is a step-by-step tutorial to build up a simple "petclinic" application, starting from the xref:../../guides/ugfun/ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype].
 It was originally written by Jeroen van der Wal.
 
+[WARNING]
+====
+Due to changes in the structure of the simpleapp archetype, this tutorial does not work for any version later than v1.13.1
+====
+
+
 It consists of just three domain classes (http://yuml.me/edit/3db2078c[http://yuml.me/3db2078c]):
 
 image::{_imagesdir}tutorials/pet-clinic/domain-model.png[link="{_imagesdir}tutorials/pet-clinic/domain-model.png"]
@@ -316,8 +322,12 @@ Note that `Pet` has both both Isis and JDO annotations:
         strategy=VersionStrategy.VERSION_NUMBER,
         column="version")
 @javax.jdo.annotations.Unique(name="Pet_name_UNQ", members = {"name"})         // <4>
-@ObjectType("PET")                                                             // <5>
-@Bookmarkable                                                                  // <6>
+@DomainObject(
+    objectType = "PET"                              // <5>
+)
+@DomainObjectLayout(
+    bookmarking = BookmarkPolicy.AS_ROOT            // <6>
+)
 public class Pet implements Comparable<Pet> {
     ...
 }
@@ -329,8 +339,8 @@ where:
 <2> `@DatastoreIdentity` specify a surrogate `Id` column to be used as the primary key
 <3> `@Version` provides support for optimistic locking
 <4> `@Unique` enforces a uniqueness constraint so that no two `Pet`s can have the same name (unrealistic, but can refactor later)
-<5> `@ObjectType` is used by Apache Isis for its own internal "OID" identifier; this also appears in the URL in Apache Isis' Wicket viewer and REST API
-<6> `@Bookmarkable` indicates that the object can be automatically bookmarked in Apache Isis' Wicket viewer
+<5> used by Apache Isis for its own internal "OID" identifier; this also appears in the URL in Apache Isis' Wicket viewer and REST API
+<6> indicates that the object can be automatically bookmarked in Apache Isis' Wicket viewer
 
 [NOTE]
 ====
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Debug.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Debug.java
deleted file mode 100644
index e5d6a1a..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Debug.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * This annotation is ignored.
- *
- * @deprecated - use {@link org.apache.isis.applib.annotation.Action#restrictTo()} for prototype-mode
- */
-@Inherited
-@Target({ ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-@Deprecated
-public @interface Debug {
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Exploration.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Exploration.java
deleted file mode 100644
index df41566..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Exploration.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Indicates the an action should be only available in exploration mode
- * 
- * @deprecated - very similar to {@link org.apache.isis.applib.annotation.Prototype}.
- */
-@Deprecated
-@Inherited
-@Target({ ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Exploration {
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Prototype.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Prototype.java
deleted file mode 100644
index fe5626a..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Prototype.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @deprecated - use {@link org.apache.isis.applib.annotation.Action#restrictTo()} ()} instead.
- */
-@Deprecated
-@Inherited
-@Target({ ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Prototype {
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index 20b79b7..9c06de4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -26,7 +26,6 @@ import org.apache.isis.applib.annotation.Bulk;
 import org.apache.isis.applib.annotation.Command;
 import org.apache.isis.applib.annotation.Disabled;
 import org.apache.isis.applib.annotation.Hidden;
-import org.apache.isis.applib.annotation.Prototype;
 import org.apache.isis.applib.services.HasTransactionId;
 import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -53,7 +52,6 @@ import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInv
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault;
 import org.apache.isis.core.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation;
-import org.apache.isis.core.metamodel.facets.actions.action.prototype.PrototypeFacetForPrototypeAnnotation;
 import org.apache.isis.core.metamodel.facets.actions.action.publishing.PublishedActionFacetForActionAnnotation;
 import org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent;
 import org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation;
@@ -79,7 +77,6 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract
     private final MetaModelValidatorForDeprecatedAnnotation commandValidator = new MetaModelValidatorForDeprecatedAnnotation(Command.class);
     private final MetaModelValidatorForDeprecatedAnnotation hiddenValidator = new MetaModelValidatorForDeprecatedAnnotation(Hidden.class);
     private final MetaModelValidatorForDeprecatedAnnotation disabledValidator = new MetaModelValidatorForDeprecatedAnnotation(Disabled.class);
-    private final MetaModelValidatorForDeprecatedAnnotation prototypeValidator = new MetaModelValidatorForDeprecatedAnnotation(Prototype.class);
 
 
 
@@ -212,19 +209,11 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract
         final Method method = processMethodContext.getMethod();
         final FacetHolder holder = processMethodContext.getFacetHolder();
 
-        // check for deprecated @Prototype
-        final Prototype annotation = Annotations.getAnnotation(method, Prototype.class);
-        final PrototypeFacet facet1 = PrototypeFacetForPrototypeAnnotation.create(annotation, holder,
+        // search for @Action(restrictTo=...)
+        final Action action = Annotations.getAnnotation(method, Action.class);
+        PrototypeFacet facet = PrototypeFacetForActionAnnotation.create(action, holder,
                 getDeploymentCategory());
-        FacetUtil.addFacet(prototypeValidator.flagIfPresent(facet1, processMethodContext));
-        PrototypeFacet facet = facet1;
 
-        // else search for @Action(restrictTo=...)
-        final Action action = Annotations.getAnnotation(method, Action.class);
-        if(facet == null) {
-            facet = PrototypeFacetForActionAnnotation.create(action, holder,
-                    getDeploymentCategory());
-        }
         FacetUtil.addFacet(facet);
     }
 
@@ -366,7 +355,6 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract
         metaModelValidator.add(commandValidator);
         metaModelValidator.add(hiddenValidator);
         metaModelValidator.add(disabledValidator);
-        metaModelValidator.add(prototypeValidator);
     }
 
     // ///////////////////////////////////////////////////////////////
@@ -381,7 +369,6 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract
         commandValidator.setConfiguration(configuration);
         hiddenValidator.setConfiguration(configuration);
         disabledValidator.setConfiguration(configuration);
-        prototypeValidator.setConfiguration(configuration);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForPrototypeAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForPrototypeAnnotation.java
deleted file mode 100644
index 7afba4e..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForPrototypeAnnotation.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.actions.action.prototype;
-
-import org.apache.isis.applib.annotation.Prototype;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet;
-import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacetAbstract;
-
-/**
- * @deprecated
- */
-@Deprecated
-public class PrototypeFacetForPrototypeAnnotation extends PrototypeFacetAbstract {
-
-    public PrototypeFacetForPrototypeAnnotation(
-            final FacetHolder holder,
-            final DeploymentCategory deploymentCategory) {
-        super(holder, deploymentCategory);
-    }
-
-
-    public static PrototypeFacet create(
-            final Prototype annotation,
-            final FacetHolder holder,
-            final DeploymentCategory deploymentCategory) {
-        return annotation == null ? null : new PrototypeFacetForPrototypeAnnotation(holder, deploymentCategory);
-    }
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/PrototypeFacetForExplorationAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/PrototypeFacetForExplorationAnnotation.java
deleted file mode 100644
index 484936e..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/PrototypeFacetForExplorationAnnotation.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.actions.exploration.annotation;
-
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacetAbstract;
-
-/**
- * @deprecated
- */
-@Deprecated
-public class PrototypeFacetForExplorationAnnotation extends PrototypeFacetAbstract {
-
-    public PrototypeFacetForExplorationAnnotation(final FacetHolder holder, final DeploymentCategory deploymentCategory) {
-        super(holder, deploymentCategory);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/PrototypeFacetForExplorationAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/PrototypeFacetForExplorationAnnotationFactory.java
deleted file mode 100644
index c8fd42a..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/exploration/annotation/PrototypeFacetForExplorationAnnotationFactory.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.actions.exploration.annotation;
-
-import org.apache.isis.applib.annotation.Exploration;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-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.actions.interaction.ActionNamedExplorationFacetFactory;
-import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet;
-import org.apache.isis.core.metamodel.progmodel.DeprecatedMarker;
-import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
-
-/**
- * {@link PrototypeFacet} can also be installed via a naming convention, see
- * {@link ActionNamedExplorationFacetFactory}.
- */
-public class PrototypeFacetForExplorationAnnotationFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner, DeprecatedMarker {
-
-    private final MetaModelValidatorForDeprecatedAnnotation validator = new MetaModelValidatorForDeprecatedAnnotation(Exploration.class);
-
-    public PrototypeFacetForExplorationAnnotationFactory() {
-        super(FeatureType.ACTIONS_ONLY);
-    }
-
-    @Override
-    public void process(final ProcessMethodContext processMethodContext) {
-        final Exploration annotation = Annotations.getAnnotation(processMethodContext.getMethod(), Exploration.class);
-        final PrototypeFacet facet = create(annotation, processMethodContext.getFacetHolder());
-        FacetUtil.addFacet(validator.flagIfPresent(facet, processMethodContext));
-    }
-
-    private PrototypeFacet create(final Exploration annotation, final FacetHolder holder) {
-        return annotation == null ? null : new PrototypeFacetForExplorationAnnotation(holder, getDeploymentCategory());
-    }
-
-    @Override
-    public void refineMetaModelValidator(final MetaModelValidatorComposite metaModelValidator, final IsisConfiguration configuration) {
-        metaModelValidator.add(validator);
-    }
-
-    @Override
-    public void setServicesInjector(final ServicesInjector servicesInjector) {
-        super.setServicesInjector(servicesInjector);
-        validator.setConfiguration(servicesInjector.getConfigurationServiceInternal());
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetFallbackFactory.java
similarity index 93%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetFallbackFactory.java
index 17bf942..b00cd62 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetFallbackFactory.java
@@ -30,7 +30,6 @@ import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback;
-import org.apache.isis.core.metamodel.services.ServicesInjector;
 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;
@@ -38,9 +37,9 @@ import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorCom
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting;
 import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
 
-public class BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory extends FacetFactoryAbstract implements  MetaModelValidatorRefiner {
+public class BookmarkPolicyFacetFallbackFactory extends FacetFactoryAbstract implements  MetaModelValidatorRefiner {
 
-    public BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory() {
+    public BookmarkPolicyFacetFallbackFactory() {
         super(FeatureType.OBJECTS_AND_ACTIONS);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotation.java
deleted file mode 100644
index 22ac3aa..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotation.java
+++ /dev/null
@@ -1,37 +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.bookmarkpolicy.bookmarkable;
-
-import org.apache.isis.applib.annotation.BookmarkPolicy;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetAbstract;
-
-
-/**
- * @deprecated
- */
-@Deprecated
-public class BookmarkPolicyFacetViaBookmarkableAnnotation extends BookmarkPolicyFacetAbstract {
-
-    public BookmarkPolicyFacetViaBookmarkableAnnotation(BookmarkPolicy bookmarkPolicy, FacetHolder facetHolder) {
-        super(bookmarkPolicy, facetHolder);
-    }
-
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
index 2eb697c..caba59c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
@@ -21,7 +21,6 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.facets.actions.action.ActionAnnotationFacetFactory;
 import org.apache.isis.core.metamodel.facets.actions.action.ActionChoicesForCollectionParameterFacetFactory;
 import org.apache.isis.core.metamodel.facets.actions.defaults.method.ActionDefaultsFacetViaMethodFactory;
-import org.apache.isis.core.metamodel.facets.actions.exploration.annotation.PrototypeFacetForExplorationAnnotationFactory;
 import org.apache.isis.core.metamodel.facets.actions.homepage.annotation.HomePageFacetAnnotationFactory;
 import org.apache.isis.core.metamodel.facets.actions.layout.ActionLayoutFacetFactory;
 import org.apache.isis.core.metamodel.facets.actions.notcontributed.annotation.NotContributedFacetAnnotationFactory;
@@ -56,7 +55,7 @@ import org.apache.isis.core.metamodel.facets.members.hidden.staticmethod.HiddenF
 import org.apache.isis.core.metamodel.facets.members.named.staticmethod.NamedFacetStaticMethodFactory;
 import org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.ViewModelSemanticCheckingFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.bookmarkable.BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory;
+import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.bookmarkable.BookmarkPolicyFacetFallbackFactory;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.callbacks.LoadCallbackFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.callbacks.PersistCallbackFacetFactory;
@@ -278,7 +277,7 @@ public final class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract
         
         addFactory(new MemberGroupLayoutFacetFactory());
 
-        addFactory(new BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory());
+        addFactory(new BookmarkPolicyFacetFallbackFactory());
         addFactory(new HomePageFacetAnnotationFactory());
 
         addFactory(new DefaultedFacetAnnotationElseConfigurationFactory());
@@ -294,8 +293,6 @@ public final class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract
 
         addFactory(new EncodableFacetAnnotationElseConfigurationFactory());
         
-        addFactory(new PrototypeFacetForExplorationAnnotationFactory());
-
         addFactory(new NotContributedFacetAnnotationFactory());
 
         addFactory(new NotInServiceMenuFacetAnnotationFactory());
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/PrototypeFacetAnnotationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/PrototypeFacetAnnotationFactoryTest.java
index 7702747..083a0d5 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/PrototypeFacetAnnotationFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/PrototypeFacetAnnotationFactoryTest.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.metamodel.facets.actions.action;
 
 import java.lang.reflect.Method;
 
-import org.apache.isis.applib.annotation.Prototype;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
@@ -52,7 +51,6 @@ public class PrototypeFacetAnnotationFactoryTest extends AbstractFacetFactoryTes
     public void testAnnotationPickedUp() {
         class Customer {
             @SuppressWarnings("unused")
-            @Prototype
             public void someAction() {
             }
         }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/bookmarkable/BookmarkableAnnotationFacetFactoryTest_action.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/bookmarkable/BookmarkableAnnotationFacetFactoryTest_action.java
index d3df165..732c271 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/bookmarkable/BookmarkableAnnotationFacetFactoryTest_action.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/bookmarkable/BookmarkableAnnotationFacetFactoryTest_action.java
@@ -26,17 +26,17 @@ import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetAbstract;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.bookmarkable.BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory;
+import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.bookmarkable.BookmarkPolicyFacetFallbackFactory;
 
 public class BookmarkableAnnotationFacetFactoryTest_action extends AbstractFacetFactoryTest {
 
-    private BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory facetFactory;
+    private BookmarkPolicyFacetFallbackFactory facetFactory;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
 
-        facetFactory = new BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory();
+        facetFactory = new BookmarkPolicyFacetFallbackFactory();
     }
 
     @Override
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/exploration/PrototypeFacetForPrototypeFacetForExplorationAnnotationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/exploration/PrototypeFacetForPrototypeFacetForExplorationAnnotationFactoryTest.java
deleted file mode 100644
index 7aabfca..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/exploration/PrototypeFacetForPrototypeFacetForExplorationAnnotationFactoryTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.actions.exploration;
-
-import java.lang.reflect.Method;
-
-import org.apache.isis.applib.annotation.Exploration;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import org.apache.isis.core.metamodel.facets.actions.exploration.annotation.PrototypeFacetForExplorationAnnotationFactory;
-import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet;
-import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacetAbstract;
-
-public class PrototypeFacetForPrototypeFacetForExplorationAnnotationFactoryTest extends AbstractFacetFactoryTest {
-
-    private PrototypeFacetForExplorationAnnotationFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new PrototypeFacetForExplorationAnnotationFactory();
-        facetFactory.setServicesInjector(stubServicesInjector);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
-    public void testExplorationAnnotationPickedUp() {
-        class Customer {
-            @SuppressWarnings("unused")
-            @Exploration
-            public void someAction() {
-            }
-        }
-        final Method actionMethod = findMethod(Customer.class, "someAction");
-
-        facetFactory.process(new ProcessMethodContext(Customer.class, null, actionMethod, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(PrototypeFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof PrototypeFacetAbstract);
-
-        assertNoMethodsRemoved();
-    }
-
-}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/BookmarkableAnnotationFacetFactoryTest_class.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/BookmarkableAnnotationFacetFactoryTest_class.java
index d3d9147..3c43626 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/BookmarkableAnnotationFacetFactoryTest_class.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/BookmarkableAnnotationFacetFactoryTest_class.java
@@ -23,21 +23,20 @@ import org.apache.isis.applib.annotation.BookmarkPolicy;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.bookmarkable.BookmarkPolicyFacetViaBookmarkableAnnotation;
-import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.bookmarkable.BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory;
+import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.bookmarkable.BookmarkPolicyFacetFallbackFactory;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
 public class BookmarkableAnnotationFacetFactoryTest_class extends AbstractFacetFactoryTest {
 
-    private BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory facetFactory;
+    private BookmarkPolicyFacetFallbackFactory facetFactory;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
 
-        facetFactory = new BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory();
+        facetFactory = new BookmarkPolicyFacetFallbackFactory();
     }
 
     @Override
@@ -46,21 +45,6 @@ public class BookmarkableAnnotationFacetFactoryTest_class extends AbstractFacetF
         super.tearDown();
     }
 
-    public void testBookmarkableAnnotationPickedUpOnClass() {
-        class Customer {
-        }
-
-        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(BookmarkPolicyFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof BookmarkPolicyFacetViaBookmarkableAnnotation);
-        BookmarkPolicyFacet bookmarkableFacet = (BookmarkPolicyFacet) facet;
-        assertThat(bookmarkableFacet.value(), is(BookmarkPolicy.AS_CHILD));
-        
-        assertNoMethodsRemoved();
-    }
-
     public void testBookmarkablePolicyInferredPickedUpOnClassAndDefaultsToAlways() {
         class Customer {
         }
diff --git a/todo-deprecation-list.txt b/todo-deprecation-list.txt
index f7e78af..91079c0 100644
--- a/todo-deprecation-list.txt
+++ b/todo-deprecation-list.txt
@@ -13,21 +13,14 @@ org.apache.isis.applib
 org.apache.isis.applib.annotation
 
 
-
     Bulk.java - entire annotation, use @Action(invokeOn=...)
     Bulk.InteractionContext - entire service, use ActionInvocationContext service instead
     InvokedOn.java - entire enum, along with @Bulk annotation.
 
-
-    Audited.java - entire annotation, use @DomainObject(audited=...)
-
     Command.java - entire annotation, use @Action(command=...) instead
     CommandExecuteIn.java - entire annotation, use @Action(commandExecuteIn=...) instead
     CommandPersistence.java - entire annotation, use @Action(commandPersistence=...) instead
 
-    Debug.java - entire annotation, use @Action#(restrictTo=...) instead
-    Exploration.java - entire annotation, use @Action(restrictTo=....) instead
-    Prototype.java  - entire annotation, use @Action(restrictTo=....) instead
 
     Disabled.java - entire annotation, use @Property(editingDisabledReason=...) instead
     Hidden.java - entire annotation, use @Property(hidden=...), @Collection(hidden=...), @Action(hidden=...)
@@ -158,47 +151,6 @@ org.apache.isis.objectstore.jdo.applib.service.support
 
 
 
-PROPOSE TO RETAIN:
-
-
-Below is the code currently deprecated in the applib, but I propose to retain even in 2.0.0 (on the grounds that a replacement for them is not fully designed):
-org.apache.isis.applib.adapters  - custom value type support
- 
- 
-org.apache.isis.applib.annotation
- 
-    Encodable.java - entire annotation, part of custom value types support
-    Parseable.java - entire annotation, part of custom value types support
- 
- 
-org.apache.isis.applib.fixtures  - "legacy" fixture support package ... by and large can use FixtureScripts (though not sure if there's feature parity in all cases)
-    AbstractFixture.java
-    AbstractFixtureSusa.java
-    BaseFixture.java
-    CompositeFixture.java
-    DateFixture.java
-    LogonFixture.java
-org.apache.isis.applib.fixtures.switchuser
-    SwitchUserService.java
-    SwitchUserServiceAware.java
- 
-org.apache.isis.applib.services.command
-    Command.java  - methods that pertain to the execution of the command and its completion (for that, use Interaction) [suggest we retain for now]
-        getCompletedAt()
-        getException()
-        getResult()
-        getStartedAt()
-        next(String)
-        setCompletedAt(Timestamp)
-        setStartedAt(Timestamp)
-    Command3.java  - metods for working with domain events (equiv functionality in Interaction)  [suggest we retain for now]
-        flushActionDomainEvents()
-        peekActionDomainEvent() 
-        popActionDomainEvent()
-        pushActionDomainEvent(ActionDomainEvent<?>)  (
-
-    MemberGroupLayout.java - entire annotation, use Xxx.layout.xml instead
-
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
@@ -229,8 +181,16 @@ Also for 2.0.0, new features/deprecations:
 OTHER STUFF:
 
 
+remove explorationXxx() prefix
+remove prototypeXxx() prefix
+remove debugXxx() prefix
+
+
 debug() stuff
 
+DebugDataInputExtended & DebugDataOutputExtended  .... seem to be unused
+
+
 ObjectFixtureService
 
 
@@ -280,6 +240,52 @@ link:https://issues.apache.org/jira/browse/ISIS-743[ISIS-743] - @NotPersistable
 
 *************************************************************************
 
+PROPOSE TO RETAIN:
+
+
+Below is the code currently deprecated in the applib, but I propose to retain even in 2.0.0 (on the grounds that a replacement for them is not fully designed):
+org.apache.isis.applib.adapters  - custom value type support
+
+
+org.apache.isis.applib.annotation
+
+    Encodable.java - entire annotation, part of custom value types support
+    Parseable.java - entire annotation, part of custom value types support
+
+
+org.apache.isis.applib.fixtures  - "legacy" fixture support package ... by and large can use FixtureScripts (though not sure if there's feature parity in all cases)
+    AbstractFixture.java
+    AbstractFixtureSusa.java
+    BaseFixture.java
+    CompositeFixture.java
+    DateFixture.java
+    LogonFixture.java
+org.apache.isis.applib.fixtures.switchuser
+    SwitchUserService.java
+    SwitchUserServiceAware.java
+
+org.apache.isis.applib.services.command
+    Command.java  - methods that pertain to the execution of the command and its completion (for that, use Interaction) [suggest we retain for now]
+        getCompletedAt()
+        getException()
+        getResult()
+        getStartedAt()
+        next(String)
+        setCompletedAt(Timestamp)
+        setStartedAt(Timestamp)
+    Command3.java  - metods for working with domain events (equiv functionality in Interaction)  [suggest we retain for now]
+        flushActionDomainEvents()
+        peekActionDomainEvent()
+        popActionDomainEvent()
+        pushActionDomainEvent(ActionDomainEvent<?>)  (
+
+    MemberGroupLayout.java - entire annotation, use Xxx.layout.xml instead
+
+
+
+
+*************************************************************************
+
 DONE:
 
     removed support for Xxx.layout.json
@@ -316,6 +322,7 @@ org.apache.isis.applib.annotation
     PublishingPayloadFactoryForAction.java - entire annotation, replaced with simpler PublisherService SPI
     PublishingPayloadFactoryForObject.java - entire annotation, replaced with simpler PublisherService SPI
 
+
     AutoComplete.java - entire annotation, use @DomainObject(autoComplete...=...)
 
     Bookmarkable.java - entire annotation, use @DomainObjectLayout(bookmarking=...)
@@ -329,6 +336,8 @@ org.apache.isis.applib.annotation
 
     Aggregated.java - entire annotation, not supported internally
 
+    Audited.java - entire annotation, use @DomainObject(audited=...)
+
     Bounded.java - entire annotation, use @DomainObject(bounded=...)
 
     CollectionLayout.java
@@ -340,6 +349,10 @@ org.apache.isis.applib.annotation
     CssClass.java - entire annotation, use @XxxLayout(cssClass=...) instead, where Xxx is Property, Collection, Action, Parameter, DomainObject, ViewModel
     CssClassFa.java - entire annotation, use @XxxLayout(cssClass=...) instead, where Xxx is Property, Collection, Action, Parameter, DomainObject, ViewModel
 
+    Debug.java - entire annotation, use @Action#(restrictTo=...) instead
+    Exploration.java - entire annotation, use @Action(restrictTo=....) instead
+    Prototype.java  - entire annotation, use @Action(restrictTo=....) instead
+
     DescribedAs.java - entire annotation, use @XxxLayout(describedAs=...) instead
 
     Mask.java - entire annotation, not supported by either Wicket viewer or RO viewer

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

[isis] 07/13: ISIS-1742: deletes @Auditable annotation + Auditable marker inteface (both applib and jdo applib) + supporting facets and facet factories

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 91ac16aafe8a95a6be39013bee7ea11eb8a283ea
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Oct 5 16:05:52 2017 +0300

    ISIS-1742: deletes @Auditable annotation + Auditable marker inteface (both applib and jdo applib) + supporting facets and facet factories
---
 .../guides/rgant/_rgant_aaa_deprecated.adoc        |  7 --
 .../org/apache/isis/applib/annotation/Audited.java | 43 ----------
 .../org/apache/isis/applib/marker/Auditable.java   | 43 ----------
 .../apache/isis/applib/marker/package-info.java    | 28 ------
 .../jdo/applib/annotations/Auditable.java          | 36 --------
 .../isis/objectstore/jdo/applib/Auditable.java     | 26 ------
 .../facets/object/audit/AuditableFacet.java        |  2 -
 .../markerifc/AuditableFacetMarkerInterface.java   | 33 --------
 .../AuditableFacetMarkerInterfaceFactory.java      | 50 -----------
 .../DomainObjectAnnotationFacetFactory.java        | 19 +----
 .../AuditableFacetForAuditedAnnotation.java        | 43 ----------
 ...AuditableAnnotationInJdoApplibFacetFactory.java | 81 ------------------
 .../AuditableFacetAnnotationInJdoApplib.java       | 33 --------
 .../AuditableFacetMarkerInterfaceInJdoApplib.java  | 32 -------
 ...ableMarkerInterfaceInJdoApplibFacetFactory.java | 56 ------------
 .../dflt/ProgrammingModelFacetsJava5.java          |  3 -
 .../DomainObjectAnnotationFacetFactoryTest.java    | 36 --------
 .../GivenAuditableAnnotationFacetFactoryTest.java  | 99 ----------------------
 ...enAuditableFacetMarkerInterfaceFactoryTest.java | 99 ----------------------
 .../PersistenceSessionFactoryMetamodelRefiner.java |  4 -
 todo-deprecation-list.txt                          |  6 +-
 21 files changed, 5 insertions(+), 774 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc
index 6891776..00d78a8 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc
@@ -22,13 +22,6 @@ The annotations listed in the table below are still supported by Apache Isis, bu
 |Layer
 |xref:../ugvw/ugvw.adoc#_ugvw_layout_file-based[File-based layout]?
 
-|`@Audited`
-|Audit changes to an object.
-|xref:../rgant/rgant.adoc#_rgant-DomainObject_auditing[`@DomainObject#` +
-`auditing()`]
-|Domain
-|
-
 |`@AutoComplete`
 |Repository method to search for entities
 |xref:../rgant/rgant.adoc#_rgant-DomainObject_autoCompleteRepository[`@DomainObject` +
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Audited.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Audited.java
deleted file mode 100644
index 5726579..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Audited.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @deprecated - see {@link DomainObject#auditing()}.
- */
-@Inherited
-@Target({ ElementType.TYPE })
-@Retention(RetentionPolicy.RUNTIME)
-@Deprecated
-public @interface Audited {
-
-    /**
-     * @deprecated - use {@link DomainObject#auditing()} instead.
-     */
-    @Deprecated
-    boolean disabled() default false;
-
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/marker/Auditable.java b/core/applib/src/main/java/org/apache/isis/applib/marker/Auditable.java
deleted file mode 100644
index c3cc052..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/marker/Auditable.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.applib.marker;
-
-import org.apache.isis.applib.services.audit.AuditingService3;
-
-
-/**
- * Marker interface to indicate that an entity should be audited.
- * 
- * <p>
- * Requires that an implementation of the {@link AuditingService3} is registered with the framework.
- * 
- * <p>
- * Check that the configured object store supports the annotation.  For example, the
- * JDO objectstore does support this annotation, but others may not.
- * 
- * <p>
- * Alternatively can use the similarly named {@link org.apache.isis.applib.annotation.Audited annotation}.
- *
- *
- * @deprecated
- */
-@Deprecated
-public interface Auditable {
-
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/marker/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/marker/package-info.java
deleted file mode 100644
index 28feffe..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/marker/package-info.java
+++ /dev/null
@@ -1,28 +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.
- */
-
-/**
- * Marker interfaces that are used to declare semantics relating to domain
- * types.
- * 
- * <p>
- * All of the interfaces defined in this package have equivalent annotations,
- * and generally we recommend that annotations are used instead.
- */
-package org.apache.isis.applib.marker;
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/core/objectstore/jdo/applib/annotations/Auditable.java b/core/applib/src/main/java/org/apache/isis/core/objectstore/jdo/applib/annotations/Auditable.java
deleted file mode 100644
index c903b65..0000000
--- a/core/applib/src/main/java/org/apache/isis/core/objectstore/jdo/applib/annotations/Auditable.java
+++ /dev/null
@@ -1,36 +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.objectstore.jdo.applib.annotations;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @deprecated use the {@link org.apache.isis.applib.annotation.Audited the applib Audited} annotation instead.
- */
-@Deprecated
-@Inherited
-@Target({ ElementType.TYPE })
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Auditable {
-}
diff --git a/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/Auditable.java b/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/Auditable.java
deleted file mode 100644
index 8035bfd..0000000
--- a/core/applib/src/main/java/org/apache/isis/objectstore/jdo/applib/Auditable.java
+++ /dev/null
@@ -1,26 +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.objectstore.jdo.applib;
-
-/**
- * @deprecated use the {@link org.apache.isis.applib.marker.Auditable the applib Auditable} marker interface instead.
- */
-@Deprecated
-public interface Auditable extends org.apache.isis.applib.marker.Auditable {
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacet.java
index af09168..7febf35 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/AuditableFacet.java
@@ -19,8 +19,6 @@
 package org.apache.isis.core.metamodel.facets.object.audit;
 
 
-import org.apache.isis.applib.annotation.Audited;
-import org.apache.isis.applib.marker.Auditable;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/markerifc/AuditableFacetMarkerInterface.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/markerifc/AuditableFacetMarkerInterface.java
deleted file mode 100644
index 69068dc..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/markerifc/AuditableFacetMarkerInterface.java
+++ /dev/null
@@ -1,33 +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.audit.markerifc;
-
-
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacetImpl;
-
-
-@Deprecated
-public class AuditableFacetMarkerInterface extends AuditableFacetImpl {
-
-    public AuditableFacetMarkerInterface(final FacetHolder facetHolder) {
-        super(facetHolder, Enablement.ENABLED);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/markerifc/AuditableFacetMarkerInterfaceFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/markerifc/AuditableFacetMarkerInterfaceFactory.java
deleted file mode 100644
index 94fe2ea..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/audit/markerifc/AuditableFacetMarkerInterfaceFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.audit.markerifc;
-
-
-import org.apache.isis.applib.marker.Auditable;
-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.progmodel.DeprecatedMarker;
-
-
-/**
- * @deprecated
- */
-@Deprecated
-public class AuditableFacetMarkerInterfaceFactory extends FacetFactoryAbstract implements DeprecatedMarker {
-
-    public AuditableFacetMarkerInterfaceFactory() {
-        super(FeatureType.OBJECTS_ONLY);
-    }
-
-    @Override
-    public void process(ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        if(!Auditable.class.isAssignableFrom(cls)) {
-            return;
-        }
-        FacetUtil.addFacet(new AuditableFacetMarkerInterface(
-                processClassContext.getFacetHolder()));
-    }
-
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index f5e34f3..b0ea49d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -26,7 +26,6 @@ import javax.annotation.PostConstruct;
 
 import com.google.common.collect.Maps;
 
-import org.apache.isis.applib.annotation.Audited;
 import org.apache.isis.applib.annotation.AutoComplete;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Immutable;
@@ -60,7 +59,6 @@ import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingLifecycl
 import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation;
-import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetForAuditedAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.AutoCompleteFacetForAutoCompleteAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.AutoCompleteFacetForDomainObjectAnnotation;
@@ -94,7 +92,6 @@ import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapabl
 public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
         implements MetaModelValidatorRefiner, PostConstructMethodCache {
 
-    private final MetaModelValidatorForDeprecatedAnnotation auditedValidator = new MetaModelValidatorForDeprecatedAnnotation(Audited.class);
     private final MetaModelValidatorForDeprecatedAnnotation autoCompleteValidator = new MetaModelValidatorForDeprecatedAnnotation(AutoComplete.class);
     private final MetaModelValidatorForDeprecatedAnnotation immutableValidator = new MetaModelValidatorForDeprecatedAnnotation(Immutable.class);
     private final MetaModelValidatorForDeprecatedAnnotation objectTypeValidator = new MetaModelValidatorForDeprecatedAnnotation(ObjectType.class);
@@ -138,17 +135,9 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
         }
 
 
-        AuditableFacet auditableFacet;
-
-        // check for the deprecated annotation first
-        final Audited annotation = Annotations.getAnnotation(cls, Audited.class);
-        auditableFacet = auditedValidator.flagIfPresent(
-                            AuditableFacetForAuditedAnnotation.create(annotation, holder), null);
-
-        // else check for @DomainObject(auditing=....)
-        if(auditableFacet == null) {
-            auditableFacet = AuditableFacetForDomainObjectAnnotation.create(domainObject, getConfiguration(), holder);
-        }
+        // check for @DomainObject(auditing=....)
+        AuditableFacet auditableFacet = AuditableFacetForDomainObjectAnnotation
+                .create(domainObject, getConfiguration(), holder);
 
         // then add
         FacetUtil.addFacet(auditableFacet);
@@ -554,7 +543,6 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
 
         }));
 
-        metaModelValidator.add(auditedValidator);
         metaModelValidator.add(autoCompleteValidator);
         metaModelValidator.add(immutableValidator);
         metaModelValidator.add(objectTypeValidator);
@@ -571,7 +559,6 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
         super.setServicesInjector(servicesInjector);
         IsisConfiguration configuration = getConfiguration();
 
-        auditedValidator.setConfiguration(configuration);
         autoCompleteValidator.setConfiguration(configuration);
         immutableValidator.setConfiguration(configuration);
         objectTypeValidator.setConfiguration(configuration);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/auditing/AuditableFacetForAuditedAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/auditing/AuditableFacetForAuditedAnnotation.java
deleted file mode 100644
index 9668dec..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/auditing/AuditableFacetForAuditedAnnotation.java
+++ /dev/null
@@ -1,43 +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.domainobject.auditing;
-
-
-import org.apache.isis.applib.annotation.Audited;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacet;
-import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacetImpl;
-
-
-@Deprecated
-public class AuditableFacetForAuditedAnnotation extends AuditableFacetImpl {
-
-    public AuditableFacetForAuditedAnnotation(final FacetHolder facetHolder, final Enablement enablement) {
-        super(facetHolder, enablement);
-    }
-
-    public static AuditableFacet create(final Audited annotation, final FacetHolder holder) {
-        if (annotation == null) {
-            return null;
-        }
-        return new AuditableFacetForAuditedAnnotation(
-                holder,
-                Enablement.ifDisabled(annotation.disabled()));
-    }
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java
deleted file mode 100644
index 6c26460..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableAnnotationInJdoApplibFacetFactory.java
+++ /dev/null
@@ -1,81 +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.objectstore.jdo.metamodel.facets.object.auditable;
-
-
-import org.apache.isis.core.commons.config.IsisConfiguration;
-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.progmodel.DeprecatedMarker;
-import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
-import org.apache.isis.core.objectstore.jdo.applib.annotations.Auditable;
-
-/**
- * Required only for backward compatibility to support the JDO applib's version of the
- * {@link Auditable} annotation.
- *
- * @deprecated
- */
-@Deprecated
-public class AuditableAnnotationInJdoApplibFacetFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner, DeprecatedMarker {
-
-    private final MetaModelValidatorForDeprecatedAnnotation validator = new MetaModelValidatorForDeprecatedAnnotation(Auditable.class);
-
-    public AuditableAnnotationInJdoApplibFacetFactory() {
-        super(FeatureType.OBJECTS_ONLY);
-    }
-
-    @Override
-    public void process(ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-
-        // only applies to JDO entities; ignore any view models
-        if(!org.datanucleus.enhancement.Persistable.class.isAssignableFrom(cls)) {
-            return;
-        }
-
-        final Auditable annotation = Annotations.getAnnotation(cls, Auditable.class);
-        if (annotation == null) {
-            return;
-        }
-        final AuditableFacetAnnotationInJdoApplib facet = new AuditableFacetAnnotationInJdoApplib(processClassContext.getFacetHolder());
-        FacetUtil.addFacet(validator.flagIfPresent(facet));
-    }
-
-
-    @Override
-    public void refineMetaModelValidator(final MetaModelValidatorComposite metaModelValidator, final IsisConfiguration configuration) {
-        metaModelValidator.add(validator);
-    }
-
-    @Override
-    public void setServicesInjector(final ServicesInjector servicesInjector) {
-        super.setServicesInjector(servicesInjector);
-        IsisConfiguration configuration = servicesInjector.getConfigurationServiceInternal();
-        validator.setConfiguration(configuration);
-    }
-
-
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotationInJdoApplib.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotationInJdoApplib.java
deleted file mode 100644
index c6504b1..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetAnnotationInJdoApplib.java
+++ /dev/null
@@ -1,33 +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.objectstore.jdo.metamodel.facets.object.auditable;
-
-
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetForAuditedAnnotation;
-
-
-@Deprecated
-public class AuditableFacetAnnotationInJdoApplib extends AuditableFacetForAuditedAnnotation {
-
-    public AuditableFacetAnnotationInJdoApplib(final FacetHolder facetHolder) {
-        super(facetHolder, Enablement.ENABLED);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterfaceInJdoApplib.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterfaceInJdoApplib.java
deleted file mode 100644
index 896a400..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableFacetMarkerInterfaceInJdoApplib.java
+++ /dev/null
@@ -1,32 +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.objectstore.jdo.metamodel.facets.object.auditable;
-
-
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.audit.markerifc.AuditableFacetMarkerInterface;
-
-@Deprecated
-public class AuditableFacetMarkerInterfaceInJdoApplib extends AuditableFacetMarkerInterface {
-
-    public AuditableFacetMarkerInterfaceInJdoApplib(FacetHolder facetHolder) {
-        super(facetHolder);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceInJdoApplibFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceInJdoApplibFacetFactory.java
deleted file mode 100644
index dd1ab07..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/AuditableMarkerInterfaceInJdoApplibFacetFactory.java
+++ /dev/null
@@ -1,56 +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.objectstore.jdo.metamodel.facets.object.auditable;
-
-
-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.progmodel.DeprecatedMarker;
-import org.apache.isis.objectstore.jdo.applib.Auditable;
-
-/**
- * Required only for backward compatibility to support the JDO applib's version of the
- * {@link Auditable} marker interface.
- */
-@Deprecated
-public class AuditableMarkerInterfaceInJdoApplibFacetFactory extends FacetFactoryAbstract implements DeprecatedMarker {
-
-    public AuditableMarkerInterfaceInJdoApplibFacetFactory() {
-        super(FeatureType.OBJECTS_ONLY);
-    }
-
-    @Override
-    public void process(ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-
-        // only applies to JDO entities; ignore any view models
-        if(!org.datanucleus.enhancement.Persistable.class.isAssignableFrom(cls)) {
-            return;
-        }
-
-        if(!Auditable.class.isAssignableFrom(cls)) {
-            return;
-        }
-        FacetUtil.addFacet(new AuditableFacetMarkerInterfaceInJdoApplib(
-                processClassContext.getFacetHolder()));
-    }
-
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
index ac13063..2eb697c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
@@ -56,7 +56,6 @@ import org.apache.isis.core.metamodel.facets.members.hidden.staticmethod.HiddenF
 import org.apache.isis.core.metamodel.facets.members.named.staticmethod.NamedFacetStaticMethodFactory;
 import org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.ViewModelSemanticCheckingFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.audit.markerifc.AuditableFacetMarkerInterfaceFactory;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.bookmarkable.BookmarkPolicyFacetViaBookmarkableAnnotationElseFallbackFactory;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.callbacks.LoadCallbackFacetFactory;
@@ -446,8 +445,6 @@ public final class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract
 
         addFactory(new ActionChoicesForCollectionParameterFacetFactory());
 
-        addFactory(new AuditableFacetMarkerInterfaceFactory());
-
         addFactory(new FacetsFacetAnnotationFactory());
 
         // must be after all named facets and description facets have been installed
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
index 00f3856..91e24bf 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
@@ -27,7 +27,6 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
-import org.apache.isis.applib.annotation.Audited;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Immutable;
 import org.apache.isis.applib.services.HasTransactionId;
@@ -36,7 +35,6 @@ import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
 import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacet;
 import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
-import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetForAuditedAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetForDomainObjectAnnotationAsConfigured;
 import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetFromConfiguration;
@@ -118,7 +116,6 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
 
     public static class Auditing extends DomainObjectAnnotationFacetFactoryTest {
 
-        @Audited
         class CustomerWithAuditedAnnotation {
         }
 
@@ -187,39 +184,6 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
             }
         }
 
-        public static class WithAuditedAnnotation extends Auditing {
-
-            @Before
-            public void setUp() throws Exception {
-                super.setUp();
-                allowingConfigurationToReturn("isis.services.audit.objects", null);
-            }
-
-            @Test
-            public void has_annotation() {
-
-                facetFactory.process(new ProcessClassContext(CustomerWithAuditedAnnotation.class, mockMethodRemover, facetHolder));
-
-                final Facet facet = facetHolder.getFacet(AuditableFacet.class);
-                Assert.assertNotNull(facet);
-                Assert.assertTrue(facet instanceof AuditableFacetForAuditedAnnotation);
-
-                expectNoMethodsRemoved();
-            }
-
-            @Test
-            public void does_not_have_annotation() {
-
-                facetFactory.process(new ProcessClassContext(DomainObjectAnnotationFacetFactoryTest.Customer.class, mockMethodRemover, facetHolder));
-
-                final Facet facet = facetHolder.getFacet(AuditableFacet.class);
-                Assert.assertNull(facet);
-
-                expectNoMethodsRemoved();
-            }
-
-        }
-
         public static class WithDomainObjectAnnotationWithAuditingSetToAsConfigured extends Auditing {
 
             @Test
diff --git a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
deleted file mode 100644
index 5353d03..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
+++ /dev/null
@@ -1,99 +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.objectstore.jdo.metamodel.facets.object.auditable;
-
-import java.util.List;
-
-import javax.jdo.annotations.PersistenceCapable;
-
-import org.datanucleus.enhancement.Persistable;
-import org.junit.Assert;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.FacetFactory;
-import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacet;
-import org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetForAuditedAnnotation;
-import org.apache.isis.core.objectstore.jdo.applib.annotations.Auditable;
-
-
-
-public class GivenAuditableAnnotationFacetFactoryTest extends
-        AbstractFacetFactoryTest {
-
-    private AuditableAnnotationInJdoApplibFacetFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new AuditableAnnotationInJdoApplibFacetFactory();
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
-    public void testFeatureTypes() {
-        final List<FeatureType> featureTypes = facetFactory
-                .getFeatureTypes();
-        Assert.assertTrue(contains(featureTypes, FeatureType.OBJECT));
-        assertFalse(contains(featureTypes, FeatureType.PROPERTY));
-        assertFalse(contains(featureTypes, FeatureType.COLLECTION));
-        Assert.assertFalse(contains(featureTypes, FeatureType.ACTION));
-        assertFalse(contains(featureTypes,
-                FeatureType.ACTION_PARAMETER_SCALAR));
-    }
-
-    public void testAuditableAnnotationPickedUpOnClass() {
-        @Auditable abstract class Customer implements Persistable {
-        }
-
-        facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
-
-        final Facet facet = facetHolder.getFacet(AuditableFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof AuditableFacetForAuditedAnnotation);
-    }
-
-    public void testIfNoAuditableAnnotationThenNoFacet() {
-
-        abstract class Customer implements Persistable {
-        }
-
-        facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
-
-        final Facet facet = facetHolder.getFacet(AuditableFacet.class);
-        assertNull(facet);
-    }
-
-
-    public void testNoMethodsRemoved() {
-        @PersistenceCapable
-        abstract class Customer implements Persistable {
-        }
-
-        facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
-
-        assertNoMethodsRemoved();
-    }
-}
diff --git a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableFacetMarkerInterfaceFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableFacetMarkerInterfaceFactoryTest.java
deleted file mode 100644
index ebed146..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableFacetMarkerInterfaceFactoryTest.java
+++ /dev/null
@@ -1,99 +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.objectstore.jdo.metamodel.facets.object.auditable;
-
-import java.util.List;
-
-import javax.jdo.annotations.PersistenceCapable;
-
-import org.datanucleus.enhancement.Persistable;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.FacetFactory;
-import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacet;
-import org.apache.isis.core.metamodel.facets.object.audit.markerifc.AuditableFacetMarkerInterface;
-import org.apache.isis.objectstore.jdo.applib.Auditable;
-
-import junit.framework.Assert;
-
-
-public class GivenAuditableFacetMarkerInterfaceFactoryTest extends
-        AbstractFacetFactoryTest {
-
-    private AuditableMarkerInterfaceInJdoApplibFacetFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new AuditableMarkerInterfaceInJdoApplibFacetFactory();
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
-    public void testFeatureTypes() {
-        final List<FeatureType> featureTypes = facetFactory
-                .getFeatureTypes();
-        Assert.assertTrue(contains(featureTypes, FeatureType.OBJECT));
-        assertFalse(contains(featureTypes, FeatureType.PROPERTY));
-        assertFalse(contains(featureTypes, FeatureType.COLLECTION));
-        Assert.assertFalse(contains(featureTypes, FeatureType.ACTION));
-        assertFalse(contains(featureTypes,
-                FeatureType.ACTION_PARAMETER_SCALAR));
-    }
-
-    public void testAuditableMarkerInterfacePickedUpOnClass() {
-        abstract class Customer implements Auditable, Persistable {
-        }
-
-        facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
-
-        final Facet facet = facetHolder.getFacet(AuditableFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof AuditableFacetMarkerInterface);
-    }
-
-    public void testIfNoAuditableMarkerInterfaceThenNoFacet() {
-
-        abstract class Customer implements Persistable {
-        }
-
-        facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
-
-        final Facet facet = facetHolder.getFacet(AuditableFacet.class);
-        assertNull(facet);
-    }
-
-
-    public void testNoMethodsRemoved() {
-        @PersistenceCapable
-        abstract class Customer implements Persistable {
-        }
-
-        facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
-
-        assertNoMethodsRemoved();
-    }
-}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactoryMetamodelRefiner.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactoryMetamodelRefiner.java
index 3933a98..c294447 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactoryMetamodelRefiner.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactoryMetamodelRefiner.java
@@ -22,8 +22,6 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
-import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableAnnotationInJdoApplibFacetFactory;
-import org.apache.isis.objectstore.jdo.metamodel.facets.object.auditable.AuditableMarkerInterfaceInJdoApplibFacetFactory;
 import org.apache.isis.objectstore.jdo.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityAnnotationFacetFactory;
 import org.apache.isis.objectstore.jdo.metamodel.facets.object.discriminator.JdoDiscriminatorAnnotationFacetFactory;
 import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableAnnotationFacetFactory;
@@ -58,8 +56,6 @@ public class PersistenceSessionFactoryMetamodelRefiner implements MetaModelRefin
         // and also PropertyAnnotationFactory
         programmingModel.addFactory(new MandatoryFromJdoColumnAnnotationFacetFactory());
 
-        programmingModel.addFactory(new AuditableAnnotationInJdoApplibFacetFactory());
-        programmingModel.addFactory(new AuditableMarkerInterfaceInJdoApplibFacetFactory());
     }
 
     @Override
diff --git a/todo-deprecation-list.txt b/todo-deprecation-list.txt
index b7393d9..1ec6d99 100644
--- a/todo-deprecation-list.txt
+++ b/todo-deprecation-list.txt
@@ -80,8 +80,9 @@ org.apache.isis.applib.annotation
     NotPersistable.java - entire annotation, not supported and does nothing
 
 
-org.apache.isis.applib.marker
+org.apache.isis.applib.marker - remove these marker interfaces (tend to use annotations in preference)
 
+    Auditable.java
     Bounded.java
 
     NotPersistable.java
@@ -176,9 +177,6 @@ org.apache.isis.applib.fixturescripts
                           framework provides an implementation of this service, and use FixtureScriptsSpecificatoinProvider to configure instead.
 
 
-org.apache.isis.applib.marker - remove these marker interaces (tend to use annotations in preference)
-    Auditable.java
-
 
 org.apache.isis.applib.services.actinvoc
     ActionInvocationContext.java -remove unused constructors

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

[isis] 03/13: ISIS-1742: markes Auditable, AlwaysImmutable and Bounded marker interfaces as deprecated

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 4873f8f33309fbd4fb32685173c6eda74422248f
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Oct 5 15:49:44 2017 +0300

    ISIS-1742: markes Auditable, AlwaysImmutable and Bounded marker interfaces as deprecated
---
 .../main/java/org/apache/isis/applib/marker/AlwaysImmutable.java  | 3 +++
 .../src/main/java/org/apache/isis/applib/marker/Auditable.java    | 5 ++++-
 .../src/main/java/org/apache/isis/applib/marker/Bounded.java      | 3 +++
 todo-deprecation-list.txt                                         | 8 ++++----
 4 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/marker/AlwaysImmutable.java b/core/applib/src/main/java/org/apache/isis/applib/marker/AlwaysImmutable.java
index 701d2c1..2b0cd18 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/marker/AlwaysImmutable.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/marker/AlwaysImmutable.java
@@ -25,7 +25,10 @@ import org.apache.isis.applib.annotation.Immutable;
  * Marker interface to show that an object cannot be changed once created.
  * 
  * Use {@link Immutable} annotation in preference to this marker interface.
+ *
+ * @deprecated
  */
+@Deprecated
 public interface AlwaysImmutable {
 
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/marker/Auditable.java b/core/applib/src/main/java/org/apache/isis/applib/marker/Auditable.java
index 72b0344..c3cc052 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/marker/Auditable.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/marker/Auditable.java
@@ -33,8 +33,11 @@ import org.apache.isis.applib.services.audit.AuditingService3;
  * 
  * <p>
  * Alternatively can use the similarly named {@link org.apache.isis.applib.annotation.Audited annotation}.
- * 
+ *
+ *
+ * @deprecated
  */
+@Deprecated
 public interface Auditable {
 
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/marker/Bounded.java b/core/applib/src/main/java/org/apache/isis/applib/marker/Bounded.java
index 51b9448..15be01f 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/marker/Bounded.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/marker/Bounded.java
@@ -24,6 +24,9 @@ package org.apache.isis.applib.marker;
  * are loaded on first use and are not refreshed.
  * 
  * Use {@link Bounded} annotation in preference to this marker interface.
+ *
+ * @deprecated
  */
+@Deprecated
 public interface Bounded {
 }
diff --git a/todo-deprecation-list.txt b/todo-deprecation-list.txt
index 4b647dd..06e2ecd 100644
--- a/todo-deprecation-list.txt
+++ b/todo-deprecation-list.txt
@@ -82,7 +82,7 @@ org.apache.isis.applib.annotation
 org.apache.isis.applib.marker
 
     NotPersistable.java
-
+    ProgramPersistable.java
 
 
 
@@ -105,8 +105,6 @@ org.apache.isis.applib
 org.apache.isis.applib.annotation
 
 
-
-
     AutoComplete.java - entire annotation, use @DomainObject(autoComplete...=...)
     Bookmarkable.java - entire annotation, use @DomainObjectLayout(bookmarking=...)
     Bounded.java - entire annotation, use @DomainObject(bounded=...)
@@ -173,10 +171,12 @@ org.apache.isis.applib.fixturescripts
 
 
 org.apache.isis.applib.marker - remove these marker interaces (tend to use annotations in preference)
+    AlwaysImmutable.java
+    Auditable.java
+    Bounded.java
     ImmutableOncePersisted.java
     ImmutableUntilPersisted.java
     NeverImmutable.java
-    ProgramPersistable.java
 
 
 org.apache.isis.applib.services.actinvoc

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

[isis] 04/13: ISIS-1742: deletes AlwaysImmutable, NeverImmutable, ImmutableOncePersistend and ImmutableUntilPersisted marker interfaces

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit d73b6852736eb4e9787dd4ce13e3dc877f89ffaa
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Oct 5 15:52:56 2017 +0300

    ISIS-1742: deletes AlwaysImmutable, NeverImmutable, ImmutableOncePersistend and ImmutableUntilPersisted marker interfaces
---
 .../org/apache/isis/applib/annotation/When.java    |  21 ----
 .../apache/isis/applib/marker/AlwaysImmutable.java |  34 -------
 .../isis/applib/marker/ImmutableOncePersisted.java |  34 -------
 .../applib/marker/ImmutableUntilPersisted.java     |  35 -------
 .../apache/isis/applib/marker/NeverImmutable.java  |  35 -------
 .../ImmutableFacetMarkerInterface.java             |  40 --------
 .../ImmutableFacetMarkerInterfaceFactory.java      |  50 ----------
 .../dflt/ProgrammingModelFacetsJava5.java          |   2 -
 .../ImmutableFacetMarkerInterfaceFactoryTest.java  | 110 ---------------------
 todo-deprecation-list.txt                          |  12 ++-
 10 files changed, 7 insertions(+), 366 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/When.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/When.java
index df7984b..5e866f5 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/When.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/When.java
@@ -19,10 +19,6 @@
 
 package org.apache.isis.applib.annotation;
 
-import org.apache.isis.applib.marker.AlwaysImmutable;
-import org.apache.isis.applib.marker.ImmutableOncePersisted;
-import org.apache.isis.applib.marker.ImmutableUntilPersisted;
-import org.apache.isis.applib.marker.NeverImmutable;
 import org.apache.isis.applib.util.Enums;
 
 /**
@@ -77,23 +73,6 @@ public enum When {
         return Enums.getFriendlyNameOf(this);
     }
     
-    /**
-     * As an alternative to annotating an object with {@link Disabled}, can instead have the
-     * class implement a marker interface.   
-     */
-    @Deprecated
-    public static When lookupForMarkerInterface(final Class<?> cls) {
-        if (AlwaysImmutable.class.isAssignableFrom(cls)) {
-            return ALWAYS;
-        } else if (ImmutableOncePersisted.class.isAssignableFrom(cls)) {
-            return ONCE_PERSISTED;
-        } else if (ImmutableUntilPersisted.class.isAssignableFrom(cls)) {
-            return UNTIL_PERSISTED;
-        } else if (NeverImmutable.class.isAssignableFrom(cls)) {
-            return NEVER;
-        }
-        return null;
-    }
 
     @Deprecated
     public interface Persistable {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/marker/AlwaysImmutable.java b/core/applib/src/main/java/org/apache/isis/applib/marker/AlwaysImmutable.java
deleted file mode 100644
index 2b0cd18..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/marker/AlwaysImmutable.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.marker;
-
-import org.apache.isis.applib.annotation.Immutable;
-
-/**
- * Marker interface to show that an object cannot be changed once created.
- * 
- * Use {@link Immutable} annotation in preference to this marker interface.
- *
- * @deprecated
- */
-@Deprecated
-public interface AlwaysImmutable {
-
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/marker/ImmutableOncePersisted.java b/core/applib/src/main/java/org/apache/isis/applib/marker/ImmutableOncePersisted.java
deleted file mode 100644
index 909fc97..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/marker/ImmutableOncePersisted.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.marker;
-
-import org.apache.isis.applib.annotation.Immutable;
-
-/**
- * Marker interface to show that an object cannot be changed once persisted.
- * 
- * Use {@link Immutable} annotation in preference to this marker interface.
- *
- * @deprecated
- */
-@Deprecated
-public interface ImmutableOncePersisted {
-
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/marker/ImmutableUntilPersisted.java b/core/applib/src/main/java/org/apache/isis/applib/marker/ImmutableUntilPersisted.java
deleted file mode 100644
index 5a40283..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/marker/ImmutableUntilPersisted.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.marker;
-
-import org.apache.isis.applib.annotation.Immutable;
-
-/**
- * Marker interface to show that an object cannot be changed before it is
- * persisted.
- * 
- * Use {@link Immutable} annotation in preference to this marker interface.
- *
- * @deprecated
- */
-@Deprecated
-public interface ImmutableUntilPersisted {
-
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/marker/NeverImmutable.java b/core/applib/src/main/java/org/apache/isis/applib/marker/NeverImmutable.java
deleted file mode 100644
index 3ee4498..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/marker/NeverImmutable.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.marker;
-
-import org.apache.isis.applib.annotation.Immutable;
-
-/**
- * Marker interface to show that an object can always be changed, even after
- * persisted.
- * 
- * Use {@link Immutable} annotation in preference to this marker interface.
- *
- * @deprecated
- */
-@Deprecated
-public interface NeverImmutable {
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/immutablemarkerifc/ImmutableFacetMarkerInterface.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/immutablemarkerifc/ImmutableFacetMarkerInterface.java
deleted file mode 100644
index 6e9bbc2..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/immutablemarkerifc/ImmutableFacetMarkerInterface.java
+++ /dev/null
@@ -1,40 +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.immutable.immutablemarkerifc;
-
-import org.apache.isis.applib.annotation.When;
-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.facets.object.immutable.ImmutableFacetAbstract;
-
-public class ImmutableFacetMarkerInterface extends ImmutableFacetAbstract {
-
-    public ImmutableFacetMarkerInterface(final When value, final FacetHolder holder) {
-        super(value, holder);
-    }
-
-    @Override
-    public void copyOnto(final FacetHolder holder) {
-        final Facet facet = new ImmutableFacetMarkerInterface(this.when(), holder);
-        FacetUtil.addFacet(facet);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/immutablemarkerifc/ImmutableFacetMarkerInterfaceFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/immutablemarkerifc/ImmutableFacetMarkerInterfaceFactory.java
deleted file mode 100644
index 9124454..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/immutable/immutablemarkerifc/ImmutableFacetMarkerInterfaceFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.object.immutable.immutablemarkerifc;
-
-import org.apache.isis.applib.annotation.When;
-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.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
-import org.apache.isis.core.metamodel.progmodel.DeprecatedMarker;
-
-/**
- * @deprecated
- */
-@Deprecated
-public class ImmutableFacetMarkerInterfaceFactory extends FacetFactoryAbstract implements DeprecatedMarker {
-
-    public ImmutableFacetMarkerInterfaceFactory() {
-        super(FeatureType.OBJECTS_ONLY);
-    }
-
-    @Override
-    public void process(final ProcessClassContext processClassContext) {
-        final When when = When.lookupForMarkerInterface(processClassContext.getCls());
-        FacetUtil.addFacet(create(when, processClassContext.getFacetHolder()));
-    }
-
-    private ImmutableFacet create(final When when, final FacetHolder holder) {
-        return when == null ? null : new ImmutableFacetMarkerInterface(when, holder);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
index ce3ee25..fa124cc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
@@ -88,7 +88,6 @@ import org.apache.isis.core.metamodel.facets.object.ignore.javalang.RemoveMethod
 import org.apache.isis.core.metamodel.facets.object.ignore.jdo.RemoveJdoEnhancementTypesFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.ignore.jdo.RemoveJdoPrefixedMethodsFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.immutable.immutableannot.CopyImmutableFacetOntoMembersFactory;
-import org.apache.isis.core.metamodel.facets.object.immutable.immutablemarkerifc.ImmutableFacetMarkerInterfaceFactory;
 import org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacetForMixinAnnotationFactory;
 import org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassNameFactory;
@@ -324,7 +323,6 @@ public final class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract
         addFactory(new DisabledObjectFacetViaMethodFactory());
 
         addFactory(new CopyImmutableFacetOntoMembersFactory());
-        addFactory(new ImmutableFacetMarkerInterfaceFactory());
 
         addFactory(new RecreatableObjectFacetFactory());
         addFactory(new JaxbXmlJavaTypeAdapterFacetFactory());
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetMarkerInterfaceFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetMarkerInterfaceFactoryTest.java
deleted file mode 100644
index 6f68880..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/immutable/ImmutableFacetMarkerInterfaceFactoryTest.java
+++ /dev/null
@@ -1,110 +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.immutable;
-
-import org.apache.isis.applib.annotation.When;
-import org.apache.isis.applib.marker.AlwaysImmutable;
-import org.apache.isis.applib.marker.ImmutableOncePersisted;
-import org.apache.isis.applib.marker.ImmutableUntilPersisted;
-import org.apache.isis.applib.marker.NeverImmutable;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.object.immutable.immutablemarkerifc.ImmutableFacetMarkerInterface;
-import org.apache.isis.core.metamodel.facets.object.immutable.immutablemarkerifc.ImmutableFacetMarkerInterfaceFactory;
-
-public class ImmutableFacetMarkerInterfaceFactoryTest extends AbstractFacetFactoryTest {
-
-    private ImmutableFacetMarkerInterfaceFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new ImmutableFacetMarkerInterfaceFactory();
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
-    public void testAlwaysImmutable() {
-        class Customer implements AlwaysImmutable {
-        }
-
-        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(ImmutableFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof ImmutableFacetMarkerInterface);
-        final ImmutableFacetMarkerInterface immutableFacetMarkerInterface = (ImmutableFacetMarkerInterface) facet;
-        assertEquals(When.ALWAYS, immutableFacetMarkerInterface.when());
-
-        assertNoMethodsRemoved();
-    }
-
-    public void testImmutableOncePersisted() {
-        class Customer implements ImmutableOncePersisted {
-        }
-
-        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(ImmutableFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof ImmutableFacetMarkerInterface);
-        final ImmutableFacetMarkerInterface immutableFacetMarkerInterface = (ImmutableFacetMarkerInterface) facet;
-        assertEquals(When.ONCE_PERSISTED, immutableFacetMarkerInterface.when());
-
-        assertNoMethodsRemoved();
-    }
-
-    public void testImmutableUntilPersisted() {
-        class Customer implements ImmutableUntilPersisted {
-        }
-
-        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(ImmutableFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof ImmutableFacetMarkerInterface);
-        final ImmutableFacetMarkerInterface immutableFacetMarkerInterface = (ImmutableFacetMarkerInterface) facet;
-        assertEquals(When.UNTIL_PERSISTED, immutableFacetMarkerInterface.when());
-
-        assertNoMethodsRemoved();
-    }
-
-    public void testNeverImmutable() {
-        class Customer implements NeverImmutable {
-        }
-
-        facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
-        final Facet facet = facetedMethod.getFacet(ImmutableFacet.class);
-        assertNotNull(facet);
-        assertTrue(facet instanceof ImmutableFacetMarkerInterface);
-        final ImmutableFacetMarkerInterface immutableFacetMarkerInterface = (ImmutableFacetMarkerInterface) facet;
-        assertEquals(When.NEVER, immutableFacetMarkerInterface.when());
-
-        assertNoMethodsRemoved();
-    }
-
-}
diff --git a/todo-deprecation-list.txt b/todo-deprecation-list.txt
index 06e2ecd..79373c9 100644
--- a/todo-deprecation-list.txt
+++ b/todo-deprecation-list.txt
@@ -84,6 +84,10 @@ org.apache.isis.applib.marker
     NotPersistable.java
     ProgramPersistable.java
 
+    AlwaysImmutable.java
+    ImmutableOncePersisted.java
+    ImmutableUntilPersisted.java
+    NeverImmutable.java
 
 
 
@@ -171,12 +175,8 @@ org.apache.isis.applib.fixturescripts
 
 
 org.apache.isis.applib.marker - remove these marker interaces (tend to use annotations in preference)
-    AlwaysImmutable.java
     Auditable.java
     Bounded.java
-    ImmutableOncePersisted.java
-    ImmutableUntilPersisted.java
-    NeverImmutable.java
 
 
 org.apache.isis.applib.services.actinvoc
@@ -363,7 +363,9 @@ not thread-safe:
         }
     }
 
-    
+
+? deprecate When enum ?
+
     
 ~~~
 

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

[isis] 08/13: ISIS-1742: deletes unused nested test classes from unit tests

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 15002127135b3d3065f0408da8c5a148ec60c71b
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Oct 5 16:07:27 2017 +0300

    ISIS-1742: deletes unused nested test classes from unit tests
---
 .../object/domainobject/DomainObjectAnnotationFacetFactoryTest.java | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
index 91e24bf..6c1ac60 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
@@ -116,9 +116,6 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
 
     public static class Auditing extends DomainObjectAnnotationFacetFactoryTest {
 
-        class CustomerWithAuditedAnnotation {
-        }
-
         @DomainObject(auditing = org.apache.isis.applib.annotation.Auditing.AS_CONFIGURED)
         class CustomerWithDomainObjectAndAuditingSetToAsConfigured {
         }
@@ -261,9 +258,6 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
 
     public static class Publishing extends DomainObjectAnnotationFacetFactoryTest {
 
-        class CustomerWithPublishedObjectAnnotation {
-        }
-
         @DomainObject(publishing = org.apache.isis.applib.annotation.Publishing.AS_CONFIGURED)
         class CustomerWithDomainObjectAndPublishingSetToAsConfigured {
         }

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

[isis] 12/13: ISIS-1742: deletes AbstractService, AbstractViewModel, AbstractContainedObject, AbstractDomainObject, AbstractFactoryAndRepository, AbstractHomePageDashboardService. Also deletes allInstances/allMatches/firstMatch/uniqueMatch from DomainObjectContainer.

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 7513e83db0d20cb1ddff0a7d4ba314d6998cb584
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Oct 5 17:49:10 2017 +0300

    ISIS-1742: deletes AbstractService, AbstractViewModel, AbstractContainedObject, AbstractDomainObject, AbstractFactoryAndRepository, AbstractHomePageDashboardService.  Also deletes allInstances/allMatches/firstMatch/uniqueMatch from DomainObjectContainer.
    
    In so doing, allows us to remove QueryFindByPattern and QueryFindByTitle and corresponding PersistenceQuery... and to simplify those hierarchies.
---
 .../isis/applib/AbstractContainedObject.java       | 808 ---------------------
 .../apache/isis/applib/AbstractDomainObject.java   | 144 ----
 .../isis/applib/AbstractFactoryAndRepository.java  |  47 --
 .../org/apache/isis/applib/AbstractService.java    |   2 +-
 .../org/apache/isis/applib/AbstractViewModel.java  |   2 +-
 .../apache/isis/applib/DomainObjectContainer.java  | 218 ------
 .../apache/isis/applib/fixtures/BaseFixture.java   |   3 +-
 .../isis/applib/fixturescripts/FixtureScript.java  |   2 +-
 .../isis/applib/fixturescripts/FixtureScripts.java |  27 +-
 .../isis/applib/query/QueryBuiltInAbstract.java    |  58 --
 .../isis/applib/query/QueryFindAllInstances.java   |   2 +-
 .../homepage/AbstractHomePageDashboardService.java |  97 ---
 .../apache/isis/applib/ContainedObjectTest.java    | 107 ---
 .../isis/applib/FactoryAndRepositoryTest.java      | 122 ----
 .../annotation/HomePageFacetAnnotationFactory.java |   5 -
 .../container/DomainObjectContainerDefault.java    | 136 ----
 .../container/query/QueryFindByPattern.java        |  57 --
 .../services/container/query/QueryFindByTitle.java |  56 --
 .../DomainObjectWithMustSatisfyAnnotations.java    |   7 +-
 .../DomainObjectWithoutMustSatisfyAnnotations.java |   8 +-
 .../query/PersistenceQueryAbstract.java            |  32 +-
 .../persistence/query/PersistenceQueryBuiltIn.java |  45 --
 .../query/PersistenceQueryBuiltInAbstract.java     |  74 --
 .../query/PersistenceQueryFindAllInstances.java    |  29 +-
 .../query/PersistenceQueryFindByPattern.java       | 117 ---
 .../query/PersistenceQueryFindByTitle.java         |  66 --
 ...ersistenceQueryFindUsingApplibQueryDefault.java |  35 +-
 ...tenceQueryFindUsingApplibQuerySerializable.java |  89 ---
 .../persistence/PersistenceQueryFactory.java       |  23 +-
 .../progmodel/wrapper/dom/employees/Employee.java  |   5 +-
 todo-deprecation-list.txt                          |  13 +-
 31 files changed, 60 insertions(+), 2376 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/AbstractContainedObject.java b/core/applib/src/main/java/org/apache/isis/applib/AbstractContainedObject.java
deleted file mode 100644
index 98e53a3..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/AbstractContainedObject.java
+++ /dev/null
@@ -1,808 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib;
-
-import java.util.List;
-
-import com.google.common.base.Predicate;
-
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.filter.Filter;
-import org.apache.isis.applib.query.Query;
-import org.apache.isis.applib.security.UserMemento;
-import org.apache.isis.applib.services.i18n.TranslatableString;
-import org.apache.isis.applib.services.registry.ServiceRegistry2;
-import org.apache.isis.applib.services.user.UserService;
-
-/**
- * Convenience super class for all classes that wish to interact with the
- * container.
- * 
- * @see org.apache.isis.applib.DomainObjectContainer
- */
-public abstract class AbstractContainedObject {
-
-    /**
-     * Create a new instance of the specified class, but do not persist it.
-     *
-     * <p>
-     * It is recommended that the object be initially instantiated using
-     * this method, though the framework will also handle the case when 
-     * the object is simply <i>new()</i>ed up.  The benefits of using
-     * {@link #newTransientInstance(Class)} are:
-     * </p>
-     *
-     * <ul>
-     * <li>any services will be injected into the object immediately
-     *     (otherwise they will not be injected until the framework
-     *     becomes aware of the object, typically when it is 
-     *     {@link #persist(Object) persist}ed</li>
-     * <li>the default value for any properties (usually as specified by 
-     *     <tt>default<i>Xxx</i>()</tt> supporting methods) will not be
-     *     used</li>
-     * <li>the <tt>created()</tt> callback will not be called.
-     * </ul>
-     * 
-     * <p>
-     * The corollary is: if your code never uses <tt>default<i>Xxx</i>()</tt> 
-     * supporting methods or the <tt>created()</tt> callback, then you can
-     * alternatively just <i>new()</i> up the object rather than call this
-     * method.
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#newTransientInstance(Class)
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.factory.FactoryService#instantiate(Class)} or simply instantiate object directly and inject services using {@link ServiceRegistry2#injectServicesInto(Object)}.
-     */
-    @Deprecated
-    protected <T> T newTransientInstance(final Class<T> ofType) {
-        return getContainer().newTransientInstance(ofType);
-    }
-
-    /**
-     * Create a new {@link ViewModel} instance of the specified type, initializing with the specified memento.
-     *
-     * <p>
-     *     Rather than use this constructor it is generally preferable to simply instantiate a
-     *     class annotated with {@link org.apache.isis.applib.annotation.ViewModel annotation}.
-     *     If services need injecting into it, use {@link DomainObjectContainer#injectServicesInto(Object)}.
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#newViewModelInstance(Class, String)
-     *
-     * @deprecated - use JAXB view models, instantiated either using {@link org.apache.isis.applib.services.factory.FactoryService#instantiate(Class)} or simply instantiated directly with services injected using {@link ServiceRegistry2#injectServicesInto(Object)}.
-     */
-    @Deprecated
-    protected <T extends ViewModel> T newViewModelInstance(final Class<T> ofType, final String memento) {
-        return getContainer().newViewModelInstance(ofType, memento);
-    }
-
-    /**
-     * @deprecated - not supported, will throw a RuntimeException
-     */
-    @Deprecated
-    protected <T> T newAggregatedInstance(final Class<T> ofType) {
-        return newAggregatedInstance(this, ofType);
-    }
-
-    /**
-     * @deprecated - not supported, will throw a RuntimeException
-     */
-    @Deprecated
-    protected <T> T newAggregatedInstance(final Object parent, final Class<T> ofType) {
-        return getContainer().newAggregatedInstance(parent, ofType);
-    }
-    
-    // //////////////////////////////////////
-
-    /**
-     * Returns all the instances of the specified type (including subtypes).
-     * If the optional range parameters are used, the dataset returned starts
-     * from (0 based) index, and consists of only up to count items.
-     *
-     * <p>
-     * If there are no instances the list will be empty. This method creates a
-     * new {@link List} object each time it is called so the caller is free to
-     * use or modify the returned {@link List}, but the changes will not be
-     * reflected back to the repository.
-     * </p>
-     *
-     * <p>
-     * This method should only be called where the number of instances is known
-     * to be relatively low, unless the optional range parameters (2 longs) are
-     * specified. The range parameters are "start" and "count".
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#allInstances(Class, long...)
-     *
-     * @param range 2 longs, specifying 0-based start and count.
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#allInstances(Class, long...)}.
-     */
-    @Deprecated
-    protected <T> List<T> allInstances(final Class<T> ofType, long... range) {
-        return getContainer().allInstances(ofType, range);
-    }
-
-    // //////////////////////////////////////
-
-    /**
-     * Returns all the instances of the specified type (including subtypes) that
-     * the predicate object accepts. If the optional range parameters are used, the
-     * dataset returned starts from (0 based) index, and consists of only up to
-     * count items.
-     *
-     * <p>
-     * If there are no instances the list will be empty. This method creates a
-     * new {@link List} object each time it is called so the caller is free to
-     * use or modify the returned {@link List}, but the changes will not be
-     * reflected back to the repository.
-     * </p>
-     *
-     * <p>
-     * This method is useful during exploration/prototyping, but - because the filtering is performed client-side -
-     * this method is only really suitable for initial development/prototyping, or for classes with very few
-     * instances.  Use {@link #allMatches(Query)} for production code.
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#allMatches(Class, Predicate, long...)
-     * @see #allMatches(Query)
-     *
-     * @param range 2 longs, specifying 0-based start and count.
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#allMatches(Class, Predicate, long...)}.
-     */
-    @Deprecated
-    @Programmatic
-    protected <T> List<T> allMatches(final Class<T> ofType, final Predicate<? super T> predicate, long... range) {
-        return getContainer().allMatches(ofType, predicate, range);
-    }
-    
-    /**
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#allMatches(Class, Predicate, long...)}.
-     */
-    @Deprecated
-    protected <T> List<T> allMatches(final Class<T> ofType, final Filter<? super T> filter, long... range) {
-        return getContainer().allMatches(ofType, filter, range);
-    }
-
-    /**
-     * Returns all the instances of the specified type (including subtypes) that
-     * match the given object: where any property that is set will be tested and
-     * properties that are not set will be ignored.
-     * If the optional range parameters are used, the dataset returned starts
-     * from (0 based) index, and consists of only up to count items.
-     *
-     * <p>
-     * If there are no instances the list will be empty. This method creates a
-     * new {@link List} object each time it is called so the caller is free to
-     * use or modify the returned {@link List}, but the changes will not be
-     * reflected back to the repository.
-     * </p>
-     *
-     * <p>
-     * This method is useful during exploration/prototyping, but - because the filtering is performed client-side -
-     * this method is only really suitable for initial development/prototyping, or for classes with very few
-     * instances.  Use {@link #allMatches(Query)} for production code.
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#allMatches(Class, Object, long...)
-     *
-     * @param range 2 longs, specifying 0-based start and count.
-     *
-     * @deprecated - convert to use {@link org.apache.isis.applib.services.repository.RepositoryService#allMatches(Query)}.
-     */
-    @Deprecated
-    protected <T> List<T> allMatches(final Class<T> ofType, final T pattern, long... range) {
-        return getContainer().allMatches(ofType, pattern, range);
-    }
-
-    /**
-     * Returns all the instances of the specified type (including subtypes) that
-     * have the given title.
-     * If the optional range parameters are used, the dataset returned starts
-     * from (0 based) index, and consists of only up to count items.
-     *
-     * <p>
-     * If there are no instances the list will be empty. This method creates a
-     * new {@link List} object each time it is called so the caller is free to
-     * use or modify the returned {@link List}, but the changes will not be
-     * reflected back to the repository.
-     * </p>
-     *
-     * <p>
-     * This method is useful during exploration/prototyping, but - because the filtering is performed client-side -
-     * this method is only really suitable for initial development/prototyping, or for classes with very few
-     * instances.  Use {@link #allMatches(Query)} for production code.
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#allMatches(Class, String, long...)
-     *
-     * @param range 2 longs, specifying 0-based start and count.
-     *
-     * @deprecated - convert to use {@link org.apache.isis.applib.services.repository.RepositoryService#allMatches(Query)} instead
-     */
-    @Deprecated
-    protected <T> List<T> allMatches(final Class<T> ofType, final String title, long... range) {
-        return getContainer().allMatches(ofType, title, range);
-    }
-
-    /**
-     * Returns all the instances that match the given {@link Query}.
-     *
-     * <p>
-     * If there are no instances the list will be empty. This method creates a
-     * new {@link List} object each time it is called so the caller is free to
-     * use or modify the returned {@link List}, but the changes will not be
-     * reflected back to the repository.
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#allMatches(Query)
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#allMatches(Query)}
-     */
-    @Deprecated
-    protected <T> List<T> allMatches(final Query<T> query) {
-        return getContainer().allMatches(query);
-    }
-
-    // //////////////////////////////////////
-
-    /**
-     * Returns the first instance of the specified type (including subtypes)
-     * that matches the supplied {@link Predicate}, or <tt>null</tt> if none.
-     *
-     * <p>
-     * This method is useful during exploration/prototyping, but - because the filtering is performed client-side -
-     * this method is only really suitable for initial development/prototyping, or for classes with very few
-     * instances.  Use {@link #firstMatch(Query)} for production code.
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#firstMatch(Class, Predicate)
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#firstMatch(Class, Predicate)}
-     */
-    @Deprecated
-    protected <T> T firstMatch(final Class<T> ofType, final Predicate<T> predicate) {
-        return getContainer().firstMatch(ofType, predicate);
-    }
-
-    /**
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#firstMatch(Class, Predicate)}
-     */
-    @Deprecated
-    protected <T> T firstMatch(final Class<T> ofType, final Filter<T> filter) {
-        return getContainer().firstMatch(ofType, filter);
-    }
-
-    /**
-     * Returns the first instance of the specified type (including subtypes)
-     * that matches the supplied object as a pattern, or <tt>null</tt> if none.
-     *
-     * <p>
-     * This method is useful during exploration/prototyping, but - because the filtering is performed client-side -
-     * this method is only really suitable for initial development/prototyping, or for classes with very few
-     * instances.  Use {@link #firstMatch(Query)} for production code.
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#firstMatch(Class, Object)
-     *
-     * @deprecated - convert to use {@link org.apache.isis.applib.services.repository.RepositoryService#firstMatch(Class, Predicate)} instead
-     */
-    @Deprecated
-    protected <T> T firstMatch(final Class<T> ofType, final T pattern) {
-        return getContainer().firstMatch(ofType, pattern);
-    }
-
-    /**
-     * Returns the first instance of the specified type (including subtypes)
-     * that matches the supplied title, or <tt>null</tt> if none.
-     *
-     * <p>
-     * This method is useful during exploration/prototyping, but - because the filtering is performed client-side -
-     * this method is only really suitable for initial development/prototyping, or for classes with very few
-     * instances.  Use {@link #firstMatch(Query)} for production code.
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#firstMatch(Class, String)
-     *
-     * @deprecated - convert to use {@link org.apache.isis.applib.services.repository.RepositoryService#firstMatch(Class, Predicate)} instead
-     */
-    @Deprecated
-    protected <T> T firstMatch(final Class<T> ofType, final String title) {
-        return getContainer().firstMatch(ofType, title);
-    }
-
-    /**
-     * Returns the first instance that matches the supplied query, or <tt>null</tt> if none.
-     *
-     * <p>
-     *     This method is the recommended way of querying for an instance when one or more may match.  See also
-     *     {@link #uniqueMatch(Query)}.
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#firstMatch(Query)
-     * @see #uniqueMatch(Query)
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#firstMatch(Class, Predicate)}
-     */
-    @Deprecated
-    protected <T> T firstMatch(final Query<T> query) {
-        return getContainer().firstMatch(query);
-    }
-
-    // //////////////////////////////////////
-
-
-    /**
-     * Find the only instance of the specified type (including subtypes) that
-     * has the specified title.
-     *
-     * <p>
-     * If no instance is found then <tt>null</tt> will be return, while if there
-     * is more that one instances a run-time exception will be thrown.
-     *
-     * <p>
-     * This method is useful during exploration/prototyping, but - because the filtering is performed client-side -
-     * this method is only really suitable for initial development/prototyping, or for classes with very few
-     * instances.  Use {@link #uniqueMatch(Query)} for production code.
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#uniqueMatch(Class, Predicate)
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#uniqueMatch(Class, Predicate)}
-     */
-    @Deprecated
-    protected <T> T uniqueMatch(final Class<T> ofType, final Predicate<T> predicate) {
-        return getContainer().uniqueMatch(ofType, predicate);
-    }
-
-    /**
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#uniqueMatch(Class, Predicate)}
-     */
-    @Deprecated
-    protected <T> T uniqueMatch(final Class<T> ofType, final Filter<T> filter) {
-        return getContainer().uniqueMatch(ofType, filter);
-    }
-
-    /**
-     * Find the only instance of the specified type (including subtypes) that
-     * has the specified title.
-     *
-     * <p>
-     * If no instance is found then <tt>null</tt> will be returned, while if
-     * there is more that one instances a run-time exception will be thrown.
-     *
-     * <p>
-     * This method is useful during exploration/prototyping, but - because the filtering is performed client-side -
-     * this method is only really suitable for initial development/prototyping, or for classes with very few
-     * instances.  Use {@link #uniqueMatch(Query)} for production code.
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#uniqueMatch(Class, String)
-     *
-     * @deprecated - convert to use {@link org.apache.isis.applib.services.repository.RepositoryService#uniqueMatch(Class, Predicate)} instead
-     */
-    @Deprecated
-    protected <T> T uniqueMatch(final Class<T> ofType, final String title) {
-        return getContainer().uniqueMatch(ofType, title);
-    }
-
-    /**
-     * Find the only instance of the patterned object type (including subtypes)
-     * that matches the set fields in the pattern object: where any property
-     * that is set will be tested and properties that are not set will be
-     * ignored.
-     *
-     * <p>
-     * If no instance is found then null will be return, while if there is more
-     * that one instances a run-time exception will be thrown.
-     * </p>
-     *
-     * <p>
-     * This method is useful during exploration/prototyping, but - because the filtering is performed client-side -
-     * this method is only really suitable for initial development/prototyping, or for classes with very few
-     * instances.  Use {@link #uniqueMatch(Query)} for production code.
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#uniqueMatch(Class, Object)
-     * @deprecated - convert to use {@link org.apache.isis.applib.services.repository.RepositoryService#uniqueMatch(Class, Predicate)} instead
-     */
-    @Deprecated
-    protected <T> T uniqueMatch(final Class<T> ofType, final T pattern) {
-        return getContainer().uniqueMatch(ofType, pattern);
-    }
-
-    /**
-     * Find the only instance that matches the provided query.
-     *
-     * <p>
-     * If no instance is found then null will be return, while if there is more
-     * that one instances a run-time exception will be thrown.
-     * </p>
-     *
-     * <p>
-     *     This method is the recommended way of querying for (precisely) one instance.  See also {@link #firstMatch(Query)}
-     *     for less strict querying.
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see #firstMatch(Query)
-     * @see DomainObjectContainer#uniqueMatch(Query)
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#uniqueMatch(Query)}
-     */
-    @Deprecated
-    protected <T> T uniqueMatch(final Query<T> query) {
-        return getContainer().uniqueMatch(query);
-    }
-
-    // //////////////////////////////////////
-
-    /**
-     * Whether the object is in a valid state, that is that none of the
-     * validation of properties, collections and object-level is vetoing.
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see #validate(Object)
-     * @see DomainObjectContainer#isValid(Object)
-     */
-    protected boolean isValid(final Object domainObject) {
-        return getContainer().isValid(domainObject);
-    }
-
-    /**
-     * The reason, if any why the object is in a invalid state
-     *
-     * <p>
-     * Checks the validation of all of the properties, collections and
-     * object-level.
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see #isValid(Object)
-     * @see DomainObjectContainer#validate(Object)
-     */
-    protected String validate(final Object domainObject) {
-        return getContainer().validate(domainObject);
-    }
-
-    // //////////////////////////////////////
-
-    /**
-     * Determines if the specified object is persistent (that it is stored permanently outside of the virtual machine
-     * in the object store).
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#isPersistent(Object)
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#isPersistent(Object)}
-     */
-    @Deprecated
-    protected boolean isPersistent(final Object domainObject) {
-        return getContainer().isPersistent(domainObject);
-    }
-
-    /**
-     * Queues up a request to persist this object to the object store.  The object is persisted either
-     * when the transaction is committed, or when it is flushed.  Flushing is performed either implicitly whenever a subsequent query is run,
-     * or can be performed explicitly using {@link DomainObjectContainer#flush()}.
-     *
-     * <p>
-     * It is recommended that the object be initially instantiated using
-     * {@link #newTransientInstance(Class)}.  However, the framework will also
-     * handle the case when the object is simply <i>new()</i>ed up.  See
-     * {@link #newTransientInstance(Class)} for more information.
-     * </p>
-     *
-     * <p>
-     * This method will throw an exception if the object {@link #isPersistent(Object) is persistent} already.  For this reason
-     * {@link #persistIfNotAlready(Object)} is generally preferred.
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see #newTransientInstance(Class)
-     * @see #isPersistent(Object)
-     * @see #persistIfNotAlready(Object)
-     * @see DomainObjectContainer#persist(Object)
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#persist(Object)} or {@link org.apache.isis.applib.services.repository.RepositoryService#persistAndFlush(Object)}
-     */
-    @Deprecated
-    protected <T> T persist(final T transientDomainObject) {
-        getContainer().persist(transientDomainObject);
-        return transientDomainObject;
-    }
-
-    /**
-     * Queues up a request to persist this object to the object store (as per {@link #persist(Object)}) (or do
-     * nothing if the object is already {@link #isPersistent(Object) persistent}).
-     *
-     * <p>
-     * It is recommended that the object be initially instantiated using
-     * {@link #newTransientInstance(Class)}.  However, the framework will also
-     * handle the case when the object is simply <i>new()</i>ed up.  See
-     * {@link #newTransientInstance(Class)} for more information.
-     * </p>
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see #newTransientInstance(Class)
-     * @see #isPersistent(Object)
-     * @see #persist(Object)
-     * @see {@link DomainObjectContainer#persistIfNotAlready(Object)}
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#persist(Object)} or {@link org.apache.isis.applib.services.repository.RepositoryService#persistAndFlush(Object)}
-     */
-    @Deprecated
-    protected <T> T persistIfNotAlready(final T domainObject) {
-        getContainer().persistIfNotAlready(domainObject);
-        return domainObject;
-    }
-
-    /**
-     * Delete the provided object from the persistent object store.
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#remove(Object)
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#remove(Object)} or {@link org.apache.isis.applib.services.repository.RepositoryService#removeAndFlush(Object)}
-     */
-    @Deprecated
-    protected <T> T remove(final T persistentDomainObject) {
-        getContainer().remove(persistentDomainObject);
-        return persistentDomainObject;
-    }
-
-    /**
-     * Delete the provided object from the persistent object store.
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#remove(Object)} or {@link org.apache.isis.applib.services.repository.RepositoryService#removeAndFlush(Object)}
-     */
-    @Deprecated
-    protected <T> T removeIfNotAlready(final T persistentDomainObject) {
-        getContainer().removeIfNotAlready(persistentDomainObject);
-        return persistentDomainObject;
-    }
-    
-    // //////////////////////////////////////
-
-    /**
-     * Display the specified message to the user, in a non-intrusive fashion.
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#informUser(String)
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.message.MessageService#informUser(String)}
-     */
-    @Deprecated
-    protected void informUser(final String message) {
-        getContainer().informUser(message);
-    }
-
-    /**
-     * Display the specified i18n message to the user, in a non-intrusive fashion.
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#informUser(TranslatableString, Class, String)
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.message.MessageService#informUser(TranslatableString, Class, String)}
-     */
-    @Deprecated
-    protected void informUser(TranslatableString message, final Class<?> contextClass, final String contextMethod) {
-        getContainer().informUser(message, contextClass, contextMethod);
-    }
-
-    /**
-     * Display the specified message as a warning to the user, in a more visible
-     * fashion, but without requiring explicit acknowledgement.
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#warnUser(String)
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.message.MessageService#warnUser(String)}
-     */
-    @Deprecated
-    protected void warnUser(final String message) {
-        getContainer().warnUser(message);
-    }
-
-    /**
-     * Display the specified i18n message as a warning to the user, in a more visible
-     * fashion, but without requiring explicit acknowledgement.
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#warnUser(TranslatableString, Class, String)
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.message.MessageService#warnUser(TranslatableString, Class, String)}
-     */
-    @Deprecated
-    protected void warnUser(TranslatableString message, final Class<?> contextClass, final String contextMethod) {
-        getContainer().warnUser(message, contextClass, contextMethod);
-    }
-
-    /**
-     * Display the specified message as an error to the user, ensuring that it
-     * is acknowledged.
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#raiseError(String)
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.message.MessageService#raiseError(String)}
-     */
-    @Deprecated
-    protected void raiseError(final String message) {
-        getContainer().raiseError(message);
-    }
-
-    /**
-     * Display the specified i18n message as an error to the user, ensuring that it
-     * is acknowledged.
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#raiseError(TranslatableString, Class, String)
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.message.MessageService#raiseError(TranslatableString, Class, String)}
-     */
-    @Deprecated
-    protected String raiseError(TranslatableString message, final Class<?> contextClass, final String contextMethod) {
-        return getContainer().raiseError(message, contextClass, contextMethod);
-    }
-
-    // //////////////////////////////////////
-
-    /**
-     * Get the details about the current user.
-     *
-     * <p>
-     * The method simply delegates to the {@link DomainObjectContainer}.
-     * </p>
-     *
-     * @see DomainObjectContainer#getUser()
-     *
-     * @deprecated - use {@link UserService#getUser()}
-     */
-    @Deprecated
-    protected UserMemento getUser() {
-        return getContainer().getUser();
-    }
-
-    // //////////////////////////////////////
-
-
-    @javax.inject.Inject
-    private DomainObjectContainer container;
-
-    /**
-     * This field is not persisted, nor displayed to the user.
-     *
-     * @deprecated
-     */
-    @Deprecated
-    protected DomainObjectContainer getContainer() {
-        return this.container;
-    }
-
-    /**
-     * @deprecated - will use the field to inject instead.
-     */
-    @Deprecated
-    @Programmatic
-    public void setContainer(final DomainObjectContainer container) {
-        this.container = container;
-    }
-
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/AbstractDomainObject.java b/core/applib/src/main/java/org/apache/isis/applib/AbstractDomainObject.java
deleted file mode 100644
index 41f1284..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/AbstractDomainObject.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib;
-
-import org.apache.isis.applib.annotation.Programmatic;
-
-/**
- * Convenience super class for all domain objects that wish to interact with the
- * container.
- * 
- * <p>
- * Subclassing is NOT mandatory; the methods in this superclass can be pushed
- * down into domain objects and another superclass used if required.
- * 
- * @see org.apache.isis.applib.DomainObjectContainer
- */
-public abstract class AbstractDomainObject extends AbstractContainedObject {
-
-    //region > resolve, objectChanged
-
-    /**
-     * Re-initialises the fields of an object, using the
-     * JDO {@link javax.jdo.PersistenceManager#refresh(Object) refresh} API.
-     *
-     * <p>
-     *     Previously this method was provided for manual control of lazy loading; with the JDO/DataNucleus objectstore
-     *     that original functionality is performed automatically by the framework.
-     * </p>
-     *
-     * @deprecated - equivalent to {@link org.apache.isis.applib.services.jdosupport.IsisJdoSupport#refresh(Object)}.
-     */
-    @Programmatic
-    @Deprecated
-    protected void resolve() {
-        getContainer().resolve(this);
-    }
-
-    /**
-     * Provided that the <tt>field</tt> parameter is <tt>null</tt>, re-initialises the fields of an object, using the
-     * JDO {@link javax.jdo.PersistenceManager#refresh(Object) refresh} API.
-     *
-     * <p>
-     *     Previously this method was provided for manual control of lazy loading; with the JDO/DataNucleus objectstore
-     *     that original functionality is performed automatically by the framework.
-     * </p>
-     *
-     * @deprecated - equivalent to {@link org.apache.isis.applib.services.jdosupport.IsisJdoSupport#refresh(Object)}.
-     */
-    @Programmatic
-    @Deprecated
-    protected void resolve(final Object referencedObject) {
-        getContainer().resolve(this, referencedObject);
-    }
-
-    /**
-     * This method does nothing (is a no-op).
-     *
-     * <p>
-     *     Previous this method was provided for manual control of object dirtyng; with the JDO/DataNucleus objectstore
-     *     that original functionality is performed automatically by the framework.
-     * </p>
-     *
-     * @deprecated
-     */
-    @Programmatic
-    @Deprecated
-    protected void objectChanged() {
-        getContainer().objectChanged(this);
-    }
-
-    //endregion
-
-    //region > isPersistent, makePersistent (overloads)
-    /**
-     * Deprecated, recommend use {@link #isPersistent(Object)} instead.
-     *
-     * @see #isPersistent(Object)
-     *
-     * @deprecated - instead recommend that {@link #isPersistent(Object)} or simply {@link DomainObjectContainer#isPersistent(Object)} be used instead.
-     */
-    @Deprecated
-    @Programmatic
-    protected boolean isPersistent() {
-        return isPersistent(this);
-    }
-
-    /**
-     * Deprecated, has been renamed to {@link #persist(Object)}.
-     *
-     * @see #persist(Object)
-     *
-     * @deprecated - instead use {@link #persist(Object)}.
-     */
-    @Deprecated
-    @Programmatic
-    protected void makePersistent() {
-        persist(this);
-    }
-
-    /**
-     * Deprecated, has been renamed to {@link #persistIfNotAlready(Object)}.
-     *
-     * @see #persistIfNotAlready(Object)
-     * 
-     * @deprecated - instead use {@link #persistIfNotAlready(Object)}.
-     */
-    @Deprecated
-    @Programmatic
-    protected void makePersistentIfNotAlready() {
-        persistIfNotAlready(this);
-    }
-
-    /**
-     * Deprecated, has been renamed to {@link #remove(Object)}.
-     *
-     * @see #remove(Object).
-     * 
-     * @deprecated - instead use {@link #remove(Object)}.
-     */
-    @Deprecated
-    @Programmatic
-    protected void disposeInstance() {
-        remove(this);
-    }
-    //endregion
-
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/AbstractFactoryAndRepository.java b/core/applib/src/main/java/org/apache/isis/applib/AbstractFactoryAndRepository.java
deleted file mode 100644
index fe7486c..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/AbstractFactoryAndRepository.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib;
-
-/**
- * @deprecated - annotate with DomainService#repositoryFor()} instead.
- */
-@Deprecated
-public abstract class AbstractFactoryAndRepository extends AbstractService {
-
-    /**
-     * @see DomainObjectContainer#newPersistentInstance(Class)
-     * @deprecated - see {@link DomainObjectContainer#newPersistentInstance(Class)} for rationale.
-     */
-    @Deprecated
-    protected <T> T newPersistentInstance(final Class<T> ofClass) {
-        return getContainer().newPersistentInstance(ofClass);
-    }
-
-    /**
-     * @see DomainObjectContainer#newInstance(Class, Object)
-     *
-     * @deprecated - this method supports a rare use case, causing unnecessary interface bloat for very little gain.
-     */
-    @Deprecated
-    protected <T> T newInstance(final Class<T> ofClass, final Object object) {
-        return getContainer().newInstance(ofClass, object);
-    }
-
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/AbstractService.java b/core/applib/src/main/java/org/apache/isis/applib/AbstractService.java
index 91b2f3f..7a14c7a 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/AbstractService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/AbstractService.java
@@ -21,7 +21,7 @@ package org.apache.isis.applib;
 
 import org.apache.isis.applib.annotation.Programmatic;
 
-public abstract class AbstractService extends AbstractContainedObject {
+public abstract class AbstractService {
 
     @Programmatic
     public String getId() {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/AbstractViewModel.java b/core/applib/src/main/java/org/apache/isis/applib/AbstractViewModel.java
index d1117f9..2a1b891 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/AbstractViewModel.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/AbstractViewModel.java
@@ -33,7 +33,7 @@ package org.apache.isis.applib;
  *
  * @see org.apache.isis.applib.DomainObjectContainer
  */
-public abstract class AbstractViewModel extends AbstractContainedObject implements ViewModel {
+public abstract class AbstractViewModel implements ViewModel {
 
     @Override
     public abstract String viewModelMemento();
diff --git a/core/applib/src/main/java/org/apache/isis/applib/DomainObjectContainer.java b/core/applib/src/main/java/org/apache/isis/applib/DomainObjectContainer.java
index 36ad420..5d04dce 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/DomainObjectContainer.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/DomainObjectContainer.java
@@ -402,223 +402,5 @@ public interface DomainObjectContainer {
 
     //endregion
 
-    //region > allInstances, allMatches, firstMatch, uniqueMatch (DEPRECATED)
 
-    /**
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#allInstances(Class, long...)} instead
-     */
-    @Deprecated
-    @Programmatic
-    public <T> List<T> allInstances(Class<T> ofType, long... range);
-
-    /**
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#allMatches(Class, Predicate, long...)} instead.
-     */
-    @Deprecated
-    @Programmatic
-    <T> List<T> allMatches(final Class<T> ofType, final Predicate<? super T> predicate, long... range);
-    
-    /**
-     * @deprecated - use {@link #allMatches(Class, Predicate, long...)} or (better) {@link #allMatches(Query)} instead
-     */
-    @Deprecated
-    @Programmatic
-    <T> List<T> allMatches(final Class<T> ofType, final Filter<? super T> filter, long... range);
-
-    /**
-     * Returns all the instances of the specified type (including subtypes) that
-     * have the given title.
-     * If the optional range parameters are used, the dataset returned starts 
-     * from (0 based) index, and consists of only up to count items.  
-     * 
-     * <p>
-     * If there are no instances the list will be empty. This method creates a
-     * new {@link List} object each time it is called so the caller is free to
-     * use or modify the returned {@link List}, but the changes will not be
-     * reflected back to the repository.
-     * </p>
-     *
-     * <p>
-     * This method is useful during exploration/prototyping, but - because the filtering is performed client-side -
-     * this method is only really suitable for initial development/prototyping, or for classes with very few
-     * instances.  Use {@link #allMatches(Query)} for production code.
-     * </p>
-     *
-     * @param range 2 longs, specifying 0-based start and count.
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#allMatches(Class, Predicate, long...)} instead.
-     */
-    @Deprecated
-    @Programmatic
-    public <T> List<T> allMatches(Class<T> ofType, String title, long... range);
-
-    /**
-     * Returns all the instances of the specified type (including subtypes) that
-     * match the given object: where any property that is set will be tested and
-     * properties that are not set will be ignored.
-     * If the optional range parameters are used, the dataset returned starts 
-     * from (0 based) index, and consists of only up to count items.  
-     * 
-     * <p>
-     * If there are no instances the list will be empty. This method creates a
-     * new {@link List} object each time it is called so the caller is free to
-     * use or modify the returned {@link List}, but the changes will not be
-     * reflected back to the repository.
-     * </p>
-     *
-     * <p>
-     * This method is useful during exploration/prototyping, but - because the filtering is performed client-side -
-     * this method is only really suitable for initial development/prototyping, or for classes with very few
-     * instances.  Use {@link #allMatches(Query)} for production code.
-     * </p>
-     *
-     * @param range 2 longs, specifying 0-based start and count.
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#allMatches(Class, Predicate, long...)} instead.
-     */
-    @Deprecated
-    @Programmatic
-    <T> List<T> allMatches(Class<T> ofType, T pattern, long... range);
-
-    /**
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#allMatches(Query)} instead.
-     */
-    @Deprecated
-    @Programmatic
-    <T> List<T> allMatches(Query<T> query);
-
-    // //////////////////////////////////////
-
-    /**
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#firstMatch(Class, Predicate)} instead.
-     */
-    @Deprecated
-    @Programmatic
-    <T> T firstMatch(final Class<T> ofType, final Predicate<T> predicate);
-    
-    /**
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#firstMatch(Class, Predicate)} instead.
-     */
-    @Deprecated
-    @Programmatic
-    <T> T firstMatch(final Class<T> ofType, final Filter<T> filter);
-
-    /**
-     * Returns the first instance of the specified type (including subtypes)
-     * that matches the supplied title, or <tt>null</tt> if none.
-     *
-     * <p>
-     * This method is useful during exploration/prototyping, but - because the filtering is performed client-side -
-     * this method is only really suitable for initial development/prototyping, or for classes with very few
-     * instances.  Use {@link #firstMatch(Query)} for production code.
-     * </p>
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#firstMatch(Class, Predicate)} instead.
-     */
-    @Deprecated
-    @Programmatic
-    <T> T firstMatch(Class<T> ofType, String title);
-
-    /**
-     * Returns the first instance of the specified type (including subtypes)
-     * that matches the supplied object as a pattern, or <tt>null</tt> if none.
-     *
-     * <p>
-     * This method is useful during exploration/prototyping, but - because the filtering is performed client-side -
-     * this method is only really suitable for initial development/prototyping, or for classes with very few
-     * instances.  Use {@link #firstMatch(Query)} for production code.
-     * </p>
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#firstMatch(Class, Predicate)} instead.
-     */
-    @Deprecated
-    @Programmatic
-    <T> T firstMatch(Class<T> ofType, T pattern);
-
-    /**
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#firstMatch(Query)} instead.
-     */
-    @Deprecated
-    @Programmatic
-    <T> T firstMatch(Query<T> query);
-
-    // //////////////////////////////////////
-
-    /**
-     * @deprecated  - use {@link org.apache.isis.applib.services.repository.RepositoryService#uniqueMatch(Class, Predicate)} instead.
-     */
-    @Deprecated
-    @Programmatic
-    <T> T uniqueMatch(final Class<T> ofType, final Predicate<T> predicate);
-
-    /**
-     * @deprecated  - use {@link org.apache.isis.applib.services.repository.RepositoryService#uniqueMatch(Class, Predicate)} instead.
-     */
-    @Programmatic
-    @Deprecated
-    public <T> T uniqueMatch(final Class<T> ofType, final Filter<T> filter);
-    
-    /**
-     * Find the only instance of the specified type (including subtypes) that
-     * has the specified title.
-     * 
-     * <p>
-     * If no instance is found then <tt>null</tt> will be returned, while if
-     * there is more that one instances a run-time exception will be thrown.
-     * 
-     * <p>
-     * This method is useful during exploration/prototyping, but - because the filtering is performed client-side -
-     * this method is only really suitable for initial development/prototyping, or for classes with very few
-     * instances.  Use {@link #uniqueMatch(Query)} for production code.
-     * </p>
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#uniqueMatch(Class, Predicate)} instead.
-     */
-    @Deprecated
-    @Programmatic
-    <T> T uniqueMatch(Class<T> ofType, String title);
-
-    /**
-     * Find the only instance of the patterned object type (including subtypes)
-     * that matches the set fields in the pattern object: where any property
-     * that is set will be tested and properties that are not set will be
-     * ignored.
-     * 
-     * <p>
-     * If no instance is found then null will be return, while if there is more
-     * that one instances a run-time exception will be thrown.
-     * </p>
-     *
-     * <p>
-     * This method is useful during exploration/prototyping, but - because the filtering is performed client-side -
-     * this method is only really suitable for initial development/prototyping, or for classes with very few
-     * instances.  Use {@link #uniqueMatch(Query)} for production code.
-     * </p>
-     *
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#uniqueMatch(Class, Predicate)} instead.
-     */
-    @Deprecated
-    @Programmatic
-    <T> T uniqueMatch(Class<T> ofType, T pattern);
-
-    /**
-     * @deprecated - use {@link org.apache.isis.applib.services.repository.RepositoryService#uniqueMatch(Query)} instead.
-     */
-    @Deprecated
-    @Programmatic
-    <T> T uniqueMatch(Query<T> query);
-
-    //endregion
-
-
-    class Functions {
-        public static <T> Function<T, String> titleOfUsing(final DomainObjectContainer container) {
-            return new Function<T, String>() {
-                @Override
-                public String apply(final T input) {
-                    return container.titleOf(input);
-                }
-            };
-        }
-    }
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixtures/BaseFixture.java b/core/applib/src/main/java/org/apache/isis/applib/fixtures/BaseFixture.java
index 64c764f..9adbdbe 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixtures/BaseFixture.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixtures/BaseFixture.java
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.applib.fixtures;
 
-import org.apache.isis.applib.AbstractContainedObject;
 import org.apache.isis.applib.RecoverableException;
 import org.apache.isis.applib.clock.Clock;
 import org.apache.isis.applib.fixturescripts.FixtureScript;
@@ -27,7 +26,7 @@ import org.apache.isis.applib.fixturescripts.FixtureScript;
  * @deprecated - use {@link FixtureScript} instead.
  */
 @Deprecated
-abstract class BaseFixture extends AbstractContainedObject implements InstallableFixture {
+abstract class BaseFixture implements InstallableFixture {
 
     private final FixtureType fixtureType;
     FixtureClock clock = null;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
index df30290..402e13c 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
@@ -576,7 +576,7 @@ public abstract class FixtureScript
             if(localNameOverride != null) {
                 childFixtureScript.setLocalName(localNameOverride);
             }
-            callingFixtureScript.getContainer().injectServicesInto(childFixtureScript);
+            callingFixtureScript.container.injectServicesInto(childFixtureScript);
 
             executeChildIfNotAlready(childFixtureScript);
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
index bfd73f6..5c49ace 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
@@ -31,6 +31,7 @@ import com.google.common.collect.Collections2;
 import com.google.common.collect.Lists;
 
 import org.apache.isis.applib.AbstractService;
+import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.applib.ViewModel;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.MemberOrder;
@@ -47,6 +48,7 @@ import org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault;
 import org.apache.isis.applib.services.fixturespec.FixtureScriptsSpecification;
 import org.apache.isis.applib.services.memento.MementoService;
 import org.apache.isis.applib.services.memento.MementoService.Memento;
+import org.apache.isis.applib.services.title.TitleService;
 import org.apache.isis.applib.util.ObjectContracts;
 
 /**
@@ -354,13 +356,14 @@ public abstract class FixtureScripts extends AbstractService {
             if(!template.isDiscoverable()) {
                 return null;
             }
-            return getContainer().newViewModelInstance(fixtureScriptCls, mementoFor(template));
+            return container.newViewModelInstance(fixtureScriptCls, mementoFor(template));
         } catch(final Exception ex) {
             // ignore if does not have a no-arg constructor or cannot be instantiated
             return null;
         }
     }
 
+
     //endregion
 
     //region > runFixtureScript (prototype action)
@@ -386,7 +389,7 @@ public abstract class FixtureScripts extends AbstractService {
         // if this method is called programmatically, the caller may have simply new'd up the fixture script
         // (rather than use container.newTransientInstance(...).  To allow this use case, we need to ensure that
         // domain services are injected into the fixture script.
-        getContainer().injectServicesInto(fixtureScript);
+        container.injectServicesInto(fixtureScript);
 
         return fixtureScript.run(parameters);
     }
@@ -482,12 +485,12 @@ public abstract class FixtureScripts extends AbstractService {
         if(object == null) {
             return null;
         }
-        if (object instanceof ViewModel || getContainer().isPersistent(object)) {
+        if (object instanceof ViewModel || container.isPersistent(object)) {
             // continue
         } else {
             switch(getNonPersistedObjectsStrategy()) {
                 case PERSIST:
-                    getContainer().flush();
+                    container.flush();
                     break;
                 case IGNORE:
                     return null;
@@ -504,7 +507,7 @@ public abstract class FixtureScripts extends AbstractService {
     @Programmatic
     String titleOf(final FixtureResult fixtureResult) {
         final Object object = fixtureResult.getObject();
-        return object != null? getContainer().titleOf(object): "(null)";
+        return object != null? titleService.titleOf(object): "(null)";
     }
 
     //endregion
@@ -512,16 +515,22 @@ public abstract class FixtureScripts extends AbstractService {
     //region > injected services
 
     @javax.inject.Inject
-    private MementoService mementoService;
+    DomainObjectContainer container;
     
     @javax.inject.Inject
-    private BookmarkService bookmarkService;
+    TitleService titleService;
+
+    @javax.inject.Inject
+    MementoService mementoService;
+
+    @javax.inject.Inject
+    BookmarkService bookmarkService;
 
     @javax.inject.Inject
-    private ClassDiscoveryService classDiscoveryService;
+    ClassDiscoveryService classDiscoveryService;
 
     @javax.inject.Inject
-    private ExecutionParametersService executionParametersService;
+    ExecutionParametersService executionParametersService;
 
     //endregion
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/query/QueryBuiltInAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/query/QueryBuiltInAbstract.java
deleted file mode 100644
index 5b3fd22..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/query/QueryBuiltInAbstract.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.query;
-
-import java.io.Serializable;
-
-import org.apache.isis.applib.DomainObjectContainer;
-
-/**
- * Although (through this class) the subclasses implements {@link Query} and
- * thus are meant to be {@link Serializable}, this isn't actually required of
- * the built-in queries because they are all converted into corresponding
- * <tt>PersistenceQuery</tt> in the runtime for remoting purposes.
- * 
- * <p>
- * The principle reason for this is to reduce the size of the API from the
- * {@link DomainObjectContainer} to <tt>RuntimeContext</tt>. It also means that the
- * requirements for writing an object store are more easily expressed: support
- * the three built-in queries, plus any others.
- * 
- * <p>
- * Note also that the {@link QueryFindByPattern} isn't actually serializable
- * (because it references an arbitrary pojo).
- * 
- * <p>
- * REVIEW: now that we've dropped remoting, could we get rid of the <tt>PersistenceQuery</tt>
- * classes and just use these classes throughout?
- */
-public abstract class QueryBuiltInAbstract<T> extends QueryAbstract<T> {
-
-    private static final long serialVersionUID = 1L;
-    
-    public QueryBuiltInAbstract(final Class<T> type, final long ... range) {
-        super(type, range);
-    }
-
-    public QueryBuiltInAbstract(final String typeName, final long ... range) {
-        super(typeName, range);
-    }
-    
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/query/QueryFindAllInstances.java b/core/applib/src/main/java/org/apache/isis/applib/query/QueryFindAllInstances.java
index e530866..1d09672 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/query/QueryFindAllInstances.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/query/QueryFindAllInstances.java
@@ -30,7 +30,7 @@ import java.io.Serializable;
  * <p>
  * See discussion in {@link QueryBuiltInAbstract} for further details.
  */
-public class QueryFindAllInstances<T> extends QueryBuiltInAbstract<T> {
+public class QueryFindAllInstances<T> extends QueryAbstract<T> {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/homepage/AbstractHomePageDashboardService.java b/core/applib/src/main/java/org/apache/isis/applib/services/homepage/AbstractHomePageDashboardService.java
deleted file mode 100644
index 5957817..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/services/homepage/AbstractHomePageDashboardService.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.applib.services.homepage;
-
-import org.apache.isis.applib.AbstractService;
-import org.apache.isis.applib.ViewModel;
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.HomePage;
-import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.annotation.Where;
-
-/**
- * Convenience domain service to create a view model (eg a dashboard) to be rendered automatically
- * on the home page of the application.
- *
- * <p>
- * For example, subclass as follows:
- * 
- * <pre>
- * public class MyAppDashboardService extends AbstractHomePageDashboardService&lt;MyAppDashboard&gt; {
- *     public MyAppDashboardService() { super(MyAppDashboard.class); }
- * }
- * </pre>
- * 
- * <p>
- * then register in <tt>isis.properties</tt> in the usual way.
- * 
- * <p>
- * However, if your application requires more flexibility (for example, returning different view models 
- * for different users), then do <i>not</i> subclass from this service; instead write your own service
- * with a no-arg action with the {@link HomePage} annotation.
- */
-public abstract class AbstractHomePageDashboardService<T extends ViewModel> extends AbstractService {
-    
-    /**
-     * The default value to use for the {@link #id}.
-     */
-    private static final String ID_DEFAULT = "dashboard";
-    
-    private final Class<T> viewModel;
-    /**
-     * Both the id of this service, and also the memento of the view model.
-     */
-    private final String id;
-
-    // //////////////////////////////////////
-
-    public AbstractHomePageDashboardService(final Class<T> viewModel) {
-        this(viewModel, ID_DEFAULT);
-    }
-    
-    /**
-     * @param viewModel - view model to instantiate and return. 
-     * @param id- both the id of this service, and also the memento of the view model.
-     */
-    public AbstractHomePageDashboardService(final Class<T> viewModel, final String id) {
-        this.viewModel = viewModel;
-        this.id = id;
-    }
-
-    @Override
-    public String getId() {
-        return id;
-    }
-
-    public String iconName() {
-        return id;
-    }
-
-    // //////////////////////////////////////
-
-    @Action(
-            semantics = SemanticsOf.SAFE,
-            hidden = Where.EVERYWHERE
-    )
-    @HomePage
-    public T lookup() {
-        return newViewModelInstance(viewModel, id);
-    }
-
-}
diff --git a/core/applib/src/test/java/org/apache/isis/applib/ContainedObjectTest.java b/core/applib/src/test/java/org/apache/isis/applib/ContainedObjectTest.java
deleted file mode 100644
index f638dc7..0000000
--- a/core/applib/src/test/java/org/apache/isis/applib/ContainedObjectTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib;
-
-import static org.junit.Assert.assertEquals;
-
-import org.jmock.Expectations;
-import org.jmock.Mockery;
-import org.junit.Before;
-import org.junit.Test;
-
-import org.apache.isis.applib.security.UserMemento;
-
-public class ContainedObjectTest {
-
-    private DomainObjectContainer container;
-    private AbstractContainedObject object;
-    private Mockery context;
-
-    @Before
-    public void setUp() throws Exception {
-        context = new Mockery();
-        container = context.mock(DomainObjectContainer.class);
-        object = new AbstractContainedObject() {
-        };
-        object.setContainer(container);
-    }
-
-    @Test
-    public void testContainer() throws Exception {
-        assertEquals(container, object.getContainer());
-    }
-
-    @Test
-    public void testInformUser() throws Exception {
-        context.checking(new Expectations() {
-            {
-                one(container).informUser("message");
-            }
-        });
-
-        object.informUser("message");
-
-        context.assertIsSatisfied();
-    }
-
-    @Test
-    public void testWarnUser() throws Exception {
-        context.checking(new Expectations() {
-            {
-                one(container).warnUser("message");
-            }
-        });
-
-        object.warnUser("message");
-
-        context.assertIsSatisfied();
-    }
-
-    @Test
-    public void testRaiseError() throws Exception {
-        context.checking(new Expectations() {
-            {
-                one(container).raiseError("message");
-            }
-        });
-
-        object.raiseError("message");
-
-        context.assertIsSatisfied();
-    }
-
-    @Test
-    public void testGetUser() throws Exception {
-        final UserMemento memento = new UserMemento("Harry");
-        context.checking(new Expectations() {
-            {
-                one(container).getUser();
-                will(returnValue(memento));
-
-            }
-        });
-
-        final UserMemento user = object.getUser();
-        assertEquals(memento, user);
-
-        context.assertIsSatisfied();
-    }
-
-}
diff --git a/core/applib/src/test/java/org/apache/isis/applib/FactoryAndRepositoryTest.java b/core/applib/src/test/java/org/apache/isis/applib/FactoryAndRepositoryTest.java
deleted file mode 100644
index 665bcbc..0000000
--- a/core/applib/src/test/java/org/apache/isis/applib/FactoryAndRepositoryTest.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib;
-
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jmock.Expectations;
-import org.jmock.auto.Mock;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
-
-public class FactoryAndRepositoryTest {
-
-    @Rule
-    public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
-
-
-    public static class TestDomainObject {
-    }
-
-    @Mock
-    private DomainObjectContainer container;
-    
-    private AbstractFactoryAndRepository object;
-
-    @Before
-    public void setUp() throws Exception {
-        container = context.mock(DomainObjectContainer.class);
-        object = new AbstractFactoryAndRepository() {
-        };
-        object.setContainer(container);
-    }
-
-    @Test
-    public void testContainer() throws Exception {
-        assertEquals(container, object.getContainer());
-    }
-
-    @Test
-    public void testInformUser() throws Exception {
-        context.checking(new Expectations() {
-            {
-                oneOf(container).informUser("message");
-            }
-        });
-
-        object.informUser("message");
-    }
-
-    @Test
-    public void testWarnUser() throws Exception {
-        context.checking(new Expectations() {
-            {
-                oneOf(container).warnUser("message");
-            }
-        });
-
-        object.warnUser("message");
-    }
-
-    @Test
-    public void testRaiseError() throws Exception {
-        context.checking(new Expectations() {
-            {
-                oneOf(container).raiseError("message");
-            }
-        });
-
-        object.raiseError("message");
-    }
-
-    @Test
-    public void testAllInstances() throws Exception {
-        final List<Object> list = new ArrayList<Object>();
-        list.add(new TestDomainObject());
-        list.add(new TestDomainObject());
-        list.add(new TestDomainObject());
-
-        context.checking(new Expectations() {
-            {
-                oneOf(container).allInstances(TestDomainObject.class);
-                will(returnValue(list));
-            }
-        });
-
-        final List<TestDomainObject> allInstances = object.allInstances(TestDomainObject.class);
-        assertThat(allInstances.size(), is(3));
-        assertThat(allInstances.get(0), notNullValue());
-        assertThat(allInstances.get(0), equalTo(list.get(0)));
-        assertThat(allInstances.get(1), equalTo(list.get(1)));
-        assertThat(allInstances.get(2), equalTo(list.get(2)));
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/homepage/annotation/HomePageFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/homepage/annotation/HomePageFacetAnnotationFactory.java
index 35550e5..7d9ec6a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/homepage/annotation/HomePageFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/homepage/annotation/HomePageFacetAnnotationFactory.java
@@ -23,7 +23,6 @@ import java.util.List;
 import com.google.common.base.Joiner;
 import com.google.common.collect.Lists;
 import org.apache.isis.applib.annotation.HomePage;
-import org.apache.isis.applib.services.homepage.AbstractHomePageDashboardService;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -72,10 +71,6 @@ public class HomePageFacetAnnotationFactory extends FacetFactoryAbstract impleme
             @Override
             public boolean visit(ObjectSpecification objectSpec, ValidationFailures validationFailures) {
                 final List<ObjectAction> objectActions = objectSpec.getObjectActions(Contributed.EXCLUDED);
-                if(objectSpec.getCorrespondingClass() == AbstractHomePageDashboardService.class) {
-                    // ignore this one
-                    return true;
-                }
                 for (ObjectAction objectAction : objectActions) {
                     if(objectAction.containsFacet(HomePageFacet.class)) {
                         final String fullIdentifier = objectAction.getIdentifier().toClassAndNameIdentityString();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
index e680994..185797a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
@@ -25,8 +25,6 @@ import java.util.Map;
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 
-import com.google.common.base.Predicate;
-
 import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.applib.PersistFailedException;
 import org.apache.isis.applib.RecoverableException;
@@ -34,9 +32,6 @@ import org.apache.isis.applib.RepositoryException;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.filter.Filter;
-import org.apache.isis.applib.filter.Filters;
-import org.apache.isis.applib.query.Query;
 import org.apache.isis.applib.security.UserMemento;
 import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
 import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerComposite;
@@ -50,15 +45,12 @@ import org.apache.isis.applib.services.title.TitleService;
 import org.apache.isis.applib.services.user.UserService;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.applib.services.xactn.TransactionService;
-import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.services.container.query.QueryFindByPattern;
-import org.apache.isis.core.metamodel.services.container.query.QueryFindByTitle;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -453,138 +445,10 @@ public class DomainObjectContainerDefault
 
     //endregion
 
-    //region > allInstances, allMatches, uniqueMatch, firstMatch
-
-    @Programmatic
-    @Override
-    public <T> List<T> allInstances(final Class<T> type, long... range) {
-        return repositoryService.allInstances(type, range);
-    }
-
-    // //////////////////////////////////////////////////////////////////
-
-    @Programmatic
-    @Override
-    public <T> List<T> allMatches(final Class<T> cls, final Predicate<? super T> predicate, long... range) {
-        return repositoryService.allMatches(cls, predicate, range);
-    }
-
-    @Programmatic
-    @Deprecated
-    @Override
-    public <T> List<T> allMatches(final Class<T> cls, final Filter<? super T> filter, long... range) {
-        return allMatches(cls, Filters.asPredicate(filter), range);
-    }
-
-    @Programmatic
-    @Override
-    public <T> List<T> allMatches(final Class<T> type, final T pattern, long... range) {
-        Assert.assertTrue("pattern not compatible with type", type.isAssignableFrom(pattern.getClass()));
-        return allMatches(new QueryFindByPattern<T>(type, pattern, range));
-    }
-
-    @Programmatic
-    @Override
-    public <T> List<T> allMatches(final Class<T> type, final String title, long... range) {
-        return allMatches(new QueryFindByTitle<T>(type, title, range));
-    }
-
-    @Programmatic
-    @Override
-    public <T> List<T> allMatches(final Query<T> query) {
-        return repositoryService.allMatches(query);
-    }
-
-    // //////////////////////////////////////////////////////////////////
-
-    @Programmatic
-    @Override
-    public <T> T firstMatch(final Class<T> cls, final Predicate<T> predicate) {
-        return repositoryService.firstMatch(cls, predicate);
-    }
-
-    @Programmatic
-    @Deprecated
-    @Override
-    public <T> T firstMatch(final Class<T> cls, final Filter<T> filter) {
-        return firstMatch(cls, Filters.asPredicate(filter));
-    }
-
-    @Programmatic
-    @Override
-    public <T> T firstMatch(final Class<T> type, final T pattern) {
-        final List<T> instances = allMatches(type, pattern, 0, 1); // No need to fetch more than 1
-        return firstInstanceElseNull(instances);
-    }
-
-    @Programmatic
-    @Override
-    public <T> T firstMatch(final Class<T> type, final String title) {
-        final List<T> instances = allMatches(type, title, 0, 1); // No need to fetch more than 1
-        return firstInstanceElseNull(instances);
-    }
-
-    @Programmatic
-    @Override
-    @SuppressWarnings("unchecked")
-    public <T> T firstMatch(final Query<T> query) {
-        // NB: this impl does NOT delegate to RepositoryService, because this implementation incorrectly always performs a flush
-        // irrespective of the autoflush setting.  (The RepositoryService corrects that error).
-        flush(); // auto-flush any pending changes
-        final ObjectAdapter firstMatching = persistenceSessionServiceInternal.firstMatchingQuery(query);
-        return (T) ObjectAdapter.Util.unwrap(firstMatching);
-    }
 
     // //////////////////////////////////////////////////////////////////
 
-    @Programmatic
-    @Override
-    public <T> T uniqueMatch(final Class<T> type, final Predicate<T> predicate) {
-        return repositoryService.uniqueMatch(type, predicate);
-    }
 
-    @Programmatic
-    @Deprecated
-    @Override
-    public <T> T uniqueMatch(final Class<T> type, final Filter<T> filter) {
-        final List<T> instances = allMatches(type, filter, 0, 2); // No need to fetch more than 2.
-        if (instances.size() > 1) {
-            throw new RepositoryException("Found more than one instance of " + type + " matching filter " + filter);
-        }
-        return firstInstanceElseNull(instances);
-    }
-
-    @Programmatic
-    @Override
-    public <T> T uniqueMatch(final Class<T> type, final T pattern) {
-        final List<T> instances = allMatches(type, pattern, 0, 2); // No need to fetch more than 2.
-        if (instances.size() > 1) {
-            throw new RepositoryException("Found more that one instance of " + type + " matching pattern " + pattern);
-        }
-        return firstInstanceElseNull(instances);
-    }
-
-    @Programmatic
-    @Override
-    public <T> T uniqueMatch(final Class<T> type, final String title) {
-        final List<T> instances = allMatches(type, title, 0, 2); // No need to fetch more than 2.
-        if (instances.size() > 1) {
-            throw new RepositoryException("Found more that one instance of " + type + " with title " + title);
-        }
-        return firstInstanceElseNull(instances);
-    }
-
-    @Programmatic
-    @Override
-    public <T> T uniqueMatch(final Query<T> query) {
-        return repositoryService.uniqueMatch(query);
-    }
-
-    private static <T> T firstInstanceElseNull(final List<T> instances) {
-        return instances.size() == 0 ? null : instances.get(0);
-    }
-
-    //endregion
 
     //region > ExceptionRecognizer
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/query/QueryFindByPattern.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/query/QueryFindByPattern.java
deleted file mode 100644
index 4c2dbae..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/query/QueryFindByPattern.java
+++ /dev/null
@@ -1,57 +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.services.container.query;
-
-import java.io.Serializable;
-
-import org.apache.isis.applib.query.Query;
-import org.apache.isis.applib.query.QueryBuiltInAbstract;
-
-/**
- * Although implements {@link Query} and thus is ought to be
- * {@link Serializable}, it will be converted into a <tt>PersistenceQuery</tt>
- * in the runtime for remoting purposes and so does not need to be (and indeed
- * isn't).
- * 
- * <p>
- * See discussion in {@link QueryBuiltInAbstract} for further details.
- */
-public class QueryFindByPattern<T> extends QueryBuiltInAbstract<T> {
-
-    private static final long serialVersionUID = 1L;
-
-    private final T pattern;
-    
-    public QueryFindByPattern(final Class<T> type, final T pattern, final long ... range){
-        super(type, range);
-        this.pattern = pattern;
-    }
-
-
-    public T getPattern() {
-        return pattern;
-    }
-
-    @Override
-    public String getDescription() {
-        return getResultTypeName() + " (matching pattern)";
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/query/QueryFindByTitle.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/query/QueryFindByTitle.java
deleted file mode 100644
index ba48776..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/query/QueryFindByTitle.java
+++ /dev/null
@@ -1,56 +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.services.container.query;
-
-import java.io.Serializable;
-import java.text.MessageFormat;
-
-import org.apache.isis.applib.query.Query;
-import org.apache.isis.applib.query.QueryBuiltInAbstract;
-
-/**
- * Although implements {@link Query} and thus is intended to be (and indeed is)
- * {@link Serializable}, it will be converted into a <tt>PersistenceQuery</tt>
- * in the runtime for remoting purposes.
- * 
- * <p>
- * See discussion in {@link QueryBuiltInAbstract} for further details.
- */
-public class QueryFindByTitle<T> extends QueryBuiltInAbstract<T> {
-
-    private static final long serialVersionUID = 1L;
-
-    private final String title;
-
-    public QueryFindByTitle(final Class<T> type, final String title, final long ... range) {
-        super(type, range);
-        this.title = title;
-    }
-    
-    public String getTitle() {
-        return title;
-    }
-
-    @Override
-    public String getDescription() {
-        return MessageFormat.format("{0} (matching title: '{1}')", getResultTypeName(), getTitle());
-    }
-
-}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/DomainObjectWithMustSatisfyAnnotations.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/DomainObjectWithMustSatisfyAnnotations.java
index 944d06d..0c8b2d8 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/DomainObjectWithMustSatisfyAnnotations.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/DomainObjectWithMustSatisfyAnnotations.java
@@ -19,35 +19,30 @@
 
 package org.apache.isis.core.metamodel.facets.propparam.specification;
 
-import org.apache.isis.applib.AbstractDomainObject;
 import org.apache.isis.applib.annotation.MustSatisfy;
 
-public class DomainObjectWithMustSatisfyAnnotations extends AbstractDomainObject {
+public class DomainObjectWithMustSatisfyAnnotations {
 
     private String firstName;
 
     @MustSatisfy(SpecificationAlwaysSatisfied.class)
     public String getFirstName() {
-        resolve(firstName);
         return firstName;
     }
 
     public void setFirstName(final String firstName) {
         this.firstName = firstName;
-        objectChanged();
     }
 
     private String lastName;
 
     @MustSatisfy(SpecificationRequiresFirstLetterToBeUpperCase.class)
     public String getLastName() {
-        resolve(lastName);
         return lastName;
     }
 
     public void setLastName(final String lastName) {
         this.lastName = lastName;
-        objectChanged();
     }
 
     public void changeLastName(@MustSatisfy(SpecificationRequiresFirstLetterToBeUpperCase.class) final String lastName) {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/DomainObjectWithoutMustSatisfyAnnotations.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/DomainObjectWithoutMustSatisfyAnnotations.java
index 76c2c28..c8a6803 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/DomainObjectWithoutMustSatisfyAnnotations.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/specification/DomainObjectWithoutMustSatisfyAnnotations.java
@@ -19,32 +19,26 @@
 
 package org.apache.isis.core.metamodel.facets.propparam.specification;
 
-import org.apache.isis.applib.AbstractDomainObject;
-
-public class DomainObjectWithoutMustSatisfyAnnotations extends AbstractDomainObject {
+public class DomainObjectWithoutMustSatisfyAnnotations {
 
     private String firstName;
 
     public String getFirstName() {
-        resolve(firstName);
         return firstName;
     }
 
     public void setFirstName(final String firstName) {
         this.firstName = firstName;
-        objectChanged();
     }
 
     private String lastName;
 
     public String getLastName() {
-        resolve(lastName);
         return lastName;
     }
 
     public void setLastName(final String lastName) {
         this.lastName = lastName;
-        objectChanged();
     }
 
     public void changeLastName(final String lastName) {
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryAbstract.java
index fbf6591..06532b7 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryAbstract.java
@@ -19,16 +19,10 @@
 
 package org.apache.isis.core.runtime.persistence.query;
 
-import java.io.IOException;
-
-import org.apache.isis.core.commons.encoding.DataInputExtended;
-import org.apache.isis.core.commons.encoding.DataOutputExtended;
-import org.apache.isis.core.commons.encoding.Encodable;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.persistence.PersistenceQuery;
 
-public abstract class PersistenceQueryAbstract implements PersistenceQuery, Encodable {
+public abstract class PersistenceQueryAbstract implements PersistenceQuery {
 
     //region > constructor, fields
 
@@ -36,13 +30,10 @@ public abstract class PersistenceQueryAbstract implements PersistenceQuery, Enco
     protected final long count;
     
     private final ObjectSpecification specification;
-    private final SpecificationLoader specificationLoader;
 
     public PersistenceQueryAbstract(
             final ObjectSpecification specification,
-            final SpecificationLoader specificationLoader,
             final long... range) {
-        this.specificationLoader = specificationLoader;
         this.start = range.length > 0 ? range[0]:0;
         this.count = range.length > 1 ? range[1]:0;
         
@@ -50,27 +41,6 @@ public abstract class PersistenceQueryAbstract implements PersistenceQuery, Enco
         // nothing to do
     }
 
-    protected PersistenceQueryAbstract(
-            final DataInputExtended input,
-            final SpecificationLoader specificationLoader,
-            final long... range) throws IOException {
-
-        this.specificationLoader = specificationLoader;
-        final String specName = input.readUTF();
-        this.start = range.length > 0 ? range[0]:0;
-        this.count = range.length > 1 ? range[1]:0;
-        
-        specification = specificationLoader.loadSpecification(specName);
-        // nothing to do
-    }
-
-    //endregion
-
-    @Override
-    public void encode(final DataOutputExtended output) throws IOException {
-        output.writeUTF(specification.getFullIdentifier());
-    }
-
     /**
      * The start index into the set table
      * @return
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryBuiltIn.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryBuiltIn.java
deleted file mode 100644
index aec8df8..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryBuiltIn.java
+++ /dev/null
@@ -1,45 +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.runtime.persistence.query;
-
-import org.apache.isis.applib.DomainObjectContainer;
-import org.apache.isis.applib.filter.Filter;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.runtime.system.persistence.PersistenceQuery;
-
-public interface PersistenceQueryBuiltIn extends PersistenceQuery {
-
-    /**
-     * The built-in queries iterate over all instances.
-     * 
-     * <p>
-     * This is similar to the {@link Filter} interface in the applib, except the
-     * filtering is done within the object store as opposed to be the
-     * {@link DomainObjectContainer}.
-     * 
-     * <p>
-     * Object store implementations do not necessarily need to rely on this
-     * method. For example, an RDBMS-based implementation may use an alternative
-     * mechanism to determine the matching results, for example using a
-     * <tt>WHERE</tt> clause in some SQL query.
-     * 
-     */
-    public boolean matches(final ObjectAdapter object);
-}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryBuiltInAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryBuiltInAbstract.java
deleted file mode 100644
index 7a09599..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryBuiltInAbstract.java
+++ /dev/null
@@ -1,74 +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.runtime.persistence.query;
-
-import java.io.IOException;
-
-import org.apache.isis.applib.query.Query;
-import org.apache.isis.applib.query.QueryBuiltInAbstract;
-import org.apache.isis.core.commons.encoding.DataInputExtended;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.runtime.system.persistence.PersistenceQuery;
-
-/**
- * Corresponds to {@link QueryBuiltInAbstract}.
- *
- * <p>
- * REVIEW: now that we've dropped remoting, could we get rid of the {@link PersistenceQuery} hierarchy
- * classes and just use the applib {@link Query} throughout?
- */
-public abstract class PersistenceQueryBuiltInAbstract extends PersistenceQueryAbstract implements PersistenceQueryBuiltIn {
-
-    protected long index;
-    protected long countedSoFar;
-
-    public PersistenceQueryBuiltInAbstract(
-            final ObjectSpecification specification,
-            final SpecificationLoader specificationLoader,
-            final long... range) {
-        super(specification, specificationLoader, range);
-    }
-
-    public PersistenceQueryBuiltInAbstract(
-            final DataInputExtended input,
-            final SpecificationLoader specificationLoader,
-            final long... range) throws IOException {
-        super(input, specificationLoader, range);
-    }
-
-    protected boolean matchesRange(final boolean ifMatches) {
-        if (!ifMatches){
-            return false;
-        }
-        
-        if (getCount() == 0 && getStart() == 0){
-            return true;
-        }
-        if (index++ < start){
-            return false;
-        }
-        if (countedSoFar++ < count){
-            return true;
-        }
-        return false;
-    }
-    
-}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindAllInstances.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindAllInstances.java
index e65cd1c..55d8ca7 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindAllInstances.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindAllInstances.java
@@ -23,31 +23,38 @@ import org.apache.isis.applib.query.QueryFindAllInstances;
 import org.apache.isis.core.commons.util.ToString;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**
  * Corresponds to {@link QueryFindAllInstances}
  */
-public class PersistenceQueryFindAllInstances extends PersistenceQueryBuiltInAbstract {
+public class PersistenceQueryFindAllInstances extends PersistenceQueryAbstract  {
+
+    protected long index;
+    protected long countedSoFar;
 
     public PersistenceQueryFindAllInstances(
             final ObjectSpecification specification,
-            final SpecificationLoader specificationLoader,
             final long... range) {
-        super(specification, specificationLoader, range);
+        super(specification, range);
         index=0;
         countedSoFar=0;
     }
-    
 
-    /**
-     * Returns true so it matches all instances.
-     */
-    @Override
+
     public boolean matches(final ObjectAdapter object) {
-        return matchesRange(true);
+
+        if (getCount() == 0 && getStart() == 0){
+            return true;
+        }
+        if (index++ < start){
+            return false;
+        }
+        if (countedSoFar++ < count){
+            return true;
+        }
+        return false;
     }
-    
+
     @Override
     public String toString() {
         final ToString str = ToString.createAnonymous(this);
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindByPattern.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindByPattern.java
deleted file mode 100644
index f3c1aef..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindByPattern.java
+++ /dev/null
@@ -1,117 +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.runtime.persistence.query;
-
-import java.util.List;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.services.container.query.QueryFindByPattern;
-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.ObjectAssociation;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-
-/**
- * Corresponds to {@link QueryFindByPattern}.
- */
-public class PersistenceQueryFindByPattern extends PersistenceQueryBuiltInAbstract {
-    private final ObjectAdapter pattern;
-
-    public ObjectAdapter getPattern() {
-        return pattern;
-    }
-
-    public PersistenceQueryFindByPattern(
-            final ObjectSpecification specification,
-            final ObjectAdapter pattern,
-            final SpecificationLoader specificationLoader,
-            final long... range) {
-        super(specification, specificationLoader, range);
-        this.pattern = pattern;
-    }
-
-    @Override
-    public boolean matches(final ObjectAdapter object) {
-        final ObjectSpecification requiredSpec = pattern.getSpecification();
-        final ObjectSpecification objectSpec = object.getSpecification();
-        return objectSpec.equals(requiredSpec) && matchesPattern(pattern, object);
-    }
-
-    private boolean matchesPattern(final ObjectAdapter pattern, final ObjectAdapter instance) {
-        final ObjectAdapter object = instance;
-        final ObjectSpecification nc = object.getSpecification();
-        final List<ObjectAssociation> fields = nc.getAssociations(Contributed.EXCLUDED);
-
-        for (int f = 0; f < fields.size(); f++) {
-            final ObjectAssociation fld = fields.get(f);
-
-            // are ignoring internal collections - these probably should be
-            // considered
-            
-            // ignore non-persistent fields - there is no persisted field to
-            // compare against
-            if (fld.isNotPersisted()) {
-                continue;
-            }
-            if (!fld.isOneToOneAssociation()) {
-                continue;
-            } 
-
-            // if pattern contains empty value then it matches anything
-            if (fld.isEmpty(pattern, InteractionInitiatedBy.FRAMEWORK)) {
-                continue;
-            }
-
-            // find the object to match against, if any
-            final ObjectAdapter reqd = fld.get(pattern, InteractionInitiatedBy.FRAMEWORK);
-            if (reqd == null) {
-                continue;
-            }
-
-            // find the object; it's a bust if nothing
-            final ObjectAdapter search = fld.get(object, InteractionInitiatedBy.FRAMEWORK);
-            if (search == null) {
-                return false;
-            }
-
-            if (fld.getSpecification().isValue()) {
-                // compare values directly
-                if (!reqd.getObject().equals(search.getObject())) {
-                    return false;
-                }
-                
-            } else {
-
-                // compare the titles
-                final String r = reqd.titleString(null).toLowerCase();
-                final String s = search.titleString(null).toLowerCase();
-
-                // if the pattern does not occur in the object, then it's a bust
-                if (s.indexOf(r) == -1) {
-                    return false;
-                }
-            }
-        }
-
-        return matchesRange(true);
-    }
-
-}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindByTitle.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindByTitle.java
deleted file mode 100644
index 6da48e9..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindByTitle.java
+++ /dev/null
@@ -1,66 +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.runtime.persistence.query;
-
-import org.apache.isis.core.commons.util.ToString;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.services.container.query.QueryFindByTitle;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-
-/**
- * Corresponds to {@link QueryFindByTitle}.
- */
-public class PersistenceQueryFindByTitle extends PersistenceQueryBuiltInAbstract {
-    private final String title;
-
-    public PersistenceQueryFindByTitle(
-            final ObjectSpecification specification,
-            final String title,
-            final SpecificationLoader specificationLoader,
-            final long... range) {
-        super(specification, specificationLoader, range);
-        this.title = title == null ? "" : title.toLowerCase();
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    @Override
-    public boolean matches(final ObjectAdapter object) {
-        final String titleString = object.titleString().toLowerCase();
-        return matchesRange(matches(titleString));
-    }
-
-    public boolean matches(final String titleString) {
-        final String objectTitle = titleString.toLowerCase();
-        return objectTitle.indexOf(title) >= 0;
-    }
-
-    @Override
-    public String toString() {
-        final ToString str = ToString.createAnonymous(this);
-        str.append("spec", getSpecification().getShortIdentifier());
-        str.append("title", title);
-        return str.toString();
-    }
-
-}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindUsingApplibQueryDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindUsingApplibQueryDefault.java
index bf54735..879181d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindUsingApplibQueryDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindUsingApplibQueryDefault.java
@@ -19,14 +19,10 @@
 
 package org.apache.isis.core.runtime.persistence.query;
 
-import java.io.IOException;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.isis.applib.query.Query;
-import org.apache.isis.core.commons.encoding.DataInputExtended;
-import org.apache.isis.core.commons.encoding.DataOutputExtended;
 import org.apache.isis.core.commons.util.ToString;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
@@ -49,42 +45,13 @@ public class PersistenceQueryFindUsingApplibQueryDefault extends PersistenceQuer
             final QueryCardinality cardinality,
             final SpecificationLoader specificationLoader,
             final long... range) {
-        super(specification, specificationLoader, range);
+        super(specification, range);
         this.queryName = queryName;
         this.cardinality = cardinality;
         this.argumentsAdaptersByParameterName = argumentsAdaptersByParameterName;
-        initialized();
     }
 
-    public PersistenceQueryFindUsingApplibQueryDefault(
-            final DataInputExtended input,
-            final SpecificationLoader specificationLoader,
-            final long... range) throws IOException {
-        super(input, specificationLoader, range);
-        this.queryName = input.readUTF();
-        this.cardinality = QueryCardinality.valueOf(input.readUTF());
-        // TODO: need to read from input
-        this.argumentsAdaptersByParameterName = new HashMap<>();
-        initialized();
-    }
-
-    @Override
-    public void encode(final DataOutputExtended output) throws IOException {
-        super.encode(output);
-        output.writeUTF(queryName);
-        output.writeUTF(cardinality.name());
-        // TODO: need to write to output
-        // ... this.argumentsAdaptersByParameterName....
-
-    }
-
-    private void initialized() {
-        // nothing to do
-    }
 
-    // ///////////////////////////////////////////////////////
-    //
-    // ///////////////////////////////////////////////////////
 
     public String getQueryName() {
         return queryName;
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindUsingApplibQuerySerializable.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindUsingApplibQuerySerializable.java
deleted file mode 100644
index 4037df7..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/query/PersistenceQueryFindUsingApplibQuerySerializable.java
+++ /dev/null
@@ -1,89 +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.runtime.persistence.query;
-
-import java.io.IOException;
-
-import org.apache.isis.applib.query.Query;
-import org.apache.isis.core.commons.encoding.DataInputExtended;
-import org.apache.isis.core.commons.encoding.DataOutputExtended;
-import org.apache.isis.core.commons.util.ToString;
-import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-
-/**
- * Corresponds to an object-store specific implementation of {@link Query}.
- */
-public class PersistenceQueryFindUsingApplibQuerySerializable extends PersistenceQueryAbstract {
-
-    private final Query<?> query;
-    private final QueryCardinality cardinality;
-
-    public PersistenceQueryFindUsingApplibQuerySerializable(
-            final ObjectSpecification specification,
-            final Query<?> query,
-            final QueryCardinality cardinality,
-            final SpecificationLoader specificationLoader) {
-        super(specification, specificationLoader, query.getStart(), query.getCount());
-        this.query = query;
-        this.cardinality = cardinality;
-        initialized();
-    }
-
-    public PersistenceQueryFindUsingApplibQuerySerializable(
-            final DataInputExtended input,
-            final SpecificationLoader specificationLoader,
-            final long... range) throws IOException {
-        super(input, specificationLoader, range);
-        this.query = input.readSerializable(Query.class);
-        this.cardinality = QueryCardinality.valueOf(input.readUTF());
-        initialized();
-    }
-
-    @Override
-    public void encode(final DataOutputExtended output) throws IOException {
-        super.encode(output);
-        output.writeSerializable(query);
-        output.writeUTF(cardinality.name());
-    }
-
-    private void initialized() {
-        // nothing to do
-    }
-
-    // ///////////////////////////////////////////////////////
-
-    public Query getApplibQuery() {
-        return query;
-    }
-
-    public QueryCardinality getCardinality() {
-        return cardinality;
-    }
-
-    @Override
-    public String toString() {
-        final ToString str = ToString.createAnonymous(this);
-        str.append("spec", getSpecification().getShortIdentifier());
-        str.append("query", query.getDescription());
-        return str.toString();
-    }
-}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceQueryFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceQueryFactory.java
index f8aa3b3..f784246 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceQueryFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceQueryFactory.java
@@ -28,8 +28,6 @@ import org.apache.isis.applib.query.QueryFindAllInstances;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
-import org.apache.isis.core.metamodel.services.container.query.QueryFindByPattern;
-import org.apache.isis.core.metamodel.services.container.query.QueryFindByTitle;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.query.*;
@@ -59,28 +57,17 @@ public class PersistenceQueryFactory {
         final ObjectSpecification noSpec = specFor(query);
         if (query instanceof QueryFindAllInstances) {
             final QueryFindAllInstances<?> queryFindAllInstances = (QueryFindAllInstances<?>) query;
-            return new PersistenceQueryFindAllInstances(noSpec, specificationLoader, queryFindAllInstances.getStart(), queryFindAllInstances.getCount());
-        }
-        if (query instanceof QueryFindByTitle) {
-            final QueryFindByTitle<?> queryByTitle = (QueryFindByTitle<?>) query;
-            final String title = queryByTitle.getTitle();
-            return new PersistenceQueryFindByTitle(noSpec, title, specificationLoader, queryByTitle.getStart(), queryByTitle.getCount());
-        }
-        if (query instanceof QueryFindByPattern) {
-            final QueryFindByPattern<?> queryByPattern = (QueryFindByPattern<?>) query;
-            final Object pattern = queryByPattern.getPattern();
-            final ObjectAdapter patternAdapter = adapterManager.adapterFor(pattern);
-            return new PersistenceQueryFindByPattern(noSpec, patternAdapter, specificationLoader, queryByPattern.getStart(), queryByPattern.getCount());
-        }
-        if (query instanceof QueryDefault) {
+            return new PersistenceQueryFindAllInstances(noSpec, queryFindAllInstances.getStart(), queryFindAllInstances.getCount());
+
+        } else {
+            // query instanceof QueryDefault
+
             final QueryDefault<?> queryDefault = (QueryDefault<?>) query;
             final String queryName = queryDefault.getQueryName();
             final Map<String, ObjectAdapter> argumentsAdaptersByParameterName = wrap(queryDefault.getArgumentsByParameterName());
             return new PersistenceQueryFindUsingApplibQueryDefault(noSpec, queryName, argumentsAdaptersByParameterName, cardinality,
                     specificationLoader, queryDefault.getStart(), queryDefault.getCount());
         }
-        // fallback; generic serializable applib query.
-        return new PersistenceQueryFindUsingApplibQuerySerializable(noSpec, query, cardinality, specificationLoader);
     }
 
     /**
diff --git a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/dom/employees/Employee.java b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/dom/employees/Employee.java
index 8929b09..0ad0afe 100644
--- a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/dom/employees/Employee.java
+++ b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/dom/employees/Employee.java
@@ -19,19 +19,16 @@
 
 package org.apache.isis.progmodel.wrapper.dom.employees;
 
-import org.apache.isis.applib.AbstractDomainObject;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.progmodel.wrapper.dom.claims.Approver;
 import org.apache.isis.progmodel.wrapper.dom.claims.Claimant;
 
-public class Employee extends AbstractDomainObject implements Claimant, Approver {
+public class Employee implements Claimant, Approver {
 
-    // {{ Title
     public String title() {
         return getName();
     }
 
-    // }}
 
     // {{ Name
     private String name;
diff --git a/todo-deprecation-list.txt b/todo-deprecation-list.txt
index 91079c0..c583599 100644
--- a/todo-deprecation-list.txt
+++ b/todo-deprecation-list.txt
@@ -1,11 +1,9 @@
 
 TO REMOVE:
 
+
 org.apache.isis.applib
 
-    AbstractContainedObject.java - entire class
-    AbstractDomainObject.java  - entire class
-    AbstractFactoryAndRepository.java  - entire class
 
     DomainObjectContainer.java  - entire class
 
@@ -293,9 +291,16 @@ DONE:
 
 
 
-
 org.apache.isis.applib
 
+    AbstractContainedObject.java - entire class
+    AbstractDomainObject.java  - entire class
+    AbstractFactoryAndRepository.java  - entire class
+
+    AbstractHomePageDashboardService - entire class
+
+
+
     IsisApplibModule.java
         ActionDomainEvent - the N-arg constructors (just use the 0-arg ones)
         CollectionDomainEvent - the N arg constructors (just use the 0-arg ones)

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