Search in sources :

Example 26 with IActionParameter

use of org.pentaho.platform.api.engine.IActionParameter 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 27 with IActionParameter

use of org.pentaho.platform.api.engine.IActionParameter 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)

Example 28 with IActionParameter

use of org.pentaho.platform.api.engine.IActionParameter in project pentaho-platform by pentaho.

the class SoapHelperTest method testCreateSoapResponseDocumentFromContext.

/**
 * Tests for SoapHelper.createSoapResponseDocument(IRuntimeContext, IOutputHandler, OutputStream, List)
 */
public void testCreateSoapResponseDocumentFromContext() {
    // Set up test data
    Set<Object> outputNames = new HashSet<>();
    IActionParameter actionParameter = mock(IActionParameter.class);
    when(actionParameter.getValue()).thenReturn("testValue");
    IRuntimeContext context = mock(IRuntimeContext.class);
    when(context.getOutputNames()).thenReturn(outputNames);
    when(context.getStatus()).thenReturn(IRuntimeContext.RUNTIME_STATUS_SUCCESS);
    when(context.getOutputParameter(anyString())).thenReturn(actionParameter);
    List messages = new ArrayList();
    IOutputHandler outputHandler = mock(IOutputHandler.class);
    IContentItem contentItem = mock(IContentItem.class);
    when(outputHandler.getOutputContentItem(anyString(), anyString(), anyString(), anyString())).thenReturn(contentItem);
    when(contentItem.getMimeType()).thenReturn("text/xml");
    OutputStream contentStream = mock(OutputStream.class);
    when(contentStream.toString()).thenReturn("contentStreamTestString");
    // Tests for document with two output names
    outputNames.add("outputName1");
    outputNames.add("outputName2");
    Document d1 = SoapHelper.createSoapResponseDocument(context, outputHandler, contentStream, messages);
    Element activityResponse1 = d1.getRootElement().element("SOAP-ENV:Body").element("ExecuteActivityResponse");
    assertEquals(activityResponse1.elements().size(), 2);
    assertNotNull(activityResponse1.element("outputName1"));
    assertNotNull(activityResponse1.element("outputName2"));
    // Test for document with one output name (different branch in createSoapResponseDocument())
    outputNames.clear();
    outputNames.add("outputName1");
    Document d2 = SoapHelper.createSoapResponseDocument(context, outputHandler, contentStream, messages);
    Element activityResponse2 = d2.getRootElement().element("SOAP-ENV:Body").element("ExecuteActivityResponse");
    assertEquals(activityResponse2.elements().size(), 1);
    assertNotNull(activityResponse2.element("outputName1"));
    // Tests for document with no output names
    outputNames.clear();
    Document d3 = SoapHelper.createSoapResponseDocument(context, outputHandler, contentStream, messages);
    Element activityResponse3 = d3.getRootElement().element("SOAP-ENV:Body").element("ExecuteActivityResponse");
    assertTrue(activityResponse3.elements().isEmpty());
}
Also used : IOutputHandler(org.pentaho.platform.api.engine.IOutputHandler) OutputStream(java.io.OutputStream) DefaultElement(org.dom4j.tree.DefaultElement) Element(org.dom4j.Element) ArrayList(java.util.ArrayList) IContentItem(org.pentaho.platform.api.repository.IContentItem) ArrayList(java.util.ArrayList) List(java.util.List) Document(org.dom4j.Document) IActionParameter(org.pentaho.platform.api.engine.IActionParameter) IRuntimeContext(org.pentaho.platform.api.engine.IRuntimeContext) HashSet(java.util.HashSet)

Example 29 with IActionParameter

use of org.pentaho.platform.api.engine.IActionParameter in project pentaho-platform by pentaho.

the class GlobalListPublisherTest method test1.

public void test1() throws ObjectFactoryException {
    StandaloneSession session = new StandaloneSession("test");
    StandaloneApplicationContext appContext = new StandaloneApplicationContext("src/test/resources/solution", "");
    StandaloneSpringPentahoObjectFactory factory = new StandaloneSpringPentahoObjectFactory();
    factory.init("src/test/resources/solution/system/pentahoObjects.GlobalListPublisherTest.spring.xml", null);
    PentahoSystem.init(appContext);
    PentahoSystem.registerObjectFactory(factory);
    PentahoSystem.setSystemSettingsService(factory.get(ISystemSettings.class, "systemSettingsService", session));
    List<ISessionStartupAction> actions = new ArrayList<ISessionStartupAction>();
    SessionStartupAction startupAction1 = new SessionStartupAction();
    startupAction1.setSessionType(PentahoSystem.SCOPE_GLOBAL);
    startupAction1.setActionPath("testsolution/testpath/test.xaction");
    startupAction1.setActionOutputScope(PentahoSystem.SCOPE_GLOBAL);
    actions.add(startupAction1);
    TestRuntimeContext context = new TestRuntimeContext();
    context.status = IRuntimeContext.RUNTIME_STATUS_SUCCESS;
    TestSolutionEngine engine = PentahoSystem.get(TestSolutionEngine.class, "ISolutionEngine", session);
    engine.testRuntime = context;
    Map<String, IActionParameter> outputs = new HashMap<String, IActionParameter>();
    TestActionParameter param = new TestActionParameter();
    param.setValue("testvalue");
    outputs.put("testoutput", param);
    context.outputParameters = outputs;
    engine.executeCount = 0;
    GlobalListsPublisher globals = new GlobalListsPublisher();
    assertEquals(Messages.getInstance().getString("GlobalListsPublisher.USER_SYSTEM_SETTINGS"), globals.getName());
    assertEquals(Messages.getInstance().getString("GlobalListsPublisher.USER_DESCRIPTION"), globals.getDescription());
    assertTrue(!globals.getName().startsWith("!"));
    assertTrue(!globals.getDescription().startsWith("!"));
    assertNotNull(globals.getLogger());
    String resultMsg = globals.publish(session);
    assertEquals(Messages.getInstance().getString("GlobalListsPublisher.USER_SYSTEM_SETTINGS_UPDATED"), resultMsg);
    assertEquals(0, engine.executeCount);
    PentahoSystem.setSessionStartupActions(actions);
    IParameterProvider globalParams = PentahoSystem.getGlobalParameters();
    resultMsg = globals.publish(session);
    assertEquals(1, engine.executeCount);
    assertEquals(Messages.getInstance().getString("GlobalListsPublisher.USER_SYSTEM_SETTINGS_UPDATED"), resultMsg);
    // check that we made it all the way to executing the startup action
    assertEquals(session, engine.initSession);
    assertEquals(startupAction1.getActionPath(), engine.actionPath);
    assertEquals("testvalue", globalParams.getParameter("testoutput"));
    param.setValue("testvalue2");
    resultMsg = globals.publish(session);
    assertEquals(Messages.getInstance().getString("GlobalListsPublisher.USER_SYSTEM_SETTINGS_UPDATED"), resultMsg);
    assertEquals(2, engine.executeCount);
    assertNotNull(globalParams);
    assertEquals("testvalue2", globalParams.getParameter("testoutput"));
    assertEquals(2, engine.executeCount);
}
Also used : ISessionStartupAction(org.pentaho.platform.api.engine.ISessionStartupAction) SessionStartupAction(org.pentaho.platform.engine.core.system.SessionStartupAction) StandaloneSession(org.pentaho.platform.engine.core.system.StandaloneSession) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) StandaloneApplicationContext(org.pentaho.platform.engine.core.system.StandaloneApplicationContext) ISystemSettings(org.pentaho.platform.api.engine.ISystemSettings) GlobalListsPublisher(org.pentaho.platform.engine.core.system.GlobalListsPublisher) IParameterProvider(org.pentaho.platform.api.engine.IParameterProvider) ISessionStartupAction(org.pentaho.platform.api.engine.ISessionStartupAction) IActionParameter(org.pentaho.platform.api.engine.IActionParameter) StandaloneSpringPentahoObjectFactory(org.pentaho.platform.engine.core.system.objfac.StandaloneSpringPentahoObjectFactory)

Example 30 with IActionParameter

use of org.pentaho.platform.api.engine.IActionParameter in project pentaho-platform by pentaho.

the class SolutionEngineInteractivityService method handleActionRequest.

protected void handleActionRequest(final HttpServletRequest request, final HttpServletResponse response, final HttpOutputHandler outputHandler, final HttpServletRequestHandler requestHandler, IParameterProvider requestParameters, ByteArrayOutputStream outputStream, final IContentItem contentItem) throws ServletException, IOException {
    IRuntimeContext runtime = null;
    try {
        DocumentBuilderFactory dbf = XMLParserFactoryProducer.createSecureDocBuilderFactory();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document document = db.newDocument();
        Element root = document.createElement("action_sequence_info");
        document.appendChild(root);
        requestHandler.setCreateFeedbackParameterCallback(new ICreateFeedbackParameterCallback() {

            public void createFeedbackParameter(IRuntimeContext runtimeContext, String fieldName, String displayName, String hint, Object defaultValues, List values, Map dispNames, String displayStyle, boolean optional, boolean visible) {
                Element parameterElement = document.createElement("parameter");
                parameterElement.setAttribute("name", fieldName);
                parameterElement.setAttribute("display-name", displayName);
                parameterElement.setAttribute("display-style", displayStyle);
                parameterElement.setAttribute("hint", "" + hint);
                parameterElement.setAttribute("optional", "" + optional);
                parameterElement.setAttribute("visible", "" + visible);
                try {
                    IActionParameter actionParameter = runtimeContext.getInputParameter(fieldName);
                    if (actionParameter != null) {
                        List variables = actionParameter.getVariables();
                        for (int i = 0; variables != null && i < variables.size(); i++) {
                            Object var = variables.get(i);
                            if (var instanceof ActionParameterSource) {
                                String sourceName = ((ActionParameterSource) var).getSourceName();
                                String sourceValue = ((ActionParameterSource) var).getValue();
                                parameterElement.setAttribute("source-name", "" + sourceName);
                                parameterElement.setAttribute("source-value", "" + sourceValue);
                            } else {
                                System.out.println(var);
                            }
                        }
                    }
                } catch (Exception npe) {
                // ignore
                }
                root.appendChild(parameterElement);
                if (values != null) {
                    Element valuesElement = document.createElement("values");
                    for (Object value : values) {
                        Element valueElement = document.createElement("value");
                        valueElement.setAttribute("value", "" + value);
                        if (dispNames != null && dispNames.containsKey(value)) {
                            valueElement.setAttribute("display-name", "" + dispNames.get(value));
                        }
                        valuesElement.appendChild(valueElement);
                    }
                    parameterElement.appendChild(valuesElement);
                }
                if (defaultValues != null) {
                    Element valuesElement = document.createElement("selected-values");
                    if (defaultValues instanceof List) {
                        for (Object value : (List) defaultValues) {
                            Element valueElement = document.createElement("value");
                            valueElement.setAttribute("value", "" + value);
                            valuesElement.appendChild(valueElement);
                        }
                    } else {
                        Element valueElement = document.createElement("value");
                        valueElement.setAttribute("value", "" + defaultValues);
                        valuesElement.appendChild(valueElement);
                    }
                    parameterElement.appendChild(valuesElement);
                }
            }
        });
        runtime = requestHandler.handleActionRequest(0, 0);
        root.setAttribute("is-prompt-pending", "" + runtime.isPromptPending());
        DOMSource source = new DOMSource(document);
        StreamResult result = new StreamResult(new StringWriter());
        TransformerFactory.newInstance().newTransformer().transform(source, result);
        String theXML = result.getWriter().toString();
        response.setContentType("text/xml");
        response.getOutputStream().write(theXML.getBytes());
        response.getOutputStream().close();
    } catch (ParserConfigurationException e) {
        e.printStackTrace();
    } catch (TransformerConfigurationException e) {
        e.printStackTrace();
    } catch (TransformerException e) {
        e.printStackTrace();
    } catch (TransformerFactoryConfigurationError e) {
        e.printStackTrace();
    } finally {
        if (runtime != null) {
            runtime.dispose();
        }
    }
    if (contentItem != null) {
        contentItem.closeOutputStream();
    }
}
Also used : TransformerFactoryConfigurationError(javax.xml.transform.TransformerFactoryConfigurationError) DOMSource(javax.xml.transform.dom.DOMSource) DocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory) ICreateFeedbackParameterCallback(org.pentaho.platform.api.engine.ICreateFeedbackParameterCallback) StreamResult(javax.xml.transform.stream.StreamResult) TransformerConfigurationException(javax.xml.transform.TransformerConfigurationException) Element(org.w3c.dom.Element) Document(org.w3c.dom.Document) TransformerException(javax.xml.transform.TransformerException) ServletException(javax.servlet.ServletException) TransformerConfigurationException(javax.xml.transform.TransformerConfigurationException) IOException(java.io.IOException) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) ActionParameterSource(org.pentaho.platform.engine.services.actionsequence.ActionParameterSource) StringWriter(java.io.StringWriter) DocumentBuilder(javax.xml.parsers.DocumentBuilder) List(java.util.List) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) IRuntimeContext(org.pentaho.platform.api.engine.IRuntimeContext) HashMap(java.util.HashMap) Map(java.util.Map) IActionParameter(org.pentaho.platform.api.engine.IActionParameter) TransformerException(javax.xml.transform.TransformerException)

Aggregations

IActionParameter (org.pentaho.platform.api.engine.IActionParameter)68 IRuntimeContext (org.pentaho.platform.api.engine.IRuntimeContext)24 ArrayList (java.util.ArrayList)22 HashMap (java.util.HashMap)22 Iterator (java.util.Iterator)19 Map (java.util.Map)14 IPentahoResultSet (org.pentaho.commons.connection.IPentahoResultSet)14 ISolutionEngine (org.pentaho.platform.api.engine.ISolutionEngine)13 List (java.util.List)9 SimpleUrlFactory (org.pentaho.platform.util.web.SimpleUrlFactory)9 Set (java.util.Set)8 IContentItem (org.pentaho.platform.api.repository.IContentItem)8 IOException (java.io.IOException)7 OutputStream (java.io.OutputStream)6 Test (org.junit.Test)6 SimpleOutputHandler (org.pentaho.platform.engine.core.output.SimpleOutputHandler)6 ActionParameter (org.pentaho.platform.engine.services.actionsequence.ActionParameter)6 Document (org.dom4j.Document)5 IPreparedComponent (org.pentaho.platform.api.data.IPreparedComponent)5 ByteArrayOutputStream (java.io.ByteArrayOutputStream)4