aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoushik Dutta <koushd@gmail.com>2015-03-07 11:21:46 -1000
committerKoushik Dutta <koushd@gmail.com>2015-03-07 11:21:53 -1000
commit4c85f8686eaf5dd33597d22b3ffa2f8e6f0db211 (patch)
tree702607908ae9e753b9216d22169d5b93e17ee6ac
parent3bfd1b327578cc5992e52790f389bfd1e5cd9fa7 (diff)
downloadAndroidAsync-4c85f8686eaf5dd33597d22b3ffa2f8e6f0db211.tar.gz
AndroidAsync-4c85f8686eaf5dd33597d22b3ffa2f8e6f0db211.tar.bz2
AndroidAsync-4c85f8686eaf5dd33597d22b3ffa2f8e6f0db211.zip
Add getType to AsyncParser.
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/parser/AsyncParser.java1
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/parser/AsyncParserBase.java13
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/parser/ByteBufferListParser.java2
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/parser/DocumentParser.java2
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/parser/JSONArrayParser.java2
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/parser/JSONObjectParser.java2
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/parser/StringParser.java2
-rw-r--r--AndroidAsync/test/src/com/koushikdutta/async/test/ParserTests.java8
8 files changed, 27 insertions, 5 deletions
diff --git a/AndroidAsync/src/com/koushikdutta/async/parser/AsyncParser.java b/AndroidAsync/src/com/koushikdutta/async/parser/AsyncParser.java
index bcbb440..44e1a83 100644
--- a/AndroidAsync/src/com/koushikdutta/async/parser/AsyncParser.java
+++ b/AndroidAsync/src/com/koushikdutta/async/parser/AsyncParser.java
@@ -11,4 +11,5 @@ import com.koushikdutta.async.future.Future;
public interface AsyncParser<T> {
Future<T> parse(DataEmitter emitter);
void write(DataSink sink, T value, CompletedCallback completed);
+ Class<T> getType();
}
diff --git a/AndroidAsync/src/com/koushikdutta/async/parser/AsyncParserBase.java b/AndroidAsync/src/com/koushikdutta/async/parser/AsyncParserBase.java
new file mode 100644
index 0000000..d6a7f35
--- /dev/null
+++ b/AndroidAsync/src/com/koushikdutta/async/parser/AsyncParserBase.java
@@ -0,0 +1,13 @@
+package com.koushikdutta.async.parser;
+
+import java.lang.reflect.ParameterizedType;
+
+/**
+ * Created by koush on 3/6/15.
+ */
+public abstract class AsyncParserBase<T> implements AsyncParser<T> {
+ @Override
+ public Class<T> getType() {
+ return (Class<T>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];
+ }
+}
diff --git a/AndroidAsync/src/com/koushikdutta/async/parser/ByteBufferListParser.java b/AndroidAsync/src/com/koushikdutta/async/parser/ByteBufferListParser.java
index abfaa87..7226062 100644
--- a/AndroidAsync/src/com/koushikdutta/async/parser/ByteBufferListParser.java
+++ b/AndroidAsync/src/com/koushikdutta/async/parser/ByteBufferListParser.java
@@ -12,7 +12,7 @@ import com.koushikdutta.async.future.SimpleFuture;
/**
* Created by koush on 5/27/13.
*/
-public class ByteBufferListParser implements AsyncParser<ByteBufferList> {
+public class ByteBufferListParser extends AsyncParserBase<ByteBufferList> {
@Override
public Future<ByteBufferList> parse(final DataEmitter emitter) {
final ByteBufferList bb = new ByteBufferList();
diff --git a/AndroidAsync/src/com/koushikdutta/async/parser/DocumentParser.java b/AndroidAsync/src/com/koushikdutta/async/parser/DocumentParser.java
index fe54e04..c64a300 100644
--- a/AndroidAsync/src/com/koushikdutta/async/parser/DocumentParser.java
+++ b/AndroidAsync/src/com/koushikdutta/async/parser/DocumentParser.java
@@ -17,7 +17,7 @@ import javax.xml.parsers.DocumentBuilderFactory;
/**
* Created by koush on 8/3/13.
*/
-public class DocumentParser implements AsyncParser<Document> {
+public class DocumentParser extends AsyncParserBase<Document> {
@Override
public Future<Document> parse(DataEmitter emitter) {
return new ByteBufferListParser().parse(emitter)
diff --git a/AndroidAsync/src/com/koushikdutta/async/parser/JSONArrayParser.java b/AndroidAsync/src/com/koushikdutta/async/parser/JSONArrayParser.java
index d8eb7e5..687435a 100644
--- a/AndroidAsync/src/com/koushikdutta/async/parser/JSONArrayParser.java
+++ b/AndroidAsync/src/com/koushikdutta/async/parser/JSONArrayParser.java
@@ -12,7 +12,7 @@ import org.json.JSONObject;
/**
* Created by koush on 5/27/13.
*/
-public class JSONArrayParser implements AsyncParser<JSONArray> {
+public class JSONArrayParser extends AsyncParserBase<JSONArray> {
@Override
public Future<JSONArray> parse(DataEmitter emitter) {
return new StringParser().parse(emitter)
diff --git a/AndroidAsync/src/com/koushikdutta/async/parser/JSONObjectParser.java b/AndroidAsync/src/com/koushikdutta/async/parser/JSONObjectParser.java
index dbdcbef..5bd1eb0 100644
--- a/AndroidAsync/src/com/koushikdutta/async/parser/JSONObjectParser.java
+++ b/AndroidAsync/src/com/koushikdutta/async/parser/JSONObjectParser.java
@@ -10,7 +10,7 @@ import org.json.JSONObject;
/**
* Created by koush on 5/27/13.
*/
-public class JSONObjectParser implements AsyncParser<JSONObject> {
+public class JSONObjectParser extends AsyncParserBase<JSONObject> {
@Override
public Future<JSONObject> parse(DataEmitter emitter) {
return new StringParser().parse(emitter)
diff --git a/AndroidAsync/src/com/koushikdutta/async/parser/StringParser.java b/AndroidAsync/src/com/koushikdutta/async/parser/StringParser.java
index 5a9f880..f8d82b6 100644
--- a/AndroidAsync/src/com/koushikdutta/async/parser/StringParser.java
+++ b/AndroidAsync/src/com/koushikdutta/async/parser/StringParser.java
@@ -12,7 +12,7 @@ import java.nio.charset.Charset;
/**
* Created by koush on 5/27/13.
*/
-public class StringParser implements AsyncParser<String> {
+public class StringParser extends AsyncParserBase<String> {
Charset forcedCharset;
public StringParser() {
diff --git a/AndroidAsync/test/src/com/koushikdutta/async/test/ParserTests.java b/AndroidAsync/test/src/com/koushikdutta/async/test/ParserTests.java
index 3374eff..13773ea 100644
--- a/AndroidAsync/test/src/com/koushikdutta/async/test/ParserTests.java
+++ b/AndroidAsync/test/src/com/koushikdutta/async/test/ParserTests.java
@@ -3,11 +3,14 @@ package com.koushikdutta.async.test;
import com.koushikdutta.async.ByteBufferList;
import com.koushikdutta.async.FilteredDataEmitter;
import com.koushikdutta.async.future.Future;
+import com.koushikdutta.async.parser.DocumentParser;
import com.koushikdutta.async.parser.StringParser;
import com.koushikdutta.async.util.Charsets;
import junit.framework.TestCase;
+import org.w3c.dom.Document;
+
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
@@ -53,4 +56,9 @@ public class ParserTests extends TestCase {
String s = ret.get();
assertEquals(s, "æææ");
}
+
+ public void testAsyncParserBase() throws Exception {
+ DocumentParser parser = new DocumentParser();
+ assertEquals(parser.getType(), Document.class);
+ }
}