Skip to content

Android library project #13

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Aug 23, 2011
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="src" path="examples"/>
<classpathentry kind="output" path="bin"/>
</classpath>
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,7 @@ MANIFEST.MF
*.jar
build.num
build
local.properties
local.properties
bin/
gen/

33 changes: 33 additions & 0 deletions .project
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>android-async-http</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
11 changes: 11 additions & 0 deletions AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.loopj.android.http"
android:versionName="1.3.1"
android:versionCode="1">
<application
android:name="android_async_http">
</application>
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
2 changes: 1 addition & 1 deletion build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
<attribute name="Implementation-Version" value="${version.num}-b${build.number}"/>
</manifest>

<jar destfile="${jarfile}" basedir="build/classes" includes="**/*.class" manifest="MANIFEST.MF" />
<jar destfile="${jarfile}" basedir="build/classes" includes="com/loopj/android/http/**/*.class" manifest="MANIFEST.MF" />
</target>

<!-- Clean out the build files -->
Expand Down
3 changes: 2 additions & 1 deletion default.properties
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
target=android-3
target=android-3
android.library=true
25 changes: 12 additions & 13 deletions src/com/loopj/android/http/AsyncHttpClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -92,18 +92,17 @@ public class AsyncHttpClient {
private static final int DEFAULT_MAX_CONNECTIONS = 10;
private static final int DEFAULT_SOCKET_TIMEOUT = 10 * 1000;
private static final int DEFAULT_MAX_RETRIES = 5;
private static final String ENCODING = "UTF-8";
private static final String HEADER_ACCEPT_ENCODING = "Accept-Encoding";
private static final String ENCODING_GZIP = "gzip";

private static int maxConnections = DEFAULT_MAX_CONNECTIONS;
private static int socketTimeout = DEFAULT_SOCKET_TIMEOUT;

private DefaultHttpClient httpClient;
private HttpContext httpContext;
private final DefaultHttpClient httpClient;
private final HttpContext httpContext;
private ThreadPoolExecutor threadPool;
private Map<Context, List<WeakReference<Future>>> requestMap;
private Map<String, String> clientHeaderMap;
private final Map<Context, List<WeakReference<Future<?>>>> requestMap;
private final Map<String, String> clientHeaderMap;


/**
Expand Down Expand Up @@ -159,7 +158,7 @@ public void process(HttpResponse response, HttpContext context) {

threadPool = (ThreadPoolExecutor)Executors.newCachedThreadPool();

requestMap = new WeakHashMap<Context, List<WeakReference<Future>>>();
requestMap = new WeakHashMap<Context, List<WeakReference<Future<?>>>>();
clientHeaderMap = new HashMap<String, String>();
}

Expand Down Expand Up @@ -229,10 +228,10 @@ public void addHeader(String header, String value) {
* @param mayInterruptIfRunning specifies if active requests should be cancelled along with pending requests.
*/
public void cancelRequests(Context context, boolean mayInterruptIfRunning) {
List<WeakReference<Future>> requestList = requestMap.get(context);
List<WeakReference<Future<?>>> requestList = requestMap.get(context);
if(requestList != null) {
for(WeakReference<Future> requestRef : requestList) {
Future request = requestRef.get();
for(WeakReference<Future<?>> requestRef : requestList) {
Future<?> request = requestRef.get();
if(request != null) {
request.cancel(mayInterruptIfRunning);
}
Expand Down Expand Up @@ -413,17 +412,17 @@ private void sendRequest(DefaultHttpClient client, HttpContext httpContext, Http
uriRequest.addHeader("Content-Type", contentType);
}

Future request = threadPool.submit(new AsyncHttpRequest(client, httpContext, uriRequest, responseHandler));
Future<?> request = threadPool.submit(new AsyncHttpRequest(client, httpContext, uriRequest, responseHandler));

if(context != null) {
// Add request to request map
List<WeakReference<Future>> requestList = requestMap.get(context);
List<WeakReference<Future<?>>> requestList = requestMap.get(context);
if(requestList == null) {
requestList = new LinkedList<WeakReference<Future>>();
requestList = new LinkedList<WeakReference<Future<?>>>();
requestMap.put(context, requestList);
}

requestList.add(new WeakReference<Future>(request));
requestList.add(new WeakReference<Future<?>>(request));

// TODO: Remove dead weakrefs from requestLists?
}
Expand Down
9 changes: 4 additions & 5 deletions src/com/loopj/android/http/AsyncHttpRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,16 @@
import java.net.ConnectException;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.HttpRequestRetryHandler;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.AbstractHttpClient;
import org.apache.http.protocol.HttpContext;

class AsyncHttpRequest implements Runnable {
private AbstractHttpClient client;
private HttpContext context;
private HttpUriRequest request;
private AsyncHttpResponseHandler responseHandler;
private final AbstractHttpClient client;
private final HttpContext context;
private final HttpUriRequest request;
private final AsyncHttpResponseHandler responseHandler;
private int executionCount;

public AsyncHttpRequest(AbstractHttpClient client, HttpContext context, HttpUriRequest request, AsyncHttpResponseHandler responseHandler) {
Expand Down
8 changes: 4 additions & 4 deletions src/com/loopj/android/http/PersistentCookieStore.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ public class PersistentCookieStore implements CookieStore {
private static final String COOKIE_NAME_STORE = "names";
private static final String COOKIE_NAME_PREFIX = "cookie_";

private ConcurrentHashMap<String, Cookie> cookies;
private SharedPreferences cookiePrefs;
private final ConcurrentHashMap<String, Cookie> cookies;
private final SharedPreferences cookiePrefs;

/**
* Construct a persistent cookie store.
Expand Down Expand Up @@ -175,8 +175,8 @@ protected Cookie decodeCookie(String cookieStr) {
// to rely on any large Base64 libraries. Can be overridden if you like!
protected String byteArrayToHexString(byte[] b) {
StringBuffer sb = new StringBuffer(b.length * 2);
for(int i=0; i<b.length; i++) {
int v = b[i] & 0xff;
for (byte element : b) {
int v = element & 0xff;
if(v < 16) {
sb.append('0');
}
Expand Down
2 changes: 1 addition & 1 deletion src/com/loopj/android/http/RetryHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ class RetryHandler implements HttpRequestRetryHandler {
exceptionBlacklist.add(SSLHandshakeException.class);
}

private int maxRetries;
private final int maxRetries;

public RetryHandler(int maxRetries) {
this.maxRetries = maxRetries;
Expand Down
2 changes: 1 addition & 1 deletion src/com/loopj/android/http/SerializableCookie.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
public class SerializableCookie implements Serializable {
private static final long serialVersionUID = 6374381828722046732L;

private transient Cookie cookie;
private transient final Cookie cookie;
private transient BasicClientCookie clientCookie;

public SerializableCookie(Cookie cookie) {
Expand Down