[
https://issues.apache.org/jira/browse/JAMES-2275?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16317973#comment-16317973
]
ASF GitHub Bot commented on JAMES-2275:
---------------------------------------
Github user chibenwa commented on a diff in the pull request:
https://github.com/apache/james-project/pull/96#discussion_r160339311
--- Diff:
mailet/standard/src/test/java/org/apache/james/transport/matchers/HasExceptionTest.java
---
@@ -0,0 +1,128 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.transport.matchers;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.mailet.Mail;
+import org.apache.mailet.Matcher;
+import org.apache.mailet.base.test.FakeMail;
+import org.apache.mailet.base.test.FakeMatcherConfig;
+import org.apache.mailet.base.test.MailUtil;
+import org.junit.Before;
+import org.junit.Test;
+
+public class HasExceptionTest {
+
+ private FakeMail mockedMail;
+ private Matcher matcher;
+
+ @Before
+ public void setUp() throws Exception {
+ MimeMessage mimeMessage = MailUtil.createMimeMessage();
+ mockedMail = MailUtil.createMockMail2Recipients(mimeMessage);
+ matcher = new HasException();
+ }
+
+ @Test
+ public void
matchShouldReturnAddressesWhenSpecifiedExceptionHasOccurred() throws
MessagingException {
+ mockedMail.setAttribute(Mail.MAILET_ERROR_ATTRIBUTE_NAME, new
javax.mail.internet.AddressException());
--- End diff --
I did not made that remark, as I valued making it explicit *that the value
configured in the matcher* is the *fully qualified* class name, note the simple
one.
If you add an import, then it becomes more obscur in the test.
I would say it is one of the rare cases where having a fully qualified name
makes sens.
> 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"
> 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]