Search in sources :

Example 31 with IRuntimeContext

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();
        }
    }
}
Also used : IContentItem(org.pentaho.platform.api.repository.IContentItem) List(java.util.List) IRuntimeContext(org.pentaho.platform.api.engine.IRuntimeContext)

Example 32 with IRuntimeContext

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();
}
Also used : ISolutionEngine(org.pentaho.platform.api.engine.ISolutionEngine) IActionSequence(org.pentaho.platform.api.engine.IActionSequence) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Document(org.dom4j.Document) IParameterManager(org.pentaho.platform.api.engine.IParameterManager) SimpleUrlFactory(org.pentaho.platform.util.web.SimpleUrlFactory) HashMap(java.util.HashMap) Map(java.util.Map) IActionParameter(org.pentaho.platform.api.engine.IActionParameter) IRuntimeContext(org.pentaho.platform.api.engine.IRuntimeContext) HashSet(java.util.HashSet)

Example 33 with IRuntimeContext

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();
}
Also used : ISolutionEngine(org.pentaho.platform.api.engine.ISolutionEngine) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) SimpleUrlFactory(org.pentaho.platform.util.web.SimpleUrlFactory) IRuntimeContext(org.pentaho.platform.api.engine.IRuntimeContext) IActionParameter(org.pentaho.platform.api.engine.IActionParameter) BigDecimal(java.math.BigDecimal)

Example 34 with IRuntimeContext

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();
}
Also used : ISolutionEngine(org.pentaho.platform.api.engine.ISolutionEngine) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) SimpleUrlFactory(org.pentaho.platform.util.web.SimpleUrlFactory) IRuntimeContext(org.pentaho.platform.api.engine.IRuntimeContext)

Example 35 with IRuntimeContext

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();
}
Also used : ISolutionEngine(org.pentaho.platform.api.engine.ISolutionEngine) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) SimpleUrlFactory(org.pentaho.platform.util.web.SimpleUrlFactory) IRuntimeContext(org.pentaho.platform.api.engine.IRuntimeContext) IActionParameter(org.pentaho.platform.api.engine.IActionParameter)

Aggregations

IRuntimeContext (org.pentaho.platform.api.engine.IRuntimeContext)100 ArrayList (java.util.ArrayList)28 HashMap (java.util.HashMap)28 ISolutionEngine (org.pentaho.platform.api.engine.ISolutionEngine)28 IActionParameter (org.pentaho.platform.api.engine.IActionParameter)24 SimpleParameterProvider (org.pentaho.platform.engine.core.solution.SimpleParameterProvider)21 SimpleUrlFactory (org.pentaho.platform.util.web.SimpleUrlFactory)20 SimpleOutputHandler (org.pentaho.platform.engine.core.output.SimpleOutputHandler)17 IPentahoSession (org.pentaho.platform.api.engine.IPentahoSession)14 OutputStream (java.io.OutputStream)12 StandaloneSession (org.pentaho.platform.engine.core.system.StandaloneSession)12 List (java.util.List)10 IPentahoUrlFactory (org.pentaho.platform.api.engine.IPentahoUrlFactory)9 IOException (java.io.IOException)8 Map (java.util.Map)8 IPentahoResultSet (org.pentaho.commons.connection.IPentahoResultSet)8 ByteArrayOutputStream (java.io.ByteArrayOutputStream)7 IOutputHandler (org.pentaho.platform.api.engine.IOutputHandler)7 IParameterProvider (org.pentaho.platform.api.engine.IParameterProvider)6 Document (org.dom4j.Document)5