ConfInterpreter extends Interpreter { @Override public InterpreterResult interpret(String st, InterpreterContext context) throws InterpreterException { try { Properties finalProperties = new Properties(); finalProperties.putAll(getProperties()); Properties newProperties = new Properties(); newProperties.load(new StringReader(st)); finalProperties.putAll(newProperties); LOGGER.debug("Properties for InterpreterGroup: {} is {}", interpreterGroupId, finalProperties); interpreterSetting.setInterpreterGroupProperties(interpreterGroupId, finalProperties); return new InterpreterResult(InterpreterResult.Code.SUCCESS); } catch (IOException e) { LOGGER.error("Fail to update interpreter setting", e); return new InterpreterResult(InterpreterResult.Code.ERROR, ExceptionUtils.getStackTrace(e)); } } ConfInterpreter(Properties properties,
                         String sessionId,
                         String interpreterGroupId,
                         InterpreterSetting interpreterSetting); @Override void open(); @Override void close(); @Override InterpreterResult interpret(String st, InterpreterContext context); @Override void cancel(InterpreterContext context); @Override FormType getFormType(); @Override int getProgress(InterpreterContext context);  }
@Test public void testCorrectConf() throws InterpreterException { assertTrue(interpreterFactory.getInterpreter("test.conf", executionContext) instanceof ConfInterpreter); ConfInterpreter confInterpreter = (ConfInterpreter) interpreterFactory.getInterpreter("test.conf", executionContext); InterpreterContext context = InterpreterContext.builder() .setNoteId("noteId") .setParagraphId("paragraphId") .build(); InterpreterResult result = confInterpreter.interpret("property_1\tnew_value\nnew_property\tdummy_value", context); assertEquals(InterpreterResult.Code.SUCCESS, result.code); assertTrue(interpreterFactory.getInterpreter("test", executionContext) instanceof RemoteInterpreter); RemoteInterpreter remoteInterpreter = (RemoteInterpreter) interpreterFactory.getInterpreter("test", executionContext); remoteInterpreter.interpret("hello world", context); assertEquals(7, remoteInterpreter.getProperties().size()); assertEquals("new_value", remoteInterpreter.getProperty("property_1")); assertEquals("dummy_value", remoteInterpreter.getProperty("new_property")); assertEquals("value_3", remoteInterpreter.getProperty("property_3")); result = confInterpreter.interpret("property_1\tnew_value\nnew_property\tdummy_value", context); assertEquals(InterpreterResult.Code.SUCCESS, result.code); result = confInterpreter.interpret("property_1\tnew_value_2\nnew_property\tdummy_value", context); assertEquals(InterpreterResult.Code.ERROR, result.code); }
@Test public void testEmptyConf() throws InterpreterException { assertTrue(interpreterFactory.getInterpreter("test.conf", executionContext) instanceof ConfInterpreter); ConfInterpreter confInterpreter = (ConfInterpreter) interpreterFactory.getInterpreter("test.conf", executionContext); InterpreterContext context = InterpreterContext.builder() .setNoteId("noteId") .setParagraphId("paragraphId") .build(); InterpreterResult result = confInterpreter.interpret("", context); assertEquals(InterpreterResult.Code.SUCCESS, result.code); assertTrue(interpreterFactory.getInterpreter("test", executionContext) instanceof RemoteInterpreter); RemoteInterpreter remoteInterpreter = (RemoteInterpreter) interpreterFactory.getInterpreter("test", executionContext); assertEquals(6, remoteInterpreter.getProperties().size()); assertEquals("value_1", remoteInterpreter.getProperty("property_1")); assertEquals("value_3", remoteInterpreter.getProperty("property_3")); }
@Test public void testRunningAfterOtherInterpreter() throws InterpreterException { assertTrue(interpreterFactory.getInterpreter("test.conf", executionContext) instanceof ConfInterpreter); ConfInterpreter confInterpreter = (ConfInterpreter) interpreterFactory.getInterpreter("test.conf", executionContext); InterpreterContext context = InterpreterContext.builder() .setNoteId("noteId") .setParagraphId("paragraphId") .build(); RemoteInterpreter remoteInterpreter = (RemoteInterpreter) interpreterFactory.getInterpreter("test", executionContext); InterpreterResult result = remoteInterpreter.interpret("hello world", context); assertEquals(InterpreterResult.Code.SUCCESS, result.code); result = confInterpreter.interpret("property_1\tnew_value\nnew_property\tdummy_value", context); assertEquals(InterpreterResult.Code.ERROR, result.code); }