public void testFormatExpression() throws Exception { exchange.getIn().setHeader("head", "foo"); assertEquals( "foo", SimpleBuilder.simpleF("${header.%s}", "head").evaluate(exchange, String.class)); assertNull(SimpleBuilder.simple("${header.cheese}").evaluate(exchange, String.class)); }
public void testFormatExpressionWithResultType() throws Exception { exchange.getIn().setHeader("head", "200"); assertEquals( 200, SimpleBuilder.simpleF("${header.%s}", Integer.class, "head") .evaluate(exchange, Object.class)); }
public void testResultType() throws Exception { exchange.getIn().setBody("foo"); exchange.getIn().setHeader("cool", true); assertEquals( "foo", SimpleBuilder.simple("${body}", String.class).evaluate(exchange, Object.class)); try { // error during conversion SimpleBuilder.simple("${body}", int.class).evaluate(exchange, Object.class); fail("Should have thrown exception"); } catch (TypeConversionException e) { assertIsInstanceOf(NumberFormatException.class, e.getCause().getCause()); } assertEquals( true, SimpleBuilder.simple("${header.cool}", boolean.class).evaluate(exchange, Object.class)); assertEquals( "true", SimpleBuilder.simple("${header.cool}", String.class).evaluate(exchange, Object.class)); // not possible assertEquals( null, SimpleBuilder.simple("${header.cool}", int.class).evaluate(exchange, Object.class)); assertEquals( true, SimpleBuilder.simple("${header.cool}") .resultType(Boolean.class) .evaluate(exchange, Object.class)); assertEquals( "true", SimpleBuilder.simple("${header.cool}") .resultType(String.class) .evaluate(exchange, Object.class)); // not possible assertEquals( null, SimpleBuilder.simple("${header.cool}") .resultType(int.class) .evaluate(exchange, Object.class)); // should be convertable to integers assertEquals(11, SimpleBuilder.simple("11", int.class).evaluate(exchange, Object.class)); }
public void testRegexAllWithPlaceHolders() { exchange.getIn().setHeader("activateUrl", "http://some/rest/api/(id)/activate"); assertEquals( "http://some/rest/api/12/activate", SimpleBuilder.simple("${header.activateUrl.replaceAll(\"\\(id\\)\",\"12\")}") .evaluate(exchange, String.class)); // passes when contains { only exchange.getIn().setHeader("activateUrl", "http://some/rest/api/{id/activate"); assertEquals( "http://some/rest/api/12/activate", SimpleBuilder.simple("${header.activateUrl.replaceAll(\"\\{id\",\"12\")}") .evaluate(exchange, String.class)); String replaced = "http://some/rest/api/{id}/activate".replaceAll("\\{id\\}", "12"); assertEquals("http://some/rest/api/12/activate", replaced); // passes when contains { } exchange.getIn().setHeader("activateUrl", "http://some/rest/api/{id}/activate"); assertEquals( "http://some/rest/api/12/activate", SimpleBuilder.simple("${header.activateUrl.replaceAll(\"\\{id\\}\",\"12\")}") .evaluate(exchange, String.class)); // passes when contains { } and another ${body} function exchange.getIn().setBody("12"); assertEquals( "http://some/rest/api/12/activate", SimpleBuilder.simple("${header.activateUrl.replaceAll(\"\\{id\\}\",\"${body}\")}") .evaluate(exchange, String.class)); // passes when } is escaped with \} assertEquals( "http://some/rest/api/{}/activate", SimpleBuilder.simple("${header.activateUrl.replaceAll(\"\\{id\\}\",\"{\\}\")}") .evaluate(exchange, String.class)); }
public void testExpression() throws Exception { exchange.getIn().setBody("foo"); assertEquals("foo", SimpleBuilder.simple("${body}").evaluate(exchange, String.class)); assertNull(SimpleBuilder.simple("${header.cheese}").evaluate(exchange, String.class)); }
public void testPredicate() throws Exception { exchange.getIn().setBody("foo"); assertTrue(SimpleBuilder.simple("${body} == 'foo'").matches(exchange)); assertFalse(SimpleBuilder.simple("${body} == 'bar'").matches(exchange)); }
public void setSimplePredicate(String expression) { this.predicate = SimpleBuilder.simple(expression, Boolean.class); }
public static SimpleBuilder simple(String text, Class<?> resultType) { SimpleBuilder answer = simple(text); answer.setResultType(resultType); return answer; }