fix compile

This commit is contained in:
alex 2024-08-07 10:23:00 -04:00
parent 162b0e7744
commit 264d3a781a
6 changed files with 72 additions and 18 deletions

Binary file not shown.

View File

@ -1,6 +1,5 @@
package com.primefactorsolutions.service; package com.primefactorsolutions.service;
import com.primefactorsolutions.service.compiler.InMemoryClass;
import com.primefactorsolutions.service.compiler.InMemoryFileManager; import com.primefactorsolutions.service.compiler.InMemoryFileManager;
import com.primefactorsolutions.service.compiler.JavaSourceFromString; import com.primefactorsolutions.service.compiler.JavaSourceFromString;
import lombok.SneakyThrows; import lombok.SneakyThrows;
@ -11,6 +10,7 @@ import javax.tools.DiagnosticCollector;
import javax.tools.JavaCompiler; import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject; import javax.tools.JavaFileObject;
import javax.tools.ToolProvider; import javax.tools.ToolProvider;
import java.lang.reflect.Method;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -44,8 +44,15 @@ public class CompilerService {
} else { } else {
final ClassLoader classLoader = manager.getClassLoader(null); final ClassLoader classLoader = manager.getClassLoader(null);
final Class<?> clazz = classLoader.loadClass(qualifiedClassName); final Class<?> clazz = classLoader.loadClass(qualifiedClassName);
final InMemoryClass instanceOfClass = (InMemoryClass) clazz.newInstance(); Map<String, Boolean> results = Map.of();
final Map<String, Boolean> results = instanceOfClass.runCode();
Method[] methods = clazz.getMethods();
for (Method m : methods) {
if ("run".equals(m.getName())) {
results = (Map<String, Boolean>) m.invoke(null, new Object[] {});
break;
}
}
return Optional.of(results.entrySet().stream() return Optional.of(results.entrySet().stream()
.map(e -> String.format("%-50s ... %4s", e.getKey(), RESULT_MESSAGE.get(e.getValue()))) .map(e -> String.format("%-50s ... %4s", e.getKey(), RESULT_MESSAGE.get(e.getValue())))

View File

@ -301,13 +301,12 @@ public class EvaluationView extends Main implements HasUrlParameter<String> {
questionEditor.setSofttabs(true); questionEditor.setSofttabs(true);
questionEditor.setTabSize(4); questionEditor.setTabSize(4);
questionEditor.setWrap(true); questionEditor.setWrap(true);
questionEditor.setMinlines(20); questionEditor.setMinlines(60);
questionEditor.setMaxlines(30); questionEditor.setMaxlines(80);
// aceEditor.setPlaceholder("... Edit ..."); questionEditor.setAutoComplete(false);
questionEditor.setAutoComplete(true);
questionEditor.setCustomAutoCompletion(new String[] { "TEST", "TEST2", "TEST3" });
questionEditor.setHighlightActiveLine(true); questionEditor.setHighlightActiveLine(true);
questionEditor.setHighlightSelectedWord(false); questionEditor.setHighlightSelectedWord(false);
return questionEditor; return questionEditor;
} }

View File

@ -1,11 +1,10 @@
package com.primefactorsolutions; package com.primefactorsolutions;
import com.primefactorsolutions.service.compiler.InMemoryClass;
import java.util.*; import java.util.*;
import java.lang.reflect.*; import java.lang.reflect.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class TestClass implements InMemoryClass { public class TestClass {
// ------------ IMPLEMENTAR AQUI -------------------------------- // ------------ IMPLEMENTAR AQUI --------------------------------
@ -37,8 +36,7 @@ public class TestClass implements InMemoryClass {
} }
} }
@Override public static Map<String, Boolean> run() {
public Map<String, Boolean> runCode() {
Map<String, Boolean> results = Arrays.stream(Tests.class.getDeclaredMethods()) Map<String, Boolean> results = Arrays.stream(Tests.class.getDeclaredMethods())
.map(m -> { .map(m -> {
try { try {

View File

@ -0,0 +1,46 @@
package com.primefactorsolutions;
import java.util.*;
import java.lang.reflect.*;
import java.util.stream.Collectors;
public class TestClass {
// ------------ IMPLEMENTAR AQUI --------------------------------
public static String getFooBar(int N) {
return "TODO";
}
// ------------- NO MODIFICAR DESDE ESTA LINEA --------------------
public static class Tests {
public static Map.Entry<String, Boolean> testNInvalido() {
boolean result = getFooBar(-1).equals("");
return Map.entry("N invalido retorna vacio", result);
}
public static Map.Entry<String, Boolean> testNValido() {
boolean result = getFooBar(7).equals("1,Foo,Bar,Foo,5,FooBar,7");
return Map.entry("N valido correcto", result);
}
}
public static Map<String, Boolean> run() {
Map<String, Boolean> results = Arrays.stream(Tests.class.getDeclaredMethods())
.map(m -> {
try {
return (Map.Entry<String, Boolean>) m.invoke(null);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
throw new RuntimeException(e);
}
}).collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));
return results;
}
}

View File

@ -1,11 +1,10 @@
package com.primefactorsolutions; package com.primefactorsolutions;
import com.primefactorsolutions.service.compiler.InMemoryClass;
import java.util.*; import java.util.*;
import java.lang.reflect.*; import java.lang.reflect.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class TestClass implements InMemoryClass { public class TestClass {
// ------------ IMPLEMENTAR AQUI -------------------------------- // ------------ IMPLEMENTAR AQUI --------------------------------
@ -30,9 +29,15 @@ public class TestClass implements InMemoryClass {
} }
public static Map.Entry<String, Boolean> testPalindromaUnico() { public static Map.Entry<String, Boolean> testPalindromaUnico() {
boolean result = getPalindroma("z").equals("ZZ"); boolean result = getPalindroma("z").equals("Z");
return Map.entry("palindrome una solo caracter es valido", result); return Map.entry("palindrome un solo caracter es valido", result);
}
public static Map.Entry<String, Boolean> testPalindromaUnico() {
boolean result = getPalindroma("abba").equals("ABBA");
return Map.entry("palindrome un solo caracter es valido", result);
} }
public static Map.Entry<String, Boolean> testPalindromaNull() { public static Map.Entry<String, Boolean> testPalindromaNull() {
@ -42,8 +47,7 @@ public class TestClass implements InMemoryClass {
} }
} }
@Override public static Map<String, Boolean> run() {
public Map<String, Boolean> runCode() {
Map<String, Boolean> results = Arrays.stream(Tests.class.getDeclaredMethods()) Map<String, Boolean> results = Arrays.stream(Tests.class.getDeclaredMethods())
.map(m -> { .map(m -> {
try { try {