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 2020/01/06 10:48:07 UTC

[isis] branch master updated: ISIS-2183: Convert DateConverterPlugin to an interface for managed beans

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 ac355b4  ISIS-2183: Convert DateConverterPlugin to an interface for managed beans
ac355b4 is described below

commit ac355b474e849378ba9acb800823046d3e459275
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 6 11:47:59 2020 +0100

    ISIS-2183: Convert DateConverterPlugin to an interface for managed beans
---
 .../wicket/ui/components/scalars/DateConverterPlugin.java    |  8 ++++++++
 .../wicket/ui/components/scalars/IsisConverterLocator.java   | 12 ++++++------
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterPlugin.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterPlugin.java
index 5971c13..c191c43 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterPlugin.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/DateConverterPlugin.java
@@ -18,8 +18,16 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.scalars;
 
+import org.springframework.stereotype.Component;
+
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 
+/**
+ * 
+ * @apiNote any implementing class must also be discovered/managed by Spring,
+ * that is, it needs a direct- or meta-annotation of type {@link Component}  
+ * 
+ */
 public interface DateConverterPlugin {
 
     public DateConverter<?> converterForClassIfAny(
diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/IsisConverterLocator.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/IsisConverterLocator.java
index 2836609..ecd03b7 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/IsisConverterLocator.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/IsisConverterLocator.java
@@ -25,11 +25,9 @@ import org.apache.wicket.util.convert.converter.BigIntegerConverter;
 
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.base._NullSafe;
-import org.apache.isis.commons.internal.context._Plugin;
 import org.apache.isis.metamodel.facets.objectvalue.renderedadjusted.RenderedAdjustedFacet;
 import org.apache.isis.metamodel.facets.value.bigdecimal.BigDecimalValueFacet;
 import org.apache.isis.metamodel.spec.ManagedObject;
-import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.DateConverterForJavaSqlDate;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.DateConverterForJavaSqlTimestamp;
@@ -39,6 +37,8 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.DateConverte
 import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.DateConverterForJodaLocalDate;
 import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.DateConverterForJodaLocalDateTime;
 
+import lombok.val;
+
 /**
  * A locator for IConverters for ObjectAdapters
  */
@@ -55,7 +55,7 @@ public class IsisConverterLocator {
             final ManagedObject objectAdapter,
             final WicketViewerSettings wicketViewerSettings) {
 
-        final ObjectSpecification objectSpecification = objectAdapter.getSpecification();
+        val objectSpecification = objectAdapter.getSpecification();
 
         // only use Wicket IConverter for value types, not for domain objects.
         if (!objectSpecification.isValue()) {
@@ -91,9 +91,9 @@ public class IsisConverterLocator {
             return _Casts.uncheckedCast(new DateConverterForJavaSqlTimestamp(wicketViewerSettings, adjustBy));
         }
         {
-            // data converter plugins (if any)
-
-            DateConverter<?> converter = _Plugin.loadAll(DateConverterPlugin.class).stream()
+            // date converter plugins (if any)
+            val serviceRegistry = objectSpecification.getMetaModelContext().getServiceRegistry();
+            DateConverter<?> converter = serviceRegistry.select(DateConverterPlugin.class).stream()
                     .map(plugin->plugin.converterForClassIfAny(correspondingClass, wicketViewerSettings, adjustBy))
                     .filter(_NullSafe::isPresent)
                     .findAny()