Skip to content
This repository was archived by the owner on Oct 18, 2024. It is now read-only.

Commit c806ece

Browse files
committed
fix: make ProjectManagerImpl internal to app module
1 parent 2cf9012 commit c806ece

File tree

3 files changed

+37
-25
lines changed

3 files changed

+37
-25
lines changed

core/projects/src/main/java/com/itsaky/androidide/projects/ProjectManagerImpl.kt renamed to core/app/src/main/java/com/itsaky/androidide/projects/ProjectManagerImpl.kt

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,10 @@ class ProjectManagerImpl : IProjectManager, EventReceiver {
8989
get() = rootProject?.projectSyncIssues
9090

9191
companion object {
92-
9392
private val log = LoggerFactory.getLogger(ProjectManagerImpl::class.java)
9493

9594
@JvmStatic
96-
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
97-
fun getInstance(): ProjectManagerImpl {
98-
return IProjectManager.getInstance() as ProjectManagerImpl
99-
}
95+
fun getInstance(): ProjectManagerImpl = IProjectManager.getInstance() as ProjectManagerImpl
10096
}
10197

10298
override suspend fun setupProject(project: IProject) {
@@ -327,7 +323,7 @@ class ProjectManagerImpl : IProjectManager, EventReceiver {
327323
return@apply
328324
}
329325

330-
val module = IProjectManager.getInstance().findModuleForFile(this, false) ?: return@apply
326+
val module = findModuleForFile(this, false) ?: return@apply
331327
if (module !is AndroidModule) {
332328
return@apply
333329
}
@@ -344,13 +340,25 @@ class ProjectManagerImpl : IProjectManager, EventReceiver {
344340
}
345341
}
346342

343+
override fun notifyFileCreated(file: File) {
344+
onFileCreated(FileCreationEvent(file))
345+
}
346+
347+
override fun notifyFileDeleted(file: File) {
348+
onFileDeleted(FileDeletionEvent(file))
349+
}
350+
351+
override fun notifyFileRenamed(from: File, to: File) {
352+
onFileRenamed(FileRenameEvent(from, to))
353+
}
354+
347355
@Suppress("unused")
348356
@Subscribe(threadMode = ThreadMode.BACKGROUND)
349357
fun onFileCreated(event: FileCreationEvent) {
350358
generateSourcesIfNecessary(event)
351359

352360
if (DocumentUtils.isJavaFile(event.file.toPath())) {
353-
IProjectManager.getInstance().findModuleForFile(event.file, false)?.let {
361+
findModuleForFile(event.file, false)?.let {
354362
val sourceRoot = it.findSourceRoot(event.file) ?: return@let
355363

356364
// add the source node entry
@@ -368,7 +376,7 @@ class ProjectManagerImpl : IProjectManager, EventReceiver {
368376
// Do not check for Java file DocumentUtils.isJavaFile(...) as it checks for file existence as
369377
// well. As the file is already deleted, it will always return false
370378
if (event.file.extension == "java") {
371-
IProjectManager.getInstance().findModuleForFile(event.file, false)
379+
findModuleForFile(event.file, false)
372380
?.compileJavaSourceClasses
373381
?.findSource(event.file.toPath())
374382
?.let { it.parent?.removeChild(it) }
@@ -384,14 +392,14 @@ class ProjectManagerImpl : IProjectManager, EventReceiver {
384392
// well. As the file is already renamed to another filename, it will always return false
385393
if (event.file.extension == "java") {
386394
// remove the source node entry
387-
IProjectManager.getInstance().findModuleForFile(event.file, false)
395+
findModuleForFile(event.file, false)
388396
?.compileJavaSourceClasses
389397
?.findSource(event.file.toPath())
390398
?.let { it.parent?.removeChild(it) }
391399
}
392400

393401
if (DocumentUtils.isJavaFile(event.newFile.toPath())) {
394-
IProjectManager.getInstance().findModuleForFile(event.newFile, false)?.let {
402+
findModuleForFile(event.newFile, false)?.let {
395403
val sourceRoot = it.findSourceRoot(event.newFile) ?: return@let
396404
// add the new source node entry
397405
it.compileJavaSourceClasses.append(event.newFile.toPath(), sourceRoot)

core/projects/src/test/java/com/itsaky/androidide/projects/api/ModuleProjectTest.kt

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,8 @@
1818
package com.itsaky.androidide.projects.api
1919

2020
import com.google.common.truth.Truth.assertThat
21-
import com.itsaky.androidide.eventbus.events.file.FileCreationEvent
22-
import com.itsaky.androidide.eventbus.events.file.FileDeletionEvent
23-
import com.itsaky.androidide.eventbus.events.file.FileRenameEvent
2421
import com.itsaky.androidide.lookup.Lookup
2522
import com.itsaky.androidide.projects.IProjectManager
26-
import com.itsaky.androidide.projects.ProjectManagerImpl
2723
import com.itsaky.androidide.projects.builder.BuildService
2824
import com.itsaky.androidide.testing.tooling.ToolingApiTestLauncher
2925
import com.itsaky.androidide.tooling.api.IAndroidProject
@@ -149,8 +145,8 @@ class ModuleProjectTest {
149145
assertThat(
150146
filter {
151147
it.absolutePath.endsWith("appcompat-1.5.1/jars/classes.jar") ||
152-
it.absolutePath.endsWith("material-1.8.0-alpha01/jars/classes.jar") ||
153-
it.absolutePath.endsWith("coordinatorlayout-1.2.0/jars/classes.jar")
148+
it.absolutePath.endsWith("material-1.8.0-alpha01/jars/classes.jar") ||
149+
it.absolutePath.endsWith("coordinatorlayout-1.2.0/jars/classes.jar")
154150
}
155151
)
156152
.hasSize(3)
@@ -172,7 +168,8 @@ class ModuleProjectTest {
172168

173169
for (klass in arrayOf(
174170
"com.itsaky.androidide.tooling.test.Main",
175-
"com.itsaky.test.app.MainActivity")
171+
"com.itsaky.test.app.MainActivity"
172+
)
176173
) {
177174

178175
classes.find { it.qualifiedName == klass }.let {
@@ -208,7 +205,7 @@ class ModuleProjectTest {
208205
Files.delete(testCls_renamed)
209206
}
210207

211-
val projectManager = ProjectManagerImpl.getInstance()
208+
val projectManager = IProjectManager.getInstance()
212209
runBlocking { projectManager.setupProject() }
213210

214211
val rootProject = IProjectManager.getInstance().rootProject
@@ -239,22 +236,23 @@ class ModuleProjectTest {
239236
assertThat(IProjectManager.getInstance().containsSourceFile(testCls_renamed)).isFalse()
240237

241238
testCls.writeText("public class Test { }")
242-
projectManager.onFileCreated(FileCreationEvent(testCls.toFile()))
239+
projectManager.notifyFileCreated(testCls.toFile())
243240
assertThat(IProjectManager.getInstance().containsSourceFile(testCls)).isTrue()
244241
assertThat(IProjectManager.getInstance().containsSourceFile(testCls_renamed)).isFalse()
245242
assertThat(IProjectManager.getInstance().findModuleForFile(testCls, true)).isEqualTo(module)
246243
assertThat(IProjectManager.getInstance().findModuleForFile(testCls_renamed, true)).isNull()
247244

248245
Files.move(testCls, testCls_renamed)
249-
projectManager.onFileRenamed(FileRenameEvent(testCls.toFile(), testCls_renamed.toFile()))
246+
projectManager.notifyFileRenamed(testCls.toFile(), testCls_renamed.toFile())
250247
assertThat(IProjectManager.getInstance().containsSourceFile(testCls)).isFalse()
251248
assertThat(IProjectManager.getInstance().containsSourceFile(testCls_renamed)).isTrue()
252249
assertThat(IProjectManager.getInstance().findModuleForFile(testCls, true)).isNull()
253250
assertThat(IProjectManager.getInstance().findModuleForFile(testCls_renamed, true)).isEqualTo(
254-
module)
251+
module
252+
)
255253

256254
Files.delete(testCls_renamed)
257-
projectManager.onFileDeleted(FileDeletionEvent(testCls_renamed.toFile()))
255+
projectManager.notifyFileDeleted(testCls_renamed.toFile())
258256
assertThat(IProjectManager.getInstance().containsSourceFile(testCls)).isFalse()
259257
assertThat(IProjectManager.getInstance().containsSourceFile(testCls_renamed)).isFalse()
260258
assertThat(IProjectManager.getInstance().findModuleForFile(testCls, true)).isNull()

testing/lspTest/src/main/java/com/itsaky/androidide/lsp/testing/LSPTest.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package com.itsaky.androidide.lsp.testing
2020
import android.content.Context
2121
import com.google.common.truth.Truth.assertThat
2222
import com.itsaky.androidide.actions.ActionData
23+
import com.itsaky.androidide.eventbus.events.EventReceiver
2324
import com.itsaky.androidide.eventbus.events.editor.ChangeType.DELETE
2425
import com.itsaky.androidide.eventbus.events.editor.DocumentChangeEvent
2526
import com.itsaky.androidide.eventbus.events.editor.DocumentCloseEvent
@@ -34,7 +35,7 @@ import com.itsaky.androidide.models.Range
3435
import com.itsaky.androidide.preferences.internal.EditorPreferences
3536
import com.itsaky.androidide.preferences.internal.prefManager
3637
import com.itsaky.androidide.projects.FileManager
37-
import com.itsaky.androidide.projects.ProjectManagerImpl
38+
import com.itsaky.androidide.projects.IProjectManager
3839
import com.itsaky.androidide.projects.builder.BuildService
3940
import com.itsaky.androidide.testing.tooling.ToolingApiTestLauncher
4041
import com.itsaky.androidide.tooling.api.IProject
@@ -108,8 +109,13 @@ abstract class LSPTest(
108109
Environment.JAVA_HOME = File(System.getProperty("java.home")!!)
109110
registerServer()
110111

111-
val projectManager = ProjectManagerImpl.getInstance()
112-
projectManager.register()
112+
val projectManager = IProjectManager.getInstance()
113+
if (projectManager is EventReceiver) {
114+
projectManager.register()
115+
} else {
116+
throw IllegalStateException("Expected IProjectManager instance to be an EventReceiver")
117+
}
118+
113119
runBlocking { projectManager.setupProject(project) }
114120

115121
// We need to manually setup the language server with the project here

0 commit comments

Comments
 (0)