package hackathon.boxme;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import com.fasterxml.jackson.databind.ObjectMapper;
public class ConnectionHandler implements Runnable {
Socket clientSocket = null;
public ConnectionHandler(Socket clientSocket) throws IOException {
this.clientSocket = clientSocket;
System.out.println(this.clientSocket.isClosed());
}
@Override
public void run() {
try {
doWork();
} catch (IOException e) {
e.printStackTrace();
}
}
public void doWork() throws IOException {
// TODO Auto-generated method stub
ObjectMapper mapper = new ObjectMapper();
BoxMeRequest request = null;
System.out.println(clientSocket.isClosed());
try {
StringBuilder sb = new StringBuilder("");
String string = "initialSet";
BufferedReader reader = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
while (!string.equals("")) {
System.out.println(string);
string = reader.readLine();
sb.append(string);
}
System.out.println(sb.toString());
request = mapper.readValue(sb.toString(), BoxMeRequest.class);
System.out.println(clientSocket.isClosed());
} catch (IOException e) {
e.printStackTrace();
clientSocket.getOutputStream().write("Invalid Input.".getBytes());
clientSocket.getOutputStream().flush();
clientSocket.close();
return;
}
BoxMeRequestHandler handler = new BoxMeRequestHandler();
System.out.println(clientSocket.isClosed());
try {
clientSocket.getOutputStream().write(
handler.handle(request).getBytes());
clientSocket.getOutputStream().flush();
clientSocket.close();
} catch (Exception e) {
e.printStackTrace();
clientSocket.getOutputStream().write(e.toString().getBytes());
clientSocket.getOutputStream().close();
}
}
}