w3c.css.error.ErrorReportSOAP12 Maven / Gradle / Ivy
// $Id$
// Author: Jean-Guilhem Rouel
// (c) COPYRIGHT MIT, ERCIM and Keio, 2003.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.css.error;
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.Utf8Properties;
import java.io.PrintWriter;
import java.net.URL;
import java.net.UnknownHostException;
/**
* ErrorReportSOAP12
* Created: Jul 13, 2005 2:06:00 PM
* This class allows to create 2 different soap messages to handle errors:
*
* - Sender errors if the URI given in parameter of the servlet is invalid
* - Receiver errors if the URI given is valid but unreachable
*
*/
public class ErrorReportSOAP12 extends ErrorReport {
private String title;
private boolean validURI;
private Exception exception;
private ApplContext ac;
private static Utf8Properties messages;
private PrintWriter out;
ErrorReportSOAP12(ApplContext ac, String title, String output, Exception e,
boolean validURI) {
this.ac = ac;
this.exception = e;
this.validURI = validURI;
this.title = title;
}
/**
* @see org.w3c.css.error.ErrorReport#print(java.io.PrintWriter)
*/
public void print(PrintWriter out) {
this.out = out;
// the error message
String errorMessage = exception.getMessage();
// the string containing the soap response pattern
String report;
if (validURI) {
report = messages.getProperty("receiver");
if (exception instanceof UnknownHostException) {
errorMessage = "The host name " + errorMessage +
" couldn't be resolved";
}
} else {
report = messages.getProperty("sender");
}
processError(report, errorMessage, title + ' ' + exception);
}
/**
* Prints on the output the soap message str, where each entity
* has been replaced by it's value
* An entity is an xml comment (<!-- -->) containing a single word
* beginning by #
* Valid entities names are:
*
* - charset: prints the charset defined in the Applcontext
* - reason: prints the reason of the error
* - details: prints the detailed reason of the error
*
*
* @param str the soap message pattern
* @param errorMessage the error message (see reason entity)
* @param details the detailed message error (see details entity)
*/
private void processError(String str, String errorMessage, String details) {
try {
int i = 0;
while ((i = str.indexOf("", i);
String entity = str.substring(i + 6, lastIndexOfEntity - 1)
.toLowerCase();
// reason entity
if (entity.equals("reason")) {
out.print(str.substring(0, i));
str = str.substring(lastIndexOfEntity + 3);
i = 0;
out.print(errorMessage);
}
// details entity
else if (entity.equals("details")) {
out.print(str.substring(0, i));
str = str.substring(lastIndexOfEntity + 3);
i = 0;
out.print(details);
}
//charset entity
else if (entity.equals("charset")) {
out.print(str.substring(0, i));
str = str.substring(lastIndexOfEntity + 3);
i = 0;
out.print(ac.getContentEncoding());
} else {
i += 6; // skip this unknown entity
}
}
// print the end of the string
if (str != null) {
out.print(str);
}
} catch (Exception e) {
e.printStackTrace();
if (str != null) {
out.print(str);
}
}
}
static {
// load the soaperror.properties
URL url;
messages = new Utf8Properties();
try {
url = ErrorReportSOAP12.class.getResource("soaperror.properties");
java.io.InputStream f = url.openStream();
messages.load(f);
f.close();
} catch (Exception e) {
System.err.println("org.w3c.css.error.ErrorReportSOAP12: "
+ "couldn't load soap error messages properties ");
System.err.println(" " + e.toString());
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy