Tellier Benoit created JAMES-2275:
-------------------------------------
Summary: 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
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"
class="...>
....
</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
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]