diff --git a/app/src/main/assets/data/common/tooling-api-all.jar b/app/src/main/assets/data/common/tooling-api-all.jar
index 14b2c4726..12b637b10 100644
Binary files a/app/src/main/assets/data/common/tooling-api-all.jar and b/app/src/main/assets/data/common/tooling-api-all.jar differ
diff --git a/build-tools/builder-model-impl/src/main/java/com/itsaky/androidide/builder/model/DefaultJavaCompileOptions.kt b/build-tools/builder-model-impl/src/main/java/com/itsaky/androidide/builder/model/DefaultJavaCompileOptions.kt
index 5f38fa966..f2473497a 100644
--- a/build-tools/builder-model-impl/src/main/java/com/itsaky/androidide/builder/model/DefaultJavaCompileOptions.kt
+++ b/build-tools/builder-model-impl/src/main/java/com/itsaky/androidide/builder/model/DefaultJavaCompileOptions.kt
@@ -21,10 +21,23 @@ import com.android.builder.model.v2.ide.JavaCompileOptions
import java.io.Serializable
/** @author Akash Yadav */
-class DefaultJavaCompileOptions : JavaCompileOptions, Serializable {
+class DefaultJavaCompileOptions : IJavaCompilerSettings(), JavaCompileOptions, Serializable {
private val serialVersionUID = 1L
override var encoding: String = ""
override var isCoreLibraryDesugaringEnabled: Boolean = false
+
override var sourceCompatibility: String = ""
+ set(value) {
+ field = value
+ javaSourceVersion = value
+ }
+
override var targetCompatibility: String = ""
+ set(value) {
+ field = value
+ javaBytecodeVersion = value
+ }
+
+ override var javaSourceVersion: String = sourceCompatibility
+ override var javaBytecodeVersion: String = targetCompatibility
}
diff --git a/build-tools/builder-model-impl/src/main/java/com/itsaky/androidide/builder/model/IJavaCompilerSettings.kt b/build-tools/builder-model-impl/src/main/java/com/itsaky/androidide/builder/model/IJavaCompilerSettings.kt
new file mode 100644
index 000000000..45cd26e3b
--- /dev/null
+++ b/build-tools/builder-model-impl/src/main/java/com/itsaky/androidide/builder/model/IJavaCompilerSettings.kt
@@ -0,0 +1,34 @@
+/*
+ * This file is part of AndroidIDE.
+ *
+ * AndroidIDE 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.
+ *
+ * AndroidIDE 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 AndroidIDE. If not, see .
+ */
+
+package com.itsaky.androidide.builder.model
+
+/**
+ * Java compilation settings for both, Android and Java modules.
+ *
+ * @author Akash Yadav
+ */
+abstract class IJavaCompilerSettings {
+
+ private val gsonType: String = javaClass.name
+
+ /** Source java version. */
+ abstract val javaSourceVersion: String
+
+ /** Target java version. */
+ abstract val javaBytecodeVersion: String
+}
diff --git a/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/ProjectReader.java b/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/ProjectReader.java
index e609a402c..8b9f7a3ce 100644
--- a/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/ProjectReader.java
+++ b/build-tools/tooling-api-impl/src/main/java/com/itsaky/androidide/tooling/impl/util/ProjectReader.java
@@ -30,12 +30,14 @@ import com.android.builder.model.v2.models.VariantDependencies;
import com.android.builder.model.v2.models.Versions;
import com.itsaky.androidide.builder.model.DefaultLibrary;
import com.itsaky.androidide.builder.model.DefaultProjectSyncIssues;
+import com.itsaky.androidide.builder.model.IJavaCompilerSettings;
import com.itsaky.androidide.tooling.api.model.AndroidModule;
import com.itsaky.androidide.tooling.api.model.GradleArtifact;
import com.itsaky.androidide.tooling.api.model.GradleTask;
import com.itsaky.androidide.tooling.api.model.IdeGradleProject;
import com.itsaky.androidide.tooling.api.model.JavaContentRoot;
import com.itsaky.androidide.tooling.api.model.JavaModule;
+import com.itsaky.androidide.tooling.api.model.JavaModuleCompilerSettings;
import com.itsaky.androidide.tooling.api.model.JavaModuleDependency;
import com.itsaky.androidide.tooling.api.model.JavaModuleExternalDependency;
import com.itsaky.androidide.tooling.api.model.JavaModuleProjectDependency;
@@ -46,6 +48,7 @@ import com.itsaky.androidide.tooling.impl.Main;
import com.itsaky.androidide.utils.ILogger;
import com.itsaky.androidide.utils.LogUtils;
+import org.gradle.api.JavaVersion;
import org.gradle.tooling.BuildController;
import org.gradle.tooling.ConfigurableLauncher;
import org.gradle.tooling.ProjectConnection;
@@ -177,13 +180,15 @@ public class ProjectReader {
private static IdeGradleProject buildModuleProject(
BuildController controller,
+ final IdeaProject ideaProject,
IdeaModule ideaModule,
Map outIssues) {
- return buildModuleProject(controller, ideaModule, outIssues, false);
+ return buildModuleProject(controller, ideaProject, ideaModule, outIssues, false);
}
private static IdeGradleProject buildModuleProject(
BuildController controller,
+ final IdeaProject ideaProject,
IdeaModule ideaModule,
Map outIssues,
boolean androidOnly) {
@@ -213,7 +218,7 @@ public class ProjectReader {
error.printStackTrace();
}
- return buildJavaModuleProject(gradle, ideaModule);
+ return buildJavaModuleProject(gradle, ideaProject, ideaModule);
} catch (Throwable e) {
log("Unable to create model for project");
e.printStackTrace();
@@ -280,7 +285,8 @@ public class ProjectReader {
return new ModelInfoContainer(module, syncIssues);
}
- private static JavaModule buildJavaModuleProject(GradleProject gradle, IdeaModule idea) {
+ private static JavaModule buildJavaModuleProject(
+ GradleProject gradle, final IdeaProject ideaProject, IdeaModule idea) {
final var builder = new ProjectBuilder();
builder.setName(gradle.getName());
builder.setDescription(gradle.getDescription());
@@ -289,13 +295,66 @@ public class ProjectReader {
builder.setBuildDir(gradle.getBuildDirectory());
builder.setBuildScript(gradle.getBuildScript().getSourceFile());
builder.setContentRoots(collectContentRoots(idea));
- // builder.setJavaDependencies(collectJavaDependencies(idea));
+ builder.setJavaCompilerSettings(createCompilerSettings(ideaProject, idea));
final var project = builder.buildJavaModule();
addTasks(gradle, project);
return project;
}
+ private static IJavaCompilerSettings createCompilerSettings(
+ final IdeaProject ideaProject, final IdeaModule module) {
+ final var javaLanguageSettings = module.getJavaLanguageSettings();
+ if (javaLanguageSettings == null) {
+ return createCompilerSettings(ideaProject);
+ }
+
+ JavaVersion languageLevel = javaLanguageSettings.getLanguageLevel();
+ JavaVersion targetBytecodeVersion = javaLanguageSettings.getTargetBytecodeVersion();
+
+ if (languageLevel == null || targetBytecodeVersion == null) {
+ return createCompilerSettings(ideaProject);
+ }
+
+ final var source = languageLevel.toString();
+ final var target = targetBytecodeVersion.toString();
+ return new JavaModuleCompilerSettings(source, target);
+ }
+
+ private static IJavaCompilerSettings createCompilerSettings(final IdeaProject ideaProject) {
+ final var settings = ideaProject.getJavaLanguageSettings();
+ if (settings == null) {
+ return new JavaModuleCompilerSettings();
+ }
+
+ final var source = settings.getLanguageLevel();
+ final var target = settings.getTargetBytecodeVersion();
+ if (source == null || target == null) {
+ return new JavaModuleCompilerSettings();
+ }
+
+ return new JavaModuleCompilerSettings(source.toString(), target.toString());
+ }
+
+ private static void log(Object... messages) {
+ System.err.println(generateMessage(messages));
+ }
+
+ private static String generateMessage(Object... messages) {
+ StringBuilder sb = new StringBuilder();
+ if (messages == null) {
+ return "null";
+ }
+
+ 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();
+ }
+
private static List extends JavaModuleDependency> collectJavaDependencies(IdeaModule idea) {
final var list = new ArrayList();
for (IdeaDependency dependency : idea.getDependencies()) {
@@ -392,7 +451,8 @@ public class ProjectReader {
"No GradleProject model is associated with project path: " + "':'");
}
- IdeGradleProject project = buildModuleProject(controller, rootModule.get(), outIssues, true);
+ IdeGradleProject project =
+ buildModuleProject(controller, ideaProject, rootModule.get(), outIssues, true);
final var gradle = rootModule.get().getGradleProject();
if (project == null) {
final var builder = new ProjectBuilder();
@@ -430,29 +490,10 @@ public class ProjectReader {
continue;
}
- final var sub = buildModuleProject(controller, module, outIssues);
+ final var sub = buildModuleProject(controller, ideaProject, module, outIssues);
if (sub != null) {
project.moduleProjects.add(sub);
}
}
}
-
- private static void log(Object... messages) {
- System.err.println(generateMessage(messages));
- }
-
- private static String generateMessage(Object... messages) {
- StringBuilder sb = new StringBuilder();
- if (messages == null) {
- return "null";
- }
-
- 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();
- }
}
diff --git a/build-tools/tooling-api-impl/src/test/java/com/itsaky/androidide/tooling/impl/ToolingApiImplTest.kt b/build-tools/tooling-api-impl/src/test/java/com/itsaky/androidide/tooling/impl/ToolingApiImplTest.kt
index 22aa60c32..011f94338 100644
--- a/build-tools/tooling-api-impl/src/test/java/com/itsaky/androidide/tooling/impl/ToolingApiImplTest.kt
+++ b/build-tools/tooling-api-impl/src/test/java/com/itsaky/androidide/tooling/impl/ToolingApiImplTest.kt
@@ -28,10 +28,10 @@ import com.itsaky.androidide.tooling.api.model.JavaModule
import com.itsaky.androidide.tooling.api.model.JavaModuleExternalDependency
import com.itsaky.androidide.tooling.api.model.JavaModuleProjectDependency
import com.itsaky.androidide.tooling.testing.ToolingApiTestLauncher
+import java.io.File
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.JUnit4
-import java.io.File
/** @author Akash Yadav */
@RunWith(JUnit4::class)
@@ -60,6 +60,8 @@ class ToolingApiImplTest {
assertThat((app as AndroidModule).javaCompileOptions).isNotNull()
assertThat(app.javaCompileOptions.sourceCompatibility).isEqualTo("11")
assertThat(app.javaCompileOptions.targetCompatibility).isEqualTo("11")
+ assertThat(app.javaCompileOptions.javaSourceVersion).isEqualTo("11")
+ assertThat(app.javaCompileOptions.javaBytecodeVersion).isEqualTo("11")
assertThat(app.javaCompileOptions.isCoreLibraryDesugaringEnabled).isFalse()
assertThat(app.projectType).isEqualTo(APPLICATION)
@@ -102,12 +104,17 @@ class ToolingApiImplTest {
)
.isNotNull()
+ assertThat(androidLib.javaCompileOptions.javaSourceVersion).isEqualTo("11")
+ assertThat(androidLib.javaCompileOptions.javaBytecodeVersion).isEqualTo("11")
+
val javaLibrary = project.findByPath(":java-library").get()
assertThat(javaLibrary).isNotNull()
assertThat(javaLibrary).isInstanceOf(JavaModule::class.java)
+ assertThat((javaLibrary as JavaModule).compilerSettings.javaSourceVersion).isEqualTo("11")
+ assertThat(javaLibrary.compilerSettings.javaBytecodeVersion).isEqualTo("11")
assertThat(
- (javaLibrary as JavaModule).javaDependencies.firstOrNull {
+ javaLibrary.javaDependencies.firstOrNull {
it is JavaModuleExternalDependency &&
it.gradleArtifact != null &&
it.run {
@@ -120,7 +127,7 @@ class ToolingApiImplTest {
.isNotNull()
assertThat(
- javaLibrary.javaDependencies.first {
+ javaLibrary.javaDependencies.firstOrNull {
it is JavaModuleProjectDependency && it.moduleName == "another-java-library"
}
)
@@ -135,5 +142,11 @@ class ToolingApiImplTest {
assertThat(nested[0].projectPath).isNotEqualTo(nested[1].projectPath)
assertThat(project.findByPath(":does-not-exist").get()).isNull()
+
+ val anotherJavaLib = project.findByPath(":another-java-library").get()
+ assertThat(anotherJavaLib).isNotNull()
+ assertThat(anotherJavaLib).isInstanceOf(JavaModule::class.java)
+ assertThat((anotherJavaLib as JavaModule).compilerSettings.javaSourceVersion).isEqualTo("1.8")
+ assertThat(anotherJavaLib.compilerSettings.javaBytecodeVersion).isEqualTo("1.8")
}
}
diff --git a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/AndroidModule.kt b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/AndroidModule.kt
index 7e113f433..6295c1907 100644
--- a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/AndroidModule.kt
+++ b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/AndroidModule.kt
@@ -26,6 +26,7 @@ import com.itsaky.androidide.builder.model.DefaultSourceProvider
import com.itsaky.androidide.builder.model.DefaultSourceSetContainer
import com.itsaky.androidide.builder.model.DefaultVariant
import com.itsaky.androidide.builder.model.DefaultViewBindingOptions
+import com.itsaky.androidide.builder.model.IJavaCompilerSettings
import com.itsaky.androidide.tooling.api.IProject.Type
import com.itsaky.androidide.tooling.api.IProject.Type.Android
import com.itsaky.androidide.tooling.api.messages.result.SimpleVariantData
@@ -50,13 +51,13 @@ open class AndroidModule(
parent: IdeGradleProject?,
tasks: List,
val projectType: ProjectType?,
- override var dynamicFeatures: Collection?,
- override var flags: DefaultAndroidGradlePluginProjectFlags,
- override var javaCompileOptions: DefaultJavaCompileOptions,
- override var resourcePrefix: String?,
+ override val dynamicFeatures: Collection?,
+ override val flags: DefaultAndroidGradlePluginProjectFlags,
+ final override val javaCompileOptions: DefaultJavaCompileOptions,
+ override val resourcePrefix: String?,
@Deprecated("This is resource intensive. Use AndroidModule.simpleVariants instead.")
override val variants: Collection = emptyList(),
- override var viewBindingOptions: DefaultViewBindingOptions?,
+ override val viewBindingOptions: DefaultViewBindingOptions?,
override val lintChecksJars: List,
val modelSyncFiles: List,
val simpleVariants: MutableList = mutableListOf()
@@ -77,8 +78,9 @@ open class AndroidModule(
}
var bootClassPaths: Collection = emptyList()
var mainSourceSet: DefaultSourceSetContainer? = null
-
var libraries: List = emptyList()
+
+ override var compilerSettings: IJavaCompilerSettings = javaCompileOptions
@Suppress("unused")
companion object {
diff --git a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/JavaModule.kt b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/JavaModule.kt
index 2469230d3..7acbb5848 100644
--- a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/JavaModule.kt
+++ b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/JavaModule.kt
@@ -17,6 +17,7 @@
package com.itsaky.androidide.tooling.api.model
+import com.itsaky.androidide.builder.model.IJavaCompilerSettings
import com.itsaky.androidide.tooling.api.IProject.Type
import com.itsaky.androidide.tooling.api.IProject.Type.Java
import java.io.File
@@ -39,6 +40,9 @@ open class JavaModule(
parent: IdeGradleProject?,
tasks: List,
+ /** Compiler settings for this module. */
+ override val compilerSettings: IJavaCompilerSettings,
+
/** * Source directories of this project. */
val contentRoots: List,
diff --git a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/JavaModuleCompilerSettings.kt b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/JavaModuleCompilerSettings.kt
new file mode 100644
index 000000000..896ad0d3f
--- /dev/null
+++ b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/JavaModuleCompilerSettings.kt
@@ -0,0 +1,36 @@
+/*
+ * This file is part of AndroidIDE.
+ *
+ * AndroidIDE 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.
+ *
+ * AndroidIDE 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 AndroidIDE. If not, see .
+ */
+
+package com.itsaky.androidide.tooling.api.model
+
+import com.itsaky.androidide.builder.model.IJavaCompilerSettings
+import javax.lang.model.SourceVersion
+
+/**
+ * Compiler settings for [JavaModule].
+ *
+ * @author Akash Yadav
+ */
+class JavaModuleCompilerSettings(
+ override val javaSourceVersion: String,
+ override val javaBytecodeVersion: String
+) : IJavaCompilerSettings(), java.io.Serializable {
+
+ private val serialVersionUID = 1L
+
+ internal constructor() : this(SourceVersion.RELEASE_11.name, SourceVersion.RELEASE_11.name)
+}
diff --git a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/ModuleProject.kt b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/ModuleProject.kt
index f9484b603..f5eebd944 100644
--- a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/ModuleProject.kt
+++ b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/ModuleProject.kt
@@ -17,6 +17,7 @@
package com.itsaky.androidide.tooling.api.model
+import com.itsaky.androidide.builder.model.IJavaCompilerSettings
import java.io.File
/**
@@ -26,6 +27,9 @@ import java.io.File
*/
interface ModuleProject {
+ /** Compiler settings for this module. */
+ val compilerSettings: IJavaCompilerSettings
+
/**
* Get the generated JAR file for this module.
*
diff --git a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/util/ProjectBuilder.kt b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/util/ProjectBuilder.kt
index 35075ade1..d0d33490b 100644
--- a/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/util/ProjectBuilder.kt
+++ b/build-tools/tooling-api-model/src/main/java/com/itsaky/androidide/tooling/api/model/util/ProjectBuilder.kt
@@ -21,12 +21,14 @@ import com.itsaky.androidide.builder.model.DefaultAndroidGradlePluginProjectFlag
import com.itsaky.androidide.builder.model.DefaultJavaCompileOptions
import com.itsaky.androidide.builder.model.DefaultModelSyncFile
import com.itsaky.androidide.builder.model.DefaultViewBindingOptions
+import com.itsaky.androidide.builder.model.IJavaCompilerSettings
import com.itsaky.androidide.tooling.api.messages.result.SimpleVariantData
import com.itsaky.androidide.tooling.api.model.AndroidModule
import com.itsaky.androidide.tooling.api.model.GradleTask
import com.itsaky.androidide.tooling.api.model.IdeGradleProject
import com.itsaky.androidide.tooling.api.model.JavaContentRoot
import com.itsaky.androidide.tooling.api.model.JavaModule
+import com.itsaky.androidide.tooling.api.model.JavaModuleCompilerSettings
import com.itsaky.androidide.tooling.api.model.JavaModuleDependency
import java.io.File
@@ -48,7 +50,13 @@ class ProjectBuilder {
var dynamicFeatures: Collection? = mutableListOf()
var flags: DefaultAndroidGradlePluginProjectFlags =
DefaultAndroidGradlePluginProjectFlags(emptyMap())
+
+ // For Android modules only
var javaCompileOptions: DefaultJavaCompileOptions = DefaultJavaCompileOptions()
+
+ // For Java modules
+ var javaCompilerSettings: IJavaCompilerSettings = JavaModuleCompilerSettings()
+
var resourcePrefix: String? = ""
var viewBindingOptions: DefaultViewBindingOptions? = null
var modelSyncFiles: List = emptyList()
@@ -81,6 +89,7 @@ class ProjectBuilder {
buildScript,
parent,
tasks,
+ javaCompilerSettings,
contentRoots,
javaDependencies
)
diff --git a/build-tools/tooling-api/src/main/java/com/itsaky/androidide/tooling/api/util/ToolingApiLauncher.java b/build-tools/tooling-api/src/main/java/com/itsaky/androidide/tooling/api/util/ToolingApiLauncher.java
index 8e666d5d3..e79fbb189 100644
--- a/build-tools/tooling-api/src/main/java/com/itsaky/androidide/tooling/api/util/ToolingApiLauncher.java
+++ b/build-tools/tooling-api/src/main/java/com/itsaky/androidide/tooling/api/util/ToolingApiLauncher.java
@@ -18,14 +18,17 @@
package com.itsaky.androidide.tooling.api.util;
import com.google.gson.GsonBuilder;
+import com.itsaky.androidide.builder.model.DefaultJavaCompileOptions;
+import com.itsaky.androidide.builder.model.IJavaCompilerSettings;
import com.itsaky.androidide.tooling.api.IProject;
import com.itsaky.androidide.tooling.api.IToolingApiClient;
import com.itsaky.androidide.tooling.api.IToolingApiServer;
import com.itsaky.androidide.tooling.api.model.AndroidModule;
-import com.itsaky.androidide.tooling.api.model.IdeGradleProject;
import com.itsaky.androidide.tooling.api.model.GradleTask;
-import com.itsaky.androidide.tooling.api.model.JavaModule;
+import com.itsaky.androidide.tooling.api.model.IdeGradleProject;
import com.itsaky.androidide.tooling.api.model.IdeLaunchable;
+import com.itsaky.androidide.tooling.api.model.JavaModule;
+import com.itsaky.androidide.tooling.api.model.JavaModuleCompilerSettings;
import com.itsaky.androidide.tooling.api.model.JavaModuleDependency;
import com.itsaky.androidide.tooling.api.model.JavaModuleExternalDependency;
import com.itsaky.androidide.tooling.api.model.JavaModuleProjectDependency;
@@ -115,6 +118,13 @@ public class ToolingApiLauncher {
.registerSubtype(
JavaModuleProjectDependency.class, JavaModuleProjectDependency.class.getName()));
+ builder.registerTypeAdapterFactory(
+ RuntimeTypeAdapterFactory.of(IJavaCompilerSettings.class)
+ .registerSubtype(
+ DefaultJavaCompileOptions.class, DefaultJavaCompileOptions.class.getName())
+ .registerSubtype(
+ JavaModuleCompilerSettings.class, JavaModuleCompilerSettings.class.getName()));
+
builder.registerTypeAdapterFactory(
RuntimeTypeAdapterFactory.of(ProgressEvent.class, "gsonType", true)
diff --git a/tests/test-home/.androidide/init/model.jar b/tests/test-home/.androidide/init/model.jar
index 65ca79210..684a29e2f 100644
Binary files a/tests/test-home/.androidide/init/model.jar and b/tests/test-home/.androidide/init/model.jar differ
diff --git a/tests/test-project/another-java-library/build.gradle b/tests/test-project/another-java-library/build.gradle
index 78efbac48..dc12f638d 100644
--- a/tests/test-project/another-java-library/build.gradle
+++ b/tests/test-project/another-java-library/build.gradle
@@ -3,8 +3,8 @@ plugins {
}
java {
- sourceCompatibility = JavaVersion.VERSION_11
- targetCompatibility = JavaVersion.VERSION_11
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
}
dependencies {