Skip to content

Commit d495450

Browse files
committed
null uri handling
1 parent 87817ea commit d495450

File tree

1 file changed

+47
-34
lines changed
  • plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace

1 file changed

+47
-34
lines changed

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace/WorkspaceServiceHandler.kt

Lines changed: 47 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,19 @@ class WorkspaceServiceHandler(
3535
}
3636

3737
private fun didCreateFiles(events: List<VFileEvent>) {
38-
AmazonQLspService.executeIfRunning(project) {
39-
if (events.isNotEmpty()) {
40-
it.workspaceService.didCreateFiles(
38+
AmazonQLspService.executeIfRunning(project) { languageServer ->
39+
val validFiles = events.mapNotNull { event ->
40+
event.file?.toNioPath()?.toUri()?.toString()?.takeIf { it.isNotEmpty() }?.let { uri ->
41+
FileCreate().apply {
42+
this.uri = uri
43+
}
44+
}
45+
}
46+
47+
if (validFiles.isNotEmpty()) {
48+
languageServer.workspaceService.didCreateFiles(
4149
CreateFilesParams().apply {
42-
files = events.map { event ->
43-
FileCreate().apply {
44-
uri = event.file?.toNioPath()?.toUri().toString()
45-
}
46-
}
50+
files = validFiles
4751
}
4852
)
4953
}
@@ -52,15 +56,45 @@ class WorkspaceServiceHandler(
5256

5357
private fun didDeleteFiles(events: List<VFileEvent>) {
5458
AmazonQLspService.executeIfRunning(project) { languageServer ->
55-
if (events.isNotEmpty()) {
59+
val validFiles = events.mapNotNull { event ->
60+
event.file?.toNioPath()?.toUri()?.toString()?.takeIf { it.isNotEmpty() }?.let { uri ->
61+
FileDelete().apply {
62+
this.uri = uri
63+
}
64+
}
65+
}
66+
67+
if (validFiles.isNotEmpty()) {
5668
languageServer.workspaceService.didDeleteFiles(
5769
DeleteFilesParams().apply {
58-
files = events.map { event ->
59-
FileDelete().apply {
60-
uri = event.file?.toNioPath()?.toUri().toString()
61-
}
70+
files = validFiles
71+
}
72+
)
73+
}
74+
}
75+
}
76+
77+
78+
private fun didChangeWatchedFiles(events: List<VFileEvent>) {
79+
AmazonQLspService.executeIfRunning(project) { languageServer ->
80+
val validChanges = events.mapNotNull { event ->
81+
event.file?.toNioPath()?.toUri()?.toString()?.takeIf { it.isNotEmpty() }?.let { uri ->
82+
FileEvent().apply {
83+
this.uri = uri
84+
type = when (event) {
85+
is VFileCreateEvent -> FileChangeType.Created
86+
is VFileDeleteEvent -> FileChangeType.Deleted
87+
else -> FileChangeType.Changed
6288
}
6389
}
90+
}
91+
}
92+
93+
if (validChanges.isNotEmpty()) {
94+
languageServer.workspaceService.didChangeWatchedFiles(
95+
DidChangeWatchedFilesParams().apply {
96+
changes = validChanges
97+
}
6498
)
6599
}
66100
}
@@ -74,25 +108,4 @@ class WorkspaceServiceHandler(
74108
didChangeWatchedFiles(events)
75109
}
76110
}
77-
78-
private fun didChangeWatchedFiles(events: List<VFileEvent>) {
79-
AmazonQLspService.executeIfRunning(project) {
80-
if (events.isNotEmpty()) {
81-
it.workspaceService.didChangeWatchedFiles(
82-
DidChangeWatchedFilesParams().apply {
83-
changes = events.map { event ->
84-
FileEvent().apply {
85-
uri = event.file?.toNioPath()?.toUri().toString()
86-
type = when (event) {
87-
is VFileCreateEvent -> FileChangeType.Created
88-
is VFileDeleteEvent -> FileChangeType.Deleted
89-
else -> FileChangeType.Changed
90-
}
91-
}
92-
}
93-
}
94-
)
95-
}
96-
}
97-
}
98111
}

0 commit comments

Comments
 (0)