Fix build project using Java 11

This commit is contained in:
Julian Raufelder 2021-05-17 17:01:09 +02:00
parent 5192194cf7
commit bb07076ba8
No known key found for this signature in database
GPG Key ID: 17EE71F6634E381D
17 changed files with 43 additions and 51 deletions

View File

@ -15,6 +15,6 @@ jobs:
fetch-depth: 0
- uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- name: Build and Test
run: bash ./gradlew clean test --stacktrace

View File

@ -31,6 +31,7 @@
</option>
<option name="NAME_COUNT_TO_USE_STAR_IMPORT" value="999" />
<option name="NAME_COUNT_TO_USE_STAR_IMPORT_FOR_MEMBERS" value="999" />
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>
<Properties>
<option name="KEEP_BLANK_LINES" value="true" />
@ -178,6 +179,7 @@
</arrangement>
</codeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
<indentOptions>
<option name="USE_TAB_CHARACTER" value="true" />

2
.idea/misc.xml generated
View File

@ -45,7 +45,7 @@
</value>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="JDK" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">

View File

@ -3,6 +3,7 @@
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />

View File

@ -19,7 +19,7 @@ Cryptomator for Android is currently available in the following distribution ch
### Dependencies
* Git
* JDK 8
* JDK 11
* Gradle
### Run Git and Gradle

View File

@ -1,18 +1,16 @@
apply from: 'buildsystem/ci.gradle'
apply from: 'buildsystem/dependencies.gradle'
apply plugin: "com.vanniktech.android.junit.jacoco"
buildscript {
ext.kotlin_version = '1.4.32'
ext.kotlin_version = '1.5.0'
repositories {
jcenter()
mavenCentral()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.3'
classpath 'com.android.tools.build:gradle:4.2.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'
classpath 'com.fernandocejas.frodo:frodo-plugin:0.8.3'
classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.16.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "de.mannodermaus.gradle.plugins:android-junit5:1.7.1.1"

View File

@ -1,13 +0,0 @@
def ciServer = 'TRAVIS'
def executingOnCI = "true" == System.getenv(ciServer)
// Since for CI we always do full clean builds, we don't want to pre-dex
// See http://tools.android.com/tech-docs/new-build-system/tips
subprojects {
project.plugins.whenPluginAdded { plugin ->
if ('com.android.build.gradle.AppPlugin' == plugin.class.name ||
'com.android.build.gradle.LibraryPlugin' == plugin.class.name) {
project.android.dexOptions.preDexLibraries = !executingOnCI
}
}
}

View File

@ -5,7 +5,7 @@ allprojects {
}
ext {
androidBuildToolsVersion = "29.0.3"
androidBuildToolsVersion = "30.0.2"
androidMinSdkVersion = 24
androidTargetSdkVersion = 29
androidCompileSdkVersion = 29

View File

@ -114,7 +114,7 @@ dependencies {
implementation dependencies.msgraph
implementation dependencies.stax
compile dependencies.minIo
api dependencies.minIo
playstoreImplementation dependencies.googlePlayServicesAuth
apkstoreImplementation dependencies.googlePlayServicesAuth

View File

@ -1,5 +1,6 @@
#Wed May 12 18:12:25 CEST 2021
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-bin.zip
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

View File

@ -122,7 +122,7 @@ class BrowseFilesPresenter @Inject constructor( //
.withVault(vault.toVault()) //
.run(DefaultResultHandler())
}
setRefreshOnBackpressEnabled(enableRefreshOnBackpressSupplier.setInAction(false))
setRefreshOnBackPressEnabled(enableRefreshOnBackpressSupplier.setInAction(false))
}
fun onWindowFocusChanged(hasFocus: Boolean) {
@ -967,7 +967,7 @@ class BrowseFilesPresenter @Inject constructor( //
@Callback
fun moveNodes(result: ActivityResult, nodesToMove: ArrayList<CloudNodeModel<*>>) {
setRefreshOnBackpressEnabled(enableRefreshOnBackpressSupplier.setInAction(true))
setRefreshOnBackPressEnabled(enableRefreshOnBackpressSupplier.setInAction(true))
val targetFolder = result.getSingleResult(CloudFolderModel::class.java)
moveCloudFile(targetFolder, nodesFor(nodesToMove, CloudFileModel::class) as List<CloudFileModel>)
moveCloudFolder(targetFolder, nodesFor(nodesToMove, CloudFolderModel::class) as List<CloudFolderModel>)
@ -975,7 +975,7 @@ class BrowseFilesPresenter @Inject constructor( //
}
fun disableSelectionMode() {
setRefreshOnBackpressEnabled(enableRefreshOnBackpressSupplier.setInSelectionMode(false))
setRefreshOnBackPressEnabled(enableRefreshOnBackpressSupplier.setInSelectionMode(false))
view?.disableSelectionMode()
}
@ -1054,7 +1054,7 @@ class BrowseFilesPresenter @Inject constructor( //
}
fun onSelectionModeActivated() {
setRefreshOnBackpressEnabled(enableRefreshOnBackpressSupplier.setInSelectionMode(true))
setRefreshOnBackPressEnabled(enableRefreshOnBackpressSupplier.setInSelectionMode(true))
view?.enableSelectionMode()
}

View File

@ -30,7 +30,7 @@ abstract class Presenter<V : View> protected constructor(private val exceptionMa
var isPaused = false
private set
private var refreshOnBackpressEnabled = Supplier { true }
private var refreshOnBackPressEnabled = Supplier { true }
var view: V? = null
set(value) {
@ -241,9 +241,9 @@ abstract class Presenter<V : View> protected constructor(private val exceptionMa
val result = arrayOfNulls<String>(permissions.size)
var numberMissing = 0
permissions
.asSequence()
.filter { ContextCompat.checkSelfPermission(activity(), it) != PackageManager.PERMISSION_GRANTED }
.forEach { result[numberMissing++] = it }
.asSequence()
.filter { ContextCompat.checkSelfPermission(activity(), it) != PackageManager.PERMISSION_GRANTED }
.forEach { result[numberMissing++] = it }
return result.copyOfRange(0, numberMissing)
}
@ -314,12 +314,12 @@ abstract class Presenter<V : View> protected constructor(private val exceptionMa
Timber.tag("PresenterLifecycle").d("$method $this")
}
fun setRefreshOnBackpressEnabled(refreshOnBackpressEnabled: BrowseFilesPresenter.RefreshSupplier) {
this.refreshOnBackpressEnabled = refreshOnBackpressEnabled
fun setRefreshOnBackPressEnabled(refreshOnBackPressEnabled: BrowseFilesPresenter.RefreshSupplier) {
this.refreshOnBackPressEnabled = refreshOnBackPressEnabled
}
fun isRefreshOnBackpressEnabled(): Boolean {
return refreshOnBackpressEnabled.get()
fun isRefreshOnBackPressEnabled(): Boolean {
return refreshOnBackPressEnabled.get()
}
companion object {

View File

@ -61,7 +61,7 @@ abstract class BaseFragment : Fragment() {
if (!created) {
loadContent()
} else {
if (presenter?.isRefreshOnBackpressEnabled() == true) {
if (presenter?.isRefreshOnBackPressEnabled() == true) {
loadContentSilent()
}
}

View File

@ -16,6 +16,7 @@ import org.cryptomator.presentation.model.CloudFolderModel;
import org.cryptomator.presentation.model.CloudModel;
import org.cryptomator.presentation.model.ProgressModel;
import org.cryptomator.presentation.model.mappers.CloudModelMapper;
import org.cryptomator.presentation.presenter.ChooseCloudServicePresenter;
import org.cryptomator.presentation.presenter.VaultListPresenter;
import java.io.Serializable;
@ -75,7 +76,7 @@ public class AddExistingVaultWorkflow extends Workflow<AddExistingVaultWorkflow.
presenter().getView().showProgress(ProgressModel.GENERIC);
getRootFolderUseCase //
.withCloud(cloud.toCloud()) //
.run(presenter().new ProgressCompletingResultHandler<CloudFolder>() {
.run(((ChooseCloudServicePresenter) presenter()).new ProgressCompletingResultHandler<CloudFolder>() {
@Override
public void onSuccess(CloudFolder cloudFolder) {
state().cloudRoot = cloudFolder;
@ -123,7 +124,7 @@ public class AddExistingVaultWorkflow extends Workflow<AddExistingVaultWorkflow.
@Override
void completed() {
presenter().getView().showProgress(ProgressModel.GENERIC);
getVaultListUseCase.run(presenter().new ProgressCompletingResultHandler<List<Vault>>() {
getVaultListUseCase.run(((VaultListPresenter) presenter()).new ProgressCompletingResultHandler<List<Vault>>() {
@Override
public void onSuccess(List<Vault> vaults) {
saveVaultUseCase//
@ -132,7 +133,7 @@ public class AddExistingVaultWorkflow extends Workflow<AddExistingVaultWorkflow.
.withPosition(vaults.size()) //
.thatIsNew() //
.build()) //
.run(presenter().new ProgressCompletingResultHandler<Vault>() {
.run(((VaultListPresenter) presenter()).new ProgressCompletingResultHandler<Vault>() {
@Override
public void onSuccess(Vault vault) {
((VaultListPresenter) presenter()).onAddOrCreateVaultCompleted(vault);

View File

@ -12,6 +12,7 @@ import org.cryptomator.presentation.model.CloudFolderModel;
import org.cryptomator.presentation.model.CloudModel;
import org.cryptomator.presentation.model.ProgressModel;
import org.cryptomator.presentation.model.mappers.CloudModelMapper;
import org.cryptomator.presentation.presenter.ChooseCloudServicePresenter;
import org.cryptomator.presentation.presenter.VaultListPresenter;
import java.io.Serializable;
@ -63,7 +64,7 @@ public class CreateNewVaultWorkflow extends Workflow<CreateNewVaultWorkflow.Stat
presenter().getView().showProgress(ProgressModel.GENERIC);
getRootFolderUseCase //
.withCloud(cloud.toCloud()) //
.run(presenter().new ProgressCompletingResultHandler<CloudFolder>() {
.run(((ChooseCloudServicePresenter) presenter()).new ProgressCompletingResultHandler<CloudFolder>() {
@Override
public void onSuccess(CloudFolder cloudFolder) {
state().cloudRoot = cloudFolder;
@ -122,7 +123,7 @@ public class CreateNewVaultWorkflow extends Workflow<CreateNewVaultWorkflow.Stat
.withVaultName(state().name) //
.andPassword(state().password) //
.andFolder(state().location) //
.run(presenter().new ProgressCompletingResultHandler<Vault>() {
.run(((VaultListPresenter) presenter()).new ProgressCompletingResultHandler<Vault>() {
@Override
public void onSuccess(Vault vault) {
((VaultListPresenter) presenter()).onAddOrCreateVaultCompleted(vault);

View File

@ -22,7 +22,7 @@ public abstract class Workflow<State extends Serializable> {
private Class<? extends Activity> activityClass;
private BoundCallback callback;
private Presenter<?> presenter;
private Presenter presenter;
private boolean running;
Workflow(State state) {
@ -36,11 +36,10 @@ public abstract class Workflow<State extends Serializable> {
abstract void doStart();
public void setup(Presenter<?> presenter, Intent intent) {
public void setup(Presenter presenter, Intent intent) {
this.presenter = presenter;
setStateFrom(intent);
}
private boolean setStateFrom(Intent intent) {
Serializable stateExtra = intent.getSerializableExtra(WORKFLOW_STATE_EXTRA);
Serializable callbackExtra = intent.getSerializableExtra(WORKFLOW_CALLBACK_EXTRA);
@ -55,7 +54,7 @@ public abstract class Workflow<State extends Serializable> {
return false;
}
Presenter<?> presenter() {
Presenter presenter() {
if (presenter == null) {
throw new IllegalStateException("Presenter not set");
}

View File

@ -1,20 +1,22 @@
package org.cryptomator.util.file
import org.cryptomator.util.Optional
import java.util.Locale
import javax.inject.Inject
class MimeTypes @Inject constructor(private val mimeTypeMap: MimeTypeMap) {
fun fromExtension(fileExtension: String): Optional<MimeType> {
val mimeType = mimeTypeMap.getMimeTypeFromExtension(fileExtension.toLowerCase(Locale.getDefault()))
?: return Optional.empty()
val mimeType = mimeTypeMap.getMimeTypeFromExtension(fileExtension.lowercase())
?: return Optional.empty()
val firstSlash = mimeType.indexOf('/')
return if (firstSlash == -1) {
Optional.empty()
} else Optional.of(MimeType( //
} else Optional.of(
MimeType( //
mimeType.substring(0, firstSlash), //
mimeType.substring(firstSlash + 1)))
mimeType.substring(firstSlash + 1)
)
)
}
fun fromFilename(filename: String): Optional<MimeType> {