Merge branch 'master-rx-java-2' into kotlin_migration

# Conflicts:
#	build.gradle
This commit is contained in:
Anton Domnikov 2017-07-20 13:33:35 +03:00
commit 488d15a22b
4 changed files with 41 additions and 13 deletions

View File

@ -27,22 +27,24 @@ dependencies {
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.1.1'
provided 'com.android.support:appcompat-v7:26.0.0-beta2'
provided 'com.android.support:recyclerview-v7:26.0.0-beta2'
provided 'com.squareup.retrofit2:retrofit:2.3.0'
provided 'com.facebook.fresco:fresco:1.3.0'
provided 'com.facebook.fresco:fresco:1.4.0'
provided 'com.bluelinelabs:logansquare:1.3.7'
provided 'com.scottyab:aes-crypto:0.0.4'
provided('io.socket:socket.io-client:0.8.3') {
// don't use latest(1.0 and above) because they don't support Socket.IO server 1.x version
//noinspection NewerVersionAvailable
provided('io.socket:socket.io-client:0.9.0') {
exclude group: 'org.json', module: 'json'
}
provided('com.crashlytics.sdk.android:crashlytics:2.6.7@aar') {
provided('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
transitive = true;
}

View File

@ -52,7 +52,7 @@ public abstract class ApiModel implements Serializable {
*/
@SuppressWarnings({"PMD.PreserveStackTrace", "PMD.CyclomaticComplexity"})
// PreserveStackTrace: it's ok - we are logging it on Lc.e()
protected static void validateCollection(@NonNull final Collection collection, @NonNull final CollectionValidationRule collectionValidationRule)
public static void validateCollection(@NonNull final Collection collection, @NonNull final CollectionValidationRule collectionValidationRule)
throws ValidationException {
boolean haveValidItem = false;
int position = 0;
@ -117,7 +117,7 @@ public abstract class ApiModel implements Serializable {
//do nothing
}
protected enum CollectionValidationRule {
public enum CollectionValidationRule {
EXCEPTION_IF_ANY_INVALID,
EXCEPTION_IF_ALL_INVALID,
REMOVE_INVALID_ITEMS,

View File

@ -62,7 +62,7 @@ public class LoganSquareEnumConverter<T extends Enum & LoganSquareEnum> extends
if (defaultValue != null) {
return defaultValue;
}
throw new ShouldNotHappenException();
throw new ShouldNotHappenException("Enum parsing exception for value: " + string);
}
@Nullable

View File

@ -24,6 +24,8 @@ import android.support.annotation.NonNull;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.net.SocketException;
import java.util.Collection;
import java.util.Map;
import javax.net.ssl.SSLException;
@ -62,17 +64,41 @@ public abstract class JsonResponseBodyConverter<T> implements Converter<Response
}
if (result instanceof ApiModel) {
try {
((ApiModel) result).validate();
} catch (final ApiModel.ValidationException validationException) {
Lc.assertion(validationException);
throw validationException;
}
validateModel((ApiModel) result);
}
if (result instanceof Collection) {
validateCollection((Collection) result);
}
if (result instanceof Map) {
validateCollection(((Map)result).values());
}
return result;
}
private void validateModel(@NonNull final ApiModel result) throws IOException {
try {
result.validate();
} catch (final ApiModel.ValidationException validationException) {
Lc.assertion(validationException);
throw validationException;
}
}
private void validateCollection(@NonNull final Collection result) throws IOException {
try {
ApiModel.validateCollection(result, getValidateCollectionRule());
} catch (final ApiModel.ValidationException validationException) {
Lc.assertion(validationException);
throw validationException;
}
}
@NonNull
protected ApiModel.CollectionValidationRule getValidateCollectionRule() {
return ApiModel.CollectionValidationRule.EXCEPTION_IF_ANY_INVALID;
}
/**
* Parses response to specific object.
*