Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace Apache Commons by native calls/Guava #883

Merged
merged 3 commits into from
Jul 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -184,13 +184,9 @@ dependencies {
implementation(libs.bitfire.vcard4android)

// third-party libs
implementation(libs.commons.collections)
@Suppress("RedundantSuppression")
implementation(libs.commons.io)
implementation(libs.commons.lang)
implementation(libs.commons.text)
@Suppress("RedundantSuppression")
implementation(libs.dnsjava)
implementation(libs.guava)
implementation(libs.mikepenz.aboutLibraries)
implementation(libs.nsk90.kstatemachine)
implementation(libs.okhttp.base)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import okhttp3.mockwebserver.Dispatcher
import okhttp3.mockwebserver.MockResponse
import okhttp3.mockwebserver.MockWebServer
import okhttp3.mockwebserver.RecordedRequest
import org.apache.commons.lang3.StringUtils
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
Expand Down Expand Up @@ -625,7 +624,7 @@ class CollectionListRefresherTest {
class TestDispatcher: Dispatcher() {

override fun dispatch(request: RecordedRequest): MockResponse {
val path = StringUtils.removeEnd(request.path!!, "/")
val path = request.path!!.trimEnd('/')

if (request.method.equals("PROPFIND", true)) {
val properties = when (path) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ package at.bitfire.davdroid.sync
import android.accounts.Account
import android.content.Context
import android.content.SyncResult
import android.text.format.Formatter
import at.bitfire.dav4jvm.DavCalendar
import at.bitfire.dav4jvm.MultiResponseCallback
import at.bitfire.dav4jvm.Response
Expand Down Expand Up @@ -42,7 +43,6 @@ import okhttp3.HttpUrl
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import org.apache.commons.io.FileUtils
import java.io.ByteArrayOutputStream
import java.io.Reader
import java.io.StringReader
Expand Down Expand Up @@ -97,7 +97,7 @@ class CalendarSyncManager @AssistedInject constructor(
it.propfind(0, MaxResourceSize.NAME, SupportedReportSet.NAME, GetCTag.NAME, SyncToken.NAME) { response, relation ->
if (relation == Response.HrefRelation.SELF) {
response[MaxResourceSize::class.java]?.maxSize?.let { maxSize ->
Logger.log.info("Calendar accepts events up to ${FileUtils.byteCountToDisplaySize(maxSize)}")
Logger.log.info("Calendar accepts events up to ${Formatter.formatFileSize(context, maxSize)}")
}

response[SupportedReportSet::class.java]?.let { supported ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import android.content.ContentResolver
import android.content.Context
import android.content.SyncResult
import android.os.Build
import android.text.format.Formatter
import at.bitfire.dav4jvm.DavAddressBook
import at.bitfire.dav4jvm.MultiResponseCallback
import at.bitfire.dav4jvm.Response
Expand Down Expand Up @@ -53,7 +54,6 @@ import okhttp3.MediaType
import okhttp3.Request
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import org.apache.commons.io.FileUtils
import java.io.ByteArrayOutputStream
import java.io.IOException
import java.io.Reader
Expand Down Expand Up @@ -168,7 +168,7 @@ class ContactsSyncManager @AssistedInject constructor(
it.propfind(0, MaxResourceSize.NAME, SupportedAddressData.NAME, SupportedReportSet.NAME, GetCTag.NAME, SyncToken.NAME) { response, relation ->
if (relation == Response.HrefRelation.SELF) {
response[MaxResourceSize::class.java]?.maxSize?.let { maxSize ->
Logger.log.info("Address book accepts vCards up to ${FileUtils.byteCountToDisplaySize(maxSize)}")
Logger.log.info("Address book accepts vCards up to ${Formatter.formatFileSize(context, maxSize)}")
}

response[SupportedAddressData::class.java]?.let { supported ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ package at.bitfire.davdroid.sync
import android.accounts.Account
import android.content.Context
import android.content.SyncResult
import android.text.format.Formatter
import at.bitfire.dav4jvm.DavCalendar
import at.bitfire.dav4jvm.MultiResponseCallback
import at.bitfire.dav4jvm.Response
Expand Down Expand Up @@ -36,7 +37,6 @@ import okhttp3.HttpUrl
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import org.apache.commons.io.FileUtils
import java.io.ByteArrayOutputStream
import java.io.Reader
import java.io.StringReader
Expand Down Expand Up @@ -81,7 +81,7 @@ class JtxSyncManager @AssistedInject constructor(
it.propfind(0, GetCTag.NAME, MaxResourceSize.NAME, SyncToken.NAME) { response, relation ->
if (relation == Response.HrefRelation.SELF) {
response[MaxResourceSize::class.java]?.maxSize?.let { maxSize ->
Logger.log.info("Collection accepts resources up to ${FileUtils.byteCountToDisplaySize(maxSize)}")
Logger.log.info("Collection accepts resources up to ${Formatter.formatFileSize(context, maxSize)}")
}

syncState = syncState(response)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ package at.bitfire.davdroid.sync
import android.accounts.Account
import android.content.Context
import android.content.SyncResult
import android.text.format.Formatter
import at.bitfire.dav4jvm.DavCalendar
import at.bitfire.dav4jvm.MultiResponseCallback
import at.bitfire.dav4jvm.Response
Expand Down Expand Up @@ -36,7 +37,6 @@ import okhttp3.HttpUrl
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import org.apache.commons.io.FileUtils
import java.io.ByteArrayOutputStream
import java.io.Reader
import java.io.StringReader
Expand Down Expand Up @@ -84,7 +84,7 @@ class TasksSyncManager @AssistedInject constructor(
it.propfind(0, MaxResourceSize.NAME, GetCTag.NAME, SyncToken.NAME) { response, relation ->
if (relation == Response.HrefRelation.SELF) {
response[MaxResourceSize::class.java]?.maxSize?.let { maxSize ->
Logger.log.info("Calendar accepts tasks up to ${FileUtils.byteCountToDisplaySize(maxSize)}")
Logger.log.info("Calendar accepts tasks up to ${Formatter.formatFileSize(context, maxSize)}")
}

syncState = syncState(response)
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/kotlin/at/bitfire/davdroid/ui/AboutActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ import dagger.hilt.android.AndroidEntryPoint
import dagger.hilt.android.components.ActivityComponent
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.apache.commons.io.IOUtils
import org.json.JSONObject
import java.text.Collator
import java.time.LocalDateTime
Expand Down Expand Up @@ -207,7 +206,7 @@ class AboutActivity: AppCompatActivity() {
val context = getApplication<Application>()
try {
context.resources.assets.open("translators.json").use { stream ->
val jsonTranslations = JSONObject(IOUtils.toString(stream, Charsets.UTF_8))
val jsonTranslations = JSONObject(stream.readBytes().decodeToString())
val result = LinkedList<Translation>()
for (langCode in jsonTranslations.keys()) {
val jsonTranslators = jsonTranslations.getJSONArray(langCode)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import at.bitfire.davdroid.BuildConfig
import at.bitfire.davdroid.R
import dagger.hilt.android.AndroidEntryPoint
import okhttp3.HttpUrl
import org.apache.commons.io.FileUtils
import org.apache.commons.lang3.StringUtils
import java.io.File

Expand Down Expand Up @@ -129,7 +128,7 @@ class DebugInfoActivity : AppCompatActivity() {
class IntentBuilder(context: Context) {

companion object {
const val MAX_ELEMENT_SIZE = 800 * FileUtils.ONE_KB.toInt()
const val MAX_ELEMENT_SIZE = 800 * 1024 // 800 kB
}

val intent = Intent(context, DebugInfoActivity::class.java)
Expand Down
26 changes: 10 additions & 16 deletions app/src/main/kotlin/at/bitfire/davdroid/ui/DebugInfoModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import android.os.StatFs
import android.provider.CalendarContract
import android.provider.ContactsContract
import android.text.format.DateUtils
import android.text.format.Formatter
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
Expand All @@ -48,20 +49,18 @@ import at.bitfire.davdroid.settings.SettingsManager
import at.bitfire.davdroid.sync.worker.BaseSyncWorker
import at.bitfire.ical4android.TaskProvider
import at.techbee.jtx.JtxContract
import com.google.common.io.ByteStreams
import com.google.common.io.Files
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.apache.commons.io.ByteOrderMark
import org.apache.commons.io.FileUtils
import org.apache.commons.io.IOUtils
import org.apache.commons.lang3.exception.ExceptionUtils
import org.dmfs.tasks.contract.TaskContract
import java.io.File
import java.io.IOException
import java.io.StringReader
import java.io.Writer
import java.util.TimeZone
import java.util.logging.Level
Expand Down Expand Up @@ -129,8 +128,8 @@ class DebugInfoModel @AssistedInject constructor(
if (details.logs != null) {
val file = File(debugDir, FILE_LOGS)
if (!file.exists() || file.canWrite()) {
file.writer().buffered().use { writer ->
IOUtils.copy(StringReader(details.logs), writer)
file.printWriter().use { writer ->
writer.write(details.logs)
}
uiState = uiState.copy(logFile = file)
} else
Expand Down Expand Up @@ -164,7 +163,6 @@ class DebugInfoModel @AssistedInject constructor(
private fun generateDebugInfo(syncAccount: Account?, syncAuthority: String?, cause: Throwable?, localResource: String?, remoteResource: String?) {
val debugInfoFile = File(Logger.debugDir(), FILE_DEBUG_INFO)
debugInfoFile.writer().buffered().use { writer ->
writer.append(ByteOrderMark.UTF_BOM)
writer.append("--- BEGIN DEBUG INFO ---\n\n")

// begin with most specific information
Expand Down Expand Up @@ -262,9 +260,9 @@ class DebugInfoModel @AssistedInject constructor(
val filesPath = Environment.getDataDirectory()
val statFs = StatFs(filesPath.path)
writer.append("Internal memory ($filesPath): ")
.append(FileUtils.byteCountToDisplaySize(statFs.availableBytes))
.append(Formatter.formatFileSize(context, statFs.availableBytes))
.append(" free of ")
.append(FileUtils.byteCountToDisplaySize(statFs.totalBytes))
.append(Formatter.formatFileSize(context, statFs.totalBytes))
.append("\n\n")

// power saving
Expand Down Expand Up @@ -431,26 +429,22 @@ class DebugInfoModel @AssistedInject constructor(
zip.setLevel(9)
uiState.debugInfo?.let { debugInfo ->
zip.putNextEntry(ZipEntry("debug-info.txt"))
debugInfo.inputStream().use {
IOUtils.copy(it, zip)
}
Files.copy(debugInfo, zip)
zip.closeEntry()
}

val logs = uiState.logFile
if (logs != null) {
// verbose logs available
zip.putNextEntry(ZipEntry(logs.name))
logs.inputStream().use {
IOUtils.copy(it, zip)
}
Files.copy(logs, zip)
zip.closeEntry()
} else {
// logcat (short logs)
try {
Runtime.getRuntime().exec("logcat -d").also { logcat ->
zip.putNextEntry(ZipEntry("logcat.txt"))
IOUtils.copy(logcat.inputStream, zip)
ByteStreams.copy(logcat.inputStream, zip)
}
} catch (e: Exception) {
Logger.log.log(Level.SEVERE, "Couldn't attach logcat", e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ import at.bitfire.davdroid.Constants
import at.bitfire.davdroid.Constants.withStatParams
import at.bitfire.davdroid.R
import at.bitfire.davdroid.ui.AppTheme
import org.apache.commons.text.WordUtils
import java.util.Locale

@Composable
Expand Down Expand Up @@ -154,7 +153,7 @@ fun BatteryOptimizationsPageContent(
Text(
text = stringResource(
R.string.intro_autostart_title,
WordUtils.capitalize(Build.MANUFACTURER)
Build.MANUFACTURER.replaceFirstChar { if (it.isLowerCase()) it.titlecase() else it.toString() }
),
style = MaterialTheme.typography.labelLarge,
modifier = Modifier.fillMaxWidth()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ package at.bitfire.davdroid.ui.webdav
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.FileUtils
import android.provider.DocumentsContract
import android.text.format.Formatter
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.foundation.layout.Arrangement
Expand Down Expand Up @@ -71,7 +73,6 @@ import at.bitfire.davdroid.ui.composable.ProgressBar
import at.bitfire.davdroid.ui.widget.ClickableTextWithLink
import at.bitfire.davdroid.util.DavUtils
import okhttp3.HttpUrl
import org.apache.commons.io.FileUtils

@Composable
fun WebdavMountsScreen(
Expand Down Expand Up @@ -295,11 +296,12 @@ fun WebdavMountsItem(
.fillMaxWidth()
.padding(vertical = 8.dp),
)
val context = LocalContext.current
Text(
text = stringResource(
R.string.webdav_mounts_quota_used_available,
FileUtils.byteCountToDisplaySize(quotaUsed),
FileUtils.byteCountToDisplaySize(quotaAvailable)
Formatter.formatFileSize(context, quotaUsed),
Formatter.formatFileSize(context, quotaAvailable)
),
modifier = Modifier.fillMaxWidth()
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import android.os.HandlerThread
import android.os.ProxyFileDescriptorCallback
import android.system.ErrnoException
import android.system.OsConstants
import android.text.format.Formatter
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import at.bitfire.dav4jvm.DavResource
Expand All @@ -35,7 +36,6 @@ import kotlinx.coroutines.runInterruptible
import okhttp3.Headers
import okhttp3.HttpUrl
import okhttp3.MediaType
import org.apache.commons.io.FileUtils
import ru.nsk.kstatemachine.event.Event
import ru.nsk.kstatemachine.state.State
import ru.nsk.kstatemachine.state.finalState
Expand Down Expand Up @@ -76,7 +76,7 @@ class RandomAccessCallback private constructor(
.setCategory(NotificationCompat.CATEGORY_STATUS)
.setContentTitle(context.getString(R.string.webdav_notification_access))
.setContentText(dav.fileName())
.setSubText(FileUtils.byteCountToDisplaySize(fileSize))
.setSubText(Formatter.formatFileSize(context, fileSize))
.setSmallIcon(R.drawable.ic_storage_notify)
.setOngoing(true)
private val notificationTag = url.toString()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ package at.bitfire.davdroid.webdav
import android.content.Context
import android.os.CancellationSignal
import android.os.ParcelFileDescriptor
import android.text.format.Formatter
import androidx.annotation.WorkerThread
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
Expand All @@ -27,7 +28,6 @@ import okhttp3.MediaType
import okhttp3.RequestBody
import okhttp3.internal.headersContentLength
import okio.BufferedSink
import org.apache.commons.io.FileUtils
import java.io.IOException
import java.util.logging.Level

Expand All @@ -45,7 +45,7 @@ class StreamingFileDescriptor(

companion object {
/** 1 MB transfer buffer */
private const val BUFFER_SIZE = FileUtils.ONE_MB.toInt()
private const val BUFFER_SIZE = 1024*1024
}

val dav = DavResource(client.okHttpClient, url)
Expand Down Expand Up @@ -123,7 +123,7 @@ class StreamingFileDescriptor(
)
else
// known file size
notification.setSubText(FileUtils.byteCountToDisplaySize(length))
notification.setSubText(Formatter.formatFileSize(context, length))

ParcelFileDescriptor.AutoCloseOutputStream(writeFd).use { output ->
val buffer = ByteArray(BUFFER_SIZE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
package at.bitfire.davdroid.webdav.cache

import at.bitfire.davdroid.log.Logger
import org.apache.commons.io.FileUtils
import java.io.File

/**
Expand Down Expand Up @@ -71,7 +70,9 @@ class DiskCache(

@Synchronized
fun clear() {
FileUtils.cleanDirectory(cacheDir)
cacheDir.listFiles()?.forEach { entry ->
entry.delete()
}
}

@Synchronized
Expand Down
Loading
Loading