james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <server-...@james.apache.org>
Subject [jira] [Commented] (JAMES-2275) Allow per Exception error handling in the mailet pipeline
Date Wed, 10 Jan 2018 02:26:00 GMT

    [ https://issues.apache.org/jira/browse/JAMES-2275?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16319592#comment-16319592

ASF GitHub Bot commented on JAMES-2275:

Github user chibenwa commented on the issue:

    Like you, I have problems writing such unit tests. Maybe the solution is to provide some
integration tests. A bit like https://github.com/apache/james-project/blob/master/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/MailetErrorsTest.java
    What we can do is add new tests where we add the HasException mailet points to a custom
repository. We run the throwing mailet, and ensure  that the HasException mailet matched.
We should also write similar tests for matchers.
    We tend to prefer integration tests in that case because:
     - No asumption is made on components. The tests stay valid even if we don't use Camel
     - Testing matches the user experience, and documents the end feature.
     - No need of "spying" API like the **MailetProcessorListener**
    Of course, I would be glad to help you write such tests. You just need to ask ;-)

> Allow per Exception error handling in the mailet pipeline
> ---------------------------------------------------------
>                 Key: JAMES-2275
>                 URL: https://issues.apache.org/jira/browse/JAMES-2275
>             Project: James Server
>          Issue Type: New Feature
>          Components: Mailet Contributions
>    Affects Versions: master
>            Reporter: Tellier Benoit
>              Labels: easy-fix, feature, newbie
> In JAMES-2271 from [~apptaro], the error handling system of the mailet pipeline can now
be customized using the *onMailetException* property. This allows specifying the processor
for error handling or ignore the error (by default error processor is triggered).
> While empowering the user to write custom error handling logic, the error handling code
capabilities is limited as the original exception is lost along the way.
> We should:
>  - Pass the Exception along with the Mail, as an attribute. 
> Thus mailet in the error processor can access and read it. Throwable being serializable,
this makes this change easy to perform.
>  - Implement specific error handling matchers:
>    - *HasException* would allow to see if a Mail has a specific exception
> {code:xml}
> <mailet match="HasException=org.apache.james.managesieve.api.ManageSieveException"
>     ....
> </mailet>
> {code}
> ### How to implement this
> 1. Add a ERROR_ATTRIBUTE_NAME contant in the Mail interface
> 2. ProcessorUtil:: handleException should add the ERROR_ATTRIBUTE_NAME attriute using
the provided exception
> 3. Modify *AbstractStateMailetProcessorTest* to demonstrate that when a mailet or a matcher
throws, the Exception is attahed to the incoming mail.
> 4. In the mailet/standard project, you will implement the HasException matcher. You can
extend GenericMatcher and implement unit tests for your class.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org

View raw message