diff options
author | Koushik Dutta <koushd@gmail.com> | 2015-03-07 11:21:46 -1000 |
---|---|---|
committer | Koushik Dutta <koushd@gmail.com> | 2015-03-07 11:21:53 -1000 |
commit | 4c85f8686eaf5dd33597d22b3ffa2f8e6f0db211 (patch) | |
tree | 702607908ae9e753b9216d22169d5b93e17ee6ac | |
parent | 3bfd1b327578cc5992e52790f389bfd1e5cd9fa7 (diff) | |
download | AndroidAsync-4c85f8686eaf5dd33597d22b3ffa2f8e6f0db211.tar.gz AndroidAsync-4c85f8686eaf5dd33597d22b3ffa2f8e6f0db211.tar.bz2 AndroidAsync-4c85f8686eaf5dd33597d22b3ffa2f8e6f0db211.zip |
Add getType to AsyncParser.
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); + } } |