Skip to content

Commit fc4829d

Browse files
committed
Merge pull request #238 from scijava/script-attrs
Add support for arbitrary parameter attributes
2 parents d03cc39 + 004bf6c commit fc4829d

File tree

3 files changed

+7
-6
lines changed

3 files changed

+7
-6
lines changed

src/main/java/org/scijava/AbstractBasicDetails.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public abstract class AbstractBasicDetails implements BasicDetails {
5353
private String description;
5454

5555
/** Table of extra key/value pairs. */
56-
private Map<String, String> values = new HashMap<String, String>();
56+
private final Map<String, String> values = new HashMap<String, String>();
5757

5858
// -- Object methods --
5959

@@ -102,7 +102,7 @@ public void setDescription(final String description) {
102102
}
103103

104104
@Override
105-
public void set(String key, String value) {
105+
public void set(final String key, final String value) {
106106
values.put(key, value);
107107
}
108108

src/main/java/org/scijava/script/ScriptInfo.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ private void addReturnValue() throws ScriptException {
399399
}
400400

401401
private <T> void addItem(final String name, final Class<T> type,
402-
final Map<String, Object> attrs) throws ScriptException
402+
final Map<String, Object> attrs)
403403
{
404404
final DefaultMutableModuleItem<T> item =
405405
new DefaultMutableModuleItem<T>(this, name, type);
@@ -412,7 +412,7 @@ private <T> void addItem(final String name, final Class<T> type,
412412
}
413413

414414
private <T> void assignAttribute(final DefaultMutableModuleItem<T> item,
415-
final String k, final Object v) throws ScriptException
415+
final String k, final Object v)
416416
{
417417
// CTR: There must be an easier way to do this.
418418
// Just compile the thing using javac? Or parse via javascript, maybe?
@@ -435,7 +435,7 @@ private <T> void assignAttribute(final DefaultMutableModuleItem<T> item,
435435
else if (is(k, "style")) item.setWidgetStyle(as(v, String.class));
436436
else if (is(k, "visibility")) item.setVisibility(as(v, ItemVisibility.class));
437437
else if (is(k, "value")) item.setDefaultValue(as(v, item.getType()));
438-
else throw new ScriptException("Invalid attribute name: " + k);
438+
else item.set(k, v.toString());
439439
}
440440

441441
/** Super terse comparison helper method. */

src/test/java/org/scijava/script/ScriptInfoTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ public void testParameters() {
142142
"% @LogService(required = false) log\n" + //
143143
"% @int(label=\"Slider Value\", softMin=5, softMax=15, " + //
144144
"stepSize=3, value=11, style=\"slider\") sliderValue\n" + //
145-
"% @String(persist = false, " + //
145+
"% @String(persist = false, family='Carnivora', " + //
146146
"choices={'quick brown fox', 'lazy dog'}) animal\n" + //
147147
"% @BOTH java.lang.StringBuilder buffer";
148148

@@ -164,6 +164,7 @@ public void testParameters() {
164164
Arrays.asList("quick brown fox", "lazy dog");
165165
assertItem("animal", String.class, null, ItemIO.INPUT, true, false,
166166
null, null, null, null, null, null, null, null, animalChoices, animal);
167+
assertEquals(animal.get("family"), "Carnivora"); // test custom attribute
167168

168169
final ModuleItem<?> buffer = info.getOutput("buffer");
169170
assertItem("buffer", StringBuilder.class, null, ItemIO.BOTH, true, true,

0 commit comments

Comments
 (0)