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

[isis] branch master updated: ISIS-1801: adds new BookmarkUiService, and updates docs

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

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 10d9664  ISIS-1801: adds new BookmarkUiService, and updates docs
10d9664 is described below

commit 10d9664705d5929dc6660d642c7ff07e2b13146b
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Dec 28 14:37:54 2017 +0000

    ISIS-1801: adds new BookmarkUiService, and updates docs
---
 .../guides/rgsvc/_rgsvc_application-layer-api.adoc |  11 ---
 .../guides/rgsvc/_rgsvc_integration-api.adoc       |  22 ------
 .../rgsvc/_rgsvc_presentation-layer-api.adoc       |  81 +++++++++++++++++++++
 ...resentation-layer-api_AcceptHeaderService.adoc} |   2 +-
 ..._presentation-layer-api_BookmarkUiService.adoc} |  32 +++-----
 ...vc_presentation-layer-api_DeepLinkService.adoc} |  17 ++---
 ..._presentation-layer-api_GuiceBeanProvider.adoc} |   4 +-
 .../rgsvc/images/reference-services/categories.png | Bin 31453 -> 35572 bytes
 .../images/reference-services/categories.pptx      | Bin 63438 -> 41617 bytes
 .../src/main/asciidoc/guides/rgsvc/rgsvc.adoc      |   1 +
 ...ailable-domain-services_framework-provided.adoc |   6 +-
 .../_ugfun_building-blocks_identifiers_oid.adoc    |   2 +-
 .../applib/services/acceptheader/package-info.java |   2 +-
 .../BookmarkUiService.java}                        |  14 ++--
 .../isis/applib/services/guice/package-info.java   |   2 +-
 .../isis/applib/services/linking/package-info.java |   2 +-
 .../isis/applib/services/title/package-info.java   |   2 +-
 .../applib/services/urlencoding/package-info.java  |   2 +-
 .../viewer/services/BookmarkUiServiceWicket.java}  |  26 +++++--
 .../wicket/model/models/BookmarkedPagesModel.java  |   1 +
 .../widgets/breadcrumbs/BreadcrumbModel.java       |   6 ++
 21 files changed, 145 insertions(+), 90 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api.adoc
index cb48d9c..40c2f4c 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api.adoc
@@ -21,16 +21,6 @@ It also lists their corresponding implementation, either a default implementatio
 |Implementation
 |Notes
 
-|xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_AcceptHeaderService[`o.a.i.applib.` +
-`services.acceptheader` +
-`AcceptHeaderService`]
-|Request-scoped access to HTTP Accept headers.
-|`AcceptHeaderServiceDefault` +
-``o.a.i.core`` +
-``isis-viewer-restfulobjects-rendering``
-|Populated only when the domain objects are accessed using the xref:../ugvro/ugvro.adoc#[Restful Objects viewer].
-
-
 |xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_ActionInvocationContext[`o.a.i.applib.` +
 `services.actinv` +
 `ActionInvocation-` +
@@ -158,7 +148,6 @@ Key:
 
 
 
-include::_rgsvc_application-layer-api_AcceptHeaderService.adoc[leveloffset=+1]
 include::_rgsvc_application-layer-api_ActionInvocationContext.adoc[leveloffset=+1]
 include::_rgsvc_application-layer-api_BackgroundService.adoc[leveloffset=+1]
 include::_rgsvc_application-layer-api_CommandContext.adoc[leveloffset=+1]
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api.adoc
index a53aa09..4e3d3b8 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api.adoc
@@ -38,16 +38,6 @@ It also lists their corresponding implementation, either a default implementatio
 `Contributions`
 
 
-|xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_DeepLinkService[`o.a.i.applib` +
-`services.deeplink` +
-`DeepLinkService`]
-|Obtain a URL to a domain object (eg for use within an email or report)
-|`DeepLinkServiceWicket` +
-``o.a.i.viewer`` +
-``isis-viewer-wicket-impl``
-|Implementation only usable within Wicket viewer
-
-
 |xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_EmailService[`o.a.i.applib.` +
 `services.email` +
 `EmailService`]
@@ -58,16 +48,6 @@ It also lists their corresponding implementation, either a default implementatio
 |
 
 
-|xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_GuiceBeanProvider[`o.a.i.applib.` +
-`services.guice` +
-`GuiceBeanProvider`]
-|Access to internal framework services initialized using Guice DI.
-|`GuiceBeanProviderWicket` +
-``o.a.i.core`` +
-``isis-viewer-wicket-impl``
-|
-
-
 
 |xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_JaxbService[`o.a.i.applib.` +
 `services.jaxb` +
@@ -114,9 +94,7 @@ Key:
 
 
 include::_rgsvc_integration-api_BookmarkService.adoc[leveloffset=+1]
-include::_rgsvc_integration-api_DeepLinkService.adoc[leveloffset=+1]
 include::_rgsvc_integration-api_EmailService.adoc[leveloffset=+1]
-include::_rgsvc_integration-api_GuiceBeanProvider.adoc[leveloffset=+1]
 include::_rgsvc_integration-api_JaxbService.adoc[leveloffset=+1]
 include::_rgsvc_integration-api_MementoService.adoc[leveloffset=+1]
 include::_rgsvc_integration-api_XmlSnapshotService.adoc[leveloffset=+1]
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-api.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-api.adoc
new file mode 100644
index 0000000..56ed252
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-api.adoc
@@ -0,0 +1,81 @@
+[[_rgsvc_presentation-layer-api]]
+= Presentation Layer API
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+:_basedir: ../../
+:_imagesdir: images/
+
+
+
+Domain service APIs for the presentation layer allow the domain objects to control aspects of the user interface.
+The implementations are specific to the particular viewer (xref:../ugvw/ugvw.adoc#[Wicket viewer] or xref:../ugvro/ugvro.adoc#[Restful Objects viewer]) so the domain code must guard against them being unavailable in some cases.
+
+
+The table below summarizes the presentation layer APIs defined by Apache Isis.
+It also lists their corresponding implementation.
+
+.Presentation Layer API
+[cols="2,4a,1,1", options="header"]
+|===
+
+|API
+|Description
+|Implementation
+|Notes
+
+|xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-layer-api_AcceptHeaderService[`o.a.i.applib.` +
+`services.acceptheader` +
+`AcceptHeaderService`]
+|Request-scoped access to HTTP Accept headers.
+|`AcceptHeaderServiceDefault` +
+``o.a.i.core`` +
+``isis-core-viewer-restfulobjects-rendering``
+|Implementation only usable within the xref:../ugvro/ugvro.adoc#[Restful Objects viewer].
+
+
+|xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-layer-api_BookmarkUiService[`o.a.i.applib.` +
+`services.bookmarkui` +
+`BookmarkUiService`]
+|Manage bookmarks and breadcrumbs in the UIO.
+|`BookmarkUiServiceWicket` +
+``o.a.i.core`` +
+``isis-core-viewer-wicket-impl``
+|(`1.16.0-SNAPSHOT`) Implementation only usable within the xref:../ugvw/ugvw.adoc#[Wicket viewer].
+
+
+|xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-api_DeepLinkService[`o.a.i.applib` +
+`services.deeplink` +
+`DeepLinkService`]
+|Obtain a URL to a domain object (eg for use within an email or report)
+|`DeepLinkServiceWicket` +
+``o.a.i.viewer`` +
+``isis-core-viewer-wicket-impl``
+|Implementation only usable within the xref:../ugvw/ugvw.adoc#[Wicket viewer].
+
+
+|xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-api_GuiceBeanProvider[`o.a.i.applib.` +
+`services.guice` +
+`GuiceBeanProvider`]
+|Access to internal framework services initialized using Guice DI.
+|`GuiceBeanProviderWicket` +
+``o.a.i.core`` +
+``isis-core-viewer-wicket-impl``
+|Implementation only usable within the xref:../ugvw/ugvw.adoc#[Wicket viewer].
+
+
+
+
+|===
+
+Key:
+
+* `o.a.i` is an abbreviation for `org.apache.isis`
+* `o.ia.m` is an abbreviation for `org.isisaddons.module`
+* `o.a.i.c.m.s` is an abbreviation for `org.apache.isis.core.metamodel.services`
+* `o.a.i.c.r.s` is an abbreviation for `org.apache.isis.core.runtime.services`
+
+
+
+include::_rgsvc_presentation-layer-api_AcceptHeaderService.adoc[leveloffset=+1]
+include::_rgsvc_presentation-layer-api_BookmarkUiService.adoc[leveloffset=+1]
+include::_rgsvc_presentation-api_DeepLinkService.adoc[leveloffset=+1]
+include::_rgsvc_presentation-api_GuiceBeanProvider.adoc[leveloffset=+1]
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_AcceptHeaderService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-api_AcceptHeaderService.adoc
similarity index 98%
rename from adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_AcceptHeaderService.adoc
rename to adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-api_AcceptHeaderService.adoc
index c611d46..3112499 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_AcceptHeaderService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-api_AcceptHeaderService.adoc
@@ -1,4 +1,4 @@
-[[_rgsvc_application-layer-api_AcceptHeaderService]]
+[[_rgsvc_presentation-layer-api_AcceptHeaderService]]
 = `AcceptHeaderService`
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 :_basedir: ../../
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_DeepLinkService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-api_BookmarkUiService.adoc
similarity index 52%
copy from adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_DeepLinkService.adoc
copy to adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-api_BookmarkUiService.adoc
index 816d4a2..060bfa4 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_DeepLinkService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-api_BookmarkUiService.adoc
@@ -1,47 +1,33 @@
-[[_rgsvc_integration-api_DeepLinkService]]
-= `DeepLinkService`
+[[_rgsvc_presentation-api_BookmarkUiService]]
+= `BookmarkUiService` (`1.16.0-SNAPSHOT`)
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 :_basedir: ../../
 :_imagesdir: images/
 
 
 
-The `DeepLinkService` provides the ability to obtain a `java.net.URI` that links to a representation of any (persisted) domain entity or
-view model.
+The `BookmarkUiService` provides the ability to programmatically interact with bookmarked pages and breadcrumbs, as rendered by the Wicket viewer.
 
-A typical use case is to generate a clickable link for rendering in an email, PDF, tweet or other communication.
+One possible use case is programmatically to support multiple "contexts" and allow the end-user to switch from one context to another.
 
 
 
 == API & Implementation
 
-The API defined by `DeepLinkService` is:
+The API defined by `BookmarkUiService` is:
 
 [source,java]
 ----
-public interface DeepLinkService {
-    URI deepLinkFor(Object domainObject); // <1>
+public interface BookmarkUiService {
+    void clear();   // <1>
 }
 ----
-<1> Creates a URI that can be used to obtain a representation of the provided domain object in one of the Apache Isis viewers.
+<1> Simply clears the current list of breadcrumbs and bookmarks.
 
-The xref:../ugvw/ugvw.adoc#[Wicket viewer] this provides an implementation for accessing the representation through this viewer.  (For the xref:../ugvro/ugvro.adoc#[RestfulObjects viewer], a URL can be constructed according to the link:http://www.restfulobjects.org[Restful Objects spec] in conjunction with a `Bookmark` obtained via the xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_BookmarkService[`BookmarkService`]).
+The xref:../ugvw/ugvw.adoc#[Wicket viewer] provides an implementation of this service, `o.a.i.viewer.wicket.viewer.services.BookmarkUiServiceWicket`.
 
 
 
-== Usage within the framework
-
-The xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-layer-spi_EmailNotificationService[`EmailNotificationService`] uses this service in order to generate emails as part of xref:../ugvw/ugvw.adoc#_ugvw_features_user-registration[user registration].
-
-
-
-== Implementations
-
-The Wicket viewer core framework provides a default implementation of this API:
-
-* `org.apache.isis.viewer.wicket.viewer.services.DeepLinkServiceWicket`
-
-
 
 
 == Registering the Services
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_DeepLinkService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-api_DeepLinkService.adoc
similarity index 78%
rename from adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_DeepLinkService.adoc
rename to adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-api_DeepLinkService.adoc
index 816d4a2..bfec256 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_DeepLinkService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-api_DeepLinkService.adoc
@@ -1,4 +1,4 @@
-[[_rgsvc_integration-api_DeepLinkService]]
+[[_rgsvc_presentation-api_DeepLinkService]]
 = `DeepLinkService`
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 :_basedir: ../../
@@ -6,8 +6,7 @@
 
 
 
-The `DeepLinkService` provides the ability to obtain a `java.net.URI` that links to a representation of any (persisted) domain entity or
-view model.
+The `DeepLinkService` provides the ability to obtain a `java.net.URI` that links to a representation of any (persisted) domain entity or view model.
 
 A typical use case is to generate a clickable link for rendering in an email, PDF, tweet or other communication.
 
@@ -25,7 +24,9 @@ public interface DeepLinkService {
 ----
 <1> Creates a URI that can be used to obtain a representation of the provided domain object in one of the Apache Isis viewers.
 
-The xref:../ugvw/ugvw.adoc#[Wicket viewer] this provides an implementation for accessing the representation through this viewer.  (For the xref:../ugvro/ugvro.adoc#[RestfulObjects viewer], a URL can be constructed according to the link:http://www.restfulobjects.org[Restful Objects spec] in conjunction with a `Bookmark` obtained via the xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_BookmarkService[`BookmarkService`]).
+The xref:../ugvw/ugvw.adoc#[Wicket viewer] provides an implementation of this service `o.a.i.viewer.wicket.viewer.services.DeepLinkServiceWicket`.
+
+For the xref:../ugvro/ugvro.adoc#[RestfulObjects viewer], a URL can be constructed according to the link:http://www.restfulobjects.org[Restful Objects spec] in conjunction with a `Bookmark` obtained via the xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_BookmarkService[`BookmarkService`].
 
 
 
@@ -35,14 +36,6 @@ The xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-layer-spi_EmailNotificationServ
 
 
 
-== Implementations
-
-The Wicket viewer core framework provides a default implementation of this API:
-
-* `org.apache.isis.viewer.wicket.viewer.services.DeepLinkServiceWicket`
-
-
-
 
 == Registering the Services
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_GuiceBeanProvider.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-api_GuiceBeanProvider.adoc
similarity index 97%
rename from adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_GuiceBeanProvider.adoc
rename to adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-api_GuiceBeanProvider.adoc
index ea9c36e..e7cb036 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_GuiceBeanProvider.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-api_GuiceBeanProvider.adoc
@@ -1,4 +1,4 @@
-[[_rgsvc_integration-api_GuiceBeanProvider]]
+[[_rgsvc_presentation-api_GuiceBeanProvider]]
 = `GuiceBeanProvider`
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 :_basedir: ../../
@@ -7,7 +7,7 @@
 
 The `GuiceBeanProvider` domain service acts as a bridge between Apache Isis' xref:../ugvw/ugvw.adoc#[Wicket viewer] internal bootstrapping using link:https://github.com/google/guice[Google Guice].
 
-This service operates at a very low-level, and you are unlikely to have a need for it.  It is used internally by the framework, in the default implementation of the xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_DeepLinkService[`DeepLinkService`].
+This service operates at a very low-level, and you are unlikely to have a need for it.  It is used internally by the framework, in the default implementation of the xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-api_DeepLinkService[`DeepLinkService`].
 
 [NOTE]
 ====
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/images/reference-services/categories.png b/adocs/documentation/src/main/asciidoc/guides/rgsvc/images/reference-services/categories.png
index 009ae5b..916b13b 100644
Binary files a/adocs/documentation/src/main/asciidoc/guides/rgsvc/images/reference-services/categories.png and b/adocs/documentation/src/main/asciidoc/guides/rgsvc/images/reference-services/categories.png differ
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/images/reference-services/categories.pptx b/adocs/documentation/src/main/asciidoc/guides/rgsvc/images/reference-services/categories.pptx
index 1dce265..8425bc9 100644
Binary files a/adocs/documentation/src/main/asciidoc/guides/rgsvc/images/reference-services/categories.pptx and b/adocs/documentation/src/main/asciidoc/guides/rgsvc/images/reference-services/categories.pptx differ
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/rgsvc.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/rgsvc.adoc
index 302b39d..1cba9f7 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/rgsvc.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/rgsvc.adoc
@@ -48,6 +48,7 @@ The remaining guides are:
 
 
 include::_rgsvc_intro.adoc[leveloffset=+1]
+include::_rgsvc_presentation-layer-api.adoc[leveloffset=+1]
 include::_rgsvc_presentation-layer-spi.adoc[leveloffset=+1]
 include::_rgsvc_application-layer-api.adoc[leveloffset=+1]
 include::_rgsvc_application-layer-spi.adoc[leveloffset=+1]
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_available-domain-services_framework-provided.adoc b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_available-domain-services_framework-provided.adoc
index f9b1aba..e947cf7 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_available-domain-services_framework-provided.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_available-domain-services_framework-provided.adoc
@@ -57,7 +57,7 @@ Bookmarks and Mementos:
 
 * xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_BookmarkService[`BookmarkService`]
 * xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_MementoService[`MementoService`]
-* xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_DeepLinkService[`DeepLinkService`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-api_DeepLinkService[`DeepLinkService`]
 * xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_JaxbService[`JaxbService`]
 * xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_XmlSnapshotService[`XmlSnapshotService`]
 
@@ -74,7 +74,7 @@ Layout and UI Management:
 
 REST Support:
 
-* xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_AcceptHeaderService[`AcceptHeaderService`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-layer-api_AcceptHeaderService[`AcceptHeaderService`]
 * xref:../rgsvc/rgsvc.adoc#_rgsvc_metadata-api_SwaggerService[`SwaggerService`]
 * xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-layer-spi_ContentMappingService[`ContentMappingService`] (SPI)
 
@@ -86,7 +86,7 @@ Metamodel:
 Other API:
 
 * xref:../rgsvc/rgsvc.adoc#_rgsvc_testing_FixtureScriptsDefault[`FixtureScriptsDefault`]
-* xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_GuiceBeanProvider[`GuiceBeanProvider`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-api_GuiceBeanProvider[`GuiceBeanProvider`]
 * xref:../rgsvc/rgsvc.adoc#_rgsvc_testing_SudoService[`SudoService`]
 * xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_TransactionService[`TransactionService`]
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_identifiers_oid.adoc b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_identifiers_oid.adoc
index 3279a96..0d5fb4d 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_identifiers_oid.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_identifiers_oid.adoc
@@ -39,7 +39,7 @@ use the oid tuple to look up, render and allow the user to interact with domain
 
 Although the exact content of an OID should be considered opaque by domain objects, it is possible for domain objects to obtain OIDs.
 These are represented as `Bookmark`s, obtained from the xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_BookmarkService[`BookmarkService`].
-Deep links meanwhile can be obtained from the xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_DeepLinkService[`DeepLinkService`].
+Deep links meanwhile can be obtained from the xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-api_DeepLinkService[`DeepLinkService`].
 
 OIDs can also be converted into XML format, useful for integration scenarios.
 The xref:../rgcms/rgcms.adoc#_rgcms_schema-common[common schema] XSD defines the `oidDto` complex type for precisely this purpose.
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/acceptheader/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/services/acceptheader/package-info.java
index 3d4f62f..0c9bcc4 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/acceptheader/package-info.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/acceptheader/package-info.java
@@ -25,6 +25,6 @@
  * Its intended use is to support multiple versions of a REST API, where the responsibility for content negotiation (determining which version of the REST API is to be used) is managed by
  * </p>
  *
- * @see <a href="http://isis.apache.org/guides/rgsvc/rgsvc.html#_rgsvc_application-layer-api_AcceptHeaderService">Reference guide</a>
+ * @see <a href="http://isis.apache.org/guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-api_AcceptHeaderService">Reference guide</a>
  */
 package org.apache.isis.applib.services.acceptheader;
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/title/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/services/bookmarkui/BookmarkUiService.java
similarity index 73%
copy from core/applib/src/main/java/org/apache/isis/applib/services/title/package-info.java
copy to core/applib/src/main/java/org/apache/isis/applib/services/bookmarkui/BookmarkUiService.java
index a6ea945..47b2b57 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/title/package-info.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/bookmarkui/BookmarkUiService.java
@@ -17,9 +17,13 @@
  *  under the License.
  */
 
-/**
- * The {@link TitleService} provides methods to programmatically obtain the title and icon of a domain object.
+package org.apache.isis.applib.services.bookmarkui;
 
- * @see <a href="http://isis.apache.org/guides/rgsvc/rgsvc.html#_rgsvc_application-layer-api_TitleService">Reference guide</a>
- */
-package org.apache.isis.applib.services.title;
\ No newline at end of file
+import org.apache.isis.applib.annotation.Programmatic;
+
+public interface BookmarkUiService {
+
+    @Programmatic
+    void clear();
+
+}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/guice/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/services/guice/package-info.java
index f35fce8..81b6f05 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/guice/package-info.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/guice/package-info.java
@@ -21,6 +21,6 @@
  * The {@link org.apache.isis.applib.services.guice.GuiceBeanProvider} domain service acts as a bridge between
  * Apache Isis' Wicket viewer internal bootstrapping using Google Guice.
  *
- * @see <a href="http://isis.apache.org/guides/rgsvc/rgsvc.html#_rgsvc_integration-api_GuiceBeanProvider">Reference guide</a>
+ * @see <a href="http://isis.apache.org/guides/rgsvc/rgsvc.html#_rgsvc_presentation-api_GuiceBeanProvider">Reference guide</a>
  */
 package org.apache.isis.applib.services.guice;
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/linking/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/services/linking/package-info.java
index 77fbc92..e51f557 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/linking/package-info.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/linking/package-info.java
@@ -21,6 +21,6 @@
  * The {@link org.apache.isis.applib.services.linking.DeepLinkService} provides the ability to obtain a
  * <code>java.net.URI</code> that links to a representation of any (persisted) domain entity or view model.
  *
- * @see <a href="http://isis.apache.org/guides/rgsvc/rgsvc.html#_rgsvc_integration-api_DeepLinkService">Reference guide</a>
+ * @see <a href="http://isis.apache.org/guides/rgsvc/rgsvc.html#_rgsvc_presentation-api_DeepLinkService">Reference guide</a>
  */
 package org.apache.isis.applib.services.linking;
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/title/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/services/title/package-info.java
index a6ea945..112ae2d 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/title/package-info.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/title/package-info.java
@@ -18,7 +18,7 @@
  */
 
 /**
- * The {@link TitleService} provides methods to programmatically obtain the title and icon of a domain object.
+ * The {@link org.apache.isis.applib.services.title.TitleService} provides methods to programmatically obtain the title and icon of a domain object.
 
  * @see <a href="http://isis.apache.org/guides/rgsvc/rgsvc.html#_rgsvc_application-layer-api_TitleService">Reference guide</a>
  */
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/package-info.java
index 066cea3..d6a695c 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/package-info.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/package-info.java
@@ -18,7 +18,7 @@
  */
 
 /**
- * The {@link UrlEncodingService} defines a consistent way to convert strings to/from a form safe for use within a URL.
+ * The {@link org.apache.isis.applib.services.urlencoding.UrlEncodingService} defines a consistent way to convert strings to/from a form safe for use within a URL.
  * The service is used by the framework to map view model mementos (derived from the state of the view model itself)
  * into a form that can be used as a view model. When the framework needs to recreate the view model (for example to
  * invoke an action on it), this URL is converted back into a view model memento, from which the view model can then
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/title/package-info.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/BookmarkUiServiceWicket.java
similarity index 50%
copy from core/applib/src/main/java/org/apache/isis/applib/services/title/package-info.java
copy to core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/BookmarkUiServiceWicket.java
index a6ea945..6e2929f 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/title/package-info.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/BookmarkUiServiceWicket.java
@@ -16,10 +16,26 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
+package org.apache.isis.viewer.wicket.viewer.services;
 
-/**
- * The {@link TitleService} provides methods to programmatically obtain the title and icon of a domain object.
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.services.bookmarkui.BookmarkUiService;
+import org.apache.isis.viewer.wicket.viewer.integration.wicket.AuthenticatedWebSessionForIsis;
 
- * @see <a href="http://isis.apache.org/guides/rgsvc/rgsvc.html#_rgsvc_application-layer-api_TitleService">Reference guide</a>
- */
-package org.apache.isis.applib.services.title;
\ No newline at end of file
+@DomainService(
+        nature = NatureOfService.DOMAIN,
+        menuOrder = "" + Integer.MAX_VALUE
+)
+public class BookmarkUiServiceWicket implements BookmarkUiService {
+
+    @Override
+    public void clear() {
+        final AuthenticatedWebSessionForIsis session = AuthenticatedWebSessionForIsis.get();
+        if (session == null) {
+            return;
+        }
+        session.getBreadcrumbModel().clear();
+        session.getBookmarkedPagesModel().clear();
+    }
+}
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkedPagesModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkedPagesModel.java
index bbc9cde..1394f67 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkedPagesModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkedPagesModel.java
@@ -117,6 +117,7 @@ public class BookmarkedPagesModel extends ModelAbstract<List<BookmarkTreeNode>>
 
     public void clear() {
         rootNodes.clear();
+        current = null;
     }
 
     public boolean isEmpty() {
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
index 47e2a36..4bb6631 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
@@ -172,4 +172,10 @@ public class BreadcrumbModel implements Serializable {
         list.remove(bookmark);
     }
 
+    public synchronized void clear() {
+        bookmarkByOidStr.clear();
+        oidStrByBookmark.clear();
+        list.clear();
+        mostRecentlyVisitedOidStr = null;
+    }
 }

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