Skip to content

Commit

Permalink
GroovyEngine: add try-catch & small refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
mattirn committed Jul 9, 2020
1 parent 0175f49 commit ee3f01b
Showing 1 changed file with 19 additions and 44 deletions.
63 changes: 19 additions & 44 deletions groovy/src/main/java/org/jline/script/GroovyEngine.java
Original file line number Diff line number Diff line change
Expand Up @@ -429,11 +429,14 @@ public static Set<String> getStaticMethods(Class<?> clazz) {

private static Set<String> getMethods(Class<?> clazz, boolean statc) {
Set<String> out = new HashSet<>();
for (Method method : clazz.getMethods()) {
if ((statc && Modifier.isStatic(method.getModifiers()))
|| (!statc && !Modifier.isStatic(method.getModifiers()))) {
out.add(method.getName());
try {
for (Method method : clazz.getMethods()) {
if ((statc && Modifier.isStatic(method.getModifiers()))
|| (!statc && !Modifier.isStatic(method.getModifiers()))) {
out.add(method.getName());
}
}
} catch (NoClassDefFoundError e) {
}
return out;
}
Expand Down Expand Up @@ -635,7 +638,7 @@ public void complete(LineReader reader, ParsedLine commandLine, List<Candidate>
if (brackets.numberOfRounds() > 0 && brackets.lastCloseRound() > eqsep) {
int varsep = buffer.lastIndexOf('.');
if (varsep > 0 && varsep > brackets.lastCloseRound()) {
Class<?> clazz = evaluateClass(buffer.substring(eqsep + 1, varsep));
Class<?> clazz = inspector().evaluateClass(buffer.substring(eqsep + 1, varsep));
int vs = wordbuffer.lastIndexOf('.');
String curBuf = wordbuffer.substring(0, vs + 1);
String hint = wordbuffer.substring(vs + 1);
Expand Down Expand Up @@ -676,7 +679,7 @@ public void complete(LineReader reader, ParsedLine commandLine, List<Candidate>
if (addKeyWords) {
Helpers.doCandidates(candidates, KEY_WORDS, curBuf, param, CandidateType.METHOD);
}
Helpers.doCandidates(candidates, variables(), curBuf, param, CandidateType.OTHER);
Helpers.doCandidates(candidates, inspector().variables(), curBuf, param, CandidateType.OTHER);
Helpers.doCandidates(candidates, retrieveClassesWithStaticMethods(), curBuf, param,
CandidateType.STATIC_METHOD);
}
Expand All @@ -685,18 +688,18 @@ public void complete(LineReader reader, ParsedLine commandLine, List<Candidate>
String var = param.substring(0, param.indexOf('.'));
String curBuf = wordbuffer.substring(0, varsep + 1);
String p = wordbuffer.substring(varsep + 1);
if (nameClass().containsKey(var)) {
if (inspector().nameClass().containsKey(var)) {
if (firstMethod) {
doStaticMethodCandidates(candidates, nameClass().get(var), curBuf, p);
doStaticMethodCandidates(candidates, inspector().nameClass().get(var), curBuf, p);
} else {
Class<?> clazz = evaluateClass(wordbuffer.substring(eqsep + 1, varsep));
Class<?> clazz = inspector().evaluateClass(wordbuffer.substring(eqsep + 1, varsep));
doMethodCandidates(candidates, clazz, curBuf, p);
}
} else if (hasVariable(var)) {
} else if (inspector().hasVariable(var)) {
if (firstMethod) {
doMethodCandidates(candidates, getVariable(var).getClass(), curBuf, p);
doMethodCandidates(candidates, inspector().getVariable(var).getClass(), curBuf, p);
} else {
Class<?> clazz = evaluateClass(wordbuffer.substring(eqsep + 1, varsep));
Class<?> clazz = inspector().evaluateClass(wordbuffer.substring(eqsep + 1, varsep));
doMethodCandidates(candidates, clazz, curBuf, p);
}
} else {
Expand All @@ -714,39 +717,11 @@ public void complete(LineReader reader, ParsedLine commandLine, List<Candidate>
}
}

private Set<String> variables() {
if (inspector == null) {
inspector = new Inspector(groovyEngine);
}
return inspector.variables();
}

private boolean hasVariable(String name) {
if (inspector == null) {
inspector = new Inspector(groovyEngine);
}
return inspector.hasVariable(name);
}

private Object getVariable(String name) {
if (inspector == null) {
inspector = new Inspector(groovyEngine);
}
return inspector.getVariable(name);
}

private Class<?> evaluateClass(String objectStatement) {
if (inspector == null) {
inspector = new Inspector(groovyEngine);
}
return inspector.evaluateClass(objectStatement);
}

private Map<String,Class<?>> nameClass() {
private Inspector inspector() {
if (inspector == null) {
inspector = new Inspector(groovyEngine);
}
return inspector.nameClass();
return inspector;
}

private void doMethodCandidates(List<Candidate> candidates, Class<?> clazz, String curBuf, String hint) {
Expand All @@ -767,7 +742,7 @@ private void doStaticMethodCandidates(List<Candidate> candidates, Class<?> clazz

private Set<String> retrieveConstructors() {
Set<String> out = new HashSet<>();
for (Map.Entry<String, Class<?>> entry : nameClass().entrySet()) {
for (Map.Entry<String, Class<?>> entry : inspector().nameClass().entrySet()) {
Class<?> c = entry.getValue();
if (c.getConstructors().length == 0 || Modifier.isAbstract(c.getModifiers())) {
continue;
Expand All @@ -779,7 +754,7 @@ private Set<String> retrieveConstructors() {

private Set<String> retrieveClassesWithStaticMethods() {
Set<String> out = new HashSet<>();
for (Map.Entry<String, Class<?>> entry : nameClass().entrySet()) {
for (Map.Entry<String, Class<?>> entry : inspector().nameClass().entrySet()) {
Class<?> c = entry.getValue();
if (Helpers.getStaticMethods(c).size() == 0 && Helpers.getStaticFields(c).size() == 0) {
continue;
Expand Down

0 comments on commit ee3f01b

Please sign in to comment.