summaryrefslogtreecommitdiff
path: root/source/com/c2kernel/utils/server/HTTPRequestHandler.java
diff options
context:
space:
mode:
authorabranson <andrew.branson@cern.ch>2011-08-04 00:42:34 +0200
committerabranson <andrew.branson@cern.ch>2011-08-04 00:42:34 +0200
commit0ec8481c10cd8277d84c7c1a785483a0a739e5a0 (patch)
tree5f6e5d9ae75193e67e6f3b3dfa488960c5cde1d5 /source/com/c2kernel/utils/server/HTTPRequestHandler.java
parent036cbdba66f804743c4c838ed598d6972c4b3e17 (diff)
More code cleanup:
Refactored Entity Proxy Subscription to handle generics better Rewrote RemoteMap to use TreeMap instead of the internal array for order. It now sorts its keys by number if they parse, else as strings. Removed a no-longer-in-progress outcome form class
Diffstat (limited to 'source/com/c2kernel/utils/server/HTTPRequestHandler.java')
-rw-r--r--source/com/c2kernel/utils/server/HTTPRequestHandler.java55
1 files changed, 30 insertions, 25 deletions
diff --git a/source/com/c2kernel/utils/server/HTTPRequestHandler.java b/source/com/c2kernel/utils/server/HTTPRequestHandler.java
index 78635e6..886ae9f 100644
--- a/source/com/c2kernel/utils/server/HTTPRequestHandler.java
+++ b/source/com/c2kernel/utils/server/HTTPRequestHandler.java
@@ -24,22 +24,26 @@ public class HTTPRequestHandler implements SocketHandler {
protected final static String CRLF = "\r\n";
protected BufferedReader request;
protected Socket currentSocket = null;
-
+
public HTTPRequestHandler() { }
-
- public String getName() {
+
+ @Override
+ public String getName() {
return "HTTP Server";
}
- public boolean isBusy() {
+ @Override
+ public boolean isBusy() {
return (currentSocket!=null);
}
- public void setSocket(Socket newSocket) {
+ @Override
+ public void setSocket(Socket newSocket) {
currentSocket = newSocket;
}
-
- public void shutdown() {
+
+ @Override
+ public void shutdown() {
try {
if (currentSocket != null) currentSocket.close();
} catch (IOException e) {
@@ -47,11 +51,12 @@ public class HTTPRequestHandler implements SocketHandler {
}
currentSocket = null;
}
-
- public void run() {
+
+ @Override
+ public void run() {
Thread.currentThread().setName("HTTP Request Handler");
try {
- request = new BufferedReader(new InputStreamReader(currentSocket.getInputStream()));
+ request = new BufferedReader(new InputStreamReader(currentSocket.getInputStream()));
// parse the request
boolean firstLine = true;
String headerLine;
@@ -70,7 +75,7 @@ public class HTTPRequestHandler implements SocketHandler {
}
else { // headers
int split = headerLine.indexOf(": ");
- if (split >= 0)
+ if (split >= 0)
headers.put(
headerLine.substring(0, split),
headerLine.substring(split+2)
@@ -81,10 +86,10 @@ public class HTTPRequestHandler implements SocketHandler {
String response = null;
try {
-
+
if (headers.containsKey("Content-length")) { // read POST data
StringBuffer postBuffer = new StringBuffer();
- int received = 0; int length = Integer.parseInt((String)headers.get("Content-length"));
+ int received = 0; int length = Integer.parseInt(headers.get("Content-length"));
try {
while (received < length) {
String postLine = request.readLine();
@@ -98,7 +103,7 @@ public class HTTPRequestHandler implements SocketHandler {
}
}
// Got the params, generate response
-
+
returnMIME = "text/xml";
statusCode = "200 OK";
@@ -109,47 +114,47 @@ public class HTTPRequestHandler implements SocketHandler {
System.out.println(new Date().toString()+" "+currentSocket.getInetAddress()+" "+method+" "+resource+" "+statusCode);
OutputStream output = currentSocket.getOutputStream();
-
+
statusCode = "HTTP/1.0 "+statusCode+CRLF;
output.write(statusCode.getBytes());
-
+
returnMIME = "Content-type: "+returnMIME+CRLF;
output.write(returnMIME.getBytes());
-
+
String contentLength = "Content-Length: "+response.length()+CRLF;
output.write(contentLength.getBytes());
-
+
// Possible: last mod?
// end of headers
output.write(CRLF.getBytes());
-
+
// write the content
output.write(response.getBytes());
request.close();
output.close();
currentSocket.close();
- } catch (IOException ex2) {
+ } catch (IOException ex2) {
Logger.error(ex2);
} // aborted connection probably
currentSocket = null;
}
-
+
/* This is a dummy method that doesn't support anything.
* Override it.
*/
-
+
public String processRequest() {
return error("501 Not Implemented", "The method "+method+" you have requested is not supported by this server.");
}
-
+
public String error(String code, String desc) {
statusCode = code;
returnMIME = "text/html";
- return ("<HTML>" +
+ return ("<HTML>" +
"<HEAD><TITLE>"+code+"</TITLE></HEAD>" +
"<BODY><h1>"+code+"</h1>" +
"<p>"+desc+
"<hr><p><small>Cristal Item HTTP server</small></BODY></HTML>");
}
}
-
+