Compare commits

..

1 Commits
master ... DBO

Author SHA1 Message Date
Karenkov Igor 081087c5f1 migration to androidx 2019-06-06 01:14:16 +03:00
41 changed files with 101 additions and 137 deletions

View File

@ -15,27 +15,26 @@ 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 {
api project(path: ':libraries:components') api project(path: ':libraries:components')
api 'net.danlew:android.joda:2.9.9' api 'net.danlew:android.joda:2.9.9'
api 'com.android.support:multidex:1.0.2' api 'androidx.multidex:multidex:2.0.1'
api "io.reactivex:rxandroid:$rxAndroidVersion" api "io.reactivex:rxandroid:$rxAndroidVersion"
api "io.reactivex:rxjava:$rxJavaVersion" api "io.reactivex:rxjava:$rxJavaVersion"
compileOnly "com.android.support:appcompat-v7:$supportLibraryVersion" compileOnly "androidx.appcompat:appcompat:$appcompat"
compileOnly "com.android.support:recyclerview-v7:$supportLibraryVersion" compileOnly "androidx.recyclerview:recyclerview:$androidx"
compileOnly 'com.squareup.retrofit2:retrofit:2.3.0' compileOnly "com.squareup.retrofit2:retrofit:$retrofit"
compileOnly('com.google.http-client:google-http-client-jackson2:1.23.0') { compileOnly('com.google.http-client:google-http-client-jackson2:1.23.0') {
exclude(group: 'org.apache.httpcomponents', module: 'httpclient') exclude(group: 'org.apache.httpcomponents', module: 'httpclient')
} }
compileOnly 'com.facebook.fresco:fresco:1.5.0' compileOnly 'com.facebook.fresco:fresco:1.5.0'
compileOnly 'ru.touchin:logansquare:1.4.1' compileOnly 'com.bluelinelabs:logansquare:1.3.7'
compileOnly 'com.scottyab:aes-crypto:0.0.4' compileOnly 'com.scottyab:aes-crypto:0.0.4'

View File

@ -1,6 +1,6 @@
package com.bluelinelabs.logansquare; package com.bluelinelabs.logansquare;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import java.lang.reflect.Type; import java.lang.reflect.Type;

View File

@ -19,8 +19,8 @@
package ru.touchin.templates; package ru.touchin.templates;
import android.support.annotation.CallSuper; import androidx.annotation.CallSuper;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import java.io.IOException; import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;

View File

@ -19,7 +19,7 @@
package ru.touchin.templates; package ru.touchin.templates;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import com.tozny.crypto.android.AesCbcWithIntegrity; import com.tozny.crypto.android.AesCbcWithIntegrity;

View File

@ -26,7 +26,7 @@ import android.net.ConnectivityManager;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.provider.Settings; import android.provider.Settings;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.TextUtils; import android.text.TextUtils;

View File

@ -21,14 +21,14 @@ package ru.touchin.templates;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.content.Intent; import android.content.Intent;
import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.ColorRes; import androidx.annotation.ColorRes;
import android.support.annotation.DrawableRes; import androidx.annotation.DrawableRes;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import android.support.v4.content.ContextCompat; import androidx.core.content.ContextCompat;
import ru.touchin.roboswag.components.navigation.activities.ViewControllerActivity; import ru.touchin.roboswag.components.navigation.activities.ViewControllerActivity;
import ru.touchin.roboswag.components.utils.Logic; import ru.touchin.roboswag.components.utils.Logic;
@ -62,14 +62,9 @@ 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.P) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
final ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription(label, final ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription(label,
iconRes, ((BitmapDrawable) ContextCompat.getDrawable(this, iconRes)).getBitmap(),
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

@ -23,9 +23,6 @@ import android.app.Application;
import android.content.Context; import android.content.Context;
import android.os.Looper; import android.os.Looper;
import android.os.StrictMode; import android.os.StrictMode;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.multidex.MultiDex;
import android.util.Log; import android.util.Log;
import com.crashlytics.android.Crashlytics; import com.crashlytics.android.Crashlytics;
@ -37,6 +34,9 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.multidex.MultiDex;
import io.fabric.sdk.android.Fabric; import io.fabric.sdk.android.Fabric;
import ru.touchin.roboswag.components.adapters.ObservableCollectionAdapter; import ru.touchin.roboswag.components.adapters.ObservableCollectionAdapter;
import ru.touchin.roboswag.components.navigation.fragments.ViewControllerFragment; import ru.touchin.roboswag.components.navigation.fragments.ViewControllerFragment;

View File

@ -23,7 +23,7 @@ import android.app.Service;
import android.content.Intent; import android.content.Intent;
import android.os.Handler; import android.os.Handler;
import android.os.IBinder; import android.os.IBinder;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import ru.touchin.roboswag.components.navigation.activities.ViewControllerActivity; import ru.touchin.roboswag.components.navigation.activities.ViewControllerActivity;
import ru.touchin.roboswag.components.utils.Logic; import ru.touchin.roboswag.components.utils.Logic;

View File

@ -19,10 +19,6 @@
package ru.touchin.templates.calendar; package ru.touchin.templates.calendar;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.ViewGroup; import android.view.ViewGroup;
import org.joda.time.DateTime; import org.joda.time.DateTime;
@ -31,6 +27,10 @@ import org.joda.time.format.DateTimeFormat;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
import ru.touchin.roboswag.core.utils.ShouldNotHappenException; import ru.touchin.roboswag.core.utils.ShouldNotHappenException;
/** /**

View File

@ -19,7 +19,7 @@
package ru.touchin.templates.calendar; package ru.touchin.templates.calendar;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
/** /**
* Created by Ilia Kurtov on 17/03/2016. * Created by Ilia Kurtov on 17/03/2016.

View File

@ -20,12 +20,12 @@
package ru.touchin.templates.calendar; package ru.touchin.templates.calendar;
import android.content.Context; import android.content.Context;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import android.support.v7.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.util.AttributeSet; import android.util.AttributeSet;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
import ru.touchin.roboswag.core.log.Lc; import ru.touchin.roboswag.core.log.Lc;
/** /**

View File

@ -19,8 +19,8 @@
package ru.touchin.templates.calendar; package ru.touchin.templates.calendar;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.joda.time.DateTimeFieldType; import org.joda.time.DateTimeFieldType;

View File

@ -19,8 +19,8 @@
package ru.touchin.templates.chat; package ru.touchin.templates.chat;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;

View File

@ -19,7 +19,7 @@
package ru.touchin.templates.googlejson; package ru.touchin.templates.googlejson;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import com.google.api.client.http.json.JsonHttpContent; import com.google.api.client.http.json.JsonHttpContent;
import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.json.jackson2.JacksonFactory;

View File

@ -19,7 +19,7 @@
package ru.touchin.templates.googlejson; package ru.touchin.templates.googlejson;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.api.client.json.JsonFactory; import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.json.jackson2.JacksonFactory;

View File

@ -20,8 +20,8 @@
package ru.touchin.templates.googlejson; package ru.touchin.templates.googlejson;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.api.client.http.json.JsonHttpContent; import com.google.api.client.http.json.JsonHttpContent;

View File

@ -19,8 +19,8 @@
package ru.touchin.templates.googlejson; package ru.touchin.templates.googlejson;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;

View File

@ -19,8 +19,8 @@
package ru.touchin.templates.googlejson; package ru.touchin.templates.googlejson;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import java.io.IOException; import java.io.IOException;

View File

@ -19,7 +19,7 @@
package ru.touchin.templates.logansquare; package ru.touchin.templates.logansquare;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
/** /**
* Created by Gavriil Sitnikov. * Created by Gavriil Sitnikov.

View File

@ -19,8 +19,8 @@
package ru.touchin.templates.logansquare; package ru.touchin.templates.logansquare;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import com.bluelinelabs.logansquare.typeconverters.StringBasedTypeConverter; import com.bluelinelabs.logansquare.typeconverters.StringBasedTypeConverter;

View File

@ -20,8 +20,8 @@
package ru.touchin.templates.logansquare; package ru.touchin.templates.logansquare;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import com.bluelinelabs.logansquare.typeconverters.TypeConverter; import com.bluelinelabs.logansquare.typeconverters.TypeConverter;
import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonGenerator;
@ -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 || dateString.isEmpty()) { if (dateString == null) {
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().isEmpty() ? object.toString() : null); jsonGenerator.writeStringField(fieldName, object != null ? object.toString() : null);
} else { } else {
jsonGenerator.writeString(object != null && !object.toString().isEmpty() ? object.toString() : null); jsonGenerator.writeString(object != null ? object.toString() : null);
} }
} }

View File

@ -19,16 +19,14 @@
package ru.touchin.templates.logansquare; package ru.touchin.templates.logansquare;
import android.support.annotation.NonNull; import androidx.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.fasterxml.jackson.core.JsonGenerator; import com.google.api.client.json.jackson2.JacksonFactory;
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;
@ -44,7 +42,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 Logan Square library. * LoganSquareConverter class to use with {@link Retrofit} to parse and generate models based on Google Jackson library {@link JacksonFactory}.
*/ */
public class LoganSquareJsonFactory extends Converter.Factory { public class LoganSquareJsonFactory extends Converter.Factory {
@ -65,16 +63,6 @@ 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
@ -113,29 +101,11 @@ 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) throws IOException { protected void writeValueToByteArray(@NonNull final T value, @NonNull final ByteArrayOutputStream byteArrayOutputStream)
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();
}
}
}
} }

View File

@ -19,7 +19,7 @@
package ru.touchin.templates.logansquare; package ru.touchin.templates.logansquare;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import ru.touchin.roboswag.core.log.Lc; import ru.touchin.roboswag.core.log.Lc;
import ru.touchin.templates.ApiModel; import ru.touchin.templates.ApiModel;

View File

@ -20,8 +20,8 @@
package ru.touchin.templates.logansquare; package ru.touchin.templates.logansquare;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import com.bluelinelabs.logansquare.LoganSquare; import com.bluelinelabs.logansquare.LoganSquare;

View File

@ -22,7 +22,7 @@ import android.graphics.Canvas;
import android.graphics.Paint; import android.graphics.Paint;
import android.os.Build; import android.os.Build;
import android.renderscript.RSRuntimeException; import android.renderscript.RSRuntimeException;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import com.facebook.cache.common.CacheKey; import com.facebook.cache.common.CacheKey;
import com.facebook.cache.common.SimpleCacheKey; import com.facebook.cache.common.SimpleCacheKey;

View File

@ -19,7 +19,7 @@
package ru.touchin.templates.requests; package ru.touchin.templates.requests;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;

View File

@ -20,7 +20,7 @@
package ru.touchin.templates.retrofit; package ru.touchin.templates.retrofit;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;

View File

@ -19,7 +19,7 @@
package ru.touchin.templates.retrofit; package ru.touchin.templates.retrofit;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import java.io.IOException; import java.io.IOException;
import java.io.InterruptedIOException; import java.io.InterruptedIOException;

View File

@ -19,9 +19,9 @@
package ru.touchin.templates.socket; package ru.touchin.templates.socket;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import android.support.v4.util.Pair; import androidx.core.util.Pair;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;

View File

@ -19,8 +19,8 @@
package ru.touchin.templates.socket; package ru.touchin.templates.socket;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import java.io.IOException; import java.io.IOException;

View File

@ -19,7 +19,7 @@
package ru.touchin.templates.socket; package ru.touchin.templates.socket;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
/** /**
* Created by Gavriil Sitnikov on 29/02/16. * Created by Gavriil Sitnikov on 29/02/16.

View File

@ -1,6 +1,6 @@
package ru.touchin.templates.validation; package ru.touchin.templates.validation;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import java.io.Serializable; import java.io.Serializable;

View File

@ -20,7 +20,7 @@
package ru.touchin.templates.validation; package ru.touchin.templates.validation;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import java.io.Serializable; import java.io.Serializable;

View File

@ -19,7 +19,7 @@
package ru.touchin.templates.validation; package ru.touchin.templates.validation;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
/** /**
* Created by Ilia Kurtov on 24/01/2017. * Created by Ilia Kurtov on 24/01/2017.

View File

@ -19,7 +19,7 @@
package ru.touchin.templates.validation.validationcontrollers; package ru.touchin.templates.validation.validationcontrollers;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import ru.touchin.templates.validation.ValidationState; import ru.touchin.templates.validation.ValidationState;
import ru.touchin.templates.validation.validators.SameTypeValidator; import ru.touchin.templates.validation.validators.SameTypeValidator;

View File

@ -19,8 +19,8 @@
package ru.touchin.templates.validation.validationcontrollers; package ru.touchin.templates.validation.validationcontrollers;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import android.text.TextUtils; import android.text.TextUtils;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,6 +1,6 @@
package ru.touchin.templates.validation.validationcontrollers; package ru.touchin.templates.validation.validationcontrollers;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import java.io.Serializable; import java.io.Serializable;

View File

@ -19,8 +19,8 @@
package ru.touchin.templates.validation.validationcontrollers; package ru.touchin.templates.validation.validationcontrollers;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import java.io.Serializable; import java.io.Serializable;

View File

@ -19,8 +19,8 @@
package ru.touchin.templates.validation.validators; package ru.touchin.templates.validation.validators;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,7 +1,7 @@
package ru.touchin.templates.validation.validators; package ru.touchin.templates.validation.validators;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import java.io.Serializable; import java.io.Serializable;

View File

@ -19,7 +19,7 @@
package ru.touchin.templates.validation.validators; package ru.touchin.templates.validation.validators;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import java.io.Serializable; import java.io.Serializable;