You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by am...@apache.org on 2007/07/21 11:37:28 UTC
svn commit: r558280 - in
/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src:
main/java/org/apache/cayenne/remote/
main/java/org/apache/cayenne/remote/service/
test/java/org/apache/cayenne/remote/
Author: amaniatis
Date: Sat Jul 21 02:37:27 2007
New Revision: 558280
URL: http://svn.apache.org/viewvc?view=rev&rev=558280
Log:
Fix problem created in commit 555549 which would sometimes allow an unserializable exception (eg. from Derby) to be propagated to the ROP client, causing a problem.
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/BootstrapMessage.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/ClientMessage.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/QueryMessage.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/SyncMessage.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/service/BaseRemoteService.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/remote/MockMessage.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/BootstrapMessage.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/BootstrapMessage.java?view=diff&rev=558280&r1=558279&r2=558280
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/BootstrapMessage.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/BootstrapMessage.java Sat Jul 21 02:37:27 2007
@@ -27,6 +27,9 @@
*/
public class BootstrapMessage implements ClientMessage {
+ /**
+ * Returns a description of the type of message. In this case always "Bootstrap".
+ */
public String toString() {
return "Bootstrap";
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/ClientMessage.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/ClientMessage.java?view=diff&rev=558280&r1=558279&r2=558280
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/ClientMessage.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/ClientMessage.java Sat Jul 21 02:37:27 2007
@@ -29,9 +29,4 @@
*/
public interface ClientMessage extends Serializable {
- /**
- * Returns a description of the type of message.
- */
- public String toString();
-
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/QueryMessage.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/QueryMessage.java?view=diff&rev=558280&r1=558279&r2=558280
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/QueryMessage.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/QueryMessage.java Sat Jul 21 02:37:27 2007
@@ -45,6 +45,9 @@
return query;
}
+ /**
+ * Returns a description of the type of message. In this case always "Query".
+ */
public String toString() {
return "Query";
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/SyncMessage.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/SyncMessage.java?view=diff&rev=558280&r1=558279&r2=558280
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/SyncMessage.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/SyncMessage.java Sat Jul 21 02:37:27 2007
@@ -71,6 +71,10 @@
return senderChanges;
}
+ /**
+ * Returns a description of the type of message.
+ * Possibilities are "flush-sync", "flush-cascade-sync", "rollback-cascade-sync" or "unknown-sync".
+ */
public String toString() {
switch (type) {
case DataChannel.FLUSH_NOCASCADE_SYNC:
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/service/BaseRemoteService.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/service/BaseRemoteService.java?view=diff&rev=558280&r1=558279&r2=558280
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/service/BaseRemoteService.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/remote/service/BaseRemoteService.java Sat Jul 21 02:37:27 2007
@@ -19,6 +19,8 @@
package org.apache.cayenne.remote.service;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintWriter;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -154,20 +156,26 @@
th = Util.unwindException(th);
logObj.info("error processing message", th);
- // throw exception that will likely be propagated to the client...
- // recast the exception to a guaranteed serializable form
-
- StringBuffer buffer = new StringBuffer();
- buffer.append("Exception processing message ")
- .append(message.getClass().getName())
- .append(" of type ").append(message.toString());
-
+ // This exception will probably be propagated to the client.
+ // Recast the exception to a serializable form.
+ ByteArrayOutputStream causeMessageStream = new ByteArrayOutputStream();
+ PrintWriter causeMessage = new PrintWriter(causeMessageStream);
+
String exceptionText = th.getLocalizedMessage();
if (exceptionText != null) {
- buffer.append(". Root cause: ").append(exceptionText);
+ causeMessage.print(exceptionText);
+ causeMessage.print(System.getProperty("line.separator"));
}
- throw new CayenneRuntimeException(buffer.toString(), th);
+ th.printStackTrace(causeMessage);
+ Exception cause = new Exception(causeMessageStream.toString());
+
+ StringBuffer wrapperMessage = new StringBuffer();
+ wrapperMessage.append("Exception processing message ")
+ .append(message.getClass().getName())
+ .append(" of type ").append(message.toString());
+
+ throw new CayenneRuntimeException(wrapperMessage.toString(), cause);
}
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/remote/MockMessage.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/remote/MockMessage.java?view=diff&rev=558280&r1=558279&r2=558280
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/remote/MockMessage.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/remote/MockMessage.java Sat Jul 21 02:37:27 2007
@@ -40,6 +40,9 @@
return lastChannel;
}
+ /**
+ * Returns a description of the type of message. In this case always "Mock message".
+ */
public String toString() {
return "Mock message";
}