Skip to content

Commit 0943f79

Browse files
committed
Consolidate redundant code.
1 parent 711662f commit 0943f79

3 files changed

Lines changed: 37 additions & 33 deletions

File tree

‎src/main/java/org/scijava/jython/autocompletion/DotAutocompletions.java‎

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import java.lang.reflect.Field;
2525
import java.lang.reflect.Method;
26+
import java.lang.reflect.Modifier;
2627
import java.util.ArrayList;
2728
import java.util.List;
2829

@@ -57,5 +58,34 @@ static public List<CompletionText> getPublicFieldsAndMethods(final String classN
5758
}
5859
return ac;
5960
}
61+
62+
63+
/** Collect static fields and static methods from {@code c} into {@code ac}.
64+
*
65+
* @param c
66+
* @param ac
67+
*/
68+
static public void staticFieldsAndStaticMethodsInto(final Class<?> c, final List<CompletionText> ac) {
69+
for (final Field f: c.getDeclaredFields())
70+
if (Modifier.isStatic(f.getModifiers()))
71+
ac.add(new CompletionText(f.getName(), c, f));
72+
for (final Method m: c.getDeclaredMethods())
73+
if (Modifier.isStatic(m.getModifiers()))
74+
ac.add(new CompletionText(m.getName() + "()", c, m)); // TODO could do a parameter-driven autocompletion
75+
}
76+
77+
/** Collect non-static fields and non-static methods of class {@code c} into {@code ac}.
78+
*
79+
* @param c
80+
* @param ac
81+
*/
82+
static public void fieldsAndMethodsInto(final Class<?> c, final List<CompletionText> ac) {
83+
for (final Field f: c.getDeclaredFields())
84+
if (!Modifier.isStatic(f.getModifiers()))
85+
ac.add(new CompletionText(f.getName(), c, f));
86+
for (final Method m: c.getDeclaredMethods())
87+
if (!Modifier.isStatic(m.getModifiers()))
88+
ac.add(new CompletionText(m.getName() + "()", c, m)); // TODO could do a parameter-driven autocompletion
89+
}
6090

6191
}

‎src/main/java/org/scijava/jython/autocompletion/StaticDotAutocompletions.java‎

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@
2121
*/
2222
package org.scijava.jython.autocompletion;
2323

24-
import java.lang.reflect.Field;
25-
import java.lang.reflect.Method;
26-
import java.lang.reflect.Modifier;
2724
import java.util.ArrayList;
2825
import java.util.Arrays;
2926
import java.util.List;
@@ -61,7 +58,7 @@ public List<CompletionText> get() {
6158
}
6259
// Or a java class:
6360
try {
64-
fieldsAndStaticMethodsInto(Class.forName(this.className), ac);
61+
DotAutocompletions.staticFieldsAndStaticMethodsInto(Class.forName(this.className), ac);
6562
return ac;
6663
} catch (ClassNotFoundException cnfe) {
6764
msg += "\nCannot find java class " + this.className;
@@ -77,7 +74,7 @@ public List<CompletionText> get() {
7774
.map(m -> m.getReturnType())
7875
.distinct()
7976
.collect(Collectors.toList())) {
80-
fieldsAndMethodsInto(r, ac);
77+
DotAutocompletions.fieldsAndMethodsInto(r, ac);
8178
}
8279
return ac;
8380
} catch (ClassNotFoundException cnfe) {
@@ -94,24 +91,6 @@ public List<CompletionText> get() {
9491
}
9592
return ac;
9693
}
97-
98-
private void fieldsAndStaticMethodsInto(final Class<?> c, final List<CompletionText> ac) {
99-
for (final Field f: c.getDeclaredFields())
100-
if (Modifier.isStatic(f.getModifiers()))
101-
ac.add(new CompletionText(f.getName(), c, f));
102-
for (final Method m: c.getDeclaredMethods())
103-
if (Modifier.isStatic(m.getModifiers()))
104-
ac.add(new CompletionText(m.getName() + "()", c, m)); // TODO could do a parameter-driven autocompletion
105-
}
106-
107-
private void fieldsAndMethodsInto(final Class<?> c, final List<CompletionText> ac) {
108-
for (final Field f: c.getDeclaredFields())
109-
if (!Modifier.isStatic(f.getModifiers()))
110-
ac.add(new CompletionText(f.getName(), c, f));
111-
for (final Method m: c.getDeclaredMethods())
112-
if (!Modifier.isStatic(m.getModifiers()))
113-
ac.add(new CompletionText(m.getName() + "()", c, m)); // TODO could do a parameter-driven autocompletion
114-
}
11594

11695
@Override
11796
public String toString() {

‎src/main/java/org/scijava/jython/autocompletion/VarDotAutocompletions.java‎

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
*/
2222
package org.scijava.jython.autocompletion;
2323

24-
import java.lang.reflect.Field;
25-
import java.lang.reflect.Method;
2624
import java.util.ArrayList;
2725
import java.util.List;
2826

@@ -40,15 +38,12 @@ public String getClassname() {
4038
@Override
4139
public List<CompletionText> get() {
4240
final List<CompletionText> ac = new ArrayList<>();
43-
if (null != this.className) {
41+
if (null != className) {
4442
try {
45-
final Class<?> c = Class.forName(this.className);
46-
for (final Field f: c.getFields())
47-
ac.add(new CompletionText(f.getName(), c, f));
48-
for (final Method m: c.getMethods())
49-
ac.add(new CompletionText(m.getName() + "()", c, m)); // TODO could do a parameter-driven autocompletion
50-
} catch (Exception e) {
51-
e.printStackTrace();
43+
final Class<?> c = Class.forName(className);
44+
DotAutocompletions.fieldsAndMethodsInto(c, ac);
45+
} catch (final Exception e) {
46+
System.out.println("Could not load class " + className + " :: " + e.getMessage());
5247
}
5348
}
5449
return ac;

0 commit comments

Comments
 (0)