◐ Shell
reader mode source ↗
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
File filter
Conversations
Jump to
Diff view
Apply and reload
Show whitespace
Diff view
Apply and reload
60 changes: 60 additions & 0 deletions src/main/java/org/scijava/ItemPersistence.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
3 changes: 2 additions & 1 deletion src/main/java/org/scijava/command/CommandModuleItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import java.util.List;

import org.scijava.ItemIO;
import org.scijava.ItemVisibility;
import org.scijava.Optional;
import org.scijava.module.AbstractModuleItem;
Expand Down Expand Up @@ -109,7 +110,7 @@ public boolean isRequired() {
}

@Override
public boolean isPersisted() {
return getParameter().persist();
}

Expand Down
14 changes: 11 additions & 3 deletions src/main/java/org/scijava/module/DefaultModuleService.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import java.util.concurrent.Future;

import org.scijava.Identifiable;
import org.scijava.MenuPath;
import org.scijava.Priority;
import org.scijava.convert.ConvertService;
Expand Down @@ -289,9 +290,16 @@ public ModuleItem<?> getSingleOutput(Module module, Collection<Class<?>> types)

@Override
public <T> void save(final ModuleItem<T> item, final T value) {
if (!item.isPersisted()) return;

if (MiscUtils.equal(item.getDefaultValue(), value)) {
// NB: Do not persist the value if it is the default.
// This is nice if the default value might change later,
// such as when iteratively developing a script.
Expand All @@ -315,7 +323,7 @@ public <T> void save(final ModuleItem<T> item, final T value) {
@Override
public <T> T load(final ModuleItem<T> item) {
// if there is nothing to load from persistence return nothing
if (!item.isPersisted()) return null;

final String sValue;
final String persistKey = item.getPersistKey();
Expand Down
15 changes: 8 additions & 7 deletions src/main/java/org/scijava/module/DefaultMutableModuleItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import java.util.List;

import org.scijava.ItemIO;
import org.scijava.ItemVisibility;

/**
Expand All @@ -54,7 +55,7 @@ public class DefaultMutableModuleItem<T> extends AbstractModuleItem<T>
private ItemIO ioType;
private ItemVisibility visibility;
private boolean required;
private boolean persisted;
private String persistKey;
private String initializer;
private String callback;
Expand Down Expand Up @@ -87,7 +88,7 @@ public DefaultMutableModuleItem(final ModuleInfo info, final String name,
ioType = super.getIOType();
visibility = super.getVisibility();
required = super.isRequired();
persisted = super.isPersisted();
persistKey = super.getPersistKey();
initializer = super.getInitializer();
callback = super.getCallback();
Expand All @@ -113,7 +114,7 @@ public DefaultMutableModuleItem(final ModuleInfo info,
ioType = item.getIOType();
visibility = item.getVisibility();
required = item.isRequired();
persisted = item.isPersisted();
persistKey = item.getPersistKey();
initializer = item.getInitializer();
callback = item.getCallback();
Expand Down Expand Up @@ -148,8 +149,8 @@ public void setRequired(final boolean required) {
}

@Override
public void setPersisted(final boolean persisted) {
this.persisted = persisted;
}

@Override
Expand Down Expand Up @@ -241,8 +242,8 @@ public boolean isRequired() {
}

@Override
public boolean isPersisted() {
return persisted;
}

@Override
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/org/scijava/module/ModuleItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@

import org.scijava.BasicDetails;
import org.scijava.ItemIO;
import org.scijava.ItemVisibility;

/**
Expand Down Expand Up @@ -84,7 +85,7 @@ public interface ModuleItem<T> extends BasicDetails {
boolean isRequired();

/** Gets whether to remember the most recent value of the parameter. */
boolean isPersisted();

/** Gets the key to use for saving the value persistently. */
String getPersistKey();
10 changes: 8 additions & 2 deletions src/main/java/org/scijava/plugin/Parameter.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import java.lang.annotation.Target;

import org.scijava.ItemIO;
import org.scijava.ItemVisibility;

/**
Expand Down Expand Up @@ -111,12 +112,17 @@
boolean required() default true;

/** Defines whether to remember the most recent value of the parameter. */
boolean persist() default true;

/** Defines a key to use for saving the value persistently. */
String persistKey() default "";

/** Defines a function that is called to initialize the parameter. */
String initializer() default "";

/**
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/org/scijava/script/ScriptInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
import org.scijava.Context;
import org.scijava.Contextual;
import org.scijava.ItemIO;
import org.scijava.ItemVisibility;
import org.scijava.NullContextException;
import org.scijava.command.Command;
Expand Down Expand Up @@ -427,7 +428,7 @@ private <T> void assignAttribute(final DefaultMutableModuleItem<T> item,
else if (is(k, "max")) item.setMaximumValue(as(v, item.getType()));
else if (is(k, "min")) item.setMinimumValue(as(v, item.getType()));
else if (is(k, "name")) item.setName(as(v, String.class));
else if (is(k, "persist")) item.setPersisted(as(v, boolean.class));
else if (is(k, "persistKey")) item.setPersistKey(as(v, String.class));
else if (is(k, "required")) item.setRequired(as(v, boolean.class));
else if (is(k, "softMax")) item.setSoftMaximum(as(v, item.getType()));
Loading
Toggle all file notes Toggle all file annotations