package edu.byu.cs.roots.opg.nfs;
import java.io.IOException;
import java.util.concurrent.Callable;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
public class StandardExecuteCallable implements Callable<String>{
private String retVal, call;
private DefaultHttpClient client;
private boolean post;
private BasicResponseHandler responseHandler;
public StandardExecuteCallable(DefaultHttpClient client, String call, boolean post){
this.client = client;
this.call = call;
this.post = post;
responseHandler = new BasicResponseHandler();
}
@Override
public String call() throws Exception {
if(post){
executeThread t = new executeThread(client, call, post);
t.setName("DebugName");
t.start();
t.join();
retVal = t.getVal();
}
else{
executeThread t = new executeThread(client, call, post);
t.setName("DebugName");
t.start();
t.join();
retVal = t.getVal();
}
return retVal;
}
private class executeThread extends Thread{
private String url, retVal;
private DefaultHttpClient client;
private BasicResponseHandler responseHandler;
private boolean post;
public executeThread(DefaultHttpClient client, String url, boolean post){
this.client = client; this.url = url;
responseHandler = new BasicResponseHandler();
this.post = post;
}
@Override
public void run() {
try {
if(post)
retVal = client.execute(new HttpPost(url), responseHandler);
else
retVal = client.execute(new HttpGet(url), responseHandler);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public String getVal(){
return retVal;
}
}
}