commit 7475da41afaba2ae3f3bae921802e921d957e498
parent 5a414f9bcd631c538743ebccddb456b3e9eedb2f
Author: Jan Dankert <devnull@localhost>
Date:   Wed, 19 Dec 2018 15:57:00 +0100
better example for server message.
Diffstat:
2 files changed, 37 insertions(+), 11 deletions(-)
diff --git a/src/de/openrat/client/util/CMSRequest.java b/src/de/openrat/client/util/CMSRequest.java
@@ -54,7 +54,7 @@ import de.openrat.client.util.HttpRequest.HttpMethod;
  * calling the CMS a DOM-document is returned, which contains the server
  * response.<br>
  * Example <br>
- * 
+ *
  * <pre>
  * CMSRequest request = new CMSRequest("your.openrat.example.com");
  * // prints tracing information to stdout.
@@ -72,7 +72,7 @@ import de.openrat.client.util.HttpRequest.HttpMethod;
  * 	// your error handling.
  * }
  * </pre>
- * 
+ *
  * @author Jan Dankert
  */
 public class CMSRequest
@@ -88,7 +88,7 @@ public class CMSRequest
 
 	/**
 	 * Set the HTTP Method. Default is "GET".
-	 * 
+	 *
 	 * @param method
 	 *            HTTP-method
 	 */
@@ -100,7 +100,7 @@ public class CMSRequest
 
 	/**
 	 * Constructs a CMS-Request to the specified server/path/port.
-	 * 
+	 *
 	 * @param connection Connection to server
 	 */
 	public CMSRequest(CMSConnection connection)
@@ -114,7 +114,7 @@ public class CMSRequest
 	/**
 	 * Sends a request to the openrat-server and parses the response into a DOM
 	 * tree document.
-	 * 
+	 *
 	 * @return server response as a DOM tree
 	 * @throws IOException
 	 *             if server is unrechable or responds non-wellformed XML
@@ -168,9 +168,9 @@ public class CMSRequest
 
 	/**
 	 * Erzeugt aus
-	 * 
+	 *
 	 * @param httpStatus
-	 * 
+	 *
 	 * @param rootNode
 	 * @return
 	 */
@@ -194,16 +194,22 @@ public class CMSRequest
 
 				ServerSideException cause = null;
 
-				// TODO only when trace available
-				cause = new ServerSideException();
+				// TODO only if trace available
+				final List<StackTraceElement> trace = new ArrayList<>();
 				final String file = "modules/cms-core/Dispatcher.class.php";
 				final String filename = FileSystems.getDefault().getPath(file).getFileName().toString();
 				final String method = "cms\\Dispatcher->commitDatabaseTransaction()";
 				final int line = 110;
 
-				StackTraceElement[] trace = new StackTraceElement[] { new StackTraceElement(file,method,filename,line) } ;
+				trace.add( new StackTraceElement(file,method,filename,line) );
+
+                String name = "MyServerException";
+                String message = "server error";
+
+                cause = new ServerSideException(message,name);
+				cause.setStackTrace( trace.toArray(new StackTraceElement[]{}) );
+				// TODO recursive exceptions
 
-				cause.setStackTrace( trace );
 				throw new CMSServerErrorException(error, status, description, reason, cause);
 
 			}
diff --git a/src/de/openrat/client/util/ServerSideException.java b/src/de/openrat/client/util/ServerSideException.java
@@ -2,7 +2,27 @@ package de.openrat.client.util;
 
 public class ServerSideException extends Exception {
 
+    private String name;
+
     public ServerSideException() {
 
     }
+
+    public ServerSideException(String message, String name) {
+        super(message);
+        this.name = name;
+    }
+
+
+    public ServerSideException(String message) {
+        super(message);
+    }
+
+
+    public String toString() {
+        String s = (name != null) ? name : getClass().getName();
+
+        String message = getLocalizedMessage();
+        return (message != null) ? (s + ": " + message) : s;
+    }
 }