Refine search
static RequestContext create() { return create(RequestContext.class.getClassLoader()); }
@Override public RequestContext execute( Executable executable, RequestContext ctx ) { try { if (delegate == null) { ExecutableRunner<RequestContext> runner = ExecutableRunner.create(); RequestContext context = runner.createContext().with( runtime.getKieSession() ); return runner.execute( executable, context ); } else { return delegate.execute(executable); } } catch (RuntimeException e) { if (retry) { return delegate.execute(executable, ctx); } else { throw e; } } }
@SuppressWarnings("unchecked") default <T> T getOutput(String identifier) { return (T) getOutputs().get(identifier); }
@Test public void testOutName() { ExecutableBuilder f = ExecutableBuilder.create(); f.newApplicationContext("app1") .getKieContainer(releaseId).newSession() .insert("h1") .fireAllRules() .getGlobal("outS").out("outS") .dispose(); RequestContext requestContext = ExecutableRunner.create().execute(f.getExecutable()); assertEquals("h1", requestContext.getOutputs().get("outS")); }
@Test public void testRequestScope() { ExecutableBuilder f = ExecutableBuilder.create(); f.newApplicationContext("app1") .getKieContainer(releaseId).newSession() .insert("h1") .fireAllRules() .getGlobal("outS").set("outS1") // Request is default .dispose(); RequestContext requestContext = ExecutableRunner.create().execute(f.getExecutable()); // Check that nothing went to the 'out' assertNull(requestContext.get("outS")); assertNull(requestContext.getOutputs().get("outS1")); assertNull(requestContext.getApplicationContext().get("outS1")); assertNull(requestContext.getConversationContext()); assertEquals("h1", requestContext.get("outS1")); }
@Test public void testSetAndOutBehaviour() { ExecutableBuilder f = ExecutableBuilder.create(); f.newApplicationContext("app1") .getKieContainer(releaseId).newSession() .insert("h1") .fireAllRules() .getGlobal("outS").set("outS") .getGlobal("outS").set("outS1").out() .dispose(); RequestContext requestContext = ExecutableRunner.create().execute(f.getExecutable()); assertNull(requestContext.getOutputs().get("outS")); assertEquals("h1", requestContext.get("outS")); assertNotNull(requestContext.getOutputs().get("outS1")); assertEquals(requestContext.get("outS1"), requestContext.getOutputs().get("outS1")); assertEquals(requestContext.get("outS"), requestContext.get("outS1")); }
.end(); RequestContext requestContext = ExecutableRunner.create().execute(builder.getExecutable()); Map<String, Object> resultMap = requestContext.getOutput("result"); DMNResult dmnResult = requestContext.getOutput("dmnResult"); List<DMNMessage> messages = requestContext.getOutput("messages"); DMNModel dmnModel = requestContext.getOutput("dmnModel");
@Test public void testOutWithoutPriorSetAndNoName() { ExecutableBuilder f = ExecutableBuilder.create(); f.newApplicationContext("app1") .getKieContainer(releaseId).newSession() .insert("h1") .fireAllRules() .getGlobal("outS").out() .dispose(); try { RequestContext requestContext = ExecutableRunner.create().execute(f.getExecutable()); assertEquals("h1", requestContext.get("out1")); fail("Must throw Exception, as no prior set was called and no name given to out"); } catch (Exception e) { } }
try { RequestContext ctx = RequestContext.getCurrentContext(); Object e = ctx.get("error.exception"); ctx.remove("error.status_code"); ctx.setResponseBody(“Overriding Zuul Exception Body”); ctx.getResponse().setContentType("application/json"); ctx.setResponseStatusCode(500); //Can set any error code as excepted
@Override public void verifyConditions(SimulationDescriptor simulationDescriptor, ScenarioRunnerData scenarioRunnerData, ExpressionEvaluator expressionEvaluator, RequestContext requestContext) { DMNResult dmnResult = requestContext.getOutput(DMNScenarioExecutableBuilder.DMN_RESULT); for (ScenarioExpect output : scenarioRunnerData.getExpects()) { FactIdentifier factIdentifier = output.getFactIdentifier(); String decisionName = factIdentifier.getName(); DMNDecisionResult decisionResult = dmnResult.getDecisionResultByName(decisionName); if (decisionResult == null) { throw new ScenarioException("DMN execution has not generated a decision result with name " + decisionName); } for (FactMappingValue expectedResult : output.getExpectedResult()) { ExpressionIdentifier expressionIdentifier = expectedResult.getExpressionIdentifier(); FactMapping factMapping = simulationDescriptor.getFactMapping(factIdentifier, expressionIdentifier) .orElseThrow(() -> new IllegalStateException("Wrong expression, this should not happen")); ScenarioResult scenarioResult = fillResult(expectedResult, factIdentifier, () -> getSingleFactValueResult(factMapping, expectedResult, decisionResult, expressionEvaluator)); scenarioRunnerData.addResult(scenarioResult); } } }
@Override public RequestContext execute(Executable executable, RequestContext context) { for (Batch batch : ( (InternalExecutable) executable ).getBatches()) { for (Command command : batch.getCommands()) { if (command instanceof TaskCommand) { TaskContext ctx = new TaskContext(context, environment, taskEventSupport); addUserIdToContext((TaskCommand<?>) command, ctx); Object result = ((ExecutableCommand) command).execute( ctx ); context.set("Result", result); } else { throw new IllegalArgumentException("Task service can only execute task commands"); } } } return context; }
Set<String> headers = (Set<String>) ctx.get("ignoredHeaders");
@Test public void testSetKieContainerTest() { KieServices kieServices = KieServices.Factory.get(); KieContainer kieContainer = kieServices.newKieContainer(releaseId); ExecutableRunner<RequestContext> runner = ExecutableRunner.create(0L); ExecutableBuilder f = ExecutableBuilder.create(); f.newApplicationContext("app1") .setKieContainer(kieContainer) .newSession() .insert("h1") .fireAllRules() .getGlobal("outS").out("outS1") .dispose(); RequestContext requestContext = runner.execute(f.getExecutable()); assertEquals("h1", requestContext.getOutputs().get("outS1")); }
@Test public void testConversationScope() { ExecutableRunner<RequestContext> runner = ExecutableRunner.create(); .dispose(); RequestContext requestContext = (RequestContext) runner.execute(f.getExecutable()); assertEquals(null, requestContext.get("outS")); String conversationId = requestContext.getConversationContext().getName(); assertEquals("h1", requestContext.getConversationContext().get("outS1")); .dispose(); requestContext = (RequestContext) runner.execute(f.getExecutable()); assertEquals("h1", requestContext.getConversationContext().get("outS1")); assertEquals("h2", requestContext.getConversationContext().get("outS2")); requestContext = (RequestContext) runner.execute(f.getExecutable()); assertNull(requestContext.getConversationContext());
@Test public void testOutWithPriorSetAndNoName() { ExecutableBuilder f = ExecutableBuilder.create(); f.newApplicationContext("app1") .getKieContainer(releaseId).newSession() .insert("h1") .fireAllRules() .getGlobal("outS").set("outS").out() .dispose(); RequestContext requestContext = ExecutableRunner.create().execute(f.getExecutable()); assertEquals("h1", requestContext.getOutputs().get("outS")); assertEquals("h1", requestContext.get("outS")); }
@Test public void verifyConditions() { when(requestContext.getOutput(anyString())).thenReturn(dmnResult);
@Test public void testKieSessionCustomizationTest() { ExecutableRunner<RequestContext> runner = ExecutableRunner.create(0L); ExecutableBuilder f = ExecutableBuilder.create(); f.newApplicationContext("app1") .getKieContainer(releaseId) .newSessionCustomized(null, ((sessionName, kieContainer) -> { KieSessionModel kieSessionModel = kieContainer.getKieSessionModel(sessionName); kieSessionModel.setConsoleLogger("newConsoleLoggerName"); return kieContainer; })) .insert("h1") .fireAllRules() .getGlobal("outS").out("outS1") .dispose(); RequestContext requestContext = runner.execute(f.getExecutable()); assertEquals("h1", requestContext.getOutputs().get("outS1")); }