Search in sources :

Example 1 with Template

use of org.apache.camel.component.sql.stored.template.ast.Template in project camel by apache.

the class TemplateParser method parseTemplate.

public Template parseTemplate(String template) {
    try {
        SSPTParser parser = new SSPTParser(new StringReader(template));
        Template ret = validate(parser.parse());
        return ret;
    } catch (ParseException parseException) {
        throw new ParseRuntimeException(parseException);
    }
}
Also used : StringReader(java.io.StringReader) SSPTParser(org.apache.camel.component.sql.stored.template.generated.SSPTParser) ParseRuntimeException(org.apache.camel.component.sql.stored.template.ast.ParseRuntimeException) ParseException(org.apache.camel.component.sql.stored.template.generated.ParseException) Template(org.apache.camel.component.sql.stored.template.ast.Template)

Example 2 with Template

use of org.apache.camel.component.sql.stored.template.ast.Template in project camel by apache.

the class ParserTest method shouldParseOk.

@Test
public void shouldParseOk() {
    Template template = parser.parseTemplate("addnumbers(INTEGER ${header.header1}," + "VARCHAR ${property.property1},BIGINT ${header.header2},OUT INTEGER header1)");
    Assert.assertEquals("addnumbers", template.getProcedureName());
    Assert.assertEquals(4, template.getParameterList().size());
    Exchange exchange = createExchangeWithBody(null);
    exchange.getIn().setHeader("header1", 1);
    exchange.setProperty("property1", "constant string");
    exchange.getIn().setHeader("header2", BigInteger.valueOf(2));
    InputParameter param1 = (InputParameter) template.getParameterList().get(0);
    Assert.assertEquals("_0", param1.getName());
    Assert.assertEquals(Types.INTEGER, param1.getSqlType());
    Assert.assertEquals(1, param1.getValueExtractor().eval(exchange, null));
    InputParameter param2 = (InputParameter) template.getParameterList().get(1);
    Assert.assertEquals("_1", param2.getName());
    Assert.assertEquals(Types.VARCHAR, param2.getSqlType());
    Assert.assertEquals("constant string", param2.getValueExtractor().eval(exchange, null));
    InputParameter param3 = (InputParameter) template.getParameterList().get(2);
    Assert.assertEquals("_2", param3.getName());
    Assert.assertEquals(Types.BIGINT, param3.getSqlType());
    Assert.assertEquals(BigInteger.valueOf(2L), param3.getValueExtractor().eval(exchange, null));
    OutParameter sptpOutputNode = (OutParameter) template.getParameterList().get(3);
    Assert.assertEquals("_3", sptpOutputNode.getName());
    Assert.assertEquals(Types.INTEGER, sptpOutputNode.getSqlType());
    Assert.assertEquals("header1", sptpOutputNode.getOutValueMapKey());
}
Also used : Exchange(org.apache.camel.Exchange) OutParameter(org.apache.camel.component.sql.stored.template.ast.OutParameter) InputParameter(org.apache.camel.component.sql.stored.template.ast.InputParameter) Template(org.apache.camel.component.sql.stored.template.ast.Template) Test(org.junit.Test)

Example 3 with Template

use of org.apache.camel.component.sql.stored.template.ast.Template in project camel by apache.

the class ParserTest method vendorSpecificPositiveSqlType.

@Test
public void vendorSpecificPositiveSqlType() {
    Template template = parser.parseTemplate("ADDNUMBERS2(1342 ${header.foo})");
    assertEquals(1342, ((InputParameter) template.getParameterList().get(0)).getSqlType());
}
Also used : Template(org.apache.camel.component.sql.stored.template.ast.Template) Test(org.junit.Test)

Example 4 with Template

use of org.apache.camel.component.sql.stored.template.ast.Template in project camel by apache.

the class ParserTest method vendorSpecificNegativeSqlTypeOut.

@Test
public void vendorSpecificNegativeSqlTypeOut() {
    Template template = parser.parseTemplate("ADDNUMBERS2(OUT -1342 h1)");
    assertEquals(-1342, ((OutParameter) template.getParameterList().get(0)).getSqlType());
}
Also used : Template(org.apache.camel.component.sql.stored.template.ast.Template) Test(org.junit.Test)

Example 5 with Template

use of org.apache.camel.component.sql.stored.template.ast.Template in project camel by apache.

the class ParserTest method nableIssueSyntax.

@Test
public void nableIssueSyntax() {
    Map<String, String> params = new HashMap<>();
    params.put("P_STR_IN", "a");
    Template template = parser.parseTemplate("IBS.\"Z$IMS_INTERFACE_WS\".TEST_STR(VARCHAR :#P_STR_IN,OUT VARCHAR P_STR_OUT)");
    assertEquals("a", ((InputParameter) template.getParameterList().get(0)).getValueExtractor().eval(null, params));
    assertEquals("IBS.\"Z$IMS_INTERFACE_WS\".TEST_STR", template.getProcedureName());
}
Also used : HashMap(java.util.HashMap) InputParameter(org.apache.camel.component.sql.stored.template.ast.InputParameter) Template(org.apache.camel.component.sql.stored.template.ast.Template) Test(org.junit.Test)

Aggregations

Template (org.apache.camel.component.sql.stored.template.ast.Template)8 Test (org.junit.Test)7 InputParameter (org.apache.camel.component.sql.stored.template.ast.InputParameter)3 Exchange (org.apache.camel.Exchange)2 StringReader (java.io.StringReader)1 HashMap (java.util.HashMap)1 OutParameter (org.apache.camel.component.sql.stored.template.ast.OutParameter)1 ParseRuntimeException (org.apache.camel.component.sql.stored.template.ast.ParseRuntimeException)1 ParseException (org.apache.camel.component.sql.stored.template.generated.ParseException)1 SSPTParser (org.apache.camel.component.sql.stored.template.generated.SSPTParser)1