Compare commits

...

4 Commits
DBO ... master

Author SHA1 Message Date
Oleg d08b7df5f0
UnusedImports fix (#112) 2018-11-28 17:17:14 +03:00
Oleg 333cb3fa64
TaskDescription fix (#111) 2018-11-28 16:54:29 +03:00
Denis Karmyshakov 098db7d2e3 Enum serialization (#103) 2018-02-09 15:03:30 +03:00
Anton Domnikov e1eed0c37f fixed parsing when date is empty (#101) 2018-02-02 17:13:42 +03:00
4 changed files with 48 additions and 12 deletions

View File

@ -15,6 +15,7 @@ android {
repositories { repositories {
maven { url 'https://maven.fabric.io/public' } maven { url 'https://maven.fabric.io/public' }
maven { url "http://dl.bintray.com/touchin/touchin-tools" }
} }
dependencies { dependencies {
@ -34,7 +35,7 @@ dependencies {
} }
compileOnly 'com.facebook.fresco:fresco:1.5.0' compileOnly 'com.facebook.fresco:fresco:1.5.0'
compileOnly 'com.bluelinelabs:logansquare:1.3.7' compileOnly 'ru.touchin:logansquare:1.4.1'
compileOnly 'com.scottyab:aes-crypto:0.0.4' compileOnly 'com.scottyab:aes-crypto:0.0.4'

View File

@ -21,7 +21,7 @@ package ru.touchin.templates;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.content.Intent; import android.content.Intent;
import android.graphics.drawable.BitmapDrawable; import android.graphics.BitmapFactory;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.ColorRes; import android.support.annotation.ColorRes;
@ -62,9 +62,14 @@ public abstract class TouchinActivity<TLogic extends Logic> extends ViewControll
* @param primaryColorRes Color of application to show in task bar. * @param primaryColorRes Color of application to show in task bar.
*/ */
protected void setupTaskDescriptor(@NonNull final String label, @DrawableRes final int iconRes, @ColorRes final int primaryColorRes) { protected void setupTaskDescriptor(@NonNull final String label, @DrawableRes final int iconRes, @ColorRes final int primaryColorRes) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
final ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription(label, final ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription(label,
((BitmapDrawable) ContextCompat.getDrawable(this, iconRes)).getBitmap(), iconRes,
ContextCompat.getColor(this, primaryColorRes));
setTaskDescription(taskDescription);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
final ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription(label,
BitmapFactory.decodeResource(getResources(), iconRes),
ContextCompat.getColor(this, primaryColorRes)); ContextCompat.getColor(this, primaryColorRes));
setTaskDescription(taskDescription); setTaskDescription(taskDescription);
} }

View File

@ -42,7 +42,7 @@ public class LoganSquareJodaTimeConverter implements TypeConverter<DateTime> {
@Override @Override
public DateTime parse(@NonNull final JsonParser jsonParser) throws IOException { public DateTime parse(@NonNull final JsonParser jsonParser) throws IOException {
final String dateString = jsonParser.getValueAsString(); final String dateString = jsonParser.getValueAsString();
if (dateString == null) { if (dateString == null || dateString.isEmpty()) {
return null; return null;
} }
try { try {
@ -60,9 +60,9 @@ public class LoganSquareJodaTimeConverter implements TypeConverter<DateTime> {
@NonNull final JsonGenerator jsonGenerator) @NonNull final JsonGenerator jsonGenerator)
throws IOException { throws IOException {
if (fieldName != null) { if (fieldName != null) {
jsonGenerator.writeStringField(fieldName, object != null ? object.toString() : null); jsonGenerator.writeStringField(fieldName, object != null && !object.toString().isEmpty() ? object.toString() : null);
} else { } else {
jsonGenerator.writeString(object != null ? object.toString() : null); jsonGenerator.writeString(object != null && !object.toString().isEmpty() ? object.toString() : null);
} }
} }

View File

@ -20,13 +20,15 @@
package ru.touchin.templates.logansquare; package ru.touchin.templates.logansquare;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.bluelinelabs.logansquare.ConverterUtils; import com.bluelinelabs.logansquare.ConverterUtils;
import com.bluelinelabs.logansquare.LoganSquare; import com.bluelinelabs.logansquare.LoganSquare;
import com.google.api.client.json.jackson2.JacksonFactory; import com.fasterxml.jackson.core.JsonGenerator;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.StringWriter;
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;
import java.lang.reflect.ParameterizedType; import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type; import java.lang.reflect.Type;
@ -42,7 +44,7 @@ import ru.touchin.templates.retrofit.JsonResponseBodyConverter;
/** /**
* Created by Gavriil Sitnikov on 2/06/2016. * Created by Gavriil Sitnikov on 2/06/2016.
* LoganSquareConverter class to use with {@link Retrofit} to parse and generate models based on Google Jackson library {@link JacksonFactory}. * LoganSquareConverter class to use with {@link Retrofit} to parse and generate models based on Logan Square library.
*/ */
public class LoganSquareJsonFactory extends Converter.Factory { public class LoganSquareJsonFactory extends Converter.Factory {
@ -63,6 +65,16 @@ public class LoganSquareJsonFactory extends Converter.Factory {
return new LoganSquareRequestBodyConverter<>(); return new LoganSquareRequestBodyConverter<>();
} }
@Nullable
@Override
public Converter<?, String> stringConverter(@NonNull final Type type, @NonNull final Annotation[] annotations, @NonNull final Retrofit retrofit) {
if (type instanceof Class && ((Class) type).getSuperclass() == Enum.class) {
return new LoganSquareStringEnumConverter<>();
} else {
return super.stringConverter(type, annotations, retrofit);
}
}
public static class LoganSquareJsonResponseBodyConverter<T> extends JsonResponseBodyConverter<T> { public static class LoganSquareJsonResponseBodyConverter<T> extends JsonResponseBodyConverter<T> {
@NonNull @NonNull
@ -101,11 +113,29 @@ public class LoganSquareJsonFactory extends Converter.Factory {
public static class LoganSquareRequestBodyConverter<T> extends JsonRequestBodyConverter<T> { public static class LoganSquareRequestBodyConverter<T> extends JsonRequestBodyConverter<T> {
@Override @Override
protected void writeValueToByteArray(@NonNull final T value, @NonNull final ByteArrayOutputStream byteArrayOutputStream) protected void writeValueToByteArray(@NonNull final T value, @NonNull final ByteArrayOutputStream byteArrayOutputStream) throws IOException {
throws IOException {
LoganSquare.serialize(value, byteArrayOutputStream); LoganSquare.serialize(value, byteArrayOutputStream);
} }
} }
} public static class LoganSquareStringEnumConverter<T> implements Converter<T, String> {
@Nullable
@SuppressWarnings({"unchecked", "TryFinallyCanBeTryWithResources"})
@Override
public String convert(@NonNull final T value) throws IOException {
final StringWriter writer = new StringWriter();
try {
final JsonGenerator generator = LoganSquare.JSON_FACTORY.createGenerator(writer);
LoganSquare.typeConverterFor((Class<T>) value.getClass()).serialize(value, null, false, generator);
generator.close();
return writer.toString().replaceAll("\"", "");
} finally {
writer.close();
}
}
}
}