lognasquare fixes added
This commit is contained in:
parent
140eff7458
commit
71d4d60e99
|
|
@ -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() {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,6 +57,8 @@ public abstract class JsonResponseBodyConverter<T> implements Converter<Response
|
|||
Lc.assertion(exception);
|
||||
}
|
||||
throw exception;
|
||||
} finally {
|
||||
value.close();
|
||||
}
|
||||
|
||||
if (result instanceof ApiModel) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue