import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
+import org.apache.commons.lang.StringEscapeUtils;
import org.apache.http.Header;
import org.apache.http.HttpException;
import org.apache.http.HttpMessage;
import org.apache.http.HttpVersion;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
-import org.apache.http.conn.PlainSocketFactory;
-import org.apache.http.conn.Scheme;
-import org.apache.http.conn.SchemeRegistry;
+import org.apache.http.conn.scheme.PlainSocketFactory;
+import org.apache.http.conn.scheme.Scheme;
+import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
+import java.net.SocketException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.UnknownHostException;
-import java.util.Arrays;
import java.util.Hashtable;
import java.util.List;
import java.util.Timer;
} finally {
is.close();
}
- } catch (InterruptedException ie) {
+ } catch (IllegalArgumentException iae) {
+ // Thrown if hostname is bad or null
+ getRequest.abort();
+ response.sendRedirect("badurl.jspx");
+ } catch (SocketException se) {
+ // Thrown if hostname is bad or null
getRequest.abort();
response.sendRedirect("badurl.jspx");
} catch (HttpException he) {
if (request.getParameter("full") == null) {
response.setContentType("text/plain");
- response.setCharacterEncoding("UTF-8");
- Writer out = new OutputStreamWriter(response.getOutputStream(), "UTF-8");
+ response.setCharacterEncoding("UTF8");
+ Writer out = new OutputStreamWriter(response.getOutputStream(), "UTF8");
try {
out.write(result.getText());
} finally {
request.setAttribute("result", result);
byte[] rawBytes = result.getRawBytes();
if (rawBytes != null) {
- request.setAttribute("rawBytesString", Arrays.toString(rawBytes));
+ request.setAttribute("rawBytesString", arrayToString(rawBytes));
} else {
request.setAttribute("rawBytesString", "(Not applicable)");
}
- ParsedResult parsedResult = ResultParser.parseReaderResult(result);
+ String text = result.getText();
+ if (text != null) {
+ request.setAttribute("text", StringEscapeUtils.escapeXml(text));
+ } else {
+ request.setAttribute("text", "(Not applicable)");
+ }
+ ParsedResult parsedResult = ResultParser.parseResult(result);
request.setAttribute("parsedResult", parsedResult);
+ String displayResult = parsedResult.getDisplayResult();
+ if (displayResult != null) {
+ request.setAttribute("displayResult", StringEscapeUtils.escapeXml(displayResult));
+ } else {
+ request.setAttribute("displayResult", "(Not applicable)");
+ }
request.getRequestDispatcher("decoderesult.jspx").forward(request, response);
}
}
return true;
}
+ private static String arrayToString(byte[] bytes) {
+ int length = bytes.length;
+ StringBuilder result = new StringBuilder(length << 2);
+ int i = 0;
+ while (i < length) {
+ int max = Math.min(i + 8, length);
+ for (int j = i; j < max; j++) {
+ int value = bytes[j] & 0xFF;
+ result.append(Integer.toHexString(value / 16));
+ result.append(Integer.toHexString(value % 16));
+ result.append(' ');
+ }
+ result.append('\n');
+ i += 8;
+ }
+ for (int j = i - 8; j < length; j++) {
+ result.append(Integer.toHexString(bytes[j] & 0xFF));
+ result.append(' ');
+ }
+ return result.toString();
+ }
+
@Override
public void destroy() {
log.config("DecodeServlet shutting down...");