camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christian Mueller (JIRA)" <j...@apache.org>
Subject [jira] Updated: (CAMEL-1537) Predicate for validation
Date Wed, 19 May 2010 20:53:11 GMT

     [ https://issues.apache.org/activemq/browse/CAMEL-1537?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Christian Mueller updated CAMEL-1537:
-------------------------------------

    Attachment: CAMEL-1537.patch

I spend some hous to understand the camel-core components. I have now finished the first of
tree steps, implementing the validation DSL for regular expressions. I attached the patch
and hope that someone could give me a feedback whether or not I'm on the right way. The unit
test shows best what you can now do:

{code}
public class ValidateRegExpTest extends ContextTestSupport {
    
    private Endpoint startEndpoint;
    private MockEndpoint resultEndpoint;
    
    @Override
    protected void setUp() throws Exception {
        super.setUp();
        
        startEndpoint = resolveMandatoryEndpoint("direct:start", Endpoint.class);
        resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
    }

    public void testSendMatchingMessage() throws Exception {
        resultEndpoint.expectedMessageCount(1);

        template.sendBody(startEndpoint, "01.01.2010");
        
        resultEndpoint.assertIsSatisfied();
    }

    public void testSendNotMatchingMessage() throws Exception {
        resultEndpoint.expectedMessageCount(0);

        try {
            template.sendBody(startEndpoint, "1.1.2010");
            fail("CamelExecutionException expected");
        } catch (CamelExecutionException e) {
            // expected
            assertTrue(e.getCause() instanceof RegExpValidationException);
            String message = ((RegExpValidationException) e.getCause()).getMessage();
            assertEquals("Validation failed for Predicate[{bodyAs[java.lang.String]}.matches('^\\d{2}\\.\\d{2}\\.\\d{4}$')].
Exchange[Message: 1.1.2010]", message);
        }

        resultEndpoint.assertIsSatisfied();
    }


    protected RouteBuilder createRouteBuilder() {
        return new RouteBuilder() {
            public void configure() {
                from("direct:start")
                .validate(body(String.class)).regex("^\\d{2}\\.\\d{2}\\.\\d{4}$")
                .to("mock:result");
            }
        };
    }
}
{code}

Thanks,
Christian

> Predicate for validation 
> -------------------------
>
>                 Key: CAMEL-1537
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1537
>             Project: Apache Camel
>          Issue Type: New Feature
>    Affects Versions: 2.0-M1
>            Reporter: Claus Ibsen
>            Assignee: Christian Mueller
>            Priority: Minor
>             Fix For: Future
>
>         Attachments: CAMEL-1537.patch
>
>
> The current validator is a component and its a bit clumsy as it throws an exception if
validation error.
> So if we have a nice Predicate for it, it can be like a xpath predicate or the likes.
> [17:58]  <jstrachan> http://camel.apache.org/validation.html
> [17:58]  <ulhasb> jstrachan: thanks for the quick responses
> [17:59]  <cibsen> jstrachan we should maybe have a predicate for schema validation
> [17:59]  <cibsen> then you can route it a bit more nice without try .. catch
> [18:00]  * fbolton has quit ("Leaving.")
> [18:03]  * gertv has quit (Client closed connection)
> [18:05]  <jstrachan> cibsen: yeah
> [18:05]  <jstrachan> cibsen: maybe a kinda predicate language using the other validators?
filter().validate(theValidationEndpointUri).to("blah")

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message