You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2009/03/25 03:25:37 UTC
svn commit: r758129 - in /labs/magma/trunk/foundation-basics/src:
main/java/org/apache/magma/basics/MagmaException.java
main/java/org/apache/magma/basics/MagmaExceptionChaining.aj
test/java/org/apache/magma/basics/ExceptionChainingTest.java
Author: simoneg
Date: Wed Mar 25 02:25:37 2009
New Revision: 758129
URL: http://svn.apache.org/viewvc?rev=758129&view=rev
Log:
LABS-315 : magma exception chaining
Added:
labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/MagmaExceptionChaining.aj
labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/ExceptionChainingTest.java
Modified:
labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/MagmaException.java
Modified: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/MagmaException.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/MagmaException.java?rev=758129&r1=758128&r2=758129&view=diff
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/MagmaException.java (original)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/MagmaException.java Wed Mar 25 02:25:37 2009
@@ -19,6 +19,7 @@
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
/**
@@ -38,14 +39,12 @@
}
public MagmaException(LocalizableString error) {
- this.messages = new ArrayList<LocalizableString>(1);
- this.messages.add(error);
+ addMessage(error);
}
public MagmaException(LocalizableString error, Throwable t) {
super(t);
- this.messages = new ArrayList<LocalizableString>(1);
- this.messages.add(error);
+ addMessage(error);
}
public MagmaException(String message, Object... args) {
@@ -82,7 +81,17 @@
throw e;
}
}
- this.messages.addAll(e.messages);
+ addMessages(e.messages);
+ }
+
+ public void addMessage(LocalizableString message) {
+ if (this.messages == null) this.messages = new ArrayList<LocalizableString>();
+ this.messages.add(message);
+ }
+
+ public void addMessages(Collection<LocalizableString> messages) {
+ if (this.messages == null) this.messages = new ArrayList<LocalizableString>();
+ this.messages.addAll(messages);
}
public void setSubject(Object subject) {
Added: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/MagmaExceptionChaining.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/MagmaExceptionChaining.aj?rev=758129&view=auto
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/MagmaExceptionChaining.aj (added)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/MagmaExceptionChaining.aj Wed Mar 25 02:25:37 2009
@@ -0,0 +1,25 @@
+package org.apache.magma.basics;
+
+/**
+ * Chains multiple throws of {@link MagmaException} into a single {@link MagmaException} to provide more readable traces.
+ *
+ * @author Simone Gianni <si...@apache.org>
+ * @see LABS-315
+ */
+public aspect MagmaExceptionChaining {
+
+ pointcut creatingLast(MagmaException other) :
+ call(MagmaException.new(.., Throwable)) && args(.. , other);
+
+ pointcut creatingFirst(MagmaException other) :
+ call(MagmaException.new(Throwable,..)) && args(other,..);
+
+
+ pointcut creatingException(MagmaException other) : creatingLast(other) || creatingFirst(other);
+
+ MagmaException around(MagmaException other) : creatingException(other) {
+ MagmaException mine = proceed(other);
+ other.addMessages(mine.getMessages());
+ return other;
+ }
+}
Added: labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/ExceptionChainingTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/ExceptionChainingTest.java?rev=758129&view=auto
==============================================================================
--- labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/ExceptionChainingTest.java (added)
+++ labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/ExceptionChainingTest.java Wed Mar 25 02:25:37 2009
@@ -0,0 +1,31 @@
+package org.apache.magma.basics;
+
+import static org.junit.Assert.*;
+
+import java.util.List;
+
+import static org.hamcrest.CoreMatchers.*;
+import org.junit.Test;
+
+
+public class ExceptionChainingTest {
+
+ @Test
+ public void chainTest() throws Exception {
+ try {
+ try {
+ try {
+ throw new MagmaException("a");
+ } catch (Exception e) {
+ throw new MagmaException(e, "b");
+ }
+ } catch (Exception e) {
+ throw new MagmaException(new LocalizableString("c"), e);
+ }
+ } catch (MagmaException e) {
+ List<LocalizableString> messages = e.getMessages();
+ assertThat(messages.size(), equalTo(3));
+ }
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org