lognasquare fixes added

This commit is contained in:
Gavriil Sitnikov 2017-04-20 19:37:09 +03:00
parent 140eff7458
commit 71d4d60e99
4 changed files with 55 additions and 1 deletions

View File

@ -0,0 +1,22 @@
package com.bluelinelabs.logansquare;
import android.support.annotation.NonNull;
import java.lang.reflect.Type;
/**
* Utility class for the {@link ru.touchin.templates.logansquare.LoganSquareJsonFactory}. This resides in LoganSquare's
* main package in order to take advantage of the package-visible ConcreteParameterizedType class, which is essential
* to the support of generic classes in the Retrofit converter.
*/
public final class ConverterUtils {
@NonNull
public static ParameterizedType parameterizedTypeOf(@NonNull final Type type) {
return new ParameterizedType.ConcreteParameterizedType(type);
}
private ConverterUtils() {
}
}

View File

@ -132,6 +132,16 @@ public abstract class CalendarAdapter<TDayViewHolder extends RecyclerView.ViewHo
notifyItemRangeChanged(startSelectionPosition, endSelectionPosition - startSelectionPosition);
}
@NonNull
protected List<CalendarItem> getCalendarItems() {
return calendarItems;
}
@NonNull
protected String getMonthsNameByHeaderCalendarItem(@NonNull final CalendarHeaderItem item) {
return monthsNames != null ? monthsNames[item.getMonth()] : String.valueOf(item.getMonth());
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull final ViewGroup parent, final int viewType) {

View File

@ -21,13 +21,17 @@ package ru.touchin.templates.logansquare;
import android.support.annotation.NonNull;
import com.bluelinelabs.logansquare.ConverterUtils;
import com.bluelinelabs.logansquare.LoganSquare;
import com.google.api.client.json.jackson2.JacksonFactory;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
@ -73,7 +77,23 @@ public class LoganSquareJsonFactory extends Converter.Factory {
@NonNull
@Override
protected T parseResponse(@NonNull final ResponseBody value) throws IOException {
return (T) LoganSquare.parse(value.byteStream(), (Class) type);
if (type instanceof ParameterizedType) {
final ParameterizedType parameterizedType = (ParameterizedType) type;
final Type[] typeArguments = parameterizedType.getActualTypeArguments();
final Type firstType = typeArguments[0];
final Type rawType = parameterizedType.getRawType();
if (rawType == Map.class) {
return (T) LoganSquare.parseMap(value.byteStream(), (Class<?>) typeArguments[1]);
} else if (rawType == List.class) {
return (T) LoganSquare.parseList(value.byteStream(), (Class<?>) firstType);
} else {
// Generics
return (T) LoganSquare.parse(value.byteStream(), ConverterUtils.parameterizedTypeOf(type));
}
} else {
return (T) LoganSquare.parse(value.byteStream(), (Class) type);
}
}
}

View File

@ -57,6 +57,8 @@ public abstract class JsonResponseBodyConverter<T> implements Converter<Response
Lc.assertion(exception);
}
throw exception;
} finally {
value.close();
}
if (result instanceof ApiModel) {