Realizar una interface web que permita ingresar el código de una clase Java.
La interface debe ser simple - preferiblemente
React.js (no es lo más importante)
El código a ser ingresado / editado puede tener restricciones (tal vez no permitir imports o solo asumir imports de
java.lang o
java.util) y tambien poder usar recursos predefinidos en el servidor (como pool de conexiones a bases de datos y paquetes preestablecidos)
En principio. Como prueba de concepto se puede hacer como ejemplo hacer un select de una base de datos a partir de una conexion seteada en el servidor
Entregable debe ser un war y las clases java asociadas que corra en Tomcat
La solucion debe parsear el input ingresado y ejecutarlo
(En la propuesta por favor especificar la estrategia para implementar la solucion)
No es necesario guardar el codigo ingresado (Podria ser una solucion donde en un editBox se pegue informacion)
El editor deberia admitir Tabs y Enter
La ejecucion involucraria solo una clase. Todo lo necesario para correr estaria en la clase ingresada y en los recursos disponibles en el servidor
Se pueden usar libraries libres para parsear / editar (tal vez no sea necesario parsear sino solo mostrar los errores que devuelva la compilacion y la ejecucion)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Detalles:
Como funcionará la aplicación.
Debe ser generada con maven.
Package: war
Java 1.8
Spring Rest Controller
Descripcion de Caso de Uso
El sistema muestra el form que contiene basicamente
Un TextBox (Name: Nombre del componente a cargar)
Un EditBox (Que puede colorearse de acuerdo a la sintaxis - no necesario,
donde se carga el codigo Java
No se cargará el renglón class.
Cargará al menos un único método público (el método principal)
El método principal tendrá un único parámetro de entrada (que podría ser Object)
El método principal tendrá un valor de retorno que será Object
Cargará otros métodos
Podrá cargar propiedades y otras sentencias.
)
Un botón submit.
Preferentemente
React.js (a lo sumo HTML pero no Angular ni jQuery)
El botón submit envía el string cargado a un servicio REST capturado por un controller de Spring
El servidor recibe como text el código cargado y completa adecuadamente la clase.
El servidor puede parsear (Este paso podría ser innecesario)
El servidor compila el string enviado
Evitar usar herramientas externas (ant y si es posible evitar llamada al sistema operativo como run javac)
Ver : soluciones del estilo
https://stackoverflow.com/questions/7989135/is-it-possible-to-programmatically-compile-java-source-code-in-memory-only
Existirá otra página
Form
identificador de la clase ingresada previamente
uno o dos datos (Ejemplo:
Cliente.nombre (String) /
Cliente.edad (int))
y se enviará como JSON en Serivicio REST implementado con Spring
En el backend se tomarán los datos ingresados
Conformarán el objecto que se le pasará al método creado en el form anterior
Se ejecutará la clase
Devolverá como resultado
El objeto que devuelve el método público
(Puede ser mostrado en un log o con println o devuelto al frontend)
Si se genera un error devolverá El stacktrace del error
El código Java ingresado sólo hará referencia a clases básicas de java
java.lang
java.util
y a recursos disponibles en el servidor
(Los imports de los recursos disponibles en el servidor (Ejemplo un DataSource)
pueden ser agregados en el backend una vez que se reciba el String del editBox)
Plazo de Entrega: 01 Julio, 2017