Reduced the number of build progress events received from Tooling API

This commit is contained in:
Akash Yadav
2022-10-27 18:24:07 +05:30
parent e764c7eac7
commit 700c0347e2
8 changed files with 27 additions and 19 deletions
Binary file not shown.
@@ -18,12 +18,12 @@
package com.itsaky.androidide.handlers
import com.itsaky.androidide.EditorActivity
import com.itsaky.androidide.resources.R.string
import com.itsaky.androidide.preferences.internal.isFirstBuild
import com.itsaky.androidide.resources.R.string
import com.itsaky.androidide.services.GradleBuildService
import com.itsaky.androidide.tooling.events.ProgressEvent
import com.itsaky.androidide.tooling.events.download.FileDownloadFinishEvent
import com.itsaky.androidide.tooling.events.task.TaskProgressEvent
import com.itsaky.androidide.tooling.events.configuration.ProjectConfigurationStartEvent
import com.itsaky.androidide.tooling.events.task.TaskStartEvent
import com.itsaky.androidide.utils.ILogger
import java.lang.ref.WeakReference
@@ -64,10 +64,8 @@ class EditorEventListener : GradleBuildService.EventListener {
}
override fun onProgressEvent(event: ProgressEvent) {
if (event is FileDownloadFinishEvent) {
activity().setStatus("")
} else if (event is TaskProgressEvent) {
activity().setStatus(activity().getString(string.msg_running_task, event.descriptor.taskPath))
if (event is ProjectConfigurationStartEvent || event is TaskStartEvent) {
activity().setStatus(event.descriptor.displayName)
}
}
@@ -45,12 +45,12 @@ import com.blankj.utilcode.util.ResourceUtils;
import com.blankj.utilcode.util.ThreadUtils;
import com.blankj.utilcode.util.ZipUtils;
import com.itsaky.androidide.BuildConfig;
import com.itsaky.androidide.resources.R;
import com.itsaky.androidide.app.BaseApplication;
import com.itsaky.androidide.lookup.Lookup;
import com.itsaky.androidide.models.LogLine;
import com.itsaky.androidide.projects.ProjectManager;
import com.itsaky.androidide.projects.builder.BuildService;
import com.itsaky.androidide.resources.R;
import com.itsaky.androidide.shell.CommonProcessExecutor;
import com.itsaky.androidide.shell.ProcessStreamsHolder;
import com.itsaky.androidide.tooling.api.IProject;
@@ -65,6 +65,8 @@ import com.itsaky.androidide.tooling.api.messages.result.InitializeResult;
import com.itsaky.androidide.tooling.api.messages.result.TaskExecutionResult;
import com.itsaky.androidide.tooling.api.util.ToolingApiLauncher;
import com.itsaky.androidide.tooling.events.ProgressEvent;
import com.itsaky.androidide.tooling.events.configuration.ProjectConfigurationStartEvent;
import com.itsaky.androidide.tooling.events.task.TaskStartEvent;
import com.itsaky.androidide.utils.Environment;
import com.itsaky.androidide.utils.ILogger;
import com.itsaky.androidide.utils.InputStreamLineReader;
@@ -146,7 +148,6 @@ public class GradleBuildService extends Service implements BuildService, IToolin
public void onDestroy() {
LOG.info("Service is being destroyed.", "Dismissing the shown notification...");
notificationManager.cancel(NOTIFICATION_ID);
if (server != null) {
server.cancelCurrentBuild();
server.shutdown();
@@ -17,7 +17,6 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:nestedScrollingEnabled="true">
@@ -40,9 +39,9 @@
android:layout_height="wrap_content"
android:layout_alignTop="@+id/exec"
android:layout_alignBottom="@+id/exec"
android:layout_alignParentStart="true"
android:layout_marginStart="16dp"
android:layout_marginTop="-8dp"
android:layout_marginBottom="1dp"
android:layout_toStartOf="@id/exec"
android:gravity="center_vertical"
android:text="@string/title_run_tasks"
android:textAppearance="@style/TextAppearance.Material3.ActionBar.Title" />
@@ -29,10 +29,14 @@ import com.itsaky.androidide.utils.ILogger;
import com.itsaky.androidide.utils.JvmLogger;
import org.gradle.tooling.ConfigurableLauncher;
import org.gradle.tooling.events.OperationType;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
@@ -87,8 +91,7 @@ public class Main {
launcher.setStandardError(out);
launcher.setStandardOutput(out);
launcher.setStandardInput(new ByteArrayInputStream("NoOp".getBytes(StandardCharsets.UTF_8)));
launcher.addProgressListener(new ForwardingProgressListener());
launcher.addProgressListener(new ForwardingProgressListener(), progressUpdateTypes());
if (client != null) {
try {
@@ -109,4 +112,14 @@ public class Main {
client.logMessage(line);
}
}
public static Set<OperationType> progressUpdateTypes() {
final Set<OperationType> types = new HashSet<>();
// AndroidIDE currently does not handle any other type of events
types.add(OperationType.TASK);
types.add(OperationType.PROJECT_CONFIGURATION);
return types;
}
}
@@ -39,10 +39,11 @@ import com.itsaky.androidide.tooling.api.messages.result.TaskExecutionResult.Fai
import com.itsaky.androidide.tooling.api.messages.result.TaskExecutionResult.Failure.UNSUPPORTED_GRADLE_VERSION
import com.itsaky.androidide.tooling.api.model.IdeGradleProject
import com.itsaky.androidide.tooling.impl.model.InternalForwardingProject
import com.itsaky.androidide.tooling.impl.progress.ForwardingProgressListener
import com.itsaky.androidide.tooling.impl.util.ProjectReader
import com.itsaky.androidide.tooling.impl.util.StopWatch
import com.itsaky.androidide.utils.ILogger
import java.io.File
import java.util.concurrent.*
import org.eclipse.lsp4j.jsonrpc.CompletableFutures
import org.gradle.tooling.BuildCancelledException
import org.gradle.tooling.BuildException
@@ -52,8 +53,6 @@ import org.gradle.tooling.GradleConnector
import org.gradle.tooling.UnsupportedVersionException
import org.gradle.tooling.exceptions.UnsupportedBuildArgumentException
import org.gradle.tooling.exceptions.UnsupportedOperationConfigurationException
import java.io.File
import java.util.concurrent.*
/**
* Implementation for the Gradle Tooling API server.
@@ -160,7 +159,6 @@ internal class ToolingApiServerImpl(private val forwardingProject: InternalForwa
val connection = this.connector!!.connect()
val builder = connection.newBuild()
builder.addProgressListener(ForwardingProgressListener())
// System.in and System.out are used for communication between this server and the
// client.
@@ -393,7 +393,6 @@ public class ProjectReader {
for (Object msg : messages) {
sb.append(msg instanceof Throwable ? "\n" : MSG_SEPARATOR);
sb.append(msg instanceof Throwable ? LogUtils.getFullStackTrace(((Throwable) msg)) : msg);
sb.append(msg instanceof Throwable ? "\n" : MSG_SEPARATOR);
}
return sb.toString();
Binary file not shown.