in plugin/src/software/aws/toolkits/eclipse/workspace/WorkspaceChangeListener.java [49:113]
public void resourceChanged(final IResourceChangeEvent event) {
ThreadingUtils.executeAsyncTask(() -> {
boolean indexingEnabled = Activator.getDefault().getPreferenceStore().getBoolean(AmazonQPreferencePage.WORKSPACE_INDEX);
if (!indexingEnabled) {
return;
}
IResourceDelta delta = event.getDelta();
List<FileCreate> createdFiles = new ArrayList<>();
List<FileDelete> deletedFiles = new ArrayList<>();
List<FileRename> renamedFiles = new ArrayList<>();
try {
delta.accept(delta1 -> {
if (delta1.getResource().getType() != IResource.FILE) {
return true;
}
URI uri = delta1.getResource().getLocationURI();
String uriString = uri.toString();
switch (delta1.getKind()) {
case IResourceDelta.ADDED:
createdFiles.add(new FileCreate(uriString));
break;
case IResourceDelta.REMOVED:
deletedFiles.add(new FileDelete(uriString));
break;
case IResourceDelta.CHANGED:
if ((delta1.getFlags() & IResourceDelta.MOVED_FROM) != 0) {
URI oldUri = delta1.getMovedFromPath().toFile().toURI();
renamedFiles.add(new FileRename(oldUri.toString(), uriString));
}
break;
default:
}
return true;
});
} catch (CoreException e) {
Activator.getLogger().error("Unable to process file change events", e);
} catch (IllegalArgumentException e) {
Activator.getLogger().error("Invalid resource path", e);
}
try {
if (!createdFiles.isEmpty()) {
CreateFilesParams createParams = new CreateFilesParams(createdFiles);
Activator.getLspProvider().getAmazonQServer().get().getWorkspaceService().didCreateFiles(createParams);
}
if (!deletedFiles.isEmpty()) {
DeleteFilesParams deleteParams = new DeleteFilesParams(deletedFiles);
Activator.getLspProvider().getAmazonQServer().get().getWorkspaceService().didDeleteFiles(deleteParams);
}
if (!renamedFiles.isEmpty()) {
RenameFilesParams renameParams = new RenameFilesParams(renamedFiles);
Activator.getLspProvider().getAmazonQServer().get().getWorkspaceService().didRenameFiles(renameParams);
}
} catch (Exception e) {
Activator.getLogger().error("Unable to update LSP with file change events: " + e.getMessage());
}
});
}