Baku - Factoring out sync error handlers
Change-Id: I39f66a9bc9896c502acd64bc53aa73b3d7c11d48
diff --git a/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/BakuActivity.java b/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/BakuActivity.java
index 27b3265..3e424ea 100644
--- a/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/BakuActivity.java
+++ b/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/BakuActivity.java
@@ -18,10 +18,10 @@
@Slf4j
public abstract class BakuActivity extends VActivity implements BakuActivityTrait<Activity> {
@Delegate
- private BakuActivityTrait mBakuActivityTrait;
+ private BakuActivityTrait<Activity> mBakuActivityTrait;
- protected BakuActivityTrait createBakuActivityTrait() {
- return new BakuActivityMixin(this);
+ protected BakuActivityTrait<Activity> createBakuActivityTrait() {
+ return new BakuActivityMixin<>(this);
}
@Override
diff --git a/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/BakuActivityMixin.java b/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/BakuActivityMixin.java
index c30ae1b..31e3082 100644
--- a/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/BakuActivityMixin.java
+++ b/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/BakuActivityMixin.java
@@ -112,7 +112,7 @@
}
public void onSyncError(final Throwable t) {
- mVAndroidContextTrait.getErrorReporter().onError(R.string.err_sync, t);
+ ErrorReporters.getDefaultSyncErrorReporter(mVAndroidContextTrait);
}
public <U> SyncbaseBinding.Builder<U> binder() {
diff --git a/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/ErrorReporters.java b/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/ErrorReporters.java
index b9df48b..2ade39d 100644
--- a/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/ErrorReporters.java
+++ b/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/ErrorReporters.java
@@ -8,6 +8,7 @@
import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;
+import rx.functions.Action1;
@Slf4j
@UtilityClass
@@ -23,4 +24,22 @@
}
};
}
+
+ /**
+ * Derives a default sync error reporting function from a {@link VAndroidContextTrait}. The
+ * error message is {@link io.v.baku.toolkit.R.string#err_sync}.
+ *
+ * @see #getDefaultSyncErrorReporter(ErrorReporter)
+ */
+ public static Action1<Throwable> getDefaultSyncErrorReporter(final VAndroidContextTrait<?> v) {
+ return getDefaultSyncErrorReporter(v.getErrorReporter());
+ }
+
+ /**
+ * Derives a default sync error reporting function from an {@link ErrorReporter}. The error
+ * message is {@link io.v.baku.toolkit.R.string#err_sync}.
+ */
+ public static Action1<Throwable> getDefaultSyncErrorReporter(final ErrorReporter r) {
+ return t -> r.onError(R.string.err_sync, t);
+ }
}
diff --git a/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/bind/BaseBuilder.java b/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/bind/BaseBuilder.java
index b08a6e1..f1e925e 100644
--- a/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/bind/BaseBuilder.java
+++ b/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/bind/BaseBuilder.java
@@ -8,6 +8,8 @@
import android.app.Activity;
import io.v.baku.toolkit.BakuActivityTrait;
+import io.v.baku.toolkit.ErrorReporters;
+import io.v.baku.toolkit.VAndroidContextTrait;
import io.v.rx.syncbase.RxTable;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
@@ -35,6 +37,15 @@
return mSelf;
}
+ /**
+ * Sets the following properties from the given {@link BakuActivityTrait}:
+ * <ul>
+ * <li>{@code activity}</li>
+ * <li>{@code rxTable}</li>
+ * <li>{@code subscriptionParent}</li>
+ * <li>{@code onError}</li>
+ * </ul>
+ */
public T bakuActivity(final BakuActivityTrait<?> trait) {
return activity(trait.getVAndroidContextTrait().getAndroidContext())
.rxTable(trait.getSyncbaseTable())
@@ -42,6 +53,18 @@
.onError(trait::onSyncError);
}
+ /**
+ * Sets the following properties from the given {@link VAndroidContextTrait}:
+ * <ul>
+ * <li>{@code activity}</li>
+ * <li>{@code onError}</li>
+ * </ul>
+ */
+ public T vActivity(final VAndroidContextTrait<? extends Activity> trait) {
+ return activity(trait.getAndroidContext())
+ .onError(ErrorReporters.getDefaultSyncErrorReporter(trait));
+ }
+
public T subscriptionParent(final CompositeSubscription subscriptionParent) {
mSubscriptionParent = subscriptionParent;
return mSelf;
diff --git a/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/bind/CollectionBinding.java b/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/bind/CollectionBinding.java
index 62f9397..ac8abeb 100644
--- a/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/bind/CollectionBinding.java
+++ b/baku-toolkit/lib/src/main/java/io/v/baku/toolkit/bind/CollectionBinding.java
@@ -22,7 +22,7 @@
}
}
- public static <A extends RangeAdapter> Builder builder() {
+ public static Builder builder() {
return new Builder();
}
}