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 2022/05/09 10:43:35 UTC

[isis] branch master updated: ISIS-3040: minor code review/cleanup

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

ahuber 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 f58311cac9 ISIS-3040: minor code review/cleanup
f58311cac9 is described below

commit f58311cac91525fcf4d67c0e68849d5bc2a936f9
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon May 9 12:43:29 2022 +0200

    ISIS-3040: minor code review/cleanup
---
 .../repainting/PdfJsViewerAdvisorFallback.java     |   8 +-
 extensions/applib/excel/fixture/pom.xml            |  17 --
 .../pdfjs/applib/annotations/PdfJsViewer.java      |   5 +-
 .../pdfjs/applib/spi/PdfJsViewerAdvisor.java       | 250 +++------------------
 .../pdfjs/metamodel/facet/PdfJsViewerFacet.java    |   2 +-
 .../metamodel/facet/PdfJsViewerFacetAbstract.java  |  12 +-
 .../pdfjs/ui/components/PdfJsViewerPanel.java      |  13 +-
 .../PdfJsViewerPanelComponentFactory.java          |  15 +-
 .../java/org/wicketstuff/pdfjs/PdfJsPanel.java     |   4 +-
 .../java/org/wicketstuff/pdfjs/PdfJsReference.java |   2 +
 .../pdfjs/WicketStuffPdfJsReference.java           |   2 +
 .../viewer/wicket/model/models/ScalarModel.java    |  18 +-
 12 files changed, 87 insertions(+), 261 deletions(-)

diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PdfJsViewerAdvisorFallback.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PdfJsViewerAdvisorFallback.java
index 669941c14f..451742ff3c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PdfJsViewerAdvisorFallback.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/PropertyLayout/repainting/PdfJsViewerAdvisorFallback.java
@@ -27,19 +27,19 @@ import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.spi.PdfJsViewerAdvi
 public class PdfJsViewerAdvisorFallback implements PdfJsViewerAdvisor {
 
     @Override
-    public Advice advise(InstanceKey instanceKey) {
+    public Advice advise(final InstanceKey instanceKey) {
         return new Advice(1, new Advice.TypeAdvice(Scale._1_00, 400));
     }
 
     @Override
-    public void pageNumChangedTo(InstanceKey instanceKey, int pageNum) {
+    public void pageNumChangedTo(final InstanceKey instanceKey, final int pageNum) {
     }
 
     @Override
-    public void scaleChangedTo(InstanceKey instanceKey, Scale scale) {
+    public void scaleChangedTo(final InstanceKey instanceKey, final Scale scale) {
     }
 
     @Override
-    public void heightChangedTo(InstanceKey instanceKey, int height) {
+    public void heightChangedTo(final InstanceKey instanceKey, final int height) {
     }
 }
diff --git a/extensions/applib/excel/fixture/pom.xml b/extensions/applib/excel/fixture/pom.xml
index a56fa6c9cd..a636ef4dab 100644
--- a/extensions/applib/excel/fixture/pom.xml
+++ b/extensions/applib/excel/fixture/pom.xml
@@ -92,28 +92,11 @@ under the License.
             <artifactId>isis-testing-fixtures-applib</artifactId>
         </dependency>
 
-<!--
-        <dependency>
-            <groupId>org.jdom</groupId>
-            <artifactId>jdom2</artifactId>
-            <version>2.0.3</version>
-        </dependency>
--->
-
 		<dependency>
             <groupId>org.apache.isis.persistence</groupId>
 			<artifactId>isis-persistence-jdo-datanucleus</artifactId>
         </dependency>
 
-        <!-- test -->
-<!--
-        <dependency>
-            <groupId>org.togglz</groupId>
-            <artifactId>togglz-junit</artifactId>
-            <scope>test</scope>
-        </dependency>
--->
-
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
diff --git a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/annotations/PdfJsViewer.java b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/annotations/PdfJsViewer.java
index f5534d489f..7c82db2922 100644
--- a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/annotations/PdfJsViewer.java
+++ b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/annotations/PdfJsViewer.java
@@ -26,8 +26,9 @@ import java.lang.annotation.Target;
 import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config.Scale;
 
 /**
- * An annotation that could be applied on a property or parameter
- * of type {@link org.apache.isis.applib.value.Blob}. Such property/parameter will be visualized
+ * An annotation that can be applied on a <i>Property</i> or a <i>Parameter</i>
+ * of type {@link org.apache.isis.applib.value.Blob}.
+ * Such property/parameter will be visualized
  * with <a href="https://github.com/mozilla/pdf.js">PDF.js</a> viewer.
  *
  * @since 2.0 {@index}
diff --git a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/spi/PdfJsViewerAdvisor.java b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/spi/PdfJsViewerAdvisor.java
index 305317ccdb..4c5a91cf0a 100644
--- a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/spi/PdfJsViewerAdvisor.java
+++ b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/spi/PdfJsViewerAdvisor.java
@@ -25,6 +25,10 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.value.Blob;
 import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config.Scale;
 
+import lombok.RequiredArgsConstructor;
+import lombok.Value;
+import lombok.With;
+
 /**
  * SPI service interface.
  *
@@ -32,13 +36,9 @@ import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config.Scale;
  */
 public interface PdfJsViewerAdvisor {
 
-    @Programmatic
     Advice advise(final InstanceKey instanceKey);
-    @Programmatic
     void pageNumChangedTo(final InstanceKey instanceKey, final int pageNum);
-    @Programmatic
     void scaleChangedTo(final InstanceKey instanceKey, final Scale scale);
-    @Programmatic
     void heightChangedTo(final InstanceKey instanceKey, final int height);
 
     /**
@@ -48,11 +48,20 @@ public interface PdfJsViewerAdvisor {
      *     This is a (serializable) value type so that, for example, implementations can use as a key within a hash structure.
      * </p>
      */
+    @Programmatic
+    @Value @RequiredArgsConstructor
     class InstanceKey implements Serializable {
 
         private static final long serialVersionUID = 1L;
 
         private final TypeKey typeKey;
+
+        /**
+         * The identifier of the object being rendered.
+         * <p>
+         * The {@link TypeKey#getType()} and {@link #getIdentifier()} together constitute the object's
+         * identity (in effect, its {@link Bookmark}).
+         */
         private final String identifier;
 
         public InstanceKey(
@@ -60,151 +69,58 @@ public interface PdfJsViewerAdvisor {
                 final String identifier,
                 final String propertyId,
                 final String userName) {
-            this.typeKey = new TypeKey(logicalTypeName, propertyId, userName);
-            this.identifier = identifier;
-        }
-
-        @Programmatic
-        public TypeKey getTypeKey() {
-            return typeKey;
-        }
-
-        /**
-         * The identifier of the object being rendered.
-         *
-         * <p>
-         *     The {@link TypeKey#getType()} and {@link #getIdentifier()} together constitute the object's
-         *     identity (in effect, its {@link Bookmark}).
-         * </p>
-         */
-        @Programmatic
-        public String getIdentifier() {
-            return identifier;
+            this(new TypeKey(logicalTypeName, propertyId, userName), identifier);
         }
 
-        @Programmatic
         public Bookmark asBookmark() {
             return Bookmark.forLogicalTypeNameAndIdentifier(typeKey.logicalTypeName, identifier);
         }
 
-        @Override
-        public boolean equals(final Object o) {
-            if (this == o)
-                return true;
-            if (o == null || getClass() != o.getClass())
-                return false;
-
-            final InstanceKey instanceKey = (InstanceKey) o;
-
-            if (typeKey != null ? !typeKey.equals(instanceKey.typeKey) : instanceKey.typeKey != null)
-                return false;
-            return identifier != null ? identifier.equals(instanceKey.identifier) : instanceKey.identifier == null;
-        }
-
-        @Override
-        public int hashCode() {
-            int result = typeKey != null ? typeKey.hashCode() : 0;
-            result = 31 * result + (identifier != null ? identifier.hashCode() : 0);
-            return result;
-        }
-
-        @Override
-        public String toString() {
-            return "ViewerKey{" +
-                    "typeKey=" + typeKey +
-                    ", identifier='" + identifier + '\'' +
-                    '}';
-        }
-
         /**
          * Key for the rendering of a specific property of an object's type for an named individual.
-         *
          * <p>
-         *     This is a (serializable) value type so that, for example, implementations can use as a key within a hash structure.
-         * </p>
+         * This is a (serializable) value type so that, for example,
+         * implementations can use as a key within a hash structure.
          */
+        @Programmatic
+        @Value @With
         public static class TypeKey implements Serializable {
 
             private static final long serialVersionUID = 1L;
 
-            private final String logicalTypeName;
-            private final String propertyId;
-            private final String userName;
-
-            public TypeKey(
-                    final String logicalTypeName,
-                    final String propertyId,
-                    final String userName) {
-                this.logicalTypeName = logicalTypeName;
-                this.propertyId = propertyId;
-                this.userName = userName;
-            }
-
             /**
              * The object type of the object being rendered.
              */
-            @Programmatic
-            public String getType() {
-                return logicalTypeName;
-            }
+            private final String logicalTypeName;
 
             /**
              * The property of the object (a {@link Blob} containing a PDF) being rendered.
              */
-            @Programmatic
-            public String getPropertyId() {
-                return propertyId;
-            }
+            private final String propertyId;
 
             /**
              * The user for whom the object's property is being rendered.
              */
-            @Programmatic
-            public String getUserName() {
-                return userName;
-            }
-
-            @Override
-            public boolean equals(final Object o) {
-                if (this == o)
-                    return true;
-                if (o == null || getClass() != o.getClass())
-                    return false;
-
-                final TypeKey typeKey = (TypeKey) o;
-
-                if (logicalTypeName != null ? !logicalTypeName.equals(typeKey.logicalTypeName) : typeKey.logicalTypeName != null)
-                    return false;
-                if (propertyId != null ? !propertyId.equals(typeKey.propertyId) : typeKey.propertyId != null)
-                    return false;
-                return userName != null ? userName.equals(typeKey.userName) : typeKey.userName == null;
-            }
-
-            @Override public int hashCode() {
-                int result = logicalTypeName != null ? logicalTypeName.hashCode() : 0;
-                result = 31 * result + (propertyId != null ? propertyId.hashCode() : 0);
-                result = 31 * result + (userName != null ? userName.hashCode() : 0);
-                return result;
-            }
+            private final String userName;
 
-            @Override
-            public String toString() {
-                return "TypeKey{" +
-                        "logicalTypeName='" + logicalTypeName + '\'' +
-                        ", propertyId='" + propertyId + '\'' +
-                        ", userName='" + userName + '\'' +
-                        '}';
+            /**
+             * The object type of the object being rendered.
+             */
+            @Deprecated // don't duplicate this getter
+            public String getType() {
+                return logicalTypeName;
             }
         }
     }
 
     /**
      * Immutable value type.
-     *
      * <p>
-     *     The <code>withXxx</code> allow clones of the value to be created, for convenience of implementors.
-     * </p>
+     * The <code>withXxx</code> allow clones of the value to be created,
+     * for convenience of implementors.
      */
+    @Programmatic
+    @Value @With
     class Advice implements Serializable {
 
         private static final long serialVersionUID = 1L;
@@ -212,64 +128,23 @@ public interface PdfJsViewerAdvisor {
         private final Integer pageNum;
         private final TypeAdvice typeAdvice;
 
-        public Advice(final Integer pageNum, final TypeAdvice typeAdvice) {
-            this.pageNum = pageNum;
-            this.typeAdvice = typeAdvice;
-        }
-
-        @Programmatic
-        public Integer getPageNum() {
-            return pageNum;
-        }
-
-        @Programmatic
         public Scale getScale() {
             return typeAdvice.getScale();
         }
 
-        @Programmatic
         public Integer getHeight() {
             return typeAdvice.getHeight();
         }
 
-        @Programmatic
-        public Advice withPageNum(Integer pageNum) {
-            return new Advice(pageNum, this.typeAdvice);
-        }
-
-        @Programmatic
-        public Advice withTypeAdvice(TypeAdvice typeAdvice) {
-            return new Advice(this.pageNum, typeAdvice);
-        }
-
-        @Override
-        public boolean equals(final Object o) {
-            if (this == o)
-                return true;
-            if (o == null || getClass() != o.getClass())
-                return false;
-
-            final Advice advice = (Advice) o;
-
-            if (pageNum != null ? !pageNum.equals(advice.pageNum) : advice.pageNum != null)
-                return false;
-            return typeAdvice != null ? typeAdvice.equals(advice.typeAdvice) : advice.typeAdvice == null;
-        }
-
-        @Override
-        public int hashCode() {
-            int result = pageNum != null ? pageNum.hashCode() : 0;
-            result = 31 * result + (typeAdvice != null ? typeAdvice.hashCode() : 0);
-            return result;
-        }
-
         /**
          * Immutable value type representing the scale/height to render a PDF.
-         *
          * <p>
-         *     The <code>withXxx</code> allow clones of the value to be created, for convenience of implementors.
-         * </p>
+         * The <code>withXxx</code> allow clones of the value to be created,
+         * for convenience of implementors.
          */
+        @Programmatic
+        @Value @With
+        @Deprecated // why not just inline?
         public static class TypeAdvice implements Serializable {
 
             private static final long serialVersionUID = 1L;
@@ -277,59 +152,6 @@ public interface PdfJsViewerAdvisor {
             private final Scale scale;
             private final Integer height;
 
-            public TypeAdvice(final Scale scale, final Integer height) {
-                this.scale = scale;
-                this.height = height;
-            }
-
-            @Programmatic
-            public Scale getScale() {
-                return scale;
-            }
-
-            @Programmatic
-            public Integer getHeight() {
-                return height;
-            }
-
-            @Programmatic
-            public TypeAdvice withScale(Scale scale) {
-                return new TypeAdvice(scale, this.height);
-            }
-
-            @Programmatic
-            public TypeAdvice withHeight(Integer height) {
-                return new TypeAdvice(this.scale, height);
-            }
-
-            @Override
-            public boolean equals(final Object o) {
-                if (this == o)
-                    return true;
-                if (o == null || getClass() != o.getClass())
-                    return false;
-
-                final TypeAdvice that = (TypeAdvice) o;
-
-                if (scale != that.scale)
-                    return false;
-                return height != null ? height.equals(that.height) : that.height == null;
-            }
-
-            @Override
-            public int hashCode() {
-                int result = scale != null ? scale.hashCode() : 0;
-                result = 31 * result + (height != null ? height.hashCode() : 0);
-                return result;
-            }
-
-            @Override
-            public String toString() {
-                return "TypeAdvice{" +
-                        "scale=" + scale +
-                        ", height=" + height +
-                        '}';
-            }
         }
     }
 
diff --git a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacet.java b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacet.java
index 6ba75f8f1e..13c20c4bb3 100644
--- a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacet.java
+++ b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacet.java
@@ -24,6 +24,6 @@ import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.spi.PdfJsViewerAdvi
 
 public interface PdfJsViewerFacet extends Facet {
 
-    PdfJsConfig configFor(final PdfJsViewerAdvisor.InstanceKey instanceKey);
+    PdfJsConfig configFor(PdfJsViewerAdvisor.InstanceKey instanceKey);
 
 }
diff --git a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetAbstract.java b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetAbstract.java
index 2763c22dfa..a4a3f50adb 100644
--- a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetAbstract.java
+++ b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetAbstract.java
@@ -24,8 +24,13 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config.PdfJsConfig;
 import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.spi.PdfJsViewerAdvisor;
 
+public abstract class PdfJsViewerFacetAbstract
+extends FacetAbstract
+implements PdfJsViewerFacet {
 
-public abstract class PdfJsViewerFacetAbstract extends FacetAbstract implements PdfJsViewerFacet {
+    private static final Class<? extends Facet> type() {
+        return PdfJsViewerFacet.class;
+    }
 
     private final PdfJsConfig config;
 
@@ -33,7 +38,6 @@ public abstract class PdfJsViewerFacetAbstract extends FacetAbstract implements
             final PdfJsConfig config,
             final FacetHolder holder) {
         super(type(), holder);
-
         this.config = config;
     }
 
@@ -42,8 +46,4 @@ public abstract class PdfJsViewerFacetAbstract extends FacetAbstract implements
         return config;
     }
 
-    private static final Class<? extends Facet> type() {
-        return PdfJsViewerFacet.class;
-    }
-
 }
diff --git a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
index addc748008..914eb6f29d 100644
--- a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
+++ b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
@@ -217,12 +217,13 @@ implements IRequestListener {
         final ManagedObject adapter = scalarModel.getObject();
         val blob = getBlob();
 
-        if (adapter != null && blob != null) {
-            val pdfJsViewerFacet = scalarModel.getFacet(PdfJsViewerFacet.class);
-            val instanceKey = buildKey();
-            val pdfJsConfig = pdfJsViewerFacet != null
-                    ? pdfJsViewerFacet.configFor(instanceKey)
-                    : new PdfJsConfig();
+        if (adapter != null
+                && blob != null) {
+
+            val pdfJsConfig =
+                scalarModel.lookupFacet(PdfJsViewerFacet.class)
+                .map(pdfJsViewerFacet->pdfJsViewerFacet.configFor(buildKey()))
+                .orElseGet(PdfJsConfig::new);
 
             // Wicket 8 migration: previously this was urlFor(IResourceListener.INTERFACE, null);
             val urlStr = urlFor(
diff --git a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanelComponentFactory.java b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanelComponentFactory.java
index 35fc080411..febf35d388 100644
--- a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanelComponentFactory.java
+++ b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanelComponentFactory.java
@@ -46,14 +46,13 @@ public class PdfJsViewerPanelComponentFactory extends ComponentFactoryAbstract {
     }
 
     @Override
-    public ApplicationAdvice appliesTo(IModel<?> model) {
+    public ApplicationAdvice appliesTo(final IModel<?> model) {
         if (!(model instanceof ScalarModel)) {
             return ApplicationAdvice.DOES_NOT_APPLY;
         }
 
         val scalarModel = (ScalarModel) model;
-        val facet = scalarModel.getFacet(PdfJsViewerFacet.class);
-        if(facet == null) {
+        if(!scalarModel.containsFacet(PdfJsViewerFacet.class)) {
             return ApplicationAdvice.DOES_NOT_APPLY;
         }
 
@@ -66,19 +65,19 @@ public class PdfJsViewerPanelComponentFactory extends ComponentFactoryAbstract {
         if (objectAdapter == null) {
             return false;
         }
-        final Object modelObject = objectAdapter.getPojo();
-        if (!(modelObject instanceof Blob)) {
+        final Object objectPojo = objectAdapter.getPojo();
+        if (!(objectPojo instanceof Blob)) {
             return false;
         }
-        final Blob blob = (Blob) modelObject;
+        final Blob blob = (Blob) objectPojo;
         final MimeType mimeType = blob.getMimeType();
         return Objects.equals("application", mimeType.getPrimaryType()) &&
                Objects.equals("pdf", mimeType.getSubType());
     }
 
     @Override
-    public Component createComponent(String id, IModel<?> model) {
-        ScalarModel scalarModel = (ScalarModel) model;
+    public Component createComponent(final String id, final IModel<?> model) {
+        val scalarModel = (ScalarModel) model;
         return new PdfJsViewerPanel(id, scalarModel);
     }
 }
diff --git a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/wicketstuff/pdfjs/PdfJsPanel.java b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/wicketstuff/pdfjs/PdfJsPanel.java
index 9c8c0629a7..624dca89e5 100644
--- a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/wicketstuff/pdfjs/PdfJsPanel.java
+++ b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/wicketstuff/pdfjs/PdfJsPanel.java
@@ -33,6 +33,8 @@ import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config.PdfJsConfig;
  */
 public class PdfJsPanel extends Panel {
 
+    private static final long serialVersionUID = 1L;
+
     private final PdfJsConfig config;
 
     /**
@@ -40,7 +42,7 @@ public class PdfJsPanel extends Panel {
      *
      * @param id The component id
      */
-    public PdfJsPanel(String id, PdfJsConfig config) {
+    public PdfJsPanel(final String id, final PdfJsConfig config) {
         super(id);
 
         this.config = Args.notNull(config, "config");
diff --git a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/wicketstuff/pdfjs/PdfJsReference.java b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/wicketstuff/pdfjs/PdfJsReference.java
index 9edcedfe54..dfe4875d8e 100644
--- a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/wicketstuff/pdfjs/PdfJsReference.java
+++ b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/wicketstuff/pdfjs/PdfJsReference.java
@@ -29,6 +29,8 @@ import org.apache.wicket.resource.JQueryPluginResourceReference;
 
 public class PdfJsReference extends JQueryPluginResourceReference {
 
+    private static final long serialVersionUID = 1L;
+
     public static final PdfJsReference INSTANCE = new PdfJsReference();
 
     private PdfJsReference() {
diff --git a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/wicketstuff/pdfjs/WicketStuffPdfJsReference.java b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/wicketstuff/pdfjs/WicketStuffPdfJsReference.java
index f6e80c8cfe..1ef404a2f7 100644
--- a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/wicketstuff/pdfjs/WicketStuffPdfJsReference.java
+++ b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/wicketstuff/pdfjs/WicketStuffPdfJsReference.java
@@ -26,6 +26,8 @@ import org.apache.wicket.resource.JQueryPluginResourceReference;
 
 public class WicketStuffPdfJsReference extends JQueryPluginResourceReference {
 
+    private static final long serialVersionUID = 1L;
+
     public static final WicketStuffPdfJsReference INSTANCE = new WicketStuffPdfJsReference();
 
     private WicketStuffPdfJsReference() {
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index 5890d20c93..ae386b5990 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -220,12 +220,26 @@ implements HasRenderingHints, ScalarUiModel, LinksProvider, FormExecutorContext
 
     public abstract String getCssClass();
 
-    @Deprecated // viewers should not directly use facets
+    /**
+     * Viewers should not use facets directly.
+     * However, viewer extensions that provide their own facet types, will have to.
+     */
+    public final <T extends Facet> boolean containsFacet(final Class<T> facetType) {
+        return getMetaModel().containsFacet(facetType);
+    }
+
+    /**
+     * Viewers should not use facets directly.
+     * However, viewer extensions that provide their own facet types, will have to.
+     */
     public final <T extends Facet> T getFacet(final Class<T> facetType) {
         return getMetaModel().getFacet(facetType);
     }
 
-    @Deprecated // viewers should not directly use facets
+    /**
+     * Viewers should not use facets directly.
+     * However, viewer extensions that provide their own facet types, will have to.
+     */
     public final <T extends Facet> Optional<T> lookupFacet(final Class<T> facetType) {
         return getMetaModel().lookupFacet(facetType);
     }