Skip to content

Commit 0ac3941

Browse files
author
Stephane Landelle
committed
Optimize convertExpireField: don't loop on Exceptions, test RFC formt first
1 parent 03a71bf commit 0ac3941

File tree

1 file changed

+25
-28
lines changed

1 file changed

+25
-28
lines changed

api/src/main/java/com/ning/http/util/AsyncHttpProviderUtils.java

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -12,35 +12,36 @@
1212
*/
1313
package com.ning.http.util;
1414

15-
import com.ning.http.client.AsyncHttpClientConfig;
16-
import com.ning.http.client.AsyncHttpProvider;
17-
import com.ning.http.client.ByteArrayPart;
18-
import com.ning.http.client.Cookie;
19-
import com.ning.http.client.FilePart;
20-
import com.ning.http.client.FluentStringsMap;
21-
import com.ning.http.client.HttpResponseBodyPart;
22-
import com.ning.http.client.Part;
23-
import com.ning.http.client.Request;
24-
import com.ning.http.client.StringPart;
25-
import com.ning.http.multipart.ByteArrayPartSource;
26-
import com.ning.http.multipart.MultipartRequestEntity;
27-
import com.ning.http.multipart.PartSource;
28-
2915
import java.io.ByteArrayInputStream;
3016
import java.io.FileNotFoundException;
3117
import java.io.IOException;
3218
import java.io.InputStream;
3319
import java.io.SequenceInputStream;
3420
import java.io.UnsupportedEncodingException;
3521
import java.net.URI;
36-
import java.text.ParseException;
22+
import java.text.ParsePosition;
3723
import java.text.SimpleDateFormat;
3824
import java.util.ArrayList;
3925
import java.util.Collection;
26+
import java.util.Date;
4027
import java.util.List;
4128
import java.util.Locale;
4229
import java.util.Vector;
4330

31+
import com.ning.http.client.AsyncHttpClientConfig;
32+
import com.ning.http.client.AsyncHttpProvider;
33+
import com.ning.http.client.ByteArrayPart;
34+
import com.ning.http.client.Cookie;
35+
import com.ning.http.client.FilePart;
36+
import com.ning.http.client.FluentStringsMap;
37+
import com.ning.http.client.HttpResponseBodyPart;
38+
import com.ning.http.client.Part;
39+
import com.ning.http.client.Request;
40+
import com.ning.http.client.StringPart;
41+
import com.ning.http.multipart.ByteArrayPartSource;
42+
import com.ning.http.multipart.MultipartRequestEntity;
43+
import com.ning.http.multipart.PartSource;
44+
4445
/**
4546
* {@link com.ning.http.client.AsyncHttpProvider} common utilities.
4647
* <p/>
@@ -59,14 +60,13 @@ protected SimpleDateFormat[] initialValue() {
5960

6061
return new SimpleDateFormat[]
6162
{
62-
new SimpleDateFormat("EEE MMM d HH:mm:ss yyyy", Locale.US), //ASCTIME
63+
new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US), // RFC1123
6364
new SimpleDateFormat("EEEE, dd-MMM-yy HH:mm:ss zzz", Locale.US), //RFC1036
65+
new SimpleDateFormat("EEE MMM d HH:mm:ss yyyy", Locale.US), //ASCTIME
6466
new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US),
6567
new SimpleDateFormat("EEE, dd-MMM-yyyy HH:mm:ss z", Locale.US),
6668
new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.US),
67-
new SimpleDateFormat("EEE, dd-MMM-yyyy HH:mm:ss Z", Locale.US),
68-
new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US) // RFC1123
69-
69+
new SimpleDateFormat("EEE, dd-MMM-yyyy HH:mm:ss Z", Locale.US)
7070
};
7171
}
7272
};
@@ -563,21 +563,18 @@ public static Cookie parseCookie(String value) {
563563
}
564564

565565
public static int convertExpireField(String timestring) throws Exception {
566-
Exception exception = null;
567566
String trimmedTimeString = removeQuote(timestring.trim());
568-
long now = System.currentTimeMillis();
567+
569568
for (SimpleDateFormat sdf : simpleDateFormat.get()) {
570-
try {
571-
long expire = sdf.parse(trimmedTimeString).getTime();
569+
Date date = sdf.parse(trimmedTimeString, new ParsePosition(0));
570+
if (date != null) {
571+
long now = System.currentTimeMillis();
572+
long expire = date.getTime();
572573
return (int) ((expire - now) / 1000);
573-
} catch (ParseException e) {
574-
exception = e;
575-
} catch (NumberFormatException e) {
576-
exception = e;
577574
}
578575
}
579576

580-
throw exception;
577+
throw new IllegalArgumentException("Not a valid expire field " + trimmedTimeString);
581578
}
582579

583580
private final static String removeQuote(String s) {

0 commit comments

Comments
 (0)