Skip to content

Commit 14aa08f

Browse files
author
LeonYang5114
committed
Fix bug of overwriting pre-assigned values
The DefaultValuePreprocessor overwrote the value of the module's corresponding item even if the item is pre-assigned with some value. Now it checks if the item is primitive or if it is non-null before setting the default value. See also:
1 parent 032cb85 commit 14aa08f

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

src/main/java/org/scijava/module/process/DefaultValuePreprocessor.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
import org.scijava.module.ModuleService;
3838
import org.scijava.plugin.Parameter;
3939
import org.scijava.plugin.Plugin;
40+
import org.scijava.util.ConversionUtils;
41+
import org.scijava.util.MiscUtils;
4042

4143
/**
4244
* A preprocessor plugin that populates default parameter values.
@@ -70,6 +72,8 @@ private <T> void assignDefaultValue(final Module module,
7072
final ModuleItem<T> item)
7173
{
7274
if (module.isResolved(item.getName())) return;
75+
final T nullValue = ConversionUtils.getNullValue(item.getType());
76+
if (MiscUtils.equal(item.getValue(module), nullValue)) return;
7377
final T defaultValue = moduleService.getDefaultValue(item);
7478
if (defaultValue == null) return;
7579
item.setValue(module, defaultValue);

0 commit comments

Comments
 (0)