From da0fac08ef4b09b46115b51e9911b460b43bdc59 Mon Sep 17 00:00:00 2001 From: MohitMali Date: Fri, 2 Sep 2022 16:08:08 +0530 Subject: [PATCH] Convert ViewModelFactory.java into kotlin --- .../kiwixmobile/core/ViewModelFactory.java | 57 ------------------- .../kiwixmobile/core/ViewModelFactory.kt | 48 ++++++++++++++++ 2 files changed, 48 insertions(+), 57 deletions(-) delete mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/ViewModelFactory.java create mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/ViewModelFactory.kt diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/ViewModelFactory.java b/core/src/main/java/org/kiwix/kiwixmobile/core/ViewModelFactory.java deleted file mode 100644 index b24e7f26a..000000000 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/ViewModelFactory.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Kiwix Android - * Copyright (c) 2019 Kiwix - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -package org.kiwix.kiwixmobile.core; - -import androidx.lifecycle.ViewModel; -import androidx.lifecycle.ViewModelProvider; -import java.util.Map; -import javax.inject.Inject; -import javax.inject.Provider; - -public class ViewModelFactory implements ViewModelProvider.Factory { - private final Map, Provider> creators; - - @Inject - public ViewModelFactory( - Map, Provider> creators) { - this.creators = creators; - } - - @SuppressWarnings("unchecked") - @Override - public T create(Class modelClass) { - Provider creator = creators.get(modelClass); - if (creator == null) { - for (Map.Entry, Provider> entry : creators.entrySet()) { - if (modelClass.isAssignableFrom(entry.getKey())) { - creator = entry.getValue(); - break; - } - } - } - if (creator == null) { - throw new IllegalArgumentException("unknown model class " + modelClass); - } - try { - return (T) creator.get(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } -} diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/ViewModelFactory.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/ViewModelFactory.kt new file mode 100644 index 000000000..d9c8c9038 --- /dev/null +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/ViewModelFactory.kt @@ -0,0 +1,48 @@ +/* + * Kiwix Android + * Copyright (c) 2022 Kiwix + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +package org.kiwix.kiwixmobile.core + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import javax.inject.Inject +import javax.inject.Provider + +open class ViewModelFactory @Inject constructor( + private val creators: Map, @JvmSuppressWildcards Provider> +) : ViewModelProvider.Factory { + + @Suppress("TooGenericExceptionCaught", "TooGenericExceptionThrown") + override fun create(modelClass: Class): T { + var creator: Provider? = creators[modelClass] + if (creator == null) { + for ((key, value) in creators) { + if (modelClass.isAssignableFrom(key)) { + creator = value + break + } + } + } + requireNotNull(creator) { "unknown model class $modelClass" } + return try { + creator.get() as T + } catch (e: Exception) { + throw RuntimeException(e) + } + } +}