From 3e110e910def57224f230f5f3fcd5c69dfe721aa Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 30 Apr 2015 10:06:04 -0500 Subject: [PATCH 1/2] DefaultModuleService: fix ConvertService var name --- .../java/org/scijava/module/DefaultModuleService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/scijava/module/DefaultModuleService.java b/src/main/java/org/scijava/module/DefaultModuleService.java index d4fef8424..442e91b64 100644 --- a/src/main/java/org/scijava/module/DefaultModuleService.java +++ b/src/main/java/org/scijava/module/DefaultModuleService.java @@ -92,7 +92,7 @@ public class DefaultModuleService extends AbstractService implements private PrefService prefService; @Parameter - private ConvertService conversionService; + private ConvertService convertService; /** Index of registered modules. */ private ModuleIndex moduleIndex; @@ -269,7 +269,7 @@ public void save(final ModuleItem item, final T value) { final String sValue = value == null ? "" : value.toString(); // do not persist if object cannot be converted back from a string - if (!conversionService.supports(sValue, item.getType())) return; + if (!convertService.supports(sValue, item.getType())) return; final String persistKey = item.getPersistKey(); if (persistKey == null || persistKey.isEmpty()) { @@ -297,7 +297,7 @@ public T load(final ModuleItem item) { // if persisted value has never been set before return null if (sValue == null) return null; - return conversionService.convert(sValue, item.getType()); + return convertService.convert(sValue, item.getType()); } // -- Service methods -- @@ -399,7 +399,7 @@ private void assignInputs(final Module module, } else { final Class type = input.getType(); - converted = conversionService.convert(value, type); + converted = convertService.convert(value, type); if (value != null && converted == null) { log.error("For input " + name + ": incompatible object " + value.getClass().getName() + " for type " + type.getName()); From 5d91cd2d1116a3be3c815442e5e891e6f4c7745d Mon Sep 17 00:00:00 2001 From: Curtis Rueden Date: Thu, 30 Apr 2015 10:06:25 -0500 Subject: [PATCH 2/2] ModuleService: add getDefaultValue(ModuleItem) This logic goes into the ModuleService because it needs context: when the item does not specify a min or max value, it leans on the ConvertService to convert from zero (specifically: "0") to the ModuleItem's associated type. --- pom.xml | 2 +- .../org/scijava/module/DefaultModuleService.java | 16 ++++++++++++++++ .../java/org/scijava/module/ModuleService.java | 4 ++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index dc24cb149..535f71eac 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ scijava-common - 2.40.1-SNAPSHOT + 2.41.0-SNAPSHOT SciJava Common SciJava Common is a shared library for SciJava software. It provides a plugin framework, with an extensible mechanism for service discovery, backed by its own annotation processor, so that plugins can be loaded dynamically. It is used by both ImageJ and SCIFIO. diff --git a/src/main/java/org/scijava/module/DefaultModuleService.java b/src/main/java/org/scijava/module/DefaultModuleService.java index 442e91b64..c6a53ad5d 100644 --- a/src/main/java/org/scijava/module/DefaultModuleService.java +++ b/src/main/java/org/scijava/module/DefaultModuleService.java @@ -300,6 +300,22 @@ public T load(final ModuleItem item) { return convertService.convert(sValue, item.getType()); } + @Override + public T getDefaultValue(final ModuleItem item) { + final T min = item.getMinimumValue(); + if (min != null) return min; + final T softMin = item.getSoftMinimum(); + if (softMin != null) return softMin; + final T max = item.getMaximumValue(); + if (max != null) return max; + final T softMax = item.getSoftMaximum(); + if (softMax != null) return softMax; + final T zero = convertService.convert("0", item.getType()); + if (zero != null) return zero; + // no known default value + return null; + } + // -- Service methods -- @Override diff --git a/src/main/java/org/scijava/module/ModuleService.java b/src/main/java/org/scijava/module/ModuleService.java index 3bcba759b..3573e2b3e 100644 --- a/src/main/java/org/scijava/module/ModuleService.java +++ b/src/main/java/org/scijava/module/ModuleService.java @@ -285,4 +285,8 @@ Future run(M module, * {@link ModuleItem}. */ T load(ModuleItem item); + + /** Gets the default value of the given {@link ModuleItem}. */ + T getDefaultValue(final ModuleItem item); + }