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 2020/01/09 15:00:18 UTC

[isis] 01/05: ISIS-2261: adds isis.viewer.restfulobjects.baseUri optional config property

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

commit 1d21728eb42d99c8e89752b8d7b56abed684bb25
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 9 11:00:12 2020 +0000

    ISIS-2261: adds isis.viewer.restfulobjects.baseUri optional config property
    
    and updates ResourceAbstract to use it if defined.
---
 antora/playbooks/site-extensions.yml                     |  2 +-
 antora/playbooks/site.yml                                |  2 +-
 .../java/org/apache/isis/config/IsisConfiguration.java   | 16 ++++++++++++++++
 .../apache/isis/metamodel/context/MetaModelContexts.java |  5 +++--
 .../restfulobjects/viewer/context/ResourceContext.java   | 12 +++++++-----
 .../viewer/resources/DomainObjectResourceServerside.java |  7 +++++--
 .../resources/DomainServiceResourceServerside.java       |  7 +++++--
 .../viewer/resources/DomainTypeResourceServerside.java   |  7 +++++--
 .../viewer/resources/HomePageResourceServerside.java     |  7 +++++--
 .../viewer/resources/ImageResourceServerside.java        |  7 +++++--
 .../viewer/resources/MenuBarsResourceServerside.java     |  7 +++++--
 .../viewer/resources/ResourceAbstract.java               | 12 ++++++++++--
 .../viewer/resources/UserResourceServerside.java         |  7 +++++--
 .../viewer/resources/VersionResourceServerside.java      |  7 +++++--
 extensions/persistence/{ => jdo}/flywayjdo/impl/pom.xml  |  0
 .../extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java |  0
 .../impl => jdo/flywayjdo}/src/main/doc/antora.yml       |  0
 .../flywayjdo}/src/main/doc/modules/flywayjdo/nav.adoc   |  0
 .../src/main/doc/modules/flywayjdo/pages/about.adoc      |  0
 .../main/doc/modules/flywayjdo/partials/module-nav.adoc  |  0
 .../IsisModuleExtViewerWicketPdfjsMetaModel.java         |  4 ++--
 .../{impl => }/metamodel/facet/PdfJsViewerFacet.java     |  2 +-
 .../metamodel/facet/PdfJsViewerFacetAbstract.java        |  2 +-
 .../metamodel/facet/PdfJsViewerFacetFromAnnotation.java  |  2 +-
 .../facet/PdfJsViewerFacetFromAnnotationFactory.java     |  2 +-
 .../{impl => }/ui/IsisModuleExtViewerWicketPdfjsUi.java  |  6 +++---
 .../pdfjs/{impl => }/ui/components/PdfJsViewerPanel.css  |  0
 .../pdfjs/{impl => }/ui/components/PdfJsViewerPanel.html |  0
 .../pdfjs/{impl => }/ui/components/PdfJsViewerPanel.java |  4 ++--
 .../pdfjs/{impl => }/ui/components/PdfJsViewerPanel.js   |  0
 .../ui/components/PdfJsViewerPanelCallbacks.template.js  |  0
 .../ui/components/PdfJsViewerPanelComponentFactory.java  |  4 ++--
 .../{impl => }/ui/components/PdfJsViewerReference.java   |  2 +-
 33 files changed, 92 insertions(+), 41 deletions(-)

diff --git a/antora/playbooks/site-extensions.yml b/antora/playbooks/site-extensions.yml
index ce06b9f..b776e44 100644
--- a/antora/playbooks/site-extensions.yml
+++ b/antora/playbooks/site-extensions.yml
@@ -17,7 +17,7 @@ content:
 
 # extensions
     - url: .
-      start_path: extensions/persistence/flywayjdo/impl/src/main/doc # extensions
+      start_path: extensions/persistence/flywayjdo/src/main/doc # extensions
       branches: HEAD
 
     - url: .
diff --git a/antora/playbooks/site.yml b/antora/playbooks/site.yml
index 256cfd4..28234d4 100644
--- a/antora/playbooks/site.yml
+++ b/antora/playbooks/site.yml
@@ -120,7 +120,7 @@ content:
 
 # extensions
     - url: .
-      start_path: extensions/persistence/flywayjdo/impl/src/main/doc # extensions
+      start_path: extensions/persistence/flywayjdo/src/main/doc # extensions
       branches: HEAD
 
     - url: .
diff --git a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
index 78db370..f677e81 100644
--- a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
@@ -24,6 +24,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Optional;
 import java.util.StringTokenizer;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -706,6 +707,21 @@ public class IsisConfiguration {
             private boolean suppressMemberId = false;
             private boolean suppressMemberLinks = false;
             private boolean suppressUpdateLink = false;
+
+            /**
+             * If left unset (the default), then the RO viewer will use the {@link javax.ws.rs.core.UriInfo}
+             * injected using  @link javax.ws.rs.core.Context}) to figure out the base Uri (used to render
+             * <code>href</code>s).
+             *
+             * <p>
+             * This will be correct much of the time, but will almost certainly be wrong if there is a reverse proxy.
+             * </p>
+             *
+             * <p>
+             * If set, eg <code>https://dev.myapp.com</code>, then this value will be used instead.
+             * </p>
+             */
+            private Optional<String> baseUri = Optional.empty();
             private final Gsoc2013 gsoc2013 = new Gsoc2013();
             @Data
             public static class Gsoc2013 {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/context/MetaModelContexts.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/context/MetaModelContexts.java
index 7bd2e06..8353664 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/context/MetaModelContexts.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/context/MetaModelContexts.java
@@ -23,6 +23,7 @@ import javax.inject.Singleton;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
 
 import org.apache.isis.commons.internal.environment.IsisSystemEnvironment;
 
@@ -35,8 +36,8 @@ import org.apache.isis.commons.internal.environment.IsisSystemEnvironment;
 @Named("isisMetaModel.MetaModelContexts")
 public class MetaModelContexts {
 
-    @Bean @Singleton
-    public MetaModelContext metaModelContext(IsisSystemEnvironment systemEnvironment) {
+    @Bean @Singleton @Primary
+    public MetaModelContext metaModelContext(final IsisSystemEnvironment systemEnvironment) {
         return new MetaModelContext_usingIoc(systemEnvironment.getIocContainer());
     }
 
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext.java
index 16581db..b48bb82 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext.java
@@ -57,11 +57,11 @@ import lombok.Setter;
 public class ResourceContext extends RuntimeContextBase implements IResourceContext {
 
     @Getter private final HttpHeaders httpHeaders;
-    @Getter private final UriInfo uriInfo;
     @Getter private final Request request;
     @Getter private final HttpServletRequest httpServletRequest;
     @Getter private final HttpServletResponse httpServletResponse;
     @Getter private final SecurityContext securityContext;
+    private final String baseUri;
 
     @Getter private List<List<String>> followLinks;
     @Getter private boolean validateOnly;
@@ -79,7 +79,7 @@ public class ResourceContext extends RuntimeContextBase implements IResourceCont
             final RepresentationType representationType,
             final HttpHeaders httpHeaders,
             final Providers providers,
-            final UriInfo uriInfo,
+            final String baseUri,
             final Request request,
             final Where where,
             final RepresentationService.Intent intent,
@@ -87,13 +87,13 @@ public class ResourceContext extends RuntimeContextBase implements IResourceCont
             final HttpServletRequest httpServletRequest,
             final HttpServletResponse httpServletResponse,
             final SecurityContext securityContext,
-            final MetaModelContext metaModelContext, final InteractionInitiatedBy interactionInitiatedBy) {
+            final MetaModelContext metaModelContext,
+            final InteractionInitiatedBy interactionInitiatedBy) {
 
         super(metaModelContext);
 
         this.httpHeaders = httpHeaders;
         //not used ... this.providers = providers;
-        this.uriInfo = uriInfo;
         this.request = request;
         this.where = where;
         this.intent = intent;
@@ -103,6 +103,8 @@ public class ResourceContext extends RuntimeContextBase implements IResourceCont
         this.securityContext = securityContext;
         this.interactionInitiatedBy = interactionInitiatedBy;
 
+        this.baseUri = baseUri;
+
         init(representationType);
     }
 
@@ -262,7 +264,7 @@ public class ResourceContext extends RuntimeContextBase implements IResourceCont
 
     @Override
     public String urlFor(final String url) {
-        return getUriInfo().getBaseUri().toString() + url;
+        return baseUri.toString() + url;
     }
 
     @Override
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
index 19b05b7..5221dc2 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
@@ -50,6 +50,7 @@ import org.apache.isis.commons.internal.base._Bytes;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.resources._Resources;
 import org.apache.isis.commons.internal.url.UrlDecoderUtil;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.consent.Consent;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.context.MetaModelContext;
@@ -80,8 +81,10 @@ import lombok.extern.log4j.Log4j2;
 public class DomainObjectResourceServerside extends ResourceAbstract implements DomainObjectResource {
 
     @Inject
-    public DomainObjectResourceServerside(final MetaModelContext metaModelContext) {
-        super(metaModelContext);
+    public DomainObjectResourceServerside(
+            final MetaModelContext metaModelContext,
+            final IsisConfiguration isisConfiguration) {
+        super(metaModelContext, isisConfiguration);
         log.debug("<init>");
     }
 
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainServiceResourceServerside.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainServiceResourceServerside.java
index 24f8fdb..ae24653 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainServiceResourceServerside.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainServiceResourceServerside.java
@@ -39,6 +39,7 @@ import org.springframework.stereotype.Component;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.commons.internal.url.UrlDecoderUtil;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.context.MetaModelContext;
 import org.apache.isis.metamodel.facets.object.domainservice.DomainServiceFacet;
 import org.apache.isis.metamodel.spec.ManagedObject;
@@ -73,8 +74,10 @@ public class DomainServiceResourceServerside extends ResourceAbstract implements
     };
 
     @Inject
-    public DomainServiceResourceServerside(final MetaModelContext metaModelContext) {
-        super(metaModelContext);
+    public DomainServiceResourceServerside(
+            final MetaModelContext metaModelContext,
+            final IsisConfiguration isisConfiguration) {
+        super(metaModelContext, isisConfiguration);
     }
 
     @Override
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java
index 2d06c8b..bef5079 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java
@@ -34,6 +34,7 @@ import org.springframework.stereotype.Component;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.layout.grid.Grid;
 import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.context.MetaModelContext;
 import org.apache.isis.metamodel.facets.object.grid.GridFacet;
 import org.apache.isis.metamodel.spec.ObjectSpecId;
@@ -80,8 +81,10 @@ import org.apache.isis.viewer.restfulobjects.viewer.util.UrlParserUtils;
 public class DomainTypeResourceServerside extends ResourceAbstract implements DomainTypeResource {
 
     @Inject
-    public DomainTypeResourceServerside(final MetaModelContext metaModelContext) {
-        super(metaModelContext);
+    public DomainTypeResourceServerside(
+            final MetaModelContext metaModelContext,
+            final IsisConfiguration isisConfiguration) {
+        super(metaModelContext, isisConfiguration);
     }
 
     @Override
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/HomePageResourceServerside.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/HomePageResourceServerside.java
index 3026303..afe69a4 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/HomePageResourceServerside.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/HomePageResourceServerside.java
@@ -28,6 +28,7 @@ import javax.ws.rs.core.Response;
 import org.springframework.stereotype.Component;
 
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.context.MetaModelContext;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
@@ -44,8 +45,10 @@ import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationSer
 public class HomePageResourceServerside extends ResourceAbstract implements HomePageResource {
 
     @Inject
-    public HomePageResourceServerside(final MetaModelContext metaModelContext) {
-        super(metaModelContext);
+    public HomePageResourceServerside(
+            final MetaModelContext metaModelContext,
+            final IsisConfiguration isisConfiguration) {
+        super(metaModelContext, isisConfiguration);
     }
 
     @Override
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ImageResourceServerside.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ImageResourceServerside.java
index 12bb4db..d552a8f 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ImageResourceServerside.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ImageResourceServerside.java
@@ -31,6 +31,7 @@ import org.springframework.stereotype.Component;
 
 import org.apache.isis.commons.internal.base._Bytes;
 import org.apache.isis.commons.internal.resources._Resources;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.context.MetaModelContext;
 
 @Component
@@ -38,8 +39,10 @@ import org.apache.isis.metamodel.context.MetaModelContext;
 public class ImageResourceServerside extends ResourceAbstract {
 
     @Inject
-    public ImageResourceServerside(final MetaModelContext metaModelContext) {
-        super(metaModelContext);
+    public ImageResourceServerside(
+            final MetaModelContext metaModelContext,
+            final IsisConfiguration isisConfiguration) {
+        super(metaModelContext, isisConfiguration);
     }
 
     @GET
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/MenuBarsResourceServerside.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/MenuBarsResourceServerside.java
index b38802e..4a08a9f 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/MenuBarsResourceServerside.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/MenuBarsResourceServerside.java
@@ -32,6 +32,7 @@ import org.apache.isis.applib.layout.links.Link;
 import org.apache.isis.applib.layout.menubars.MenuBars;
 import org.apache.isis.applib.services.menu.MenuBarsService;
 import org.apache.isis.config.ConfigurationConstants;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.context.MetaModelContext;
 import org.apache.isis.viewer.restfulobjects.applib.Rel;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
@@ -46,8 +47,10 @@ import org.apache.isis.viewer.restfulobjects.viewer.resources.serialization.Seri
 public class MenuBarsResourceServerside extends ResourceAbstract implements MenuBarsResource {
 
     @Inject
-    public MenuBarsResourceServerside(final MetaModelContext metaModelContext) {
-        super(metaModelContext);
+    public MenuBarsResourceServerside(
+            final MetaModelContext metaModelContext,
+            final IsisConfiguration isisConfiguration) {
+        super(metaModelContext, isisConfiguration);
     }
 
     @Override
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
index 73d27b1..38a89f8 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
@@ -34,6 +34,7 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.applib.services.command.CommandContext;
 import org.apache.isis.commons.internal.url.UrlDecoderUtil;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.context.MetaModelContext;
 import org.apache.isis.metamodel.spec.ManagedObject;
@@ -52,6 +53,7 @@ import lombok.val;
 public abstract class ResourceAbstract {
 
     protected final MetaModelContext metaModelContext;
+    protected final IsisConfiguration isisConfiguration;
 
     @Context HttpHeaders httpHeaders;
     @Context UriInfo uriInfo;
@@ -64,8 +66,11 @@ public abstract class ResourceAbstract {
     private ResourceContext resourceContext;
 
     @Inject
-    protected ResourceAbstract(MetaModelContext metaModelContext) {
+    protected ResourceAbstract(
+            final MetaModelContext metaModelContext,
+            final IsisConfiguration isisConfiguration) {
         this.metaModelContext = metaModelContext;
+        this.isisConfiguration = isisConfiguration;
     }
 
     protected void init(
@@ -108,9 +113,12 @@ public abstract class ResourceAbstract {
             throw RestfulObjectsApplicationException.create(HttpStatusCode.UNAUTHORIZED);
         }
 
+        final String baseUri = isisConfiguration.getViewer().getRestfulobjects().getBaseUri()
+                                    .orElse(uriInfo.getBaseUri().toString());
+
         this.resourceContext = new ResourceContext(
                 representationType, 
-                httpHeaders, providers, uriInfo, request, 
+                httpHeaders, providers, baseUri, request,
                 where, intent, urlUnencodedQueryString, 
                 httpServletRequest, httpServletResponse,
                 securityContext,
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/UserResourceServerside.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/UserResourceServerside.java
index e25a3de..375b553 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/UserResourceServerside.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/UserResourceServerside.java
@@ -29,6 +29,7 @@ import javax.ws.rs.core.Response;
 import org.springframework.stereotype.Component;
 
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.context.MetaModelContext;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
@@ -45,8 +46,10 @@ import org.apache.isis.viewer.restfulobjects.viewer.webmodule.IsisRestfulObjects
 public class UserResourceServerside extends ResourceAbstract implements UserResource {
 
     @Inject
-    public UserResourceServerside(final MetaModelContext metaModelContext) {
-        super(metaModelContext);
+    public UserResourceServerside(
+            final MetaModelContext metaModelContext,
+            final IsisConfiguration isisConfiguration) {
+        super(metaModelContext, isisConfiguration);
     }
 
     @Override
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/VersionResourceServerside.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/VersionResourceServerside.java
index 291ea9f..ae2e9cf 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/VersionResourceServerside.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/VersionResourceServerside.java
@@ -31,6 +31,7 @@ import javax.ws.rs.core.Response;
 import org.springframework.stereotype.Component;
 
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.context.MetaModelContext;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
@@ -53,8 +54,10 @@ import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationSer
 public class VersionResourceServerside extends ResourceAbstract implements VersionResource {
 
     @Inject
-    public VersionResourceServerside(final MetaModelContext metaModelContext) {
-        super(metaModelContext);
+    public VersionResourceServerside(
+            final MetaModelContext metaModelContext,
+            final IsisConfiguration isisConfiguration) {
+        super(metaModelContext, isisConfiguration);
     }
 
     @Override
diff --git a/extensions/persistence/flywayjdo/impl/pom.xml b/extensions/persistence/jdo/flywayjdo/impl/pom.xml
similarity index 100%
rename from extensions/persistence/flywayjdo/impl/pom.xml
rename to extensions/persistence/jdo/flywayjdo/impl/pom.xml
diff --git a/extensions/persistence/flywayjdo/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java b/extensions/persistence/jdo/flywayjdo/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java
similarity index 100%
rename from extensions/persistence/flywayjdo/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java
rename to extensions/persistence/jdo/flywayjdo/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java
diff --git a/extensions/persistence/flywayjdo/impl/src/main/doc/antora.yml b/extensions/persistence/jdo/flywayjdo/src/main/doc/antora.yml
similarity index 100%
rename from extensions/persistence/flywayjdo/impl/src/main/doc/antora.yml
rename to extensions/persistence/jdo/flywayjdo/src/main/doc/antora.yml
diff --git a/extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/nav.adoc b/extensions/persistence/jdo/flywayjdo/src/main/doc/modules/flywayjdo/nav.adoc
similarity index 100%
rename from extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/nav.adoc
rename to extensions/persistence/jdo/flywayjdo/src/main/doc/modules/flywayjdo/nav.adoc
diff --git a/extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/pages/about.adoc b/extensions/persistence/jdo/flywayjdo/src/main/doc/modules/flywayjdo/pages/about.adoc
similarity index 100%
rename from extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/pages/about.adoc
rename to extensions/persistence/jdo/flywayjdo/src/main/doc/modules/flywayjdo/pages/about.adoc
diff --git a/extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/partials/module-nav.adoc b/extensions/persistence/jdo/flywayjdo/src/main/doc/modules/flywayjdo/partials/module-nav.adoc
similarity index 100%
rename from extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/partials/module-nav.adoc
rename to extensions/persistence/jdo/flywayjdo/src/main/doc/modules/flywayjdo/partials/module-nav.adoc
diff --git a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/metamodel/IsisModuleExtViewerWicketPdfjsMetaModel.java b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/IsisModuleExtViewerWicketPdfjsMetaModel.java
similarity index 60%
rename from extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/metamodel/IsisModuleExtViewerWicketPdfjsMetaModel.java
rename to extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/IsisModuleExtViewerWicketPdfjsMetaModel.java
index ecde9d3..7b1cbe0 100644
--- a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/metamodel/IsisModuleExtViewerWicketPdfjsMetaModel.java
+++ b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/IsisModuleExtViewerWicketPdfjsMetaModel.java
@@ -1,9 +1,9 @@
-package org.apache.isis.extensions.viewer.wicket.pdfjs.impl.metamodel;
+package org.apache.isis.extensions.viewer.wicket.pdfjs.metamodel;
 
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
-import org.apache.isis.extensions.viewer.wicket.pdfjs.impl.metamodel.facet.PdfJsViewerFacetFromAnnotationFactory;
+import org.apache.isis.extensions.viewer.wicket.pdfjs.metamodel.facet.PdfJsViewerFacetFromAnnotationFactory;
 
 @Configuration
 @Import({
diff --git a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/metamodel/facet/PdfJsViewerFacet.java b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacet.java
similarity index 82%
rename from extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/metamodel/facet/PdfJsViewerFacet.java
rename to extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacet.java
index d12a781..2423185 100644
--- a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/metamodel/facet/PdfJsViewerFacet.java
+++ b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacet.java
@@ -1,4 +1,4 @@
-package org.apache.isis.extensions.viewer.wicket.pdfjs.impl.metamodel.facet;
+package org.apache.isis.extensions.viewer.wicket.pdfjs.metamodel.facet;
 
 import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config.PdfJsConfig;
 
diff --git a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/metamodel/facet/PdfJsViewerFacetAbstract.java b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetAbstract.java
similarity index 91%
rename from extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/metamodel/facet/PdfJsViewerFacetAbstract.java
rename to extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetAbstract.java
index c437e75..80361b6 100644
--- a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/metamodel/facet/PdfJsViewerFacetAbstract.java
+++ b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetAbstract.java
@@ -1,4 +1,4 @@
-package org.apache.isis.extensions.viewer.wicket.pdfjs.impl.metamodel.facet;
+package org.apache.isis.extensions.viewer.wicket.pdfjs.metamodel.facet;
 
 import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config.PdfJsConfig;
 
diff --git a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/metamodel/facet/PdfJsViewerFacetFromAnnotation.java b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetFromAnnotation.java
similarity index 97%
rename from extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/metamodel/facet/PdfJsViewerFacetFromAnnotation.java
rename to extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetFromAnnotation.java
index 53d2a0b..ed48e52 100644
--- a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/metamodel/facet/PdfJsViewerFacetFromAnnotation.java
+++ b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetFromAnnotation.java
@@ -1,4 +1,4 @@
-package org.apache.isis.extensions.viewer.wicket.pdfjs.impl.metamodel.facet;
+package org.apache.isis.extensions.viewer.wicket.pdfjs.metamodel.facet;
 
 import java.util.List;
 
diff --git a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/metamodel/facet/PdfJsViewerFacetFromAnnotationFactory.java b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetFromAnnotationFactory.java
similarity index 96%
rename from extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/metamodel/facet/PdfJsViewerFacetFromAnnotationFactory.java
rename to extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetFromAnnotationFactory.java
index 5e5b740..6d02866 100644
--- a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/metamodel/facet/PdfJsViewerFacetFromAnnotationFactory.java
+++ b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetFromAnnotationFactory.java
@@ -1,4 +1,4 @@
-package org.apache.isis.extensions.viewer.wicket.pdfjs.impl.metamodel.facet;
+package org.apache.isis.extensions.viewer.wicket.pdfjs.metamodel.facet;
 
 import java.lang.reflect.Method;
 import java.util.Optional;
diff --git a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/IsisModuleExtViewerWicketPdfjsUi.java b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/IsisModuleExtViewerWicketPdfjsUi.java
similarity index 54%
rename from extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/IsisModuleExtViewerWicketPdfjsUi.java
rename to extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/IsisModuleExtViewerWicketPdfjsUi.java
index 27eb2b3..7721ff7 100644
--- a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/IsisModuleExtViewerWicketPdfjsUi.java
+++ b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/IsisModuleExtViewerWicketPdfjsUi.java
@@ -1,10 +1,10 @@
-package org.apache.isis.extensions.viewer.wicket.pdfjs.impl.ui;
+package org.apache.isis.extensions.viewer.wicket.pdfjs.ui;
 
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
-import org.apache.isis.extensions.viewer.wicket.pdfjs.impl.metamodel.IsisModuleExtViewerWicketPdfjsMetaModel;
-import org.apache.isis.extensions.viewer.wicket.pdfjs.impl.ui.components.PdfJsViewerPanelComponentFactory;
+import org.apache.isis.extensions.viewer.wicket.pdfjs.metamodel.IsisModuleExtViewerWicketPdfjsMetaModel;
+import org.apache.isis.extensions.viewer.wicket.pdfjs.ui.components.PdfJsViewerPanelComponentFactory;
 
 @Configuration
 @Import({
diff --git a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerPanel.css b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.css
similarity index 100%
rename from extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerPanel.css
rename to extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.css
diff --git a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerPanel.html b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.html
similarity index 100%
rename from extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerPanel.html
rename to extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.html
diff --git a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerPanel.java b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
similarity index 98%
rename from extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerPanel.java
rename to extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
index 8f1f321..262c45b 100644
--- a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerPanel.java
+++ b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
@@ -1,4 +1,4 @@
-package org.apache.isis.extensions.viewer.wicket.pdfjs.impl.ui.components;
+package org.apache.isis.extensions.viewer.wicket.pdfjs.ui.components;
 
 import java.io.IOException;
 import java.net.URL;
@@ -38,7 +38,7 @@ import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.user.UserService;
 import org.apache.isis.applib.value.Blob;
 import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.spi.PdfJsViewerAdvisor;
-import org.apache.isis.extensions.viewer.wicket.pdfjs.impl.metamodel.facet.PdfJsViewerFacet;
+import org.apache.isis.extensions.viewer.wicket.pdfjs.metamodel.facet.PdfJsViewerFacet;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
diff --git a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerPanel.js b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.js
similarity index 100%
rename from extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerPanel.js
rename to extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.js
diff --git a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerPanelCallbacks.template.js b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanelCallbacks.template.js
similarity index 100%
rename from extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerPanelCallbacks.template.js
rename to extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanelCallbacks.template.js
diff --git a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerPanelComponentFactory.java b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanelComponentFactory.java
similarity index 92%
rename from extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerPanelComponentFactory.java
rename to extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanelComponentFactory.java
index 0769f0d..9502d76 100644
--- a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerPanelComponentFactory.java
+++ b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanelComponentFactory.java
@@ -1,4 +1,4 @@
-package org.apache.isis.extensions.viewer.wicket.pdfjs.impl.ui.components;
+package org.apache.isis.extensions.viewer.wicket.pdfjs.ui.components;
 
 import java.util.Objects;
 
@@ -13,7 +13,7 @@ import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 
-import org.apache.isis.extensions.viewer.wicket.pdfjs.impl.metamodel.facet.PdfJsViewerFacet;
+import org.apache.isis.extensions.viewer.wicket.pdfjs.metamodel.facet.PdfJsViewerFacet;
 
 import lombok.val;
 
diff --git a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerReference.java b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerReference.java
similarity index 90%
rename from extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerReference.java
rename to extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerReference.java
index 603f883..5bbe7dd 100644
--- a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/impl/ui/components/PdfJsViewerReference.java
+++ b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerReference.java
@@ -1,4 +1,4 @@
-package org.apache.isis.extensions.viewer.wicket.pdfjs.impl.ui.components;
+package org.apache.isis.extensions.viewer.wicket.pdfjs.ui.components;
 
 import java.util.List;
 import org.apache.wicket.markup.head.HeaderItem;