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

[isis] branch master updated: ISIS-1841 introducing viewer-wicket-ui-legacy module

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 c1b5a8e  ISIS-1841 introducing viewer-wicket-ui-legacy module
c1b5a8e is described below

commit c1b5a8e7ddcf1a3718461797c0595cb6bd60f41f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Mar 1 17:56:30 2018 +0100

    ISIS-1841 introducing viewer-wicket-ui-legacy module
    
    acts as a plugin for viewer-wicket-ui
    moving deprecated classes to legacy
---
 .../ComponentFactoryRegistrarDefault.java          | 16 ++---
 core/viewer-wicket-ui-legacy/.gitignore            |  1 +
 .../pom.xml                                        | 15 ++--
 .../isisapplib/ApplibDateConverterPlugin.java}     | 44 ++++++------
 .../isisapplib/DateConverterForApplibDate.java     |  0
 .../isisapplib/DateConverterForApplibDateTime.java |  0
 .../scalars/isisapplib/IsisDatePanel.java          |  0
 .../scalars/isisapplib/IsisDatePanelFactory.java   |  0
 .../scalars/isisapplib/IsisDateTimePanel.java      |  0
 .../isisapplib/IsisDateTimePanelFactory.java       |  0
 .../scalars/isisapplib/IsisTimePanelFactory.java   |  0
 .../scalars/isisapplib/IsisTimeStampPanel.java     |  0
 .../isisapplib/IsisTimeStampPanelFactory.java      |  0
 ...g.apache.isis.viewer.wicket.ui.ComponentFactory |  4 ++
 ...icket.ui.components.scalars.DateConverterPlugin |  1 +
 .../isisapplib/DateConverterForApplibDateTest.java |  0
 .../DateConverterForApplibDateTimeTest.java        |  0
 core/viewer-wicket-ui/pom.xml                      |  2 +-
 .../ui/components/scalars/DateConverter.java       |  1 -
 .../components/scalars/DateConverterAbstract.java  |  1 -
 ...DateConverter.java => DateConverterPlugin.java} | 31 +++-----
 .../components/scalars/IsisConverterLocator.java   | 83 ++++++++++++++--------
 22 files changed, 104 insertions(+), 95 deletions(-)

diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
index 613e2ca..ff0f123 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
@@ -21,8 +21,7 @@ package org.apache.isis.viewer.wicket.viewer.registries.components;
 
 import java.util.ServiceLoader;
 
-import com.google.inject.Singleton;
-
+import org.apache.isis.applib.internal.context._Plugin;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
@@ -51,13 +50,9 @@ import org.apache.isis.viewer.wicket.ui.components.property.PropertyEditPanelFac
 import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisBlobPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisClobPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisColorPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisDatePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisDateTimePanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisMoneyPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisPasswordPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisPercentagePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisTimePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisTimeStampPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jdk8time.Jdk8LocalDatePanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jdk8time.Jdk8LocalDateTimePanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jdk8time.Jdk8OffsetDateTimePanelFactory;
@@ -91,6 +86,8 @@ import org.apache.isis.viewer.wicket.ui.components.voidreturn.VoidReturnPanelFac
 import org.apache.isis.viewer.wicket.ui.components.welcome.WelcomePanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.widgets.entitysimplelink.EntityLinkSimplePanelFactory;
 
+import com.google.inject.Singleton;
+
 /**
  * Default implementation of {@link ComponentFactoryRegistrar} that registers a
  * hardcoded set of built-in {@link ComponentFactory}s, along with any
@@ -152,6 +149,9 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr
         addComponentFactoriesForPageHeader(componentFactories);
         addComponentFactoriesForPageFooter(componentFactories);
         
+        // load component factories from plugins
+        _Plugin.loadAll(ComponentFactory.class).forEach(componentFactories::add);
+        
         addComponentFactoriesForUnknown(componentFactories);
     }
 
@@ -221,10 +221,6 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr
         componentFactories.add(new JavaSqlTimePanelFactory());
 
         componentFactories.add(new IsisMoneyPanelFactory());
-        componentFactories.add(new IsisDatePanelFactory());
-        componentFactories.add(new IsisDateTimePanelFactory());
-        componentFactories.add(new IsisTimePanelFactory());
-        componentFactories.add(new IsisTimeStampPanelFactory());
         componentFactories.add(new IsisColorPanelFactory());
         componentFactories.add(new IsisPercentagePanelFactory());
         componentFactories.add(new IsisPasswordPanelFactory());
diff --git a/core/viewer-wicket-ui-legacy/.gitignore b/core/viewer-wicket-ui-legacy/.gitignore
new file mode 100644
index 0000000..a48e45b
--- /dev/null
+++ b/core/viewer-wicket-ui-legacy/.gitignore
@@ -0,0 +1 @@
+/target-ide
diff --git a/core/viewer-wicket-ui/pom.xml b/core/viewer-wicket-ui-legacy/pom.xml
similarity index 90%
copy from core/viewer-wicket-ui/pom.xml
copy to core/viewer-wicket-ui-legacy/pom.xml
index c4841a0..508fe49 100644
--- a/core/viewer-wicket-ui/pom.xml
+++ b/core/viewer-wicket-ui-legacy/pom.xml
@@ -27,12 +27,12 @@
 		<version>2.0.0-M1-SNAPSHOT</version>
 	</parent>
 
-	<artifactId>isis-core-viewer-wicket-ui</artifactId>
-	<name>Apache Isis Wicket Viewer UI Components</name>
+	<artifactId>isis-core-viewer-wicket-ui-legacy</artifactId>
+	<name>Apache Isis Wicket Viewer UI Components (Legacy)</name>
 
 	<properties>
-		<jar-plugin.automaticModuleName>org.apache.isis.viewer.wicket.ui</jar-plugin.automaticModuleName>
-	  	<git-plugin.propertiesDir>org/apache/isis/viewer/wicket/ui</git-plugin.propertiesDir>
+		<jar-plugin.automaticModuleName>org.apache.isis.viewer.wicket.ui-legacy</jar-plugin.automaticModuleName>
+	  	<git-plugin.propertiesDir>org/apache/isis/viewer/wicket/ui-legacy</git-plugin.propertiesDir>
 	</properties>
 
 	<build>
@@ -64,12 +64,17 @@
 
 		<dependency>
 			<groupId>org.apache.isis.core</groupId>
+			<artifactId>isis-core-metamodel-legacy</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.isis.core</groupId>
 			<artifactId>isis-core-viewer-wicket-model</artifactId>
 		</dependency>
 
 		<dependency>
 		    <groupId>org.apache.isis.core</groupId>
-		    <artifactId>isis-core-metamodel-legacy</artifactId>
+		    <artifactId>isis-core-viewer-wicket-ui</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.isis.core</groupId>
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDatePanelFactory.java b/core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/ApplibDateConverterPlugin.java
similarity index 54%
copy from core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDatePanelFactory.java
copy to core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/ApplibDateConverterPlugin.java
index a008664..7fc5f69 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDatePanelFactory.java
+++ b/core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/ApplibDateConverterPlugin.java
@@ -16,29 +16,27 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-
 package org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib;
 
-import org.apache.wicket.Component;
-
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.ComponentFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ComponentFactoryScalarAbstract;
-
-/**
- * {@link ComponentFactory} for {@link IsisDatePanel}.
- */
-public class IsisDatePanelFactory extends ComponentFactoryScalarAbstract {
-
-    private static final long serialVersionUID = 1L;
-
-    public IsisDatePanelFactory() {
-        super(IsisDatePanel.class, org.apache.isis.applib.value.Date.class);
-    }
-
-    @Override
-    public Component createComponent(final String id, final ScalarModel scalarModel) {
-        return new IsisDatePanel(id, scalarModel);
-    }
-
+import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
+import org.apache.isis.viewer.wicket.ui.components.scalars.DateConverter;
+import org.apache.isis.viewer.wicket.ui.components.scalars.DateConverterPlugin;
+
+public class ApplibDateConverterPlugin implements DateConverterPlugin {
+
+	@Override
+	public DateConverter<?> converterForClassIfAny(
+			Class<?> cls, 
+			WicketViewerSettings wicketViewerSettings,
+			int adjustBy) {
+		
+		if (org.apache.isis.applib.value.Date.class == cls) {
+			return new DateConverterForApplibDate(wicketViewerSettings, adjustBy);
+		} 
+		if (org.apache.isis.applib.value.DateTime.class == cls) {
+			return new DateConverterForApplibDateTime(wicketViewerSettings, adjustBy);
+		} 
+		return null;
+	}
+	
 }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDate.java b/core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDate.java
similarity index 100%
rename from core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDate.java
rename to core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDate.java
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDateTime.java b/core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDateTime.java
similarity index 100%
rename from core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDateTime.java
rename to core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDateTime.java
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDatePanel.java b/core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDatePanel.java
similarity index 100%
rename from core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDatePanel.java
rename to core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDatePanel.java
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDatePanelFactory.java b/core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDatePanelFactory.java
similarity index 100%
rename from core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDatePanelFactory.java
rename to core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDatePanelFactory.java
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDateTimePanel.java b/core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDateTimePanel.java
similarity index 100%
rename from core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDateTimePanel.java
rename to core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDateTimePanel.java
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDateTimePanelFactory.java b/core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDateTimePanelFactory.java
similarity index 100%
rename from core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDateTimePanelFactory.java
rename to core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisDateTimePanelFactory.java
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisTimePanelFactory.java b/core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisTimePanelFactory.java
similarity index 100%
rename from core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisTimePanelFactory.java
rename to core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisTimePanelFactory.java
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisTimeStampPanel.java b/core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisTimeStampPanel.java
similarity index 100%
rename from core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisTimeStampPanel.java
rename to core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisTimeStampPanel.java
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisTimeStampPanelFactory.java b/core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisTimeStampPanelFactory.java
similarity index 100%
rename from core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisTimeStampPanelFactory.java
rename to core/viewer-wicket-ui-legacy/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisTimeStampPanelFactory.java
diff --git a/core/viewer-wicket-ui-legacy/src/main/resources/META-INF/services/org.apache.isis.viewer.wicket.ui.ComponentFactory b/core/viewer-wicket-ui-legacy/src/main/resources/META-INF/services/org.apache.isis.viewer.wicket.ui.ComponentFactory
new file mode 100644
index 0000000..29d5e9e
--- /dev/null
+++ b/core/viewer-wicket-ui-legacy/src/main/resources/META-INF/services/org.apache.isis.viewer.wicket.ui.ComponentFactory
@@ -0,0 +1,4 @@
+org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisDatePanelFactory
+org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisDateTimePanelFactory
+org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisTimePanelFactory
+org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisTimeStampPanelFactory
\ No newline at end of file
diff --git a/core/viewer-wicket-ui-legacy/src/main/resources/META-INF/services/org.apache.isis.viewer.wicket.ui.components.scalars.DateConverterPlugin b/core/viewer-wicket-ui-legacy/src/main/resources/META-INF/services/org.apache.isis.viewer.wicket.ui.components.scalars.DateConverterPlugin
new file mode 100644
index 0000000..4a0af80
--- /dev/null
+++ b/core/viewer-wicket-ui-legacy/src/main/resources/META-INF/services/org.apache.isis.viewer.wicket.ui.components.scalars.DateConverterPlugin
@@ -0,0 +1 @@
+org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.ApplibDateConverterPlugin
\ No newline at end of file
diff --git a/core/viewer-wicket-ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDateTest.java b/core/viewer-wicket-ui-legacy/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDateTest.java
similarity index 100%
rename from core/viewer-wicket-ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDateTest.java
rename to core/viewer-wicket-ui-legacy/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDateTest.java
diff --git a/core/viewer-wicket-ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDateTimeTest.java b/core/viewer-wicket-ui-legacy/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDateTimeTest.java
similarity index 100%
rename from core/viewer-wicket-ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDateTimeTest.java
rename to core/viewer-wicket-ui-legacy/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/DateConverterForApplibDateTimeTest.java
diff --git a/core/viewer-wicket-ui/pom.xml b/core/viewer-wicket-ui/pom.xml
index c4841a0..edf4621 100644
--- a/core/viewer-wicket-ui/pom.xml
+++ b/core/viewer-wicket-ui/pom.xml
@@ -69,7 +69,7 @@
 
 		<dependency>
 		    <groupId>org.apache.isis.core</groupId>
-		    <artifactId>isis-core-metamodel-legacy</artifactId>
+		    <artifactId>isis-core-metamodel</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.isis.core</groupId>
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverter.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverter.java
index 2734899..9d8b0a7 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverter.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverter.java
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.scalars;
 
-import java.text.SimpleDateFormat;
 import java.util.Locale;
 
 import org.apache.wicket.util.convert.IConverter;
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterAbstract.java
index 01dceab..eb53db9 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterAbstract.java
@@ -21,7 +21,6 @@ package org.apache.isis.viewer.wicket.ui.components.scalars;
 import java.util.Locale;
 
 import org.apache.wicket.util.convert.ConversionException;
-import org.joda.time.DateTime;
 import org.joda.time.format.DateTimeFormat;
 import org.joda.time.format.DateTimeFormatter;
 
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverter.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterPlugin.java
similarity index 57%
copy from core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverter.java
copy to core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterPlugin.java
index 2734899..b905870 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverter.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterPlugin.java
@@ -18,28 +18,13 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.scalars;
 
-import java.text.SimpleDateFormat;
-import java.util.Locale;
+import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 
-import org.apache.wicket.util.convert.IConverter;
+public interface DateConverterPlugin {
 
-public interface DateConverter<T> extends IConverter<T> {
-    Class<T> getConvertableClass();
-    
-    /**
-     * The date pattern, without a time component.
-     * 
-     * <p>
-     * For example, <tt>dd-MM-yyyy</tt> for <tt>13-05-2013</tt> for the 13 May 2013.
-     */
-    String getDatePattern(Locale locale);
-    
-    /**
-     * The date pattern, with a time component.
-     * 
-     * <p>
-     * For example, <tt>dd-MM-yyyy HH:mm</tt> for <tt>13-05-2013 09:15</tt> for the 13 May 2013 at 9:15am.
-     */
-    String getDateTimePattern(Locale locale);
-    
-}
\ No newline at end of file
+	public DateConverter<?> converterForClassIfAny(
+			Class<?> cls, 
+			WicketViewerSettings wicketViewerSettings,
+			int adjustBy);
+	
+}
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/IsisConverterLocator.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/IsisConverterLocator.java
index b88d42f..bba843b 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/IsisConverterLocator.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/IsisConverterLocator.java
@@ -18,17 +18,14 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.scalars;
 
-import org.apache.wicket.Application;
-import org.apache.wicket.IConverterLocator;
-import org.apache.wicket.util.convert.IConverter;
-import org.apache.wicket.util.convert.converter.BigIntegerConverter;
+import org.apache.isis.applib.internal.base._Casts;
+import org.apache.isis.applib.internal.base._NullSafe;
+import org.apache.isis.applib.internal.context._Plugin;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.objectvalue.renderedadjusted.RenderedAdjustedFacet;
 import org.apache.isis.core.metamodel.facets.value.bigdecimal.BigDecimalValueFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.DateConverterForApplibDate;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.DateConverterForApplibDateTime;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.DateConverterForJavaSqlDate;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.DateConverterForJavaSqlTimestamp;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.DateConverterForJavaUtilDate;
@@ -36,6 +33,10 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath.BigDecimalCon
 import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.DateConverterForJodaDateTime;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.DateConverterForJodaLocalDate;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.DateConverterForJodaLocalDateTime;
+import org.apache.wicket.Application;
+import org.apache.wicket.IConverterLocator;
+import org.apache.wicket.util.convert.IConverter;
+import org.apache.wicket.util.convert.converter.BigIntegerConverter;
 
 /**
  * A locator for IConverters for ObjectAdapters
@@ -49,7 +50,9 @@ public class IsisConverterLocator {
      * @param wicketViewerSettings The date related settings
      * @return The best converter for the object adapter's type
      */
-    public static IConverter<Object> findConverter(final ObjectAdapter objectAdapter, final WicketViewerSettings wicketViewerSettings) {
+    public static IConverter<Object> findConverter(
+    		final ObjectAdapter objectAdapter, 
+    		final WicketViewerSettings wicketViewerSettings) {
 
         final ObjectSpecification objectSpecification = objectAdapter.getSpecification();
 
@@ -67,38 +70,56 @@ public class IsisConverterLocator {
 
         final RenderedAdjustedFacet renderedAdjustedFacet = objectSpecification.getFacet(RenderedAdjustedFacet.class);
         final int adjustBy = renderedAdjustedFacet != null ? renderedAdjustedFacet.value() : 0;
-
-        IConverter converter = null;
+        
         if (java.util.Date.class == correspondingClass) {
-            converter = new DateConverterForJavaUtilDate(wicketViewerSettings, adjustBy);
-        } else if (java.sql.Date.class == correspondingClass) {
-            converter = new DateConverterForJavaSqlDate(wicketViewerSettings, adjustBy);
-        } else if (org.apache.isis.applib.value.Date.class == correspondingClass) {
-            converter = new DateConverterForApplibDate(wicketViewerSettings, adjustBy);
-        } else if (org.apache.isis.applib.value.DateTime.class == correspondingClass) {
-            converter = new DateConverterForApplibDateTime(wicketViewerSettings, adjustBy);
-        } else if (org.joda.time.LocalDate.class == correspondingClass) {
-            converter = new DateConverterForJodaLocalDate(wicketViewerSettings, adjustBy);
-        } else if (org.joda.time.LocalDateTime.class == correspondingClass) {
-            converter = new DateConverterForJodaLocalDateTime(wicketViewerSettings, adjustBy);
-        } else if (org.joda.time.DateTime.class == correspondingClass) {
-            converter = new DateConverterForJodaDateTime(wicketViewerSettings, adjustBy);
-        } else if (java.sql.Timestamp.class == correspondingClass) {
-            converter = new DateConverterForJavaSqlTimestamp(wicketViewerSettings, adjustBy);
-        } else if (java.math.BigInteger.class == correspondingClass) {
-            converter = new BigIntegerConverter();
-        } else if (java.math.BigDecimal.class == correspondingClass) {
+            return _Casts.uncheckedCast(new DateConverterForJavaUtilDate(wicketViewerSettings, adjustBy));
+        } 
+        if (java.sql.Date.class == correspondingClass) {
+        	return _Casts.uncheckedCast(new DateConverterForJavaSqlDate(wicketViewerSettings, adjustBy));
+        } 
+        if (org.joda.time.LocalDate.class == correspondingClass) {
+        	return _Casts.uncheckedCast(new DateConverterForJodaLocalDate(wicketViewerSettings, adjustBy));
+        }
+        if (org.joda.time.LocalDateTime.class == correspondingClass) {
+        	return _Casts.uncheckedCast(new DateConverterForJodaLocalDateTime(wicketViewerSettings, adjustBy));
+        }
+        if (org.joda.time.DateTime.class == correspondingClass) {
+        	return _Casts.uncheckedCast(new DateConverterForJodaDateTime(wicketViewerSettings, adjustBy));
+        } 
+        if (java.sql.Timestamp.class == correspondingClass) {
+        	return _Casts.uncheckedCast(new DateConverterForJavaSqlTimestamp(wicketViewerSettings, adjustBy));
+        } 
+        {
+        	// data converter plugins (if any)
+        	
+	        DateConverter<?> converter = _Plugin.loadAll(DateConverterPlugin.class).stream()
+			.map(plugin->plugin.converterForClassIfAny(correspondingClass, wicketViewerSettings, adjustBy))
+			.filter(_NullSafe::isPresent)
+			.findAny()
+			.orElse(null);
+	        
+	        if(converter!=null) {
+	        	return _Casts.uncheckedCast(converter);
+	        }
+        
+        }
+        if (java.math.BigInteger.class == correspondingClass) {
+        	return _Casts.uncheckedCast(new BigIntegerConverter());
+        } 
+        if (java.math.BigDecimal.class == correspondingClass) {
             final BigDecimalValueFacet facet = objectSpecification.getFacet(BigDecimalValueFacet.class);
             Integer scale = null;
             if (facet != null) {
                 scale = facet.getScale();
             }
-            converter = new BigDecimalConverterWithScale(scale).forViewMode();
-        } else if (Application.exists()) {
+            return _Casts.uncheckedCast(new BigDecimalConverterWithScale(scale).forViewMode());
+        } 
+        
+        if(Application.exists()) {
             final IConverterLocator converterLocator = Application.get().getConverterLocator();
-            converter = converterLocator.getConverter(correspondingClass);
+            return _Casts.uncheckedCast(converterLocator.getConverter(correspondingClass));
         }
 
-        return converter;
+        return null;
     }
 }

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