use of org.pentaho.platform.api.engine.IRuntimeContext in project pentaho-platform by pentaho.
the class ViewAction method handleActionRequest.
@SuppressWarnings("unchecked")
protected void handleActionRequest(final HttpServletRequest request, final HttpServletResponse response, final IOutputHandler outputHandler, final HttpServletRequestHandler requestHandler, OutputStream outputStream, final IContentItem contentItem) throws ServletException, IOException {
IRuntimeContext runtime = null;
try {
runtime = requestHandler.handleActionRequest(0, 0);
if (runtime == null) {
StringBuffer buffer = new StringBuffer();
for (String message : (List<String>) requestHandler.getMessages()) {
buffer.append(message);
}
outputStream.write(buffer.toString().getBytes(LocaleHelper.getSystemEncoding()));
return;
}
/*
* the flag "hasResponse" should be set if the outputHandler is expected to serve a response back via either the
* "response.content" output (a final content output), or an intermediate response such as a form to request
* parameters such as from a SecureFilterComponent.
*/
boolean hasResponse = outputHandler.isResponseExpected();
IContentItem responseContentItem = outputHandler.getOutputContentItem(IOutputHandler.RESPONSE, IOutputHandler.CONTENT, null, null);
boolean success = (runtime != null && runtime.getStatus() == IRuntimeContext.RUNTIME_STATUS_SUCCESS);
boolean debugMessages = doMessages(request);
boolean printSuccess = (runtime != null) && success && (!hasResponse || debugMessages);
boolean printError = (runtime != null) && !success && !response.isCommitted();
if (printSuccess || printError) {
// $NON-NLS-1$
final String htmlMimeType = "text/html";
responseContentItem.setMimeType(htmlMimeType);
// this is going to be the response output stream unless you are in debug mode
outputStream = responseContentItem.getOutputStream(null);
response.setContentType(htmlMimeType);
StringBuffer buffer = new StringBuffer();
if (printSuccess) {
// $NON-NLS-1$ //$NON-NLS-2$
boolean doWrapper = !("false".equals(request.getParameter("wrapper")));
MessageFormatUtils.formatSuccessMessage(htmlMimeType, runtime, buffer, debugMessages, doWrapper);
} else {
response.resetBuffer();
MessageFormatUtils.formatFailureMessage(htmlMimeType, runtime, buffer, requestHandler.getMessages());
}
outputStream.write(buffer.toString().getBytes(LocaleHelper.getSystemEncoding()));
responseContentItem.closeOutputStream();
}
} finally {
if (runtime != null) {
runtime.dispose();
}
}
}
use of org.pentaho.platform.api.engine.IRuntimeContext in project pentaho-platform by pentaho.
the class IsOutputParameterTest method testIsOutputParameter.
/**
* Assert parameters with is-output-parameter=false don't appear in output
*
* @throws XmlParseException
*/
public void testIsOutputParameter() throws XmlParseException {
startTest();
ISolutionEngine solutionEngine = ServiceTestHelper.getSolutionEngine();
String xactionStr = ServiceTestHelper.getXAction(SOLUTION_PATH, "services/" + xactionName);
Document actionSequenceDocument = XmlDom4JHelper.getDocFromString(xactionStr, null);
IActionSequence actionSequence = SequenceDefinition.ActionSequenceFactory(actionSequenceDocument, "", this, // $NON-NLS-1$
PentahoSystem.getApplicationContext(), DEBUG);
Map allParameters = actionSequence.getOutputDefinitions();
Set<String> outParameters = new HashSet<String>();
Set<String> nonOutParameters = new HashSet<String>();
for (Object key : allParameters.keySet()) {
IActionParameter param = (IActionParameter) allParameters.get(key);
if (param.isOutputParameter()) {
outParameters.add(param.getName());
} else {
nonOutParameters.add(param.getName());
}
}
Assert.assertEquals("expected 2 outputable parameters in xaction", 2, outParameters.size());
Assert.assertEquals("expected 1 paramater with is-output-parameter=false", 1, nonOutParameters.size());
IRuntimeContext runtimeContext = // $NON-NLS-1$
solutionEngine.execute(// $NON-NLS-1$
xactionStr, // $NON-NLS-1$
xactionName, // $NON-NLS-1$
"simple output test", // $NON-NLS-1$
false, // $NON-NLS-1$
true, // $NON-NLS-1$
null, // $NON-NLS-1$
false, // $NON-NLS-1$
new HashMap(), null, null, new SimpleUrlFactory(""), // $NON-NLS-1$
new ArrayList());
IParameterManager paramManager = runtimeContext.getParameterManager();
Assert.assertEquals(outParameters.size(), paramManager.getCurrentOutputNames().size());
for (Object key : paramManager.getCurrentOutputNames()) {
Assert.assertTrue("output parameter not found in definition", outParameters.contains(key));
Assert.assertFalse("non-output parameter in output", nonOutParameters.contains(key));
}
finishTest();
}
use of org.pentaho.platform.api.engine.IRuntimeContext in project pentaho-platform by pentaho.
the class PojoComponentTest method testSimplePojoSettings.
public void testSimplePojoSettings() {
startTest();
ISolutionEngine solutionEngine = ServiceTestHelper.getSolutionEngine();
try {
String xactionStr = ServiceTestHelper.getXAction(SOLUTION_PATH, "test/pojo/pojo1b.xaction");
PojoComponentTest.doneCalled = false;
IRuntimeContext runtimeContext = // $NON-NLS-1$ //$NON-NLS-2$
solutionEngine.execute(// $NON-NLS-1$ //$NON-NLS-2$
xactionStr, // $NON-NLS-1$ //$NON-NLS-2$
"pojo1b.xaction", // $NON-NLS-1$ //$NON-NLS-2$
"empty action sequence test", // $NON-NLS-1$ //$NON-NLS-2$
false, // $NON-NLS-1$ //$NON-NLS-2$
true, // $NON-NLS-1$ //$NON-NLS-2$
null, // $NON-NLS-1$ //$NON-NLS-2$
false, new HashMap(), null, null, new SimpleUrlFactory(""), new ArrayList());
IActionParameter param = runtimeContext.getOutputParameter("output1");
assertNotNull("RuntimeContext is null", runtimeContext);
assertTrue("done() was not called", PojoComponentTest.doneCalled);
assertEquals("setInt1 failed", 11, TestPojo1.int1);
assertEquals("setInt2 failed", new Integer(22), TestPojo1.int2);
assertEquals("setBoolean1 failed", true, TestPojo1.bool1);
assertEquals("setBoolean2 failed", new Boolean(true), TestPojo1.bool2);
assertEquals("setLong1 failed", 88, TestPojo1.long1);
assertEquals("setLong2 failed", new Long(99), TestPojo1.long2);
assertEquals("setBigDecimal failed", new BigDecimal("77.7"), TestPojo1.bigDecimal);
assertEquals("setFloat1 failed", "33.3", Float.toString(TestPojo1.float1));
assertEquals("setFloat2 failed", "44.4", TestPojo1.float2.toString());
assertEquals("setDouble1 failed", "55.5", Double.toString(TestPojo1.double1));
assertEquals("setDouble2 failed", "66.6", TestPojo1.double2.toString());
assertEquals("Action sequence execution failed", runtimeContext.getStatus(), IRuntimeContext.RUNTIME_STATUS_SUCCESS);
} catch (Exception e) {
// we should not get here
e.printStackTrace();
assertTrue(e.getMessage(), false);
}
finishTest();
}
use of org.pentaho.platform.api.engine.IRuntimeContext in project pentaho-platform by pentaho.
the class PojoComponentTest method testBadClassSetting.
public void testBadClassSetting() {
startTest();
ISolutionEngine solutionEngine = ServiceTestHelper.getSolutionEngine();
try {
String xactionStr = ServiceTestHelper.getXAction(SOLUTION_PATH, "test/pojo/pojo-bad2.xaction");
PojoComponentTest.doneCalled = false;
PojoComponentTest.executeCalled = false;
PojoComponentTest.validateCalled = false;
IRuntimeContext runtimeContext = // $NON-NLS-1$ //$NON-NLS-2$
solutionEngine.execute(// $NON-NLS-1$ //$NON-NLS-2$
xactionStr, // $NON-NLS-1$ //$NON-NLS-2$
"test", // $NON-NLS-1$ //$NON-NLS-2$
"invalid class setting test", // $NON-NLS-1$ //$NON-NLS-2$
false, // $NON-NLS-1$ //$NON-NLS-2$
true, // $NON-NLS-1$ //$NON-NLS-2$
null, // $NON-NLS-1$ //$NON-NLS-2$
false, new HashMap(), null, null, new SimpleUrlFactory(""), new ArrayList());
assertNotNull("RuntimeContext is null", runtimeContext);
assertEquals("execute was called", false, PojoComponentTest.executeCalled);
assertEquals("validate was called", false, PojoComponentTest.validateCalled);
assertEquals("Action sequence validation succeeded", runtimeContext.getStatus(), IRuntimeContext.RUNTIME_CONTEXT_VALIDATE_FAIL);
} catch (Exception e) {
// we should not get here
e.printStackTrace();
assertTrue(e.getMessage(), false);
}
finishTest();
}
use of org.pentaho.platform.api.engine.IRuntimeContext in project pentaho-platform by pentaho.
the class PojoComponentTest method testRuntimeInputsAndOutputs.
public void testRuntimeInputsAndOutputs() {
startTest();
ISolutionEngine solutionEngine = ServiceTestHelper.getSolutionEngine();
try {
String xactionStr = ServiceTestHelper.getXAction(SOLUTION_PATH, "test/pojo/pojo5.xaction");
IRuntimeContext runtimeContext = // $NON-NLS-1$ //$NON-NLS-2$
solutionEngine.execute(// $NON-NLS-1$ //$NON-NLS-2$
xactionStr, // $NON-NLS-1$ //$NON-NLS-2$
"pojo5.xaction", // $NON-NLS-1$ //$NON-NLS-2$
"empty action sequence test", // $NON-NLS-1$ //$NON-NLS-2$
false, // $NON-NLS-1$ //$NON-NLS-2$
true, // $NON-NLS-1$ //$NON-NLS-2$
null, // $NON-NLS-1$ //$NON-NLS-2$
false, new HashMap(), null, null, new SimpleUrlFactory(""), new ArrayList());
assertNotNull("RuntimeContext is null", runtimeContext);
assertEquals("Action sequence execution failed", runtimeContext.getStatus(), IRuntimeContext.RUNTIME_STATUS_SUCCESS);
IActionParameter param = runtimeContext.getOutputParameter("output1");
assertNotNull("param is null", param);
assertEquals("hello", param.getValue().toString());
param = runtimeContext.getOutputParameter("output2");
assertNotNull("param is null", param);
assertEquals("world", param.getValue().toString());
} catch (Exception e) {
// we should not get here
e.printStackTrace();
assertTrue(e.getMessage(), false);
}
finishTest();
}
Aggregations