Skip to content

Commit e195297

Browse files
committed
Add OpInfo.description
1 parent 71d64de commit e195297

28 files changed

Lines changed: 379 additions & 179 deletions

scijava-ops-api/src/main/java/org/scijava/ops/api/OpInfo.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@
2929

3030
package org.scijava.ops.api;
3131

32+
import org.scijava.struct.Member;
33+
import org.scijava.struct.Struct;
34+
import org.scijava.struct.StructInstance;
35+
3236
import java.lang.reflect.AnnotatedElement;
3337
import java.lang.reflect.Type;
3438
import java.util.List;
3539
import java.util.stream.Collectors;
3640

37-
import org.scijava.struct.Member;
38-
import org.scijava.struct.Struct;
39-
import org.scijava.struct.StructInstance;
40-
4141
/**
4242
* Metadata about an Op implementation.
4343
*
@@ -130,4 +130,9 @@ default int compareTo(final OpInfo that) {
130130

131131
/** A unique identifier for an Op */
132132
String id();
133+
134+
/** A description of the Op's behavior */
135+
default String description() {
136+
return "";
137+
}
133138
}

scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/DefaultOpEnvironment.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -262,8 +262,14 @@ public Type genericType(Object obj) {
262262
public OpInfo opify(final Class<?> opClass, final double priority,
263263
String... names)
264264
{
265-
return new OpClassInfo(opClass, Versions.getVersion(opClass), new Hints(),
266-
priority, names);
265+
return new OpClassInfo( //
266+
opClass, //
267+
Versions.getVersion(opClass), //
268+
"", //
269+
new Hints(), //
270+
priority, //
271+
names //
272+
);
267273
}
268274

269275
@Override

scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/OpClassOpInfoGenerator.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,19 @@
2929

3030
package org.scijava.ops.engine.impl;
3131

32-
import java.util.Collections;
33-
import java.util.List;
34-
3532
import org.scijava.meta.Versions;
3633
import org.scijava.ops.api.Hints;
3734
import org.scijava.ops.api.OpInfo;
38-
import org.scijava.ops.api.Ops;
3935
import org.scijava.ops.engine.OpInfoGenerator;
4036
import org.scijava.ops.engine.matcher.impl.OpClassInfo;
4137
import org.scijava.ops.engine.util.Infos;
4238
import org.scijava.ops.spi.Op;
4339
import org.scijava.ops.spi.OpClass;
4440
import org.scijava.ops.spi.OpHints;
4541

42+
import java.util.Collections;
43+
import java.util.List;
44+
4645
public class OpClassOpInfoGenerator implements OpInfoGenerator {
4746

4847
private Hints formHints(OpHints h) {
@@ -53,13 +52,14 @@ private Hints formHints(OpHints h) {
5352
protected List<OpInfo> processClass(Class<?> c) {
5453
OpClass p = c.getAnnotation(OpClass.class);
5554
if (p == null) return Collections.emptyList();
56-
57-
String[] parsedOpNames = Infos.parseNames(p.names());
58-
String version = Versions.getVersion(c);
59-
Hints hints = formHints(c.getAnnotation(OpHints.class));
60-
double priority = p.priority();
61-
return Collections.singletonList(new OpClassInfo(c, version, hints,
62-
priority, parsedOpNames));
55+
return Collections.singletonList(new OpClassInfo( //
56+
c, //
57+
Versions.getVersion(c), //
58+
p.description(), //
59+
formHints(c.getAnnotation(OpHints.class)), //
60+
p.priority(), //
61+
Infos.parseNames(p.names()) //
62+
));
6363
}
6464

6565
@Override

scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/OpCollectionInfoGenerator.java

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -96,23 +96,28 @@ private OpFieldInfo generateFieldInfo(Field field, Object instance,
9696
{
9797
final boolean isStatic = Modifier.isStatic(field.getModifiers());
9898
OpField annotation = field.getAnnotation(OpField.class);
99-
String unparsedOpNames = annotation.names();
100-
String[] parsedOpNames = Infos.parseNames(unparsedOpNames);
101-
double priority = annotation.priority();
102-
Hints hints = formHints(field.getAnnotation(OpHints.class));
103-
return new OpFieldInfo(isStatic ? null : instance, field, version, hints,
104-
priority, parsedOpNames);
99+
return new OpFieldInfo( //
100+
isStatic ? null : instance, //
101+
field, //
102+
version, //
103+
annotation.description(), //
104+
formHints(field.getAnnotation(OpHints.class)), //
105+
annotation.priority(), //
106+
Infos.parseNames(annotation.names()) //
107+
);
105108
}
106109

107110
private OpMethodInfo generateMethodInfo(Method method, String version) {
108111
OpMethod annotation = method.getAnnotation(OpMethod.class);
109-
Class<?> opType = annotation.type();
110-
String unparsedOpNames = annotation.names();
111-
String[] parsedOpNames = Infos.parseNames(unparsedOpNames);
112-
Hints hints = formHints(method.getAnnotation(OpHints.class));
113-
double priority = annotation.priority();
114-
return new OpMethodInfo(method, opType, version, hints, priority,
115-
parsedOpNames);
112+
return new OpMethodInfo( //
113+
method, //
114+
annotation.type(), //
115+
version, //
116+
annotation.description(), //
117+
formHints(method.getAnnotation(OpHints.class)), //
118+
annotation.priority(), //
119+
Infos.parseNames(annotation.names()) //
120+
);
116121
}
117122

118123
@Override

scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/adapt/OpAdaptationInfo.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@ public OpAdaptationInfo(OpInfo srcInfo, Type type, InfoTree adaptorChain) {
8585
Infos.validate(this);
8686
}
8787

88+
@Override
89+
public String description() {
90+
return srcInfo.description();
91+
}
92+
8893
@Override
8994
public List<String> names() {
9095
return srcInfo.names();

scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/convert/ConvertedOpInfo.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,11 @@ public List<String> names() {
198198
return srcInfo().names();
199199
}
200200

201+
@Override
202+
public String description() {
203+
return srcInfo().description();
204+
}
205+
201206
@Override
202207
public Type opType() {
203208
return opType;

scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpClassInfo.java

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,24 @@
2929

3030
package org.scijava.ops.engine.matcher.impl;
3131

32-
import java.lang.reflect.AnnotatedElement;
33-
import java.lang.reflect.Constructor;
34-
import java.lang.reflect.InvocationTargetException;
35-
import java.lang.reflect.Type;
36-
import java.util.Arrays;
37-
import java.util.List;
38-
39-
import org.scijava.meta.Versions;
4032
import org.scijava.ops.api.Hints;
4133
import org.scijava.ops.api.OpInfo;
4234
import org.scijava.ops.engine.OpDependencyMember;
4335
import org.scijava.ops.engine.struct.ClassOpDependencyMemberParser;
4436
import org.scijava.ops.engine.struct.ClassParameterMemberParser;
4537
import org.scijava.ops.engine.util.Infos;
46-
import org.scijava.priority.Priority;
4738
import org.scijava.struct.Struct;
4839
import org.scijava.struct.StructInstance;
4940
import org.scijava.struct.Structs;
5041
import org.scijava.types.Types;
5142

43+
import java.lang.reflect.AnnotatedElement;
44+
import java.lang.reflect.Constructor;
45+
import java.lang.reflect.InvocationTargetException;
46+
import java.lang.reflect.Type;
47+
import java.util.Arrays;
48+
import java.util.List;
49+
5250
/**
5351
* Metadata about an Op implementation defined as a class.
5452
*
@@ -62,26 +60,21 @@ public class OpClassInfo implements OpInfo {
6260
private final String version;
6361
private final Struct struct;
6462
private final double priority;
63+
private final String description;
6564
private final Hints hints;
6665

67-
public OpClassInfo(final Class<?> opClass, final Hints hints,
68-
final String... names)
69-
{
70-
this(opClass, Versions.getVersion(opClass), hints, Priority.NORMAL, names);
71-
}
72-
73-
public OpClassInfo(final Class<?> opClass, final String version,
74-
final Hints hints, final String... names)
75-
{
76-
this(opClass, version, hints, Priority.NORMAL, names);
77-
}
78-
79-
public OpClassInfo(final Class<?> opClass, final String version,
80-
final Hints hints, final double priority, final String... names)
81-
{
66+
public OpClassInfo( //
67+
final Class<?> opClass, //
68+
final String version, //
69+
final String description, //
70+
final Hints hints, //
71+
final double priority, //
72+
final String... names //
73+
) {
8274
this.opClass = opClass;
8375
this.version = version;
8476
this.names = Arrays.asList(names);
77+
this.description = description;
8578
this.priority = priority;
8679
this.hints = hints;
8780

@@ -97,6 +90,11 @@ public OpClassInfo(final Class<?> opClass, final String version,
9790

9891
// -- OpInfo methods --
9992

93+
@Override
94+
public String description() {
95+
return this.description;
96+
}
97+
10098
@Override
10199
public List<String> names() {
102100
return names;

scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/impl/OpFieldInfo.java

Lines changed: 24 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,25 @@
2929

3030
package org.scijava.ops.engine.matcher.impl;
3131

32-
import java.lang.reflect.AnnotatedElement;
33-
import java.lang.reflect.Field;
34-
import java.lang.reflect.Modifier;
35-
import java.lang.reflect.Type;
36-
import java.util.Arrays;
37-
import java.util.List;
38-
39-
import org.scijava.meta.Versions;
4032
import org.scijava.ops.api.Hints;
4133
import org.scijava.ops.api.OpInfo;
4234
import org.scijava.ops.engine.exceptions.impl.PrivateOpException;
4335
import org.scijava.ops.engine.struct.FieldInstance;
4436
import org.scijava.ops.engine.struct.FieldParameterMemberParser;
4537
import org.scijava.ops.engine.util.Infos;
4638
import org.scijava.ops.spi.OpField;
47-
import org.scijava.priority.Priority;
4839
import org.scijava.struct.Struct;
4940
import org.scijava.struct.StructInstance;
5041
import org.scijava.struct.Structs;
5142
import org.scijava.types.Types;
5243

44+
import java.lang.reflect.AnnotatedElement;
45+
import java.lang.reflect.Field;
46+
import java.lang.reflect.Modifier;
47+
import java.lang.reflect.Type;
48+
import java.util.Arrays;
49+
import java.util.List;
50+
5351
/**
5452
* Metadata about an Op implementation defined as a field.
5553
*
@@ -60,38 +58,25 @@ public class OpFieldInfo implements OpInfo {
6058
private final Object instance;
6159
private final Field field;
6260
private final String version;
61+
private final String description;
6362
private final List<String> names;
6463
private final double priority;
6564

66-
private Struct struct;
65+
private final Struct struct;
6766
private final Hints hints;
6867

69-
public OpFieldInfo(final Object instance, final Field field,
70-
final Hints hints, final String... names)
71-
{
72-
this(instance, field, Versions.getVersion(field.getDeclaringClass()), hints,
73-
Priority.NORMAL, names);
74-
}
75-
76-
public OpFieldInfo(final Object instance, final Field field,
77-
final Hints hints, final double priority, final String... names)
78-
{
79-
this(instance, field, Versions.getVersion(field.getDeclaringClass()), hints,
80-
priority, names);
81-
}
82-
83-
public OpFieldInfo(final Object instance, final Field field,
84-
final String version, final Hints hints, final String... names)
85-
{
86-
this(instance, field, version, hints, Priority.NORMAL, names);
87-
}
88-
89-
public OpFieldInfo(final Object instance, final Field field,
90-
final String version, final Hints hints, final double priority,
91-
final String... names)
92-
{
68+
public OpFieldInfo( //
69+
final Object instance, //
70+
final Field field, //
71+
final String version, //
72+
final String description, //
73+
final Hints hints, //
74+
final double priority, //
75+
final String... names //
76+
) {
9377
this.instance = instance;
9478
this.version = version;
79+
this.description = description;
9580
this.field = field;
9681
this.names = Arrays.asList(names);
9782
this.priority = priority;
@@ -132,6 +117,11 @@ public List<String> names() {
132117
return names;
133118
}
134119

120+
@Override
121+
public String description() {
122+
return description;
123+
}
124+
135125
@Override
136126
public Type opType() {
137127
return field.getGenericType();

0 commit comments

Comments
 (0)