diff options
| author | abranson <andrew.branson@cern.ch> | 2011-08-04 00:42:34 +0200 |
|---|---|---|
| committer | abranson <andrew.branson@cern.ch> | 2011-08-04 00:42:34 +0200 |
| commit | 0ec8481c10cd8277d84c7c1a785483a0a739e5a0 (patch) | |
| tree | 5f6e5d9ae75193e67e6f3b3dfa488960c5cde1d5 /source/com/c2kernel/utils/server/HTTPRequestHandler.java | |
| parent | 036cbdba66f804743c4c838ed598d6972c4b3e17 (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.java | 55 |
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>");
}
}
-
+
|
