Skip to content

Commit e28da6b

Browse files
committed
fix: ILogger.Priority deserialization issues due to r8's enum unboxing
1 parent fcefb13 commit e28da6b

6 files changed

Lines changed: 51 additions & 11 deletions

File tree

app/src/main/java/com/itsaky/androidide/services/builder/GradleBuildService.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import com.itsaky.androidide.BuildConfig
2929
import com.itsaky.androidide.app.BaseApplication
3030
import com.itsaky.androidide.lookup.Lookup
3131
import com.itsaky.androidide.managers.ToolsManager
32-
import com.itsaky.androidide.models.LogLine
3332
import com.itsaky.androidide.preferences.internal.isBuildCacheEnabled
3433
import com.itsaky.androidide.preferences.internal.isDebugEnabled
3534
import com.itsaky.androidide.preferences.internal.isInfoEnabled
@@ -51,13 +50,15 @@ import com.itsaky.androidide.tooling.api.IToolingApiClient
5150
import com.itsaky.androidide.tooling.api.IToolingApiServer
5251
import com.itsaky.androidide.tooling.api.LogSenderConfig.PROPERTY_LOGSENDER_ENABLED
5352
import com.itsaky.androidide.tooling.api.messages.InitializeProjectParams
53+
import com.itsaky.androidide.tooling.api.messages.LogMessageParams
5454
import com.itsaky.androidide.tooling.api.messages.TaskExecutionMessage
5555
import com.itsaky.androidide.tooling.api.messages.result.BuildCancellationRequestResult
5656
import com.itsaky.androidide.tooling.api.messages.result.BuildInfo
5757
import com.itsaky.androidide.tooling.api.messages.result.BuildResult
5858
import com.itsaky.androidide.tooling.api.messages.result.GradleWrapperCheckResult
5959
import com.itsaky.androidide.tooling.api.messages.result.InitializeResult
6060
import com.itsaky.androidide.tooling.api.messages.result.TaskExecutionResult
61+
import com.itsaky.androidide.tooling.api.messages.toLogLine
6162
import com.itsaky.androidide.tooling.events.ProgressEvent
6263
import com.itsaky.androidide.utils.Environment
6364
import com.itsaky.androidide.utils.ILogger
@@ -233,7 +234,8 @@ class GradleBuildService : Service(), BuildService, IToolingApiClient,
233234
return _toolingApiClient!!
234235
}
235236

236-
override fun logMessage(line: LogLine) {
237+
override fun logMessage(params: LogMessageParams) {
238+
val line = params.toLogLine()
237239
serverLogger.log(line.priority, line.formattedTagAndMessage())
238240
}
239241

subprojects/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/Main.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import com.itsaky.androidide.models.LogLine;
2323
import com.itsaky.androidide.tooling.api.IToolingApiClient;
24+
import com.itsaky.androidide.tooling.api.messages.LogMessageParams;
2425
import com.itsaky.androidide.tooling.api.util.ToolingApiLauncher;
2526
import com.itsaky.androidide.tooling.impl.internal.ProjectImpl;
2627
import com.itsaky.androidide.tooling.impl.progress.ForwardingProgressListener;
@@ -126,7 +127,7 @@ public static void finalizeLauncher(ConfigurableLauncher<?> launcher) {
126127

127128
private static void onLog(Priority priority, String tag, String message) {
128129
if (client != null) {
129-
client.logMessage(LogLine.obtain(priority, tag, message));
130+
client.logMessage(new LogMessageParams(priority.priorityChar, tag, message));
130131
}
131132
}
132133

subprojects/tooling-api/src/main/java/com/itsaky/androidide/tooling/api/ForwardingToolingApiClient.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
package com.itsaky.androidide.tooling.api
1919

20-
import com.itsaky.androidide.models.LogLine
20+
import com.itsaky.androidide.tooling.api.messages.LogMessageParams
2121
import com.itsaky.androidide.tooling.api.messages.result.BuildInfo
2222
import com.itsaky.androidide.tooling.api.messages.result.BuildResult
2323
import com.itsaky.androidide.tooling.api.messages.result.GradleWrapperCheckResult
@@ -31,8 +31,8 @@ import java.util.concurrent.CompletableFuture
3131
*/
3232
class ForwardingToolingApiClient(var client: IToolingApiClient?) : IToolingApiClient {
3333

34-
override fun logMessage(line: LogLine) {
35-
client?.logMessage(line)
34+
override fun logMessage(params: LogMessageParams) {
35+
client?.logMessage(params)
3636
}
3737

3838
override fun logOutput(line: String) {

subprojects/tooling-api/src/main/java/com/itsaky/androidide/tooling/api/IToolingApiClient.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
package com.itsaky.androidide.tooling.api
1919

20-
import com.itsaky.androidide.models.LogLine
20+
import com.itsaky.androidide.tooling.api.messages.LogMessageParams
2121
import com.itsaky.androidide.tooling.api.messages.result.BuildInfo
2222
import com.itsaky.androidide.tooling.api.messages.result.BuildResult
2323
import com.itsaky.androidide.tooling.api.messages.result.GradleWrapperCheckResult
@@ -38,9 +38,9 @@ interface IToolingApiClient {
3838
/**
3939
* Log the given log message.
4040
*
41-
* @param line The [LogLine] to log.
41+
* @param params The parameters to log the message.
4242
*/
43-
@JsonNotification fun logMessage(line: LogLine)
43+
@JsonNotification fun logMessage(params: LogMessageParams)
4444

4545
/**
4646
* Log the build output received from Gradle.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* This file is part of AndroidIDE.
3+
*
4+
* AndroidIDE is free software: you can redistribute it and/or modify
5+
* it under the terms of the GNU General Public License as published by
6+
* the Free Software Foundation, either version 3 of the License, or
7+
* (at your option) any later version.
8+
*
9+
* AndroidIDE is distributed in the hope that it will be useful,
10+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
* GNU General Public License for more details.
13+
*
14+
* You should have received a copy of the GNU General Public License
15+
* along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
16+
*/
17+
18+
package com.itsaky.androidide.tooling.api.messages
19+
20+
import com.itsaky.androidide.models.LogLine
21+
import com.itsaky.androidide.utils.ILogger
22+
23+
/**
24+
* Parameters for sending a log message from the tooling API to the IDE.
25+
*
26+
* @author Akash Yadav
27+
*/
28+
data class LogMessageParams(val level: Char, val tag: String, val message: String)
29+
30+
/**
31+
* Creates a new [LogLine] instance from this [LogMessageParams].
32+
*/
33+
fun LogMessageParams.toLogLine(): LogLine {
34+
return LogLine.obtain(ILogger.Priority.forChar(level), tag, message)
35+
}

testing/tooling/src/main/java/com/itsaky/androidide/tooling/testing/ToolingApiTestLauncher.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,17 @@
1717

1818
package com.itsaky.androidide.tooling.testing
1919

20-
import com.itsaky.androidide.models.LogLine
2120
import com.itsaky.androidide.tooling.api.IProject
2221
import com.itsaky.androidide.tooling.api.IToolingApiClient
2322
import com.itsaky.androidide.tooling.api.IToolingApiServer
2423
import com.itsaky.androidide.tooling.api.messages.GradleDistributionParams
2524
import com.itsaky.androidide.tooling.api.messages.InitializeProjectParams
25+
import com.itsaky.androidide.tooling.api.messages.LogMessageParams
2626
import com.itsaky.androidide.tooling.api.messages.result.BuildInfo
2727
import com.itsaky.androidide.tooling.api.messages.result.BuildResult
2828
import com.itsaky.androidide.tooling.api.messages.result.GradleWrapperCheckResult
2929
import com.itsaky.androidide.tooling.api.messages.result.InitializeResult
30+
import com.itsaky.androidide.tooling.api.messages.toLogLine
3031
import com.itsaky.androidide.tooling.api.util.ToolingApiLauncher
3132
import com.itsaky.androidide.tooling.events.ProgressEvent
3233
import com.itsaky.androidide.utils.FileProvider
@@ -150,7 +151,8 @@ class ToolingApiTestLauncher {
150151
"DO NOT EDIT - Automatically generated file"
151152
}
152153

153-
override fun logMessage(line: LogLine) {
154+
override fun logMessage(params: LogMessageParams) {
155+
val line = params.toLogLine()
154156
log.log(line.priority, line.formattedTagAndMessage())
155157
}
156158

0 commit comments

Comments
 (0)