You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2018/02/19 16:03:16 UTC

[isis] branch ISIS-1779-jax-rs-2 updated (72f3452 -> 1c9e21f)

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

ahuber pushed a change to branch ISIS-1779-jax-rs-2
in repository https://gitbox.apache.org/repos/asf/isis.git.


 discard 72f3452  ISIS-1779 Transition to JAX-RS 2.0 Client API removed dependency on deprecated resteasy client api
 discard 3a07319  ISIS-1811: updates versions to 2.0.0-M2-SNAPSHOT
 discard 6551c42  Merge branch 'ISIS-1744-update-to-dn-515' into dev/2.0.0-M2
 discard df03513  ISIS-1744: removes work-around code for prior to DN 5.1.5
 discard 66c4a7d  ISIS-1744: updates to DN 5.1.5
 discard 44429ea  ISIS-1767: fixes dependency convergence issue with com.sun.mail
 discard fe41a1d  Merge branch 'ISIS-1767-jee-7' into dev/2.0.0-M2
 discard 4b89ae7  ISIS-1756 remove reflective access to DN's EnhancementHelper since we've got a dedicated method instead
 discard b72a01c  ISIS-1756 on shutdown purge any state associated with the current web-app classloader
 discard 14f99d6  ISIS-1755 veto ExceptionRecognizer on CDI scan
 discard 2e28d44  ISIS-1754 proper DN class-loading
 discard a76c441  ISIS-1775 added license
 discard ae12a79  ISIS-1775 Honor web-app's context path when configuring swagger.
 discard a623bfd  ISIS-1755 TomEE requires Service Providers to be public classes
 discard 09ff21f  ISIS-1754 context aware class-loading for Isis
 discard b46ddfc  ISIS-1756 utilize IsisWicketApplication's life-cycle instead of providing a life-cycle CDI Bean
 discard 591a000  ISIS-1756 prevent SQLException on schema creation if config is missing
 discard d0272e1  ISIS-1756 - fix typo
 discard 599858a  ISIS-1755 JEE 7+ allow coexistence of CDI and Isis' ServiceInjector
 discard 70f923d  ISIS-1756 JEE 7+ Isis App life-cycling
 discard edc2491  ISIS-1767 JEE 7+ added dependency on javaee-api to core/runtime
 discard 45ec904  Merge branch 'dev/2.0.0/ISIS-1276-dn-5-1' into dev/2.0.0-M2
 discard 750157a  ISIS-1728: uses typesafe queries for helloworld
 discard d92e8e6  ISIS-1726: generalizes the logic that searches for @PersistenceCapable entities, to also take into account meta-annotations.
 discard ae46188  ISIS-1727: uses lambda in IsisSessionFactoryBuilder
 discard ed89008  ISIS-1725: requires that an AppManifest is supplied (used to obtain list of entities).
 discard 6de02b1  ISIS-1724: removes the deprecated IsisJdoSupport in the jdo applib
 discard fe5a844  ISIS-1723: removes jdo applib's Auditable interface and @Auditable annotation
 discard 51feff4  ISIS-1276: fixes algorithm for lookup of datastore id's, at least
 discard 7ef159c  ISIS-1276: fixes compile issues in metamodel and runtime
 discard 9fde3bd  ISIS-1276: updates applib, replaces references of TypesafeQuery to be instead JDOQLTypedQuery
 discard 89e40d5  ISIS-1276: updates core to compile under JDK 1.8 only
 discard 1a43c29  ISIS-1276: updates references for datanucleus.
     add 3547e93  ISIS-1821 fix case of empty annot. list not handled correctly
     add a0ac44c  ISIS-1743 fa-Icon mapping for mixins using '$$' method names
     add a1b99ff  ISIS-1743: also supports mixins specified using @Mixin(method="...") eg "act" or "coll" as well as the default "$$"
     add b96383d  ISIS-1743: removes some unused imports from HelloWorldObject
     add a581939  Merge branch 'ISIS-1743'
     add 8ee5ecc  ISIS-1742: fixes bug that mixins not contributed by default.
     add dff3bb7  ISIS-1814: adds support for @XmlTransient when validating for presence of @XmlJavaTypeAdapter on a LocalDate
     add 0a7c4ca  ISIS-1813: bumps pom versions to 1.16.1-SNAPSHOT
     add eb9b70d  ISIS-1812: implements getOnType for OTOA on mixed in, avoiding NPE when attempt to render such a property in a table.
     add 4445703  ISIS-1808: extends Ticket (response of ErrorReportingService) to allow a "kitten URL" to optionally be returned.
     add 92ed023  Merge branch 'maint-1.16.1'
     add f6aa70c  ISIS-1743 fa-Icon mapping for mixins using '$$' method names
     add df1e555  ISIS-1743: also supports mixins specified using @Mixin(method="...") eg "act" or "coll" as well as the default "$$"
     add 5badcf2  ISIS-1743: removes some unused imports from HelloWorldObject
     add 5c72372  Merge branch 'ISIS-1743' into maint-1.16.1
     add 212b089  Merge branch 'maint-1.16.1'
     add 4c55ccf  ISIS-1743: fixes backport issue
     add e21fef1  Merge branch 'ISIS-1743' into maint-1.16.1
     add c670cf4  Merge branch 'maint-1.16.1'  (but reverts the change made while backporting of ISIS-1743)
     add 2698c6a  ISIS-1830 remove JDK9 internal API usages of c.s.o.a.x.internal.jaxp.datatype.XMLGregorianCalendarImpl
     add 0b1a249  ISIS-1830 improve code readability, document the intent
     add 82d1b13  ISIS-1827 remove dependencies on guava in isis-core-schema
     add d7f4db2  ISIS-1827 relaxed guava dependency by removal in core's root pom.xml
     add 7c04b43  ISIS-1827 minor refactoring: guava idioms replaced by java 8
     add 194024f  ISIS-1827 REVERT: relaxed guava dependency by removal in core's root pom.xml
     add ca84b34  ISIS-1827 add null checks to fix test-case Roundtrip#happyCase
     add 7abbfa3  ISIS-1842 add generic types where missing + suppress warnings
     add 9e6a9e6  ISIS-1841 new utility: Casts, allows explicit unchecked casts
     add 44d6331  ISIS-1842 add missing generic type arguments + add missing test cases
     add 25a72aa  ISIS-1844 ISIS-1844 further resolve raw type warnings + make some unchecked casts explicit
     add b304338  ISIS-1841 mark o.a.i.applib.layout.Util deprecated, since not used
     add b240cc3  ISIS-1844 make any unchecked casts explicit
     add 456901d  ISIS-1844 make any remaining unchecked casts explicit
     add de41037  ISIS-1844 further unchecked casts made explicit
     add a56f19d  ISIS-1848: ensures that FreeStandingList does not incorrectly return java.lang.Object's specId, and adds new metamodel validator to detect this situation in future.
     add 128e144  ISIS-1837: adds metamodel validator to check "module extent".
     add b6bb1c7  Merge branch 'ISIS-1848' into maint-1.16.1
     add 33bd9fd  ISIS-1851: refine the algorithm for dynamically hiding property groups with 'nothing' in them
     add 1f9dba5  ISIS-1825: uses thread local to pass rendering context up to the scalar panel so that it, in turn, can correctly report on where it is being rendered.
     add 00fe078  ISIS-1569: adds CommandService2 as an extension
     add e866c71  ISIS-1569: by way of tidy-up, just removes unused injected ClockService from CommandServiceDefault
     add f2da845  ISIS-1831: adds a guard in exception handler of a RuntimeException (REST API) to avoid throwing an NPE there.
     add 2e4e9b9  ISIS-1569: removes CommandService2, not required after all.
     add 27156fe  ISIS-1569: extends cmd-1.3.xsd to introduce a new CommandsDto (note the plural) as a sequence of CommandDto's
     add 099bbd6  ISIS-1569: adds a convenience Util class for ContentMappingService to remove boilerplate in subclass implementations (parsing the acceptable media types).
     add e1283fa  ISIS-1569: defines CommandWithDto as an optional interface for Command SPI implementations to have their Command's implement (translatable into a CommandDto) along with out-of-the-box ContentMapingService to convert these into CommandsDto structure.
     add da6ece6  ISIS-1569: extends cmd and ixn schemas to allow userData to be specified, and moves the new CommandsDto into the new version of cmd.xsd also.
     add a5eb0d8  ISIS-1569: adds guard to ensure that BackgroundCommand#startedAt is always populated.
     add dda922c  ISIS-1835: catches any type of exception in order to report a problem (an NPE was being thrown if the file wasn't present, rather than an IOException)
     add 0c2a2a0  ISIS-1569: adds in 'REPLAYABLE' as a new Command#ExecuteIn
     add ad841f9  ISIS-1836: removes chance of an NPE in the RO mapper for an exception (which was in turn resulting in a 500 rather than 422 when invoked an action with an incorrect parameter argument).
     add 001ed09  ISIS-1569: undeprecates Command#getStartedAt and Command#getCompletedAt
     add 24dcfa5  ISIS-1569: adds timings to CommandsDto, so less verbose and easier to read XML
     add 9020b72  ISIS-1569: updates to XSDs, make sure the version defaultsb are correct.
     add 50fa124  ISIS-1569: removes unused and accidentally committed element in cmd-1.4.xsd
     add a868fa9  ISIS-1569: updates XSDs for docs, and adds in the historical previous versions also.
     add 82ef3b8  ISIS-1569: updates docs for CommandService and cmd schema
     add 1cdd64a  ISIS-1569: updates docs for ContentMappingService, default implementations for Command(s)Dto
     add b56a68e  ISIS-1853: extends CommandDtoUtils to support colleciton args, and similarly AbstractIsisSessionTemplate.
     add 6e96761  ISIS-1569: introduces a new ExecuteIn#EXCLUDED
     add 2cf72b4  ISIS-1569: extends BackgroundCommandExecution so that stops execution of replayable commands once at least one has failed.
     add f504860  ISIS-1569: fixes logic for background command execution, to stop replaying if hit exception
     add 48ea481  ISIS-1569: adds support for @Action(commandWithDtoProcessor=...) and @Property(commandWithDtoProcessor=....)
     add dfe09c4  ISIS-1569: various fixes for ContentMappingService (while manual testing of replication)
     add 0329099  ISIS-1569: simplies BackgroundCommandExecution so can be subclassed with different "OnExecutionPolicy" modes
     add ce192de  ISIS-1569: renames MetaModelService5 API from commandDtoProcessorFor() to commandWithDtoProcessorFor()
     add 19dfb53  ISIS-1569: fixes issue to fail-fast.
     add 20458aa  ISIS-1822: fixes NPE if encounters non-existent action in menubars.layout.xml
     add 85ef278  ISIS-1569: also catches exception when attempt to commit.
     add 9996eab  ISIS-1569: renames CommandWithDtoProcessor to CommandDtoProcessor ...
     add 344dcba  Merge branch 'ISIS-1569-replay-commands' into maint-1.16.1
     add a821fa2  ISIS-1569: removes usage of deprecated annotations in Command iterface
     add 6330ef2  ISIS-1826 and ISIS-1856: adds Automatic-Module-Name to manifest, adds git SCM-Revision to manifest, also generates git.properties and adds to jar
     add 6c200e3  ISIS-1856: updates incorrect <scm> in (parent) core's pom.xml
     add 6889738  ISIS-1826 and ISIS-1856: changes property names a little
     add ee78604  ISIS-1569: extends BackgroundCommandExecution to allow commands to be run via the sudoservice (switching user)
     add c430881  ISIS-1849 - fixes documentation issues
     add aee0b0d  ISIS-1833: reinstates mandatory marker for parameters
     add 6588395  ISIS-1857: adds div class=clearfix to force the help block
     add a2df1fd  ISIS-1813: adds -parameters' compiler argument for both helloworld and simpleapp example applications
     add cd93ad7  ISIS-1832: adds support for UUID panels.
     add 4c9265d  ISIS-1569: adds 'timestamp' to cmd.xsd
     add d27ccd4  ISIS-1569: dynamically updates CommandDto.timestamp, and allows ticking clock to be set using a timestamp.  Also...
     add c0e57b9  ISIS-1569: makes determineIfContinue overridable in BackgroundCommandExecution
     add f0a952d  ISIS-1569: continues if replicated an exception; utility methods for DTOs
     add c4c9861  ISIS-1858
     add 4fdcc8f  ISIS-1858: converts logging calls to use slf4j placeholders rather than string concatenation.
     add a4fc90b  ISIS-1569: improves log message and javadoc in BackgroundCommandExecution, is all.
     add 665e023  ISIS-1826: renames property, removes git.commit.id unused prop
     add cd65d49  ISIS-1854: uses the name taken from the layout.xml.
     add f8c35e5  ISIS-1834: relaxes validation so that @PersistenceCapable can be applied to interfaces.
     add 7585283  ISIS-1569: refactors for different implementation of replay
     add 8540001  ISIS-1569: CommandExecutionAbstract delegates to new CommandExecutorService.  Also
     add 6878407  ISIS-1822: further NPE fix.
     add 25a4923  ISIS-1589: adds support for Xxx.layout.fallback.xml
     add 8e5c792  ISIS-1569: adds more info to logging statement of CommandExecutorServiceDefault (xactnId and timestamp)
     add a026c0b  ISIS-1569 - fixes bug in ticking clock ... not setting t0
     add a0c4bb7  ISIS-1569: moves CommandExecutorService API into applib.
     add 36b96fe  ISIS-1569: dtoProcessor implies persistence of commands.
     add 0b249c8  ISIS-1569: ensures that transaction CommandExecutorService is run in a xactn with the command to be executed as the context of that xactn.
     add eb27901  ISIS-1569: adds documentation for this service
     add c24306a  ISIS-1861: adds 'collapseIfOne' atribute for TabGroups
     add aea06a1  ISIS-1820: fixes BDD tests in simpleapp example application
     add 3263275  ISIS-1589: adds documentation for .layout.fallback.xml
     add 7c495c7  ISIS-1585: adds @Action(associateWith=...)
     add 26e84ce  ISIS-1585: adds support for checkboxes in parented collections, to act as the defaults for any associated actions.
     add 865f6ab  ISIS-1585: defines a new PostProcessor API, similar to FacetFactory.
     add 8de9382  ISIS-1832: fixes uuid panel alignment (left aligned, not right)
     add ebae933  ISIS-1585: extends to support derivation of choices for both scalar and collection parameters.
     add cb59722  ISIS-1813: fixes CSS for action drop-down alignment
     add 655dd28  ISIS-1585: fixes for mixins, and not honouring associateWith
     add 8c440ba  ISIS-1569: fixes NPE for downloading command DTOs if xactn can't be found
     add c2026ee  ISIS-1569: suppresses possible concurrency exceptions when auditing pre-commit.
     add 0b8d151  ISIS-1813: fixes documentation links
     add 94c8429  ISIS-1813: adds outline release notes for 1.16.1
     add edc6651  ISIS-1813: fixes root index.html
     add 6ed8ec4  ISIS-1759: avoids calls to getter if property is hidden.
     add 6eb767f  ISIS-1829: adds condition for a builder that inherits from AppManifestAbstract2.Builder
     add b892b97  ISIS-1829: extracts methods to make flow easier to follow
     add 8c2c403  ISIS-1847: adds missing breaks in veto handling of AbstractDomainEvent
     add 93c1897  ISIS-1813: updates document template to include version
     add 39524c7  ISIS-1813: removes the petclinic tutorial, since out of date
     add 6d682f6  ISIS-1813: adds missing copyright notices
     add a47243f  ISIS-1859: adds a hint-n-tip doc
     add 392d475  ISIS-1860: improves docs regarding CommandReification
     add 97013ec  Merge branch 'maint-1.16.1' into master
     add 1b19e6e  ISIS-1810: fixes compile issues arising from merge
     add e29b26f  ISIS-1852 allow local thread variable propagation to any child threads
     add 3706fa9  ISIS-1852 testcase backported to JDK 7
     add 0d749ce  ISIS-1852: fixes unit test
     add c149771  Merge branch 'ISIS-1852_parallel_stream_patch'
     add b958267  ISIS-1846 beginning with consolidation of internal utilities
     add c16086d  Merge branch 'master' into ISIS-1846_internal_utils
     add c407760  ISIS-1846 consolidate utilities
     add 3ccfd33  ISIS-1846 deduplicate uses of asNaturalName2 and other
     add 44af17e  ISIS-1846 deprecate StringPredicates and StringFunctions, refactoring any references to use the new $String utility class
     add 0622780  ISIS-1846 use mixin naming convention for package private support classes
     add bc59167  ISIS-1846 add missing license header
     add b6f8293  ISIS-1846 StringOperator: improved name for composing method
     add debea9f  ISIS-1846 consolidate comparator algorithms into $Comparators
     add 47790a6  ISIS-1846 refactoring: less heap pollution on sequence compare
     add 25f8b31  ISIS-1846 underscore(_) instead of dollar($) prefix for internal classes
     add 7ba8fd6  ISIS-1845 fix EventBusServiceDefaultTest NPE
     add 8b865d6  ISIS-1845 fix all tests in ObjectReflectorDefaultTest_object
     add 4a90358  ISIS-1846 test cases added for new utility classes
     add 954c03d  ISIS-1827 refactoring out some guava predicate usages yet without breaking API
     add c32e448  ISIS-1827 cleanup public API java-doc in RepositoryService
     add 890cff5  ISIS-1827 reflect API changes in RepositoryServiceInternalDefault
     add 03823d7  ISIS-1827 guava free drop-in replacement for all ExceptionRecognizers
     add 6631872  ISIS-1827 reflect applib changes in ExceptionRecognizerDocDefault
     add 77b179b  ISIS-1846 add capitalize to new _String utility + tests, cleanup Enums
     add 463947d  ISIS-1846 fix Enums copy paste error
     add 62c3f3b  ISIS-1827 added tests for all ExceptionRecognizers to reflect applib additions
     add dd3029c  ISIS-1827 mark some unused public static guava functions deprecated
     add 7613ee7  ISIS-1846 consolidate uses of capitalize
     add 996cf2980 ISIS-1846 another occurrence of capitalize consolidated
     add a5931f6  ISIS-1846 clarify corner cases for string splitting + tests
     add 70a5f0d  ISIS-1846 introduces _Constants (internal API)
     add 286b2c5  ISIS-1846 consolidate uses of constants 'emptyObjects' + 'emptyClasses'
     add c09cffb  ISIS-1846 make constants final
     add 3b9aded  ISIS-1841 replace uses of deprecated Nullable with Java's Optional
     add 8b19f8a  ISIS-1841 Nullable, Closure, IterableExtensions removed (after refactoring, no longer needed), tests removed or adapted
     add 9c2514c  ISIS-1841 remove unused setter, that does nothing anyway
     add fe219d0  ISIS-1846 add _Exceptions to internal API
     add 7d5b538  ISIS-1841 cleanup some compiler warnings
     add 8e8b5f1  ISIS-1841 refactoring switch statements
     add 7743f0b  ISIS-1846 java-doc: simplify warnings for internal API use
     add 3bb3683  ISIS-1846 major refactoring: introduces _Reflect (internal API)
     add da7b587  ISIS-1846 minor refactoring: introduces _Context (internal API)
     add 5dd9f73  ISIS-1846 improve java-doc
     add 71101fc  ISIS-1846 put empty string array also in _Constants for convenience
     add 66cd1f2  ISIS-1846 java-doc improved
     add 62725eb  ISIS-1846 added reviewer notes and questions
     add 8ebd313  ISIS-1846 thread-safe (atomic) writes to _Context (singleton-store)
     add e989ad9  Merge remote-tracking branch 'origin/ISIS-1846_internal_utils'
     add c1d0732  ISIS-1846: fixes unit test (had accidentally changed contract)
     add e0cb085  ISIS-1846: reinstates reflections as a non-optional compile-time dependency, since required for both compile and runtime.
     add 96a2a78  ISIS-1852: removes debug System.out.println
     add 39a6039  ISIS-1852: removes debug System.out.println
     add c05e5ca  Merge branch 'ISIS-1852_parallel_stream_patch'
     add e92b4db  ISIS-1740 initial commit of prototype
     add efdd481  ISIS-1740 refactored method names, added javadoc
     add 266a4e9  ISIS-1740 new Facet: NavigableParentFacet + major rework to integrate with Isis' meta-model
     add 6fc4c5b  ISIS-1740 NavigableParentService never used, so removed
     add 08ce1a6  ISIS-1817 + ISIS-1818 allow configuration of where-am-i feature
     add 1155e89  ISIS-1817 + ISIS-1818 added missing assignment + clarify comments
     add 0645ecd  ISIS-1816 refactoring Annotations + implement hierarchy search
     add f338b8b  ISIS-1816 impl. navigable parent resolving behavior according to spec
     add 2fc93a2  ISIS-1740 Refactoring and consolidating invocation exception handling + introducing MethodHandles to speed up reflective invocation
     add 4126069  ISIS-1816 Refactoring names + simplify
     add cc2f5d0  ISIS-1740: fixes merge issues (NullSafe moved to applib and renamed)
     add 6ee4202  Merge branch 'ISIS-1740-where-am-i'
     add 3e3ad2b  ISIS-1852: reworks unit test, again
     add fb552d3  Merge branch 'ISIS-1852_parallel_stream_patch'
     add a2eb142  ISIS-1276: updates references for datanucleus.
     add 18dc848  ISIS-1276: updates core to compile under JDK 1.8 only
     add 2caaf1e  ISIS-1276: updates applib, replaces references of TypesafeQuery to be instead JDOQLTypedQuery
     add 0cbe08d  ISIS-1276: fixes compile issues in metamodel and runtime
     add 1de7627  ISIS-1276: fixes algorithm for lookup of datastore id's, at least
     add d3a729e  ISIS-1723: removes jdo applib's Auditable interface and @Auditable annotation
     add 48d61fe  ISIS-1724: removes the deprecated IsisJdoSupport in the jdo applib
     add aebdb9e  ISIS-1725: requires that an AppManifest is supplied (used to obtain list of entities).
     add 123f29f  ISIS-1727: uses lambda in IsisSessionFactoryBuilder
     add 9ca0c5a  ISIS-1726: generalizes the logic that searches for @PersistenceCapable entities, to also take into account meta-annotations.
     add 894efba  ISIS-1728: uses typesafe queries for helloworld
     add 26e06e2  Merge branch 'dev/2.0.0/ISIS-1276-dn-5-1' into dev/2.0.0-M2
     add 224da22  ISIS-1767 JEE 7+ added dependency on javaee-api to core/runtime
     add d2e8d8a  ISIS-1756 JEE 7+ Isis App life-cycling
     add c9aaa4b  ISIS-1755 JEE 7+ allow coexistence of CDI and Isis' ServiceInjector
     add 0f3c8cb  ISIS-1756 - fix typo
     add 8524919  ISIS-1756 prevent SQLException on schema creation if config is missing
     add 32dad9e  ISIS-1756 utilize IsisWicketApplication's life-cycle instead of providing a life-cycle CDI Bean
     add 742e231  ISIS-1754 context aware class-loading for Isis
     add 3f6fd15  ISIS-1755 TomEE requires Service Providers to be public classes
     add 1414489  ISIS-1775 Honor web-app's context path when configuring swagger.
     add f730d53  ISIS-1775 added license
     add de9b17a  ISIS-1754 proper DN class-loading
     add 4d2aa2b  ISIS-1755 veto ExceptionRecognizer on CDI scan
     add ab73186  ISIS-1756 remove reflective access to DN's EnhancementHelper since we've got a dedicated method instead
     add 555f5f9  Merge branch 'ISIS-1767-jee-7' into dev/2.0.0-M2
     add 2aa9efc  ISIS-1767: fixes dependency convergence issue with com.sun.mail
     add bad4156  ISIS-1744: updates to DN 5.1.5
     add 9336f8d  ISIS-1744: removes work-around code for prior to DN 5.1.5
     add f5fc906  Merge branch 'ISIS-1744-update-to-dn-515' into dev/2.0.0-M2
     add bcd9187  ISIS-1811: updates versions to 2.0.0-M2-SNAPSHOT
     add d5fcba0  ISIS-1779 Transition to JAX-RS 2.0 Client API removed dependency on deprecated resteasy client api
     new 1c9e21f  ISIS-1779 rebase jax-rs-2 on top of 2.0.0-M2

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (72f3452)
            \
             N -- N -- N   refs/heads/ISIS-1779-jax-rs-2 (1c9e21f)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 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:
 .../applib/layout/grid/bootstrap3/bootstrap3.xsd   |   1 +
 .../asciidoc/guides/dg/_dg_asciidoc-syntax.adoc    |  47 +-
 .../_dg_hints-and-tips_datanucleus-enhancer.adoc   |   2 +-
 .../main/asciidoc/guides/dg/_dg_ide_eclipse.adoc   |   2 +-
 .../main/asciidoc/guides/rgant/_rgant-Action.adoc  |  21 +-
 .../guides/rgant/_rgant-Action_associateWith.adoc  |  67 ++
 .../guides/rgant/_rgant-Action_command.adoc        | 397 +++++++++--
 .../guides/rgant/_rgant-Action_hidden.adoc         |   2 +-
 .../guides/rgant/_rgant-Action_publishing.adoc     |   2 +-
 .../guides/rgant/_rgant-Discriminator.adoc         |   4 +-
 ..._rgant-DomainObject_autoCompleteRepository.adoc |   2 +-
 .../rgant/_rgant-DomainObject_publishing.adoc      |   2 +-
 .../guides/rgant/_rgant-DomainService.adoc         |   2 +-
 .../asciidoc/guides/rgant/_rgant-Nullable.adoc     |  10 +-
 .../guides/rgant/_rgant-Parameter_optionality.adoc |   2 +-
 .../guides/rgant/_rgant-PersistenceCapable.adoc    |   4 +-
 .../asciidoc/guides/rgant/_rgant-Property.adoc     |  28 +
 .../rgant/_rgant-PropertyLayout_unchanging.adoc    |   2 +-
 .../guides/rgant/_rgant-Property_command.adoc      | 269 ++++++++
 .../guides/rgant/_rgant-Property_optionality.adoc  |   2 +-
 .../guides/rgant/_rgant-Property_publishing.adoc   |   2 +-
 .../asciidoc/guides/rgant/_rgant-ViewModel.adoc    |   2 +-
 .../guides/rgcfg/_rgcfg_configuring-core.adoc      |  15 +
 .../_rgcms_classes_AppManifest2-bootstrapping.adoc |   4 +-
 ...gcms_classes_domainevent_ActionDomainEvent.adoc |   2 +-
 ..._classes_domainevent_CollectionDomainEvent.adoc |   2 +-
 ...ms_classes_domainevent_PropertyDomainEvent.adoc |   2 +-
 .../guides/rgcms/_rgcms_classes_layout.adoc        |   2 +-
 .../rgcms/_rgcms_classes_value-types_Markup.adoc   |   2 +-
 .../rgcms/_rgcms_methods_reserved_getId.adoc       |   2 +-
 .../asciidoc/guides/rgcms/_rgcms_schema-chg.adoc   |   2 +-
 .../asciidoc/guides/rgcms/_rgcms_schema-cmd.adoc   |  53 +-
 .../guides/rgcms/_rgcms_schema-common.adoc         |  77 ++-
 .../guides/rgsvc/_rgsvc_application-layer-api.adoc |  14 +-
 ...lication-layer-api_ActionInvocationContext.adoc |   8 +-
 ...rgsvc_application-layer-api_CommandContext.adoc |   2 +-
 ...plication-layer-api_CommandExecutorService.adoc |  45 ++
 ...rgsvc_application-layer-spi_CommandService.adoc |  33 +-
 .../_rgsvc_metadata-api_MetamodelService.adoc      |  43 +-
 ...esentation-layer-spi_ContentMappingService.adoc |  53 +-
 ...esentation-layer-spi_ErrorReportingService.adoc |  29 +-
 ...entation-layer-spi_TableColumnOrderService.adoc |   2 +-
 .../ErrorReportingService/kitchensink-example.png  | Bin 28043 -> 180602 bytes
 ...ugfun_building-blocks_events_domain-events.adoc |   2 +-
 ...un_building-blocks_events_lifecycle-events.adoc |   2 +-
 .../_ugfun_building-blocks_events_ui-events.adoc   |   4 +-
 ..._ugfun_getting-started_simpleapp-archetype.adoc |   2 +-
 .../ugfun/_ugfun_programming-model_actions.adoc    |  21 +-
 ...fun_programming-model_domain-services_menu.adoc |  14 +-
 .../_ugfun_programming-model_inject-services.adoc  |   2 +-
 .../ugfun/_ugfun_programming-model_mixins.adoc     |   2 +-
 ...fun_programming-model_mixins_inferred-name.adoc |   2 +-
 .../ugfun/_ugfun_ui-hints_eager-rendering.adoc     |   2 +-
 .../_ugfun_ui-hints_object-titles-and-icons.adoc   |   6 +-
 .../guides/ugodn/_ugodn_hints-and-tips.adoc        |   1 +
 ..._ugodn_hints-and-tips_jdoql-and-timestamps.adoc |  76 +++
 ..._ugtst_bdd-spec-support_writing-a-bdd-spec.adoc |  28 +-
 ...gtst_fixture-scripts_ticking-clock-fixture.adoc |   2 +-
 .../guides/ugvw/_ugvw_layout_file-based.adoc       |  15 +
 adocs/documentation/src/main/asciidoc/index.html   |  11 +-
 .../_migration-notes_1.10.0-to-1.11.0.adoc         |   2 +-
 .../_migration-notes_1.11.0-to-1.12.0.adoc         |   2 +-
 .../_migration-notes_1.12.0-to-1.13.0.adoc         |  12 +-
 .../_migration-notes_1.14.0-to-1.15.0.adoc         |   2 +-
 .../asciidoc/pages/tg/_tg_pet-clinic-extended.adoc |  13 -
 .../src/main/asciidoc/pages/tg/_tg_pet-clinic.adoc | 575 ----------------
 .../tg/_tg_stop-scaffolding-start-coding.adoc      | 744 ---------------------
 .../tutorials/pet-clinic/010-01-login-page.png     | Bin 31965 -> 0 bytes
 .../tutorials/pet-clinic/010-02-home-page.png      | Bin 54415 -> 0 bytes
 .../pet-clinic/010-03-prototyping-menu.png         | Bin 59183 -> 0 bytes
 .../tutorials/pet-clinic/010-04-simpleobjects.png  | Bin 57805 -> 0 bytes
 .../pet-clinic/010-05-simpleobject-list.png        | Bin 29631 -> 0 bytes
 .../pet-clinic/020-01-idea-configuration.png       | Bin 35012 -> 0 bytes
 .../pet-clinic/020-02-idea-configuration.png       | Bin 7430 -> 0 bytes
 .../030-01-idea-configuration-updated.png          | Bin 35122 -> 0 bytes
 .../tutorials/pet-clinic/030-02-updated-app.png    | Bin 32215 -> 0 bytes
 .../040-01-idea-configuration-updated.png          | Bin 35349 -> 0 bytes
 .../tutorials/pet-clinic/050-01-list-all.png       | Bin 33299 -> 0 bytes
 .../tutorials/pet-clinic/050-02-view-pet.png       | Bin 34270 -> 0 bytes
 .../tutorials/pet-clinic/060-01-owners-menu.png    | Bin 65309 -> 0 bytes
 .../tutorials/pet-clinic/060-02-owners-list.png    | Bin 31905 -> 0 bytes
 .../tutorials/pet-clinic/060-03-pets-list.png      | Bin 36166 -> 0 bytes
 .../pet-clinic/060-04-pet-owner-autoComplete.png   | Bin 40468 -> 0 bytes
 .../images/tutorials/pet-clinic/domain-model.png   | Bin 27464 -> 0 bytes
 .../src/main/asciidoc/pages/tg/tg.adoc             | 683 ++++++++++++++++++-
 .../release-notes/_release-notes_1.16.1.adoc       |  24 +
 .../main/asciidoc/release-notes/release-notes.adoc |  11 +-
 .../src/main/asciidoc}/schema/chg/chg-1.1.xsd      |   2 +-
 .../src/main/asciidoc/schema/chg/chg.xsd           |   6 +-
 .../asciidoc/schema/cmd/{cmd.xsd => cmd-1.2.xsd}   |  10 +-
 .../src/main/asciidoc}/schema/cmd/cmd-1.3.xsd      |   2 +-
 .../src/main/asciidoc/schema/cmd/cmd-1.4.xsd       |  39 +-
 .../src/main/asciidoc/schema/cmd/cmd.xsd           |  51 +-
 .../main/asciidoc}/schema/common/common-1.1.xsd    |   2 +-
 .../src/main/asciidoc/schema/common/common.xsd     |  19 +-
 .../asciidoc/schema/ixn/{ixn.xsd => ixn-1.1.xsd}   |  10 +-
 .../src/main/asciidoc}/schema/ixn/ixn-1.2.xsd      |   2 +-
 .../src/main/asciidoc/schema/ixn/ixn-1.3.xsd       |   6 +-
 .../src/main/asciidoc/schema/ixn/ixn.xsd           |  14 +-
 adocs/template/document.html.erb                   |   5 +-
 core/applib/pom.xml                                |  28 +-
 .../java/org/apache/isis/applib/AppManifest.java   | 120 +---
 .../apache/isis/applib/AppManifestAbstract.java    |  42 +-
 .../apache/isis/applib/AppManifestAbstract2.java   |   3 +-
 .../org/apache/isis/applib/IsisApplibModule.java   |   5 +-
 .../org/apache/isis/applib/ModuleAbstract.java     |  29 +-
 .../isis/applib/ModuleOrBuilderAbstract.java       |  29 +-
 .../org/apache/isis/applib/PropertyResource.java   |   5 +-
 .../org/apache/isis/applib/annotation/Action.java  |  63 ++
 .../isis/applib/annotation/CommandExecuteIn.java   |  24 +-
 .../apache/isis/applib/annotation/InvokeOn.java    |  17 +-
 .../apache/isis/applib/annotation/MemberOrder.java |   2 +-
 .../org/apache/isis/applib/annotation/Parent.java  |  34 +
 .../apache/isis/applib/annotation/Property.java    |  21 +
 .../java/org/apache/isis/applib/clock/Clock.java   |  18 +-
 .../conmap/ContentMappingServiceForCommandDto.java | 152 +++++
 .../ContentMappingServiceForCommandsDto.java       |  91 +++
 .../spi/CommandDtoProcessorService.java}           |  23 +-
 .../isis/applib/fixtures/TickingFixtureClock.java  |  10 +
 .../fixturescripts/BuilderScriptAbstract.java      |  18 +-
 .../applib/fixturescripts/ExecutionParameters.java |  40 +-
 .../applib/fixturescripts/FixtureResultList.java   |   5 +-
 .../isis/applib/fixturescripts/FixtureScript.java  |  46 +-
 .../isis/applib/fixturescripts/FixtureScripts.java |   3 +
 .../isis/applib/fixturescripts/StringUtil.java     |  79 ---
 .../teardown/TeardownFixtureAbstract.java          |   6 +-
 .../teardown/TeardownFixtureAbstract2.java         |  18 +-
 .../apache/isis/applib/internal/_Constants.java}   |  53 +-
 .../apache/isis/applib/internal/base/_Casts.java}  |  34 +-
 .../isis/applib/internal/base/_NullSafe.java}      |  74 +-
 .../apache/isis/applib/internal/base/_Strings.java | 232 +++++++
 .../internal/base/_Strings_NaturalNames.java       |  94 +++
 .../internal/base/_Strings_SplitIterator.java      |  73 ++
 .../isis/applib/internal/base/package-info.java}   |  20 +-
 .../compare/_Comparators.java}                     |  56 +-
 .../compare/_Comparators_SequenceCompare.java}     |  53 +-
 .../applib/internal/compare/package-info.java}     |  20 +-
 .../isis/applib/internal/context/_Context.java     | 178 +++++
 .../applib/internal/context/package-info.java}     |  20 +-
 .../applib/internal/exceptions/_Exceptions.java    |  85 +++
 .../applib/internal/exceptions/package-info.java}  |  20 +-
 .../apache/isis/applib/internal/package-info.java} |  20 +-
 .../isis/applib/internal/reflection/_Reflect.java  |  85 +++
 .../internal/reflection/_Reflect_Discovery.java    |  84 +++
 .../internal/reflection/_Reflect_Manifest.java     | 147 ++++
 .../applib/internal/reflection/package-info.java}  |  20 +-
 .../java/org/apache/isis/applib/layout/Util.java   |   4 +-
 .../layout/component/CollectionLayoutData.java     |   3 +-
 .../isis/applib/layout/component/FieldSet.java     |   2 +-
 .../applib/layout/grid/bootstrap3/BS3ClearFix.java |   1 +
 .../layout/grid/bootstrap3/BS3ElementAbstract.java |   1 +
 .../applib/layout/grid/bootstrap3/BS3Grid.java     |   2 +-
 .../isis/applib/layout/grid/bootstrap3/BS3Tab.java |   4 +-
 .../applib/layout/grid/bootstrap3/BS3TabGroup.java |  15 +
 .../applib/layout/menubars/MenuBarsAbstract.java   |   1 +
 .../applib/layout/menubars/bootstrap3/BS3Menu.java |   5 -
 .../layout/menubars/bootstrap3/BS3MenuBars.java    |   5 +
 .../java/org/apache/isis/applib/query/Query.java   |   2 +-
 .../apache/isis/applib/query/QueryAbstract.java    |   4 +-
 .../services/actinvoc/ActionInvocationContext.java |  33 +-
 .../services/appfeat/ApplicationMemberType.java    |  15 +-
 .../isis/applib/services/bookmark/Bookmark.java    |   5 +-
 .../ClassDiscoveryServiceUsingReflections.java     |  64 +-
 .../isis/applib/services/command/Command.java      |  66 +-
 .../applib/services/command/CommandDefault.java    |   2 +-
 .../CommandDtoProcessor.java}                      |  30 +-
 .../CommandDtoProcessorForActionAbstract.java      |  41 ++
 .../CommandDtoProcessorForPropertyAbstract.java}   |  24 +-
 .../services/command/CommandExecutorService.java}  |  44 +-
 .../applib/services/command/CommandWithDto.java    |  21 +-
 .../services/conmap/ContentMappingService.java     |  27 +
 .../isis/applib/services/dto/DtoMappingHelper.java |   6 +-
 .../apache/isis/applib/services/error/Ticket.java  |  36 +-
 .../services/eventbus/AbstractDomainEvent.java     |  27 +
 .../exceprecog/ExceptionRecognizerAbstract.java    |  57 +-
 .../exceprecog/ExceptionRecognizerForType.java     |   1 +
 ...rType.java => ExceptionRecognizerForType2.java} |  63 +-
 ...xceptionRecognizerForJDODataStoreException.java |   4 +-
 ...traintViolationForeignKeyNoActionException.java |  17 +-
 ...ionRecognizerForJDOObjectNotFoundException.java |   5 +-
 ...yConstraintViolationUniqueOrIndexException.java |  17 +-
 .../applib/services/hsqldb/HsqlDbManagerMenu.java  |   3 +-
 .../isis/applib/services/iactn/Interaction.java    |  24 +-
 .../isis/applib/services/jaxb/JaxbService.java     |  26 +-
 .../services/layout/Object_rebuildMetamodel.java   |   2 +
 .../services/metamodel/MetaModelService.java       |   3 +
 .../queryresultscache/QueryResultsCache.java       |  11 +-
 .../services/repository/RepositoryService.java     |  26 +-
 .../applib/services/xactn/TransactionService.java  |  18 +
 .../isis/applib/spec/AbstractSpecification2.java   |   4 +-
 .../java/org/apache/isis/applib/util/Enums.java    |  40 +-
 .../java/org/apache/isis/applib/util/JaxbUtil.java |   4 +-
 .../apache/isis/applib/util/ObjectContracts.java   |  10 +-
 .../org/apache/isis/applib/util/TitleBuffer.java   |   8 +-
 .../apache/isis/schema/utils/CommandDtoUtils.java  |  36 +
 .../apache/isis/schema/utils/CommonDtoUtils.java   | 192 ++++--
 .../isis/schema/utils/InteractionDtoUtils.java     |  19 +-
 .../isis/schema/utils/MemberExecutionDtoUtils.java |   3 +-
 .../fixturescripts/ExecutionParameters_Test.java   |  37 +
 .../isis/applib/internal/base/NullSafeTest.java    | 116 ++++
 .../isis/applib/internal/base/StringsTest.java     | 243 +++++++
 .../applib/internal/compare/ComparatorsTest.java   | 158 +++++
 .../eventbus/AbstractDomainEvent_veto_Test.java    | 183 +++++
 ...t.java => ExceptionRecognizerForType2Test.java} |  29 +-
 .../exceprecog/ExceptionRecognizerGeneralTest.java |  32 +-
 .../isis/schema/utils/CommandDtoUtils_Test.java    |  68 ++
 ...nDtoUtilsTest.java => CommonDtoUtils_Test.java} |  37 +-
 core/integtestsupport/pom.xml                      |   7 +-
 core/log4j/pom.xml                                 |   5 +
 .../isis/core/runtime/logging/SnapshotServer.java  |  16 +-
 core/maven-plugin/pom.xml                          |   3 +
 core/metamodel/pom.xml                             |  24 +
 .../commons/config/IsisConfigurationDefault.java   |   4 +-
 .../configbuilder/IsisConfigurationBuilder.java    |  15 +-
 .../commons/encoding/DebugDataInputExtended.java   |  28 +-
 .../commons/encoding/DebugDataOutputExtended.java  |  30 +-
 .../isis/core/commons/encoding/FieldType.java      |   3 +-
 .../core/commons/exceptions/ExceptionUtils.java    |   6 +-
 .../isis/core/commons/factory/InstanceUtil.java    |   9 +-
 .../apache/isis/core/commons/lang/ClassUtil.java   |   6 +-
 .../isis/core/commons/lang/MethodExtensions.java   |  14 +-
 .../isis/core/commons/lang/ObjectExtensions.java   |   4 +-
 .../isis/core/commons/lang/ResourceUtil.java       |  13 +-
 .../isis/core/commons/lang/StringExtensions.java   |  70 +-
 .../isis/core/commons/lang/StringFunctions.java    |   7 +-
 .../isis/core/commons/lang/StringPredicates.java   |   7 +-
 .../core/commons/lang/ThrowableExtensions.java     |  62 +-
 .../isis/core/commons/reflection/Reflect.java      |  51 +-
 .../resource/ResourceStreamSourceAbstract.java     |   9 +-
 .../ResourceStreamSourceChainOfResponsibility.java |   4 +-
 .../resource/ResourceStreamSourceComposite.java    |   4 +-
 ...ResourceStreamSourceContextLoaderClassPath.java |   3 +-
 .../isis/core/metamodel/adapter/oid/Oid.java       |   9 +-
 .../isis/core/metamodel/facetapi/FacetUtil.java    |  10 +-
 .../isis/core/metamodel/facetapi/FeatureType.java  |  21 +-
 .../isis/core/metamodel/facets/Annotations.java    | 199 ++++--
 .../core/metamodel/facets/MethodFinderUtils.java   |  16 +-
 .../action/ActionAnnotationFacetFactory.java       |  30 +-
 .../command/CommandFacetForActionAnnotation.java   |  28 +-
 ...ommandFacetForActionAnnotationAsConfigured.java |   7 +-
 .../command/CommandFacetFromConfiguration.java     |  13 +-
 ...ctionInvocationFacetForDomainEventAbstract.java |  69 +-
 .../facets/actions/command/CommandFacet.java       |   2 +
 .../actions/command/CommandFacetAbstract.java      |  45 +-
 .../ActionDefaultsFacetViaMethodFactory.java       |   3 +-
 .../NotContributedFacetDerivedFromMixinFacet.java  |   2 +-
 .../facets/all/i18n/NamedFacetTranslated.java      |   2 +-
 ...ry.java => XmlJavaTypeAdapterFacetFactory.java} |  32 +-
 .../facets/jaxb/XmlTransientFacet.java}            |  11 +-
 .../facets/jaxb/XmlTransientFacetAbstract.java}    |  32 +-
 .../facets/jaxb/XmlTransientFacetDefault.java}     |  16 +-
 .../annotprop/CssClassFaFacetOnMemberFactory.java  |   7 +-
 .../cssclassfa/annotprop/MixinInterceptor.java     |  65 ++
 .../members/order/MemberOrderFacetAbstract.java    |  21 +-
 .../MemberOrderFacetForActionAnnotation.java}      |  18 +-
 .../DomainObjectAnnotationFacetFactory.java        |   9 +-
 .../AuditableFacetForDomainObjectAnnotation.java   |   5 +-
 .../domainservice/DomainServiceMenuOrder.java      |   5 +-
 .../ignore/javalang/RemoveMethodsFacetFactory.java |   3 +-
 .../MemberGroupLayoutFacetProperties.java          |  25 +-
 .../object/navparent/NavigableParentFacet.java}    |  43 +-
 .../navparent/NavigableParentFacetAbstract.java}   |  20 +-
 .../NavigableParentAnnotationFacetFactory.java     | 168 +++++
 .../method/NavigableParentFacetMethod.java}        |  39 +-
 .../method/NavigableParentFacetMethodFactory.java  |  67 ++
 .../objectspecid/ObjectSpecIdFacetAbstract.java    |   9 +-
 .../ObjectSpecIdFacetOnStandaloneList.java}        |  32 +-
 .../recreatable/RecreatableObjectFacetFactory.java |   8 +-
 .../MustSatisfySpecificationFacetAbstract.java     |  22 +-
 .../ActionParameterAutoCompleteFacetViaMethod.java |   3 +-
 ...rameterChoicesFacetDerivedFromChoicesFacet.java |   3 +-
 .../method/ActionChoicesFacetViaMethodFactory.java |   3 +-
 .../ActionParameterChoicesFacetViaMethod.java      |   9 +-
 ...cetInvertedByNullableAnnotationOnParameter.java |   3 +-
 ...fySpecificationFacetForParameterAnnotation.java |   2 -
 ...ropertyChoicesFacetDerivedFromChoicesFacet.java |   5 +-
 .../property/PropertyAnnotationFacetFactory.java   |   2 +-
 .../command/CommandFacetForPropertyAnnotation.java |  26 +-
 ...mandFacetForPropertyAnnotationAsConfigured.java |   5 +-
 ...sfySpecificationFacetForPropertyAnnotation.java |   2 -
 .../MemberOrderFacetComparator.java                |   4 +-
 ...onParameterDefaultsAndChoicesPostProcessor.java | 157 +++++
 ...rameterChoicesFacetFromParentedCollection.java} |  46 +-
 ...rameterDefaultsFacetFromParentedCollection.java |  63 ++
 ...{ProgrammingModel.java => FacetFactorySet.java} |   9 +-
 .../ObjectSpecificationPostProcessor.java}         |  10 +-
 .../metamodel/progmodel/PostProcessorSet.java}     |  10 +-
 .../core/metamodel/progmodel/ProgrammingModel.java |  62 +-
 .../core/metamodel/services/ServicesInjector.java  |   4 +-
 .../services/appfeat/ApplicationFeatureId.java     |  21 +
 .../exceprecog/ExceptionRecognizerDocDefault.java  |   7 +-
 .../services/grid/GridLoaderServiceDefault.java    |  64 +-
 .../services/grid/GridSystemServiceAbstract.java   |   4 +-
 .../metamodel/MetaModelServiceDefault.java         |  31 +
 .../PersistenceSessionServiceInternal.java         |   4 +
 .../PersistenceSessionServiceInternalNoop.java     |   6 +
 .../RepositoryServiceInternalDefault.java          |  33 +-
 .../services/xactn/TransactionServiceDefault.java  |  15 +-
 .../core/metamodel/spec/ObjectSpecification.java   |  80 ++-
 .../core/metamodel/spec/feature/ObjectAction.java  |  70 +-
 .../spec/feature/ObjectActionParameter.java        |  77 +++
 .../metamodel/specloader/ServiceInitializer.java   |   4 +-
 .../metamodel/specloader/SpecificationLoader.java  |  51 +-
 .../specloader/facetprocessor/FacetProcessor.java  |  10 +-
 .../specloader/postprocessor/PostProcessor.java    |  59 ++
 .../specloader/specimpl/FacetedMethodsBuilder.java |  26 +-
 .../specloader/specimpl/ObjectActionDefault.java   |   4 +-
 .../specloader/specimpl/ObjectMemberAbstract.java  |  17 +-
 .../specimpl/ObjectSpecificationAbstract.java      |  48 +-
 .../specimpl/OneToOneAssociationMixedIn.java       |   5 +
 .../specimpl/dflt/ObjectSpecificationDefault.java  |   7 +-
 .../ObjectSpecificationOnStandaloneList.java       |   4 +
 .../MetaModelValidatorToCheckModuleExtent.java     | 153 +++++
 ...taModelValidatorToCheckObjectSpecIdsUnique.java |  95 +++
 .../core/metamodel/util/DeweyOrderComparator.java  |  51 +-
 .../core/metamodel/util/pchain/ParentChain.java    |  84 +++
 .../metamodel/util/pchain/ParentChainDefault.java  |  49 ++
 .../authentication/standard/SimpleSession.java     |   2 +-
 .../isis/core/runtime/snapshot/XmlSnapshot.java    |  60 +-
 .../isis/core/webapp/content/ResourceServlet.java  |  14 +-
 .../diagnostics/IsisLogOnExceptionFilter.java      |   2 +-
 .../core/webapp/routing/RedirectToDocsFilter.java  |   9 +-
 .../isis/progmodels/dflt/JavaReflectorHelper.java  |   2 +-
 .../dflt/ProgrammingModelFacetsJava5.java          |  21 +-
 .../metamodel/facets/MethodFinderUtilsTest.java    |  27 +-
 .../apache/isis/core/metamodel/facets/Utils.java   |   3 +-
 .../NavigableParentFacetMethodFactoryTest.java     |  70 ++
 .../navparent/NavigableParentFacetMethodTest.java  |  83 +++
 .../NavigableParentAnnotationFacetFactoryTest.java | 120 ++++
 .../annotation/NavigableParentTestSamples.java     |  49 ++
 .../isis/core/metamodel/services/grid/Foo.java}    |   4 +
 .../core/metamodel/services/grid/Foo.layout.xml}   |  24 +-
 .../isis/core/metamodel/services/grid/Foo2.java}   |   4 +
 .../services/grid/Foo2.layout.fallback.xml}        |  24 +-
 .../isis/core/metamodel/services/grid/Foo3.java}   |   4 +
 .../services/grid/Foo3.layout.fallback.xml}        |  24 +-
 .../core/metamodel/services/grid/Foo3.layout.xml}  |  24 +-
 .../isis/core/metamodel/services/grid/Foo4.java}   |   4 +
 ...dLoaderServiceDefault_resourceNameFor_Test.java |  58 ++
 .../SpecificationLoaderTestAbstract.java           |   2 +-
 .../specimpl/ObjectActionMixedInTest.java          |  10 +-
 .../specimpl/ObjectMemberAbstractTest.java}        |  40 +-
 .../testspec/ObjectSpecificationStub.java          |  19 +
 core/pom.xml                                       | 106 ++-
 core/runtime/pom.xml                               |  17 +-
 .../fixtures/FixturesInstallerDelegate.java        |   4 +-
 .../FixturesInstallerFromConfiguration.java        |   2 +-
 .../HeadlessWithBootstrappingAbstract.java         |   4 +-
 .../isis/core/runtime/headless/IsisSystem.java     |   2 +-
 .../runtime/headless/IsisSystemBootstrapper.java   |   4 +-
 .../apache/isis/core/runtime/memento/Memento.java  |  18 +-
 .../runtime/persistence/adapter/PojoAdapter.java   |   4 +-
 .../runner/opts/OptionHandlerAppManifest.java      |   2 +-
 .../runner/opts/OptionHandlerFixtureAbstract.java  |   2 +-
 .../runner/opts/OptionHandlerInitParameters.java   |   4 +-
 .../runner/opts/OptionHandlerSystemProperties.java |   4 +-
 .../core/runtime/services/ServiceInstantiator.java |  16 +-
 .../services/ServicesInstallerFromAnnotation.java  |  36 +-
 .../ServicesInstallerFromConfiguration.java        |   2 +-
 ...cesInstallerFromConfigurationAndAnnotation.java |   2 +-
 .../background/BackgroundCommandExecution.java     | 258 +------
 .../background/BackgroundServiceDefault.java       |   2 +-
 .../background/CommandExecutionAbstract.java       |  69 ++
 .../background/CommandExecutorServiceDefault.java  | 428 ++++++++++++
 .../changes/ChangedObjectsServiceInternal.java     |  52 +-
 .../services/command/CommandServiceDefault.java    |   4 -
 .../menubars/bootstrap3/MenuBarsServiceBS3.java    |  34 +-
 .../PersistenceSessionServiceInternalDefault.java  |   8 +-
 .../AbstractIsisSessionTemplate.java               |  31 +-
 .../core/runtime/system/context/IsisContext.java   | 141 ++--
 .../system/internal/IsisLocaleInitializer.java     |   4 +-
 .../system/internal/IsisTimeZoneInitializer.java   |   4 +-
 .../DataNucleusApplicationComponents.java          |  22 -
 .../persistence/PersistenceQueryFactory.java       |   2 +-
 .../system/persistence/PersistenceSession.java     |  68 +-
 .../persistence/PersistenceSessionFactory.java     |  20 +-
 .../PersistenceSessionFactoryMetamodelRefiner.java |   4 +
 .../adaptermanager/OidAdapterHashMap.java          |   6 +-
 .../adaptermanager/PojoAdapterHashMap.java         |   6 +-
 .../system/session/IsisSessionFactoryBuilder.java  |  14 +-
 .../system/transaction/IsisTransaction.java        |  39 +-
 .../system/transaction/IsisTransactionManager.java |   2 +-
 .../IsisComponentProvider.java                     |  82 +--
 .../IsisComponentProviderUsingInstallers.java      |  12 +-
 .../PersistenceCapableTypeFinder.java              |  65 ++
 .../isis/core/webapp/IsisWebAppBootstrapper.java   |   4 +-
 .../CreateSchemaObjectFromClassMetadata.java       |   2 +-
 .../datanucleus/DataNucleusLifeCycleHelper.java    |  52 --
 .../commands/DataNucleusCreateObjectCommand.java   |   2 +-
 .../commands/DataNucleusDeleteObjectCommand.java   |   2 +-
 .../PersistenceQueryFindAllInstancesProcessor.java |   2 +-
 ...sistenceQueryFindUsingApplibQueryProcessor.java |   4 +-
 .../datanucleus/persistence/queries/QueryUtil.java |   4 +-
 .../persistence/spi/JdoObjectIdSerializer.java     |   7 +-
 .../objectstore/jdo/service/RegisterEntities.java  |  15 +-
 .../src/main/resources/META-INF/MANIFEST.MF        |   6 -
 .../DummyAction.java                               |   3 +-
 .../runtime/services/ServiceInstantiatorTest.java  | 291 ++++----
 .../eventbus/EventBusServiceDefaultTest.java       |  22 +-
 .../runtime/system/TestObjectWithCollection.java   |   4 +-
 core/schema/pom.xml                                |   9 +-
 .../jaxbadapters/JodaDateTimeStringAdapter.java    |   2 -
 .../JodaDateTimeXMLGregorianCalendarAdapter.java   |  15 +-
 .../jaxbadapters/JodaLocalDateStringAdapter.java   |   2 -
 .../JodaLocalDateTimeStringAdapter.java            |   2 -
 ...daLocalDateTimeXMLGregorianCalendarAdapter.java |  19 +-
 .../JodaLocalDateXMLGregorianCalendarAdapter.java  |  15 +-
 .../jaxbadapters/JodaLocalTimeStringAdapter.java   |   2 -
 .../JodaLocalTimeXMLGregorianCalendarAdapter.java  |  16 +-
 .../isis/schema/utils/jaxbadapters/Strings.java}   |  10 +-
 .../utils/jaxbadapters/XmlCalendarFactory.java     | 108 +++
 .../resources/org/apache/isis/schema/bindings.xml  |   8 +-
 .../org/apache/isis/schema/chg/chg-1.1.xsd         |   2 +-
 .../isis/schema/cmd/{cmd-1.3.xsd => cmd-1.4.xsd}   |  45 +-
 .../org/apache/isis/schema/common/common-1.1.xsd   |  30 +-
 .../isis/schema/ixn/{ixn-1.2.xsd => ixn-1.3.xsd}   |   6 +-
 core/security-shiro/pom.xml                        |   7 +-
 core/security/pom.xml                              |   7 +-
 core/specsupport/pom.xml                           |   5 +
 .../scenarios/ScenarioExecutionScope.java          |   3 +-
 .../core/specsupport/specs/CukeGlueAbstract.java   |  16 +-
 .../core/specsupport/specs/CukeGlueAbstract2.java  |   4 +-
 .../specs/CukeGlueBootstrappingAbstract.java       |  10 +
 core/unittestsupport/pom.xml                       |   8 +-
 core/viewer-restfulobjects-applib/pom.xml          |   7 +-
 core/viewer-restfulobjects-rendering/pom.xml       |   8 +-
 core/viewer-restfulobjects-server/pom.xml          |   7 +-
 .../ExceptionMapperForRuntimeException.java        |  13 +-
 .../server/mappers/entity/ExceptionDetail.java     |   2 +-
 core/viewer-wicket-applib/pom.xml                  |   6 +-
 core/viewer-wicket-impl/pom.xml                    |   6 +-
 .../wicket/viewer/IsisWicketApplication.java       |  13 +-
 .../wicket/AuthenticatedWebSessionForIsis.java     |  62 +-
 .../integration/wicket/WebRequestCycleForIsis.java |   4 +-
 .../ComponentFactoryRegistrarDefault.java          |  33 +-
 .../wicket/viewer/services/Object_clearHints.java  |   5 +-
 .../services/TranslationsResolverWicket.java       |   2 +-
 .../WicketObjectModule_bindingsStandard.java       |  63 +-
 ...thenticatedWebSessionForIsis_Instantiation.java |   2 +-
 ...ageClassListDefault_RegistrationAndCaching.java |   2 +-
 core/viewer-wicket-model/pom.xml                   |   5 +
 .../viewer/wicket/model/models/ActionPrompt.java   |   6 +
 .../wicket/model/models/EntityCollectionModel.java |  64 +-
 .../viewer/wicket/model/models/EntityModel.java    |  68 +-
 .../viewer/wicket/model/models/ScalarModel.java    |  59 +-
 .../model/models/ScalarModelWithMultiPending.java  |  16 +-
 .../model/models/ScalarModelWithPending.java       |  20 +-
 .../model/models/ToggledMementosProvider.java}     |  18 +-
 .../model/models/whereami/WhereAmIModel.java       |  65 ++
 .../models/whereami/WhereAmIModelDefault.java      | 116 ++++
 .../wicket/model/models/EntityModel_hintsTest.java |   2 +-
 .../models/LowestCommonSuperclassClosureTest.java  |  33 +-
 core/viewer-wicket-ui/pom.xml                      |   5 +
 .../ui/components/about/JarManifestModel.java      |   3 +-
 .../AdditionalLinksAsDropDownPanel.html            |   1 +
 .../entityactions/EntityActionLinkFactory.java     |   8 +-
 .../actionmenu/entityactions/LinkAndLabelUtil.java |  12 +-
 .../actionmenu/serviceactions/CssMenuItem.java     |   8 +-
 .../serviceactions/ServiceActionLinkFactory.java   |   7 +-
 .../serviceactions/ServiceActionUtil.java          |  12 +
 .../actionprompt/ActionPromptModalWindow.java      |   2 +
 .../collection/AssociatedWithActionsHelper.java    |  87 +++
 .../ui/components/collection/CollectionPanel.java  |  99 ++-
 .../collection/bulk/BulkActionsHelper.java         |  57 +-
 .../collection/bulk/BulkActionsLinkFactory.java    |   4 +-
 .../collection/bulk/BulkActionsProvider.java       |   6 +-
 .../CollectionContentsAsAjaxTablePanel.java        |   4 +-
 .../ajaxtable/IsisAjaxFallbackDataTable.java       |   5 -
 .../columns/ObjectAdapterPropertyColumn.java       |  14 +-
 .../components/entity/fieldset/PropertyGroup.java  |  31 +-
 .../wicket/ui/components/layout/bs3/col/Col.java   |  33 +-
 .../components/layout/bs3/tabs/TabGroupPanel.java  |  29 +-
 .../ui/components/property/PropertyEditPanel.java  |   7 +-
 .../ui/components/scalars/ScalarPanelAbstract.java |   2 +-
 .../components/scalars/ScalarPanelAbstract2.java   |  37 +-
 .../scalars/ScalarPanelSelect2Abstract.java        |   2 +-
 .../components/scalars/primitive/BooleanPanel.java |   2 +-
 .../ui/components/scalars/uuid/UuidConverter.java  |  60 ++
 .../ui/components/scalars/uuid/UuidPanel.java      |  59 ++
 .../components/scalars/uuid/UuidPanelFactory.java} |  38 +-
 .../ui/components/scalars/uuid/UuidTextField.java  |  53 ++
 .../StandaloneCollectionPanel.java                 |  42 +-
 .../components/widgets/bootstrap/ModalDialog.java  |  10 +
 .../widgets/linkandlabel/ActionLinkFactory.java    |   5 +-
 .../linkandlabel/ActionLinkFactoryAbstract.java    |  78 ++-
 .../widgets/themepicker/ThemeChooser.java          |   2 +-
 .../wicket/ui/errors/ExceptionStackTracePanel.html |   1 +
 .../wicket/ui/errors/ExceptionStackTracePanel.java |  20 +
 .../viewer/wicket/ui/pages/bootstrap-overrides.css |  17 +
 .../viewer/wicket/ui/pages/entity/EntityPage.css   |  29 +
 .../viewer/wicket/ui/pages/entity/EntityPage.html  |   7 +-
 .../viewer/wicket/ui/pages/entity/EntityPage.java  |  53 +-
 .../wicket/ui/panels/FormExecutorDefault.java      |   2 +-
 .../scalars/uuid/UuidConverterTest_roundtrip.java  |  73 ++
 core/webserver/pom.xml                             |   5 +
 core/wrapper/pom.xml                               |   7 +-
 .../java/domainapp/dom/impl/HelloWorldObject.java  |   1 +
 .../bdd/specglue/BootstrappingGlue.java            |  16 +-
 .../{RunBddSpecs.java => RunIntegBddSpecs.java}    |   2 +-
 .../modules/simple/dom/impl/SimpleObject.java      |   3 +-
 .../simple/dom/impl/SimpleObject.layout.xml        |   6 +-
 501 files changed, 11075 insertions(+), 4779 deletions(-)
 create mode 100644 adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Action_associateWith.adoc
 create mode 100644 adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Property_command.adoc
 create mode 100644 adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_CommandExecutorService.adoc
 create mode 100644 adocs/documentation/src/main/asciidoc/guides/ugodn/_ugodn_hints-and-tips_jdoql-and-timestamps.adoc
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic-extended.adoc
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic.adoc
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/_tg_stop-scaffolding-start-coding.adoc
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/010-01-login-page.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/010-02-home-page.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/010-03-prototyping-menu.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/010-04-simpleobjects.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/010-05-simpleobject-list.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/020-01-idea-configuration.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/020-02-idea-configuration.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/030-01-idea-configuration-updated.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/030-02-updated-app.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/040-01-idea-configuration-updated.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/050-01-list-all.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/050-02-view-pet.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/060-01-owners-menu.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/060-02-owners-list.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/060-03-pets-list.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/060-04-pet-owner-autoComplete.png
 delete mode 100644 adocs/documentation/src/main/asciidoc/pages/tg/images/tutorials/pet-clinic/domain-model.png
 create mode 100644 adocs/documentation/src/main/asciidoc/release-notes/_release-notes_1.16.1.adoc
 copy {core/schema/src/main/resources/org/apache/isis => adocs/documentation/src/main/asciidoc}/schema/chg/chg-1.1.xsd (95%)
 copy adocs/documentation/src/main/asciidoc/schema/cmd/{cmd.xsd => cmd-1.2.xsd} (95%)
 copy {core/schema/src/main/resources/org/apache/isis => adocs/documentation/src/main/asciidoc}/schema/cmd/cmd-1.3.xsd (99%)
 copy core/schema/src/main/resources/org/apache/isis/schema/cmd/cmd-1.3.xsd => adocs/documentation/src/main/asciidoc/schema/cmd/cmd-1.4.xsd (80%)
 copy {core/schema/src/main/resources/org/apache/isis => adocs/documentation/src/main/asciidoc}/schema/common/common-1.1.xsd (99%)
 copy adocs/documentation/src/main/asciidoc/schema/ixn/{ixn.xsd => ixn-1.1.xsd} (97%)
 copy {core/schema/src/main/resources/org/apache/isis => adocs/documentation/src/main/asciidoc}/schema/ixn/ixn-1.2.xsd (99%)
 copy core/schema/src/main/resources/org/apache/isis/schema/ixn/ixn-1.2.xsd => adocs/documentation/src/main/asciidoc/schema/ixn/ixn-1.3.xsd (97%)
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/annotation/Parent.java
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/conmap/ContentMappingServiceForCommandDto.java
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/conmap/ContentMappingServiceForCommandsDto.java
 copy core/applib/src/main/java/org/apache/isis/applib/{services/conmap/ContentMappingService.java => conmap/spi/CommandDtoProcessorService.java} (61%)
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/fixturescripts/StringUtil.java
 copy core/{metamodel/src/main/java/org/apache/isis/core/commons/lang/Nullable.java => applib/src/main/java/org/apache/isis/applib/internal/_Constants.java} (53%)
 copy core/{metamodel/src/main/java/org/apache/isis/core/commons/lang/IterableExtensions.java => applib/src/main/java/org/apache/isis/applib/internal/base/_Casts.java} (65%)
 rename core/{metamodel/src/main/java/org/apache/isis/core/commons/lang/NullSafe.java => applib/src/main/java/org/apache/isis/applib/internal/base/_NullSafe.java} (64%)
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings.java
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings_NaturalNames.java
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/internal/base/_Strings_SplitIterator.java
 copy core/{metamodel/src/main/java/org/apache/isis/core/commons/lang/Closure.java => applib/src/main/java/org/apache/isis/applib/internal/base/package-info.java} (74%)
 copy core/applib/src/main/java/org/apache/isis/applib/{layout/Util.java => internal/compare/_Comparators.java} (52%)
 rename core/{metamodel/src/main/java/org/apache/isis/core/commons/compare/SequenceCompare.java => applib/src/main/java/org/apache/isis/applib/internal/compare/_Comparators_SequenceCompare.java} (62%)
 copy core/{metamodel/src/main/java/org/apache/isis/core/commons/lang/Closure.java => applib/src/main/java/org/apache/isis/applib/internal/compare/package-info.java} (74%)
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/internal/context/_Context.java
 copy core/{metamodel/src/main/java/org/apache/isis/core/commons/lang/Closure.java => applib/src/main/java/org/apache/isis/applib/internal/context/package-info.java} (74%)
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/internal/exceptions/_Exceptions.java
 copy core/{metamodel/src/main/java/org/apache/isis/core/commons/lang/Closure.java => applib/src/main/java/org/apache/isis/applib/internal/exceptions/package-info.java} (74%)
 copy core/{metamodel/src/main/java/org/apache/isis/core/commons/lang/Closure.java => applib/src/main/java/org/apache/isis/applib/internal/package-info.java} (75%)
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect.java
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect_Discovery.java
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect_Manifest.java
 copy core/{metamodel/src/main/java/org/apache/isis/core/commons/lang/Closure.java => applib/src/main/java/org/apache/isis/applib/internal/reflection/package-info.java} (74%)
 copy core/applib/src/main/java/org/apache/isis/applib/services/{conmap/ContentMappingService.java => command/CommandDtoProcessor.java} (51%)
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/services/command/CommandDtoProcessorForActionAbstract.java
 rename core/{metamodel/src/main/java/org/apache/isis/core/commons/lang/IterableExtensions.java => applib/src/main/java/org/apache/isis/applib/services/command/CommandDtoProcessorForPropertyAbstract.java} (60%)
 rename core/{metamodel/src/test/java/org/apache/isis/core/commons/lang/IterableExtensionsTest_fold.java => applib/src/main/java/org/apache/isis/applib/services/command/CommandExecutorService.java} (52%)
 copy example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java => core/applib/src/main/java/org/apache/isis/applib/services/command/CommandWithDto.java (56%)
 copy core/applib/src/main/java/org/apache/isis/applib/services/exceprecog/{ExceptionRecognizerForType.java => ExceptionRecognizerForType2.java} (73%)
 create mode 100644 core/applib/src/test/java/org/apache/isis/applib/internal/base/NullSafeTest.java
 create mode 100644 core/applib/src/test/java/org/apache/isis/applib/internal/base/StringsTest.java
 create mode 100644 core/applib/src/test/java/org/apache/isis/applib/internal/compare/ComparatorsTest.java
 create mode 100644 core/applib/src/test/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent_veto_Test.java
 copy core/applib/src/test/java/org/apache/isis/applib/services/exceprecog/{ExceptionRecognizerGeneralTest.java => ExceptionRecognizerForType2Test.java} (68%)
 create mode 100644 core/applib/src/test/java/org/apache/isis/schema/utils/CommandDtoUtils_Test.java
 rename core/applib/src/test/java/org/apache/isis/schema/utils/{CommonDtoUtilsTest.java => CommonDtoUtils_Test.java} (64%)
 rename core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/jaxb/{JaxbXmlJavaTypeAdapterFacetFactory.java => XmlJavaTypeAdapterFacetFactory.java} (92%)
 copy core/metamodel/src/main/java/org/apache/isis/core/{commons/lang/Closure.java => metamodel/facets/jaxb/XmlTransientFacet.java} (78%)
 copy core/metamodel/src/main/java/org/apache/isis/core/{commons/lang/Nullable.java => metamodel/facets/jaxb/XmlTransientFacetAbstract.java} (62%)
 rename core/metamodel/src/main/java/org/apache/isis/core/{commons/lang/Closure.java => metamodel/facets/jaxb/XmlTransientFacetDefault.java} (74%)
 create mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/MixinInterceptor.java
 copy core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/{actions/action/command/CommandFacetForActionAnnotationAsConfigured.java => members/order/annotprop/MemberOrderFacetForActionAnnotation.java} (63%)
 copy core/metamodel/src/main/java/org/apache/isis/core/{commons/lang/Nullable.java => metamodel/facets/object/navparent/NavigableParentFacet.java} (56%)
 copy core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/{actions/action/command/CommandFacetForActionAnnotationAsConfigured.java => object/navparent/NavigableParentFacetAbstract.java} (61%)
 create mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/navparent/annotation/NavigableParentAnnotationFacetFactory.java
 copy core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/{actions/notcontributed/derived/NotContributedFacetDerivedFromMixinFacet.java => object/navparent/method/NavigableParentFacetMethod.java} (52%)
 create mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/navparent/method/NavigableParentFacetMethodFactory.java
 copy core/metamodel/src/main/java/org/apache/isis/core/{commons/lang/Nullable.java => metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetOnStandaloneList.java} (61%)
 create mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionCollectionParameterDefaultsAndChoicesPostProcessor.java
 copy core/metamodel/src/main/java/org/apache/isis/core/metamodel/{facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java => postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java} (53%)
 create mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterDefaultsFacetFromParentedCollection.java
 copy core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodel/{ProgrammingModel.java => FacetFactorySet.java} (92%)
 copy core/{applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java => metamodel/src/main/java/org/apache/isis/core/metamodel/progmodel/ObjectSpecificationPostProcessor.java} (78%)
 copy core/{applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java => metamodel/src/main/java/org/apache/isis/core/metamodel/progmodel/PostProcessorSet.java} (82%)
 create mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/postprocessor/PostProcessor.java
 create mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorToCheckModuleExtent.java
 create mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelValidatorToCheckObjectSpecIdsUnique.java
 create mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/pchain/ParentChain.java
 create mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/pchain/ParentChainDefault.java
 create mode 100644 core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/navparent/NavigableParentFacetMethodFactoryTest.java
 create mode 100644 core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/navparent/NavigableParentFacetMethodTest.java
 create mode 100644 core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/navparent/annotation/NavigableParentAnnotationFacetFactoryTest.java
 create mode 100644 core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/navparent/annotation/NavigableParentTestSamples.java
 copy core/{viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.css => metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/Foo.java} (91%)
 copy core/{viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.html => metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/Foo.layout.xml} (59%)
 copy core/{viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.css => metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/Foo2.java} (91%)
 copy core/{viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.html => metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/Foo2.layout.fallback.xml} (59%)
 copy core/{viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.css => metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/Foo3.java} (91%)
 copy core/{viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.html => metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/Foo3.layout.fallback.xml} (59%)
 copy core/{viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.html => metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/Foo3.layout.xml} (59%)
 copy core/{viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.css => metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/Foo4.java} (91%)
 create mode 100644 core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault_resourceNameFor_Test.java
 rename core/metamodel/src/{main/java/org/apache/isis/core/commons/lang/Nullable.java => test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstractTest.java} (54%)
 create mode 100644 core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/CommandExecutionAbstract.java
 create mode 100644 core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/CommandExecutorServiceDefault.java
 create mode 100644 core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/PersistenceCapableTypeFinder.java
 delete mode 100644 core/runtime/src/main/resources/META-INF/MANIFEST.MF
 copy core/{applib/src/main/java/org/apache/isis/applib/layout/grid/bootstrap3/BS3ClearFix.java => schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/Strings.java} (84%)
 create mode 100644 core/schema/src/main/java/org/apache/isis/schema/utils/jaxbadapters/XmlCalendarFactory.java
 rename core/schema/src/main/resources/org/apache/isis/schema/cmd/{cmd-1.3.xsd => cmd-1.4.xsd} (76%)
 rename core/schema/src/main/resources/org/apache/isis/schema/ixn/{ixn-1.2.xsd => ixn-1.3.xsd} (97%)
 copy core/{applib/src/main/java/org/apache/isis/applib/services/conmap/ContentMappingService.java => viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ToggledMementosProvider.java} (69%)
 create mode 100644 core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/whereami/WhereAmIModel.java
 create mode 100644 core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/whereami/WhereAmIModelDefault.java
 create mode 100644 core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/AssociatedWithActionsHelper.java
 create mode 100644 core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidConverter.java
 create mode 100644 core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidPanel.java
 copy core/{applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationMemberType.java => viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidPanelFactory.java} (53%)
 create mode 100644 core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidTextField.java
 create mode 100644 core/viewer-wicket-ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidConverterTest_roundtrip.java
 rename example/application/simpleapp/application/src/test/java/domainapp/application/bdd/specs/{RunBddSpecs.java => RunIntegBddSpecs.java} (97%)

-- 
To stop receiving notification emails like this one, please contact
ahuber@apache.org.

[isis] 01/01: ISIS-1779 rebase jax-rs-2 on top of 2.0.0-M2

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

ahuber pushed a commit to branch ISIS-1779-jax-rs-2
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 1c9e21f898fb4bac431da4c6c6ef4f2574e75d9d
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Feb 19 16:51:41 2018 +0100

    ISIS-1779 rebase jax-rs-2 on top of 2.0.0-M2
---
 .../isis/applib/internal/context/_Context.java     | 29 +++++++++-
 .../isis/applib/internal/reflection/_Reflect.java  |  5 +-
 .../internal/reflection/_Reflect_Discovery.java    | 25 +--------
 .../apache/isis/applib/query/QueryAbstract.java    |  4 +-
 .../applib/services/hsqldb/HsqlDbManagerMenu.java  |  3 +-
 .../apache/isis/schema/utils/CommonDtoUtils.java   | 51 +++++++----------
 .../isis/core/commons/encoding/FieldType.java      |  3 +-
 .../isis/core/commons/factory/InstanceUtil.java    |  9 +--
 .../apache/isis/core/commons/lang/ClassUtil.java   |  6 +-
 .../isis/core/commons/lang/ResourceUtil.java       | 13 ++++-
 ...ResourceStreamSourceContextLoaderClassPath.java |  3 +-
 core/pom.xml                                       |  6 +-
 .../core/runtime/services/ServiceInstantiator.java |  4 +-
 .../core/runtime/system/context/IsisContext.java   | 15 ++---
 .../persistence/PersistenceSessionFactory.java     | 10 +---
 .../IsisComponentProvider.java                     | 33 +++++------
 .../PersistenceCapableTypeFinder.java              | 65 ++++++++++++++++++++++
 .../datanucleus/DataNucleusLifeCycleHelper.java    | 52 -----------------
 .../persistence/spi/JdoObjectIdSerializer.java     |  7 ++-
 .../scenarios/ScenarioExecutionScope.java          |  3 +-
 .../wicket/viewer/IsisWicketApplication.java       |  5 +-
 .../wicket/AuthenticatedWebSessionForIsis.java     | 62 ++++++++++++++-------
 .../WicketObjectModule_bindingsStandard.java       | 63 +++++++++++++--------
 ...thenticatedWebSessionForIsis_Instantiation.java |  2 +-
 ...ageClassListDefault_RegistrationAndCaching.java |  2 +-
 .../ui/components/about/JarManifestModel.java      |  3 +-
 26 files changed, 269 insertions(+), 214 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/context/_Context.java b/core/applib/src/main/java/org/apache/isis/applib/internal/context/_Context.java
index adb6d01..589805a 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/context/_Context.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/context/_Context.java
@@ -24,6 +24,8 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.function.Supplier;
 
+import javax.validation.constraints.NotNull;
+
 import org.apache.isis.applib.internal.base._Casts;
 
 /**
@@ -137,10 +139,35 @@ public final class _Context {
 	 * Will be set by the framework's bootstrapping mechanism if required.
 	 * @return the default class loader
 	 */
-	public static ClassLoader getDefaultClassLoader() {
+	public static @NotNull ClassLoader getDefaultClassLoader() {
 		return getOrElse(ClassLoader.class, FALLBACK_CLASSLOADER);
 	}
+	
+	// -- CLASS LOADING SHORTCUTS
+	
+	/**
+	 * Uses the frameworks default-ClassLoader to load a class by name.
+	 * @param className
+	 * @return class by name
+	 * @throws ClassNotFoundException
+	 */
+	public static Class<?> loadClass(String className) throws ClassNotFoundException{
+		return getDefaultClassLoader().loadClass(className);
+	}
 
+	/**
+	 * Uses the frameworks default-ClassLoader to load and initialize a class by name.<br/>
+	 * <b>Initialize</b> the class, that is, all static initializers will be run. <br/>
+	 * (For details on initialize see Section 12.4 of The Java Language Specification)
+	 * @param className
+	 * @return
+	 * @throws ClassNotFoundException
+	 */
+	public static Class<?> loadClassAndInitialize(String className) throws ClassNotFoundException{
+		return Class.forName(className, true, getDefaultClassLoader());
+	}
+	
+	
 	// -- HELPER
 	
 	private static String toKey(Class<?> type) {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect.java b/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect.java
index e0b213d..20d63e5 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect.java
@@ -23,11 +23,10 @@ import java.lang.annotation.Annotation;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.isis.applib.internal.context._Context;
 import org.reflections.scanners.SubTypesScanner;
 import org.reflections.util.ClasspathHelper;
 
-import org.apache.isis.applib.internal.context._Context;
-
 /**
  * <h1>- internal use only -</h1>
  * <p>
@@ -56,8 +55,6 @@ public final class _Reflect {
 		//TODO missing java-doc
 		public <T> Set<Class<? extends T>> getSubTypesOf(Class<T> type);
 
-		public Set<Class<?>> findPersistenceCapableTypes();
-
 	}
 
 	//TODO missing java-doc
diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect_Discovery.java b/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect_Discovery.java
index 5db08e5..fe7db50 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect_Discovery.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/reflection/_Reflect_Discovery.java
@@ -8,15 +8,11 @@ import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import javax.jdo.annotations.PersistenceCapable;
 import javax.validation.constraints.NotNull;
 
-import com.google.common.collect.Sets;
-
-import org.reflections.Reflections;
-
 import org.apache.isis.applib.internal.base._NullSafe;
 import org.apache.isis.applib.internal.reflection._Reflect.Discovery;
+import org.reflections.Reflections;
 
 /**
  * 
@@ -84,24 +80,5 @@ class _Reflect_Discovery implements _Reflect.Discovery {
 				.filter(_NullSafe::isPresent);
 	}
 
-	public Set<Class<?>> findPersistenceCapableTypes() {
-
-		Set<Class<?>> pcSet = Sets.newLinkedHashSet();
-
-		Set<Class<?>> persistenceCapables = reflections.getTypesAnnotatedWith(PersistenceCapable.class);
-		persistenceCapables.stream()
-				.filter(x -> !x.isAnnotation())
-				.forEach(pcSet::add);
-
-		Stream<Class<? extends Annotation>> pcMetaAnnotStream =
-				(Stream)persistenceCapables.stream().filter(x -> x.isAnnotation());
-		pcMetaAnnotStream.map(metaAnnot -> reflections.getTypesAnnotatedWith(metaAnnot).stream())
-				.flatMap(x -> x)
-				.filter(x -> !x.isAnnotation())
-				.forEach(pcSet::add);
-
-		return pcSet;
-	}
-
 	
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/query/QueryAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/query/QueryAbstract.java
index 7c2497e..d16f908 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/query/QueryAbstract.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/query/QueryAbstract.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.applib.query;
 
+import org.apache.isis.applib.internal.context._Context;
+
 /**
  * Convenience adapter class for {@link Query}.
  * 
@@ -67,7 +69,7 @@ public abstract class QueryAbstract<T> implements Query<T> {
     public Class<T> getResultType() {
         if (resultType == null) {
             try {
-                resultType = (Class<T>) Thread.currentThread().getContextClassLoader().loadClass(resultTypeName);
+                resultType = (Class<T>) _Context.loadClass(resultTypeName);
             } catch (final ClassNotFoundException e) {
                 throw new IllegalStateException(e);
             }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/hsqldb/HsqlDbManagerMenu.java b/core/applib/src/main/java/org/apache/isis/applib/services/hsqldb/HsqlDbManagerMenu.java
index 48843ae..bc0586f 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/hsqldb/HsqlDbManagerMenu.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/hsqldb/HsqlDbManagerMenu.java
@@ -34,6 +34,7 @@ import org.apache.isis.applib.annotation.DomainServiceLayout;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.internal.context._Context;
 
 @DomainService(
         nature = NatureOfService.VIEW_MENU_ONLY,
@@ -73,7 +74,7 @@ public class HsqlDbManagerMenu {
     public boolean hideHsqlDbManager() {
         try {
             // hsqldb is configured as optional in the applib's pom.xml
-            Thread.currentThread().getContextClassLoader().loadClass(DatabaseManagerSwing.class.getCanonicalName());
+        	_Context.loadClass(DatabaseManagerSwing.class.getCanonicalName());
         } catch (ClassNotFoundException e) {
             return true;
         }
diff --git a/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java b/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java
index d3f0159..1ba83ab 100644
--- a/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java
+++ b/core/applib/src/main/java/org/apache/isis/schema/utils/CommonDtoUtils.java
@@ -22,19 +22,8 @@ import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.Collection;
 
-import com.google.common.base.Function;
-import com.google.common.base.Objects;
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.base.Strings;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableMap;
-
-import org.joda.time.DateTime;
-import org.joda.time.LocalDate;
-import org.joda.time.LocalDateTime;
-import org.joda.time.LocalTime;
 import org.apache.isis.applib.internal.base._Casts;
+import org.apache.isis.applib.internal.context._Context;
 import org.apache.isis.applib.internal.exceptions._Exceptions;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
@@ -55,6 +44,18 @@ import org.apache.isis.schema.utils.jaxbadapters.JodaDateTimeXMLGregorianCalenda
 import org.apache.isis.schema.utils.jaxbadapters.JodaLocalDateTimeXMLGregorianCalendarAdapter;
 import org.apache.isis.schema.utils.jaxbadapters.JodaLocalDateXMLGregorianCalendarAdapter;
 import org.apache.isis.schema.utils.jaxbadapters.JodaLocalTimeXMLGregorianCalendarAdapter;
+import org.joda.time.DateTime;
+import org.joda.time.LocalDate;
+import org.joda.time.LocalDateTime;
+import org.joda.time.LocalTime;
+
+import com.google.common.base.Function;
+import com.google.common.base.Objects;
+import com.google.common.base.Optional;
+import com.google.common.base.Predicate;
+import com.google.common.base.Strings;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableMap;
 
 public final class CommonDtoUtils {
 
@@ -374,28 +375,18 @@ public final class CommonDtoUtils {
 
     private static <T> Class<T> loadClassElseThrow(final String className) {
         try {
-            return _Casts.uncheckedCast(loadClass(className));
+            return _Casts.uncheckedCast(_Context.loadClassAndInitialize(className));
         } catch (ClassNotFoundException e) {
-            throw new RuntimeException(e);
+        	
+        	// [ahuber] fallback to pre 2.0.0 behavior, not sure if needed  
+        	try {
+				return _Casts.uncheckedCast(Class.forName(className));
+			} catch (ClassNotFoundException e1) {
+				throw new RuntimeException(e);
+			}
         }
     }
 
-    private static Class<?> loadClass(String className) throws ClassNotFoundException {
-        ClassLoader ccl = Thread.currentThread().getContextClassLoader();
-        if(ccl == null) {
-            return loadClass(className, (ClassLoader)null);
-        } else {
-            try {
-                return loadClass(className, ccl);
-            } catch (ClassNotFoundException var3) {
-                return loadClass(className, (ClassLoader)null);
-            }
-        }
-    }
-
-    private static Class<?> loadClass(String className, ClassLoader classLoader) throws ClassNotFoundException {
-        return classLoader == null?Class.forName(className):Class.forName(className, true, classLoader);
-    }
     //endregion
 
     //region > newValueWithTypeDto
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/encoding/FieldType.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/encoding/FieldType.java
index d834b18..9309746 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/encoding/FieldType.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/encoding/FieldType.java
@@ -31,6 +31,7 @@ import java.lang.reflect.InvocationTargetException;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.isis.applib.internal.context._Context;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -969,7 +970,7 @@ public abstract class FieldType<T> {
                 Class<?> cls;
                 try {
                     // ...obtain constructor
-                    cls = Thread.currentThread().getContextClassLoader().loadClass(className);
+                    cls = _Context.loadClass(className);
 
                     final Constructor<?> constructor = cls.getConstructor(new Class[] { DataInputExtended.class });
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/factory/InstanceUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/factory/InstanceUtil.java
index e4f04ae..e581d56 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/factory/InstanceUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/factory/InstanceUtil.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.commons.factory;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 
+import org.apache.isis.applib.internal.context._Context;
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.commons.lang.ObjectExtensions;
 
@@ -54,7 +55,7 @@ public final class InstanceUtil {
         Class<? extends T> defaultType = null;
         if (defaultTypeName != null) {
             try {
-                defaultType = ObjectExtensions.asT(Thread.currentThread().getContextClassLoader().loadClass(defaultTypeName));
+                defaultType = ObjectExtensions.asT(_Context.loadClass(defaultTypeName));
                 if (defaultType == null) {
                     throw new InstanceCreationClassException(String.format("Failed to load default type '%s'", defaultTypeName));
                 }
@@ -76,7 +77,7 @@ public final class InstanceUtil {
         if (defaultTypeName != null) {
             defaultType = loadClass(defaultTypeName, requiredType);
             try {
-                defaultType = ObjectExtensions.asT(Thread.currentThread().getContextClassLoader().loadClass(defaultTypeName));
+                defaultType = ObjectExtensions.asT(_Context.loadClass(defaultTypeName));
                 if (defaultType == null) {
                     throw new InstanceCreationClassException(String.format("Failed to load default type '%s'", defaultTypeName));
                 }
@@ -96,7 +97,7 @@ public final class InstanceUtil {
             Object... args) {
         Assert.assertNotNull("Class to instantiate must be specified", className);
         try {
-            final Class<?> cls = Thread.currentThread().getContextClassLoader().loadClass(className);
+            final Class<?> cls = _Context.loadClass(className);
             if (cls == null) {
                 throw new InstanceCreationClassException(String.format("Failed to load class '%s'", className));
             }
@@ -149,7 +150,7 @@ public final class InstanceUtil {
     public static Class<?> loadClass(final String className) {
         Assert.assertNotNull("Class to instantiate must be specified", className);
         try {
-            return Thread.currentThread().getContextClassLoader().loadClass(className);
+            return _Context.loadClass(className);
         } catch (final ClassNotFoundException e) {
             throw new UnavailableClassException(String.format("The type '%s' cannot be found", className));
         } catch (final NoClassDefFoundError e) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ClassUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ClassUtil.java
index 9bd70b5..1c1f75f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ClassUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ClassUtil.java
@@ -24,6 +24,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.isis.applib.internal.context._Context;
+
 import com.google.common.collect.Maps;
 
 public final class ClassUtil {
@@ -149,7 +151,7 @@ public final class ClassUtil {
             return primitiveCls;
         }
         try {
-            return Thread.currentThread().getContextClassLoader().loadClass(fullName);
+            return _Context.loadClass(fullName);
         } catch (final ClassNotFoundException e) {
             throw new RuntimeException(e);
         }
@@ -160,7 +162,7 @@ public final class ClassUtil {
             return null;
         }
         try {
-            return Thread.currentThread().getContextClassLoader().loadClass(fullName);
+            return _Context.loadClass(fullName);
         } catch (final ClassNotFoundException e) {
             return null;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ResourceUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ResourceUtil.java
index 7e5fc77..276adcf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ResourceUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ResourceUtil.java
@@ -21,6 +21,8 @@ package org.apache.isis.core.commons.lang;
 
 import java.io.InputStream;
 
+import org.apache.isis.applib.internal.context._Context;
+
 /**
  * Adapted from Ibatis Common, now with some additional guava stuff.
  */
@@ -29,10 +31,17 @@ public class ResourceUtil {
     private ResourceUtil(){}
 
     public static InputStream getResourceAsStream(final String resource) {
+    	
+        // try Isis's classloader
+        ClassLoader classLoader = _Context.getDefaultClassLoader();
+        InputStream is = classLoader.getResourceAsStream(resource);
+        if (is != null) {
+            return is;
+        }
 
         // try thread's classloader
-        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-        InputStream is = classLoader.getResourceAsStream(resource);
+        classLoader = Thread.currentThread().getContextClassLoader();
+        is = classLoader.getResourceAsStream(resource);
         if (is != null) {
             return is;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/resource/ResourceStreamSourceContextLoaderClassPath.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/resource/ResourceStreamSourceContextLoaderClassPath.java
index b92a82a..2cad737 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/resource/ResourceStreamSourceContextLoaderClassPath.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/resource/ResourceStreamSourceContextLoaderClassPath.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.commons.resource;
 
 import java.io.InputStream;
 
+import org.apache.isis.applib.internal.context._Context;
 import org.apache.isis.core.commons.lang.StringExtensions;
 
 /**
@@ -49,7 +50,7 @@ public class ResourceStreamSourceContextLoaderClassPath extends ResourceStreamSo
 
     @Override
     protected InputStream doReadResource(final String resourcePath) {
-        final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+        final ClassLoader classLoader = _Context.getDefaultClassLoader();
         final String path = StringExtensions.combinePath(prefix, resourcePath);
         return classLoader.getResourceAsStream(path);
     }
diff --git a/core/pom.xml b/core/pom.xml
index ab17458..56215ae 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -90,10 +90,10 @@
         <!-- Datanucleus Objectstore -->
         <jdo-api.version>3.2.0-m7</jdo-api.version>
 
-        <datanucleus-core.version>5.1.5</datanucleus-core.version>
+        <datanucleus-core.version>5.1.6</datanucleus-core.version>
         <datanucleus-api-jdo.version>5.1.4</datanucleus-api-jdo.version>
-        <datanucleus-jdo-query.version>5.0.2</datanucleus-jdo-query.version>
-        <datanucleus-rdbms.version>5.1.5</datanucleus-rdbms.version>
+        <datanucleus-jdo-query.version>5.0.4</datanucleus-jdo-query.version>
+        <datanucleus-rdbms.version>5.1.6</datanucleus-rdbms.version>
         <datanucleus-jodatime.version>5.1.0-release</datanucleus-jodatime.version>
 	<!--
 	    ISIS-1288: seen integration tests to fail;
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java
index f48bdcf..e002a81 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java
@@ -33,7 +33,7 @@ import com.google.common.collect.Sets;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
+import org.apache.isis.applib.internal.context._Context;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.factory.InstanceCreationClassException;
@@ -111,7 +111,7 @@ public final class ServiceInstantiator {
     private Class<?> loadClass(final String className) {
         try {
             LOG.debug("loading class for service: {}", className);
-            return IsisContext.getClassLoader().loadClass(className);
+            return _Context.loadClassAndInitialize(className);
         } catch (final ClassNotFoundException ex) {
             throw new InitialisationException(String.format("Cannot find class '%s' for service", className));
         }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
index 546dcc4..a213323 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
@@ -59,10 +59,6 @@ public interface IsisContext {
 	public static ClassLoader getClassLoader() {
 		return _Context.getDefaultClassLoader();
 	}
-    public static void setClassLoader(ClassLoader classLoader) {
-	    _Context.putSingleton(ClassLoader.class, classLoader);
-    }
-
 
 	// -- LIFE-CYCLING
     
@@ -72,6 +68,7 @@ public interface IsisContext {
      */
     public static void clear() {
     	_Context.clear();
+    	resetLogging();
     }
     
     // -- DEPRECATIONS
@@ -90,11 +87,15 @@ public interface IsisContext {
 
 	/**
 	 * TODO [andi-huber] not sure if required, initial idea was to force log4j
-	 * re-configuration on an undeploy/deploy cycle
+	 * to re-configure on an undeploy/deploy cycle
 	 */
 	static void resetLogging() {
-		org.apache.log4j.Logger.getRootLogger().removeAllAppenders();
-		BasicConfigurator.resetConfiguration();
+		try {
+			BasicConfigurator.resetConfiguration();
+			org.apache.log4j.Logger.getRootLogger().removeAllAppenders();
+		} catch (Exception e) {
+			// at least we tried
+		}
 	}
 
 
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
index e9565f8..b3026da 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactory.java
@@ -168,15 +168,7 @@ public class PersistenceSessionFactory implements ApplicationScopedComponent, Fi
      */
     @Programmatic
     public final void shutdown() {
-        if(!isInitialized()) {
-            return;
-        }
-
-    	//XXX ISIS-1756 purge any DataNucleus State
-    	if(applicationComponents != null) {
-    		// applicationComponents.shutdown();
-            applicationComponents = null;
-    	}
+        applicationComponents = null;
     }
 
     /**
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
index 7d9322b..9b2936a 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisComponentProvider.java
@@ -23,17 +23,9 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.stream.Collectors;
 
 import javax.annotation.Nullable;
 
-import com.google.common.base.Function;
-import com.google.common.base.Joiner;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-
 import org.apache.isis.applib.AppManifest;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.DomainService;
@@ -64,6 +56,13 @@ import org.apache.isis.objectstore.jdo.service.RegisterEntities;
 import org.apache.isis.progmodels.dflt.JavaReflectorHelper;
 import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
 
+import com.google.common.base.Function;
+import com.google.common.base.Joiner;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
 /**
  * 
  */
@@ -137,23 +136,19 @@ public abstract class IsisComponentProvider {
         final Discovery discovery = _Reflect.discover(moduleAndFrameworkPackages);
 
         final Set<Class<?>> domainServiceTypes = discovery.getTypesAnnotatedWith(DomainService.class);
-        final Set<Class<?>> persistenceCapableTypes = discovery.findPersistenceCapableTypes();
+        final Set<Class<?>> persistenceCapableTypes = PersistenceCapableTypeFinder.find(discovery);
         final Set<Class<? extends FixtureScript>> fixtureScriptTypes = discovery.getSubTypesOf(FixtureScript.class);
 
         final Set<Class<?>> mixinTypes = Sets.newHashSet();
         mixinTypes.addAll(discovery.getTypesAnnotatedWith(Mixin.class));
 
         final Set<Class<?>> domainObjectTypes = discovery.getTypesAnnotatedWith(DomainObject.class);
-        mixinTypes.addAll(
-                domainObjectTypes.stream().filter(input -> {
-                    if (input == null) {
-                        return false;
-                    }
-                    final DomainObject annotation = input.getAnnotation(DomainObject.class);
-                    return annotation.nature() == Nature.MIXIN;
-                }).collect(Collectors.toList())
-        );
-        
+        domainObjectTypes.stream()
+        .filter(input -> {
+            final DomainObject annotation = input.getAnnotation(DomainObject.class);
+            return annotation.nature() == Nature.MIXIN;
+        })
+        .forEach(mixinTypes::add);
         
         // add in any explicitly registered services...
         domainServiceTypes.addAll(appManifest.getAdditionalServices());
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/PersistenceCapableTypeFinder.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/PersistenceCapableTypeFinder.java
new file mode 100644
index 0000000..1fbf533
--- /dev/null
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/PersistenceCapableTypeFinder.java
@@ -0,0 +1,65 @@
+/*
+ *  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.systemusinginstallers;
+
+import java.lang.annotation.Annotation;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.internal.reflection._Reflect.Discovery;
+
+/**
+ * 
+ * Package private helper class. Finds PersistenceCapable types.
+ *
+ */
+class PersistenceCapableTypeFinder {
+
+	@SuppressWarnings("unchecked")
+	static Set<Class<?>> find(Discovery discovery) {
+
+		final Set<Class<?>> types = new LinkedHashSet<>();
+
+		discovery.getTypesAnnotatedWith(PersistenceCapable.class).stream()
+		.forEach(type->{
+
+			if(type.isAnnotation()) {
+
+				// We have an annotation, that is annotated with @PersistenceCapable,
+				// this requires special treatment: 
+				// Search for any classes annotated with this (meta-)annotation.
+				
+				discovery.getTypesAnnotatedWith((Class<? extends Annotation>) type).stream()
+				.filter(x->!x.isAnnotation())
+				.forEach(types::add);
+
+			} else {
+
+				types.add(type);
+
+			}	
+		});
+
+		return types;
+	}
+
+}
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusLifeCycleHelper.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusLifeCycleHelper.java
index 398c30f..4547a49 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusLifeCycleHelper.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusLifeCycleHelper.java
@@ -49,29 +49,6 @@ public class DataNucleusLifeCycleHelper {
 		try {
 			
 			final ClassLoader cl = IsisContext.getClassLoader();
-
-//          XXX not needed according to https://github.com/datanucleus/datanucleus-core/issues/272 
-//			
-//			if(persistenceManagerFactory instanceof JDOPersistenceManagerFactory) {
-//				
-//				final JDOPersistenceManagerFactory jdoPMF = 
-//						(JDOPersistenceManagerFactory) persistenceManagerFactory;
-//				final PersistenceNucleusContext nucleusContext = jdoPMF.getNucleusContext();
-//				final AbstractStoreManager storeManager = 
-//						(AbstractStoreManager)nucleusContext.getStoreManager();
-//				
-//			
-//				persistenceManagerFactory.getManagedClasses()
-//				.forEach(clazz->{
-//			        final ClassLoaderResolver clr = nucleusContext.getClassLoaderResolver(cl);
-//	    		     	    		        
-//			        // Un-manage from the store
-//			        storeManager.unmanageClass(clr,	clazz.getName(), false);
-//			        
-//					 // Unload the meta-data for this class
-//			        nucleusContext.getMetaDataManager().unloadMetaDataForClass(clazz.getName());
-//				});
-//			}
 			
 			persistenceManagerFactory.close();
 			
@@ -84,35 +61,6 @@ public class DataNucleusLifeCycleHelper {
 		}
 
 	}
-    
-
-    // -- LOW LEVEL REFLECTION
-    
-	// TODO remove once DN v5.1.5 is released
-	private final static MethodHandle getRegisteredClassesMH;
-	static {
-		MethodHandle mh;		
-		try {
-			Field registeredClasses = EnhancementHelper.class.getDeclaredField("registeredClasses");
-			registeredClasses.setAccessible(true);
-			mh = MethodHandles.lookup().unreflectGetter(registeredClasses);
-			registeredClasses.setAccessible(false);
-		} catch (Exception e) {
-			mh = null;
-			e.printStackTrace();
-		}
-		getRegisteredClassesMH = mh;
-	}
-	
-	// TODO remove once DN v5.1.5 is released
-	private static void visitDNRegisteredClasses(Consumer<Map<Class<?>, ?>> visitor){
-		try {
-			visitor.accept( (Map<Class<?>, ?>) getRegisteredClassesMH.invoke() );
-		} catch (Throwable e) {
-			LOG.warn("Failed to access DataNucleus' EnhancementHelper via reflection.", e);
-		}
-	}
-
 
 
 }
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java
index ebb4d40..e185908 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/spi/JdoObjectIdSerializer.java
@@ -25,13 +25,15 @@ import java.math.BigInteger;
 import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
+
 import javax.jdo.annotations.IdentityType;
 import javax.jdo.identity.ByteIdentity;
 import javax.jdo.identity.IntIdentity;
 import javax.jdo.identity.LongIdentity;
 import javax.jdo.identity.ObjectIdentity;
 import javax.jdo.identity.StringIdentity;
-import org.datanucleus.identity.DatastoreId;
+
+import org.apache.isis.applib.internal.context._Context;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -39,6 +41,7 @@ import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
+import org.datanucleus.identity.DatastoreId;
 
 public final class JdoObjectIdSerializer {
     
@@ -164,7 +167,7 @@ public final class JdoObjectIdSerializer {
 
             final String clsName = distinguisher;
             try {
-                final Class<?> cls = Thread.currentThread().getContextClassLoader().loadClass(clsName);
+                final Class<?> cls = _Context.loadClass(clsName);
                 final Constructor<?> cons = cls.getConstructor(String.class);
                 final Object dnOid = cons.newInstance(keyStr);
                 return dnOid.toString();
diff --git a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/ScenarioExecutionScope.java b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/ScenarioExecutionScope.java
index 0b28cf4..42a3e54 100644
--- a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/ScenarioExecutionScope.java
+++ b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/ScenarioExecutionScope.java
@@ -16,6 +16,7 @@
  */
 package org.apache.isis.core.specsupport.scenarios;
 
+import org.apache.isis.applib.internal.context._Context;
 
 /**
  * The scope at which the specification will run; acts as a factory to create
@@ -39,7 +40,7 @@ public class ScenarioExecutionScope {
     public ScenarioExecutionScope(String scenarioExecutionClassName) {
         try {
             this.scenarioExecutionClass = (Class<? extends ScenarioExecution>) 
-                    Thread.currentThread().getContextClassLoader().loadClass(scenarioExecutionClassName);
+                    _Context.loadClass(scenarioExecutionClassName);
         } catch (ClassNotFoundException e) {
             throw new RuntimeException(e);
         }
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index 9114767..ecf8d4c 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -30,6 +30,7 @@ import java.util.UUID;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Future;
 
+import org.apache.isis.applib.internal.context._Context;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
@@ -334,7 +335,7 @@ public class IsisWicketApplication
         try {
             super.init();
             
-            IsisContext.setClassLoader(this.getClass().getClassLoader());
+            _Context.putSingleton(ClassLoader.class, this.getClass().getClassLoader());
 
             futures = startBackgroundInitializationThreads();
 
@@ -864,7 +865,7 @@ public class IsisWicketApplication
             }
             getServletContext().setAttribute(WebAppConstants.ISIS_SESSION_FACTORY, null);
             super.onDestroy();
-            IsisContext.destroy();
+            IsisContext.clear();
         } catch(final RuntimeException ex) {
             // symmetry with #init()
             LOG.error("Failed to destroy", ex);
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
index d3470db..7c1fd0c 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
@@ -22,11 +22,7 @@ package org.apache.isis.viewer.wicket.viewer.integration.wicket;
 import java.util.Arrays;
 import java.util.List;
 
-import org.apache.wicket.Session;
-import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
-import org.apache.wicket.authroles.authorization.strategies.role.Roles;
-import org.apache.wicket.request.Request;
-import org.apache.wicket.request.cycle.RequestCycle;
+import javax.validation.constraints.NotNull;
 
 import org.apache.isis.applib.clock.Clock;
 import org.apache.isis.applib.services.session.SessionLoggingService;
@@ -40,6 +36,11 @@ import org.apache.isis.viewer.wicket.model.models.BookmarkedPagesModel;
 import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModel;
 import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModelProvider;
 import org.apache.isis.viewer.wicket.ui.pages.BookmarkedPagesModelProvider;
+import org.apache.wicket.Session;
+import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
+import org.apache.wicket.authroles.authorization.strategies.role.Roles;
+import org.apache.wicket.request.Request;
+import org.apache.wicket.request.cycle.RequestCycle;
 
 /**
  * Viewer-specific implementation of {@link AuthenticatedWebSession}, which
@@ -169,21 +170,35 @@ public class AuthenticatedWebSessionForIsis extends AuthenticatedWebSession impl
             final SessionLoggingService.Type type,
             final String username,
             final SessionLoggingService.CausedBy causedBy) {
+    	
+    	
+    	final IsisSessionFactory isisSessionFactory = getIsisSessionFactoryIfAny();
         final SessionLoggingService sessionLoggingService = getSessionLoggingService();
-        if (sessionLoggingService != null) {
-            getIsisSessionFactory().doInSession(new Runnable() {
-                    @Override
-                    public void run() {
-                        // use hashcode as session identifier, to avoid re-binding http sessions if using Session#getId()
-                        int sessionHashCode = System.identityHashCode(AuthenticatedWebSessionForIsis.this);
-                        sessionLoggingService.log(type, username, Clock.getTimeAsDateTime().toDate(), causedBy, Integer.toString(sessionHashCode));
-                    }
-                });
-        }
+        	
+    	final Runnable loggingTask = ()->{
+            // use hashcode as session identifier, to avoid re-binding http sessions if using Session#getId()
+            int sessionHashCode = System.identityHashCode(AuthenticatedWebSessionForIsis.this);
+            sessionLoggingService.log(type, username, Clock.getTimeAsDateTime().toDate(), causedBy, Integer.toString(sessionHashCode));        		
+    	};
+    	
+    	if(isisSessionFactory!=null) {
+    		isisSessionFactory.doInSession(loggingTask);
+    	} else {
+    		loggingTask.run();
+    	}
+        
     }
 
-    protected SessionLoggingService getSessionLoggingService() {
-        return getIsisSessionFactory().getServicesInjector().lookupService(SessionLoggingService.class);
+    protected @NotNull SessionLoggingService getSessionLoggingService() {
+    	try {
+    		final SessionLoggingService service = getIsisSessionFactory().getServicesInjector()
+    				.lookupService(SessionLoggingService.class);
+    		return (service!=null) ? service : new SessionLoggingService.Stderr();
+    	} catch (Exception e) {
+    		// fallback to System.err
+    		return new SessionLoggingService.Stderr(); 
+		}
+    	
     }
 
     @Override
@@ -191,11 +206,20 @@ public class AuthenticatedWebSessionForIsis extends AuthenticatedWebSession impl
         // do nothing here because this will lead to problems with Shiro
         // see https://issues.apache.org/jira/browse/ISIS-1018
     }
+    
+    // -- HELPER
 
-
-    IsisSessionFactory getIsisSessionFactory() {
+    private IsisSessionFactory getIsisSessionFactory() {
         return IsisContext.getSessionFactory();
     }
+    
+    private IsisSessionFactory getIsisSessionFactoryIfAny() {
+    	try { 
+    		return getIsisSessionFactory();
+    	} catch (Exception e) {
+    		return null;
+		}
+    }
 
 
 }
diff --git a/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/WicketObjectModule_bindingsStandard.java b/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/WicketObjectModule_bindingsStandard.java
index 6121101..d9cb9e3 100644
--- a/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/WicketObjectModule_bindingsStandard.java
+++ b/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/WicketObjectModule_bindingsStandard.java
@@ -26,6 +26,7 @@ import static org.junit.Assert.assertThat;
 import java.util.Arrays;
 import java.util.Collection;
 
+import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
@@ -34,7 +35,8 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 import org.junit.runners.Parameterized.Parameters;
-
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationDefault;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassList;
@@ -47,32 +49,45 @@ import org.apache.isis.viewer.wicket.viewer.registries.pages.PageClassRegistryDe
 @RunWith(Parameterized.class)
 public class WicketObjectModule_bindingsStandard {
 
-    private IsisWicketModule wicketObjectsModule;
-    private Injector injector;
-    private final Class<?> from;
-    private final Class<?> to;
+	private IsisWicketModule wicketObjectsModule;
+	private Injector injector;
+	private final Class<?> from;
+	private final Class<?> to;
+
+	@Parameters
+	public static Collection<Object[]> params() {
+		return Arrays.asList(new Object[][] { 
+			{ ComponentFactoryRegistrar.class, ComponentFactoryRegistrarDefault.class }, 
+			{ ComponentFactoryRegistry.class, ComponentFactoryRegistryDefault.class }, 
+			{ PageClassList.class, PageClassListDefault.class },
+			{ PageClassRegistry.class, PageClassRegistryDefault.class }, 
+		});
+	}
+
+	public WicketObjectModule_bindingsStandard(final Class<?> from, final Class<?> to) {
+		this.from = from;
+		this.to = to;
+	}
 
-    @Parameters
-    public static Collection<Object[]> params() {
-        return Arrays.asList(new Object[][] { { ComponentFactoryRegistrar.class, ComponentFactoryRegistrarDefault.class }, { ComponentFactoryRegistry.class, ComponentFactoryRegistryDefault.class }, { PageClassList.class, PageClassListDefault.class },
-                { PageClassRegistry.class, PageClassRegistryDefault.class }, });
-    }
+	@Before
+	public void setUp() throws Exception {
+		wicketObjectsModule = new IsisWicketModule();
+		injector = Guice.createInjector(wicketObjectsModule, new ConfigModule());
+	}
 
-    public WicketObjectModule_bindingsStandard(final Class<?> from, final Class<?> to) {
-        this.from = from;
-        this.to = to;
-    }
+	@Test
+	public void binding() {
+		final Object instance = injector.getInstance(from);
+		assertThat(instance, is(instanceOf(to)));
+	}
 
-    @Before
-    public void setUp() throws Exception {
-        wicketObjectsModule = new IsisWicketModule();
-        injector = Guice.createInjector(wicketObjectsModule);
-    }
+	// -- CONFIGURATION BINDING
 
-    @Test
-    public void binding() {
-        final Object instance = injector.getInstance(from);
-        assertThat(instance, is(instanceOf(to)));
-    }
+	private static class ConfigModule extends AbstractModule {
+		@Override 
+		protected void configure() {
+			bind(IsisConfiguration.class).to(IsisConfigurationDefault.class);
+		}
+	}
 
 }
diff --git a/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/app/wicket/AuthenticatedWebSessionForIsis_Instantiation.java b/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/app/wicket/AuthenticatedWebSessionForIsis_Instantiation.java
index 4f5c860..0c5efde 100644
--- a/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/app/wicket/AuthenticatedWebSessionForIsis_Instantiation.java
+++ b/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/app/wicket/AuthenticatedWebSessionForIsis_Instantiation.java
@@ -55,7 +55,7 @@ public class AuthenticatedWebSessionForIsis_Instantiation {
         new AuthenticatedWebSessionForIsis(stubRequest);
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test(expected = Exception.class)
     public void requestMustBeProvided() {
         new AuthenticatedWebSessionForIsis(null);
     }
diff --git a/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/pages/PageClassListDefault_RegistrationAndCaching.java b/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/pages/PageClassListDefault_RegistrationAndCaching.java
index b482435..1898edd 100644
--- a/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/pages/PageClassListDefault_RegistrationAndCaching.java
+++ b/core/viewer-wicket-impl/src/test/java/org/apache/isis/viewer/wicket/viewer/pages/PageClassListDefault_RegistrationAndCaching.java
@@ -62,7 +62,7 @@ public class PageClassListDefault_RegistrationAndCaching {
         registryImpl.registerPage(PageType.ACTION_PROMPT, TestingActionPage.class);
 
         final Class<? extends Page> pageClass = registryImpl.getPageClass(PageType.ACTION_PROMPT);
-        assertThat(pageClass, is(instanceOf(TestingActionPage.class)));
+        assertThat(pageClass, is(org.hamcrest.Matchers.equalTo(TestingActionPage.class)));
     }
 
 }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/JarManifestModel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/JarManifestModel.java
index d78a290..c2187d0 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/JarManifestModel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/JarManifestModel.java
@@ -35,6 +35,7 @@ import com.google.common.base.CharMatcher;
 import com.google.common.base.Splitter;
 import com.google.common.collect.Lists;
 
+import org.apache.isis.applib.internal.context._Context;
 import org.apache.isis.core.commons.lang.CloseableExtensions;
 import org.apache.isis.viewer.wicket.model.models.ModelAbstract;
 
@@ -75,7 +76,7 @@ public class JarManifestModel extends ModelAbstract<JarManifestModel> {
         
         Enumeration<?> resEnum;
         try {
-            resEnum = Thread.currentThread().getContextClassLoader().getResources(JarFile.MANIFEST_NAME);
+            resEnum = _Context.getDefaultClassLoader().getResources(JarFile.MANIFEST_NAME);
         } catch (IOException e) {
             return;
         }

-- 
To stop receiving notification emails like this one, please contact
ahuber@apache.org.