From 07d864650e437847dbfa62e203a32db5fcc28f55 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 9 Sep 2015 12:12:26 +0200 Subject: [PATCH] Added setParser() to HawkBuilder --- .../java/com/orhanobut/hawk/HawkBuilder.java | 5 +++ .../com/orhanobut/hawk/HawkBuilderTest.java | 40 +++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/hawk/src/main/java/com/orhanobut/hawk/HawkBuilder.java b/hawk/src/main/java/com/orhanobut/hawk/HawkBuilder.java index 1dc77bb..6b27ae6 100644 --- a/hawk/src/main/java/com/orhanobut/hawk/HawkBuilder.java +++ b/hawk/src/main/java/com/orhanobut/hawk/HawkBuilder.java @@ -81,6 +81,11 @@ public HawkBuilder setCallback(Callback callback) { return this; } + public HawkBuilder setParser(Parser parser) { + this.parser = parser; + return this; + } + public Context getContext() { return context; } diff --git a/hawk/src/test/java/com/orhanobut/hawk/HawkBuilderTest.java b/hawk/src/test/java/com/orhanobut/hawk/HawkBuilderTest.java index f27f687..988c5bf 100644 --- a/hawk/src/test/java/com/orhanobut/hawk/HawkBuilderTest.java +++ b/hawk/src/test/java/com/orhanobut/hawk/HawkBuilderTest.java @@ -2,6 +2,12 @@ import android.app.Activity; import android.content.Context; +import android.text.TextUtils; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonSyntaxException; +import com.orhanobut.hawk.GsonParser; import junit.framework.TestCase; @@ -13,6 +19,10 @@ import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.annotation.Config; +import java.lang.reflect.Type; + +import dalvik.annotation.TestTarget; + import static org.assertj.core.api.Assertions.assertThat; /** @@ -30,6 +40,28 @@ public HawkBuilderTest() { builder = Hawk.init(context); } + class CustomParser implements Parser { + private final Gson gson; + + public CustomParser(Gson gson) { + this.gson = gson; + } + + @Override + public T fromJson(String content, Type type) throws JsonSyntaxException { + if (TextUtils.isEmpty(content)) { + return null; + } + return gson.fromJson(content, type); + } + + @Override + public String toJson(Object body) { + return gson.toJson(body); + } + + } + @Before public void setup() { builder = new HawkBuilder(context); @@ -149,6 +181,14 @@ public void testDefaultParser() { assertThat(builder.getParser()).isInstanceOf(GsonParser.class); } + @Test + public void testCustomParser() { + CustomParser parser = new CustomParser(new Gson()); + builder.setParser(parser) + .build(); + assertThat(builder.getParser()).isInstanceOf(CustomParser.class); + } + @Test public void testDefaultEncoded() { builder.build();