use of org.eclipse.lsp4j.DeleteFileOptions in project eclipse.jdt.ls by eclipse.
the class ChangeUtil method convertRenamePackcageChange.
private static void convertRenamePackcageChange(WorkspaceEdit edit, RenamePackageChange packageChange) throws CoreException {
IPackageFragment pack = (IPackageFragment) packageChange.getModifiedElement();
IPath newPackageFragment = new Path(packageChange.getNewName().replace('.', IPath.SEPARATOR));
IPath oldPackageFragment = new Path(packageChange.getOldName().replace('.', IPath.SEPARATOR));
IPath newPackagePath = pack.getResource().getLocation().removeLastSegments(oldPackageFragment.segmentCount()).append(newPackageFragment);
if (packageChange.getRenameSubpackages()) {
IPackageFragment[] allPackages = JavaElementUtil.getPackageAndSubpackages(pack);
String oldPrefix = packageChange.getOldName();
for (IPackageFragment currentPackage : allPackages) {
String newPkgName = packageChange.getNewName() + currentPackage.getElementName().substring(oldPrefix.length());
// update package's declaration
convertPackageUpdateEdit(currentPackage.getCompilationUnits(), newPkgName, edit);
}
RenameFile renameFile = new RenameFile();
renameFile.setNewUri(ResourceUtils.fixURI(newPackagePath.toFile().toURI()));
renameFile.setOldUri(ResourceUtils.fixURI(pack.getResource().getRawLocationURI()));
edit.getDocumentChanges().add(Either.forRight(renameFile));
} else {
// update package's declaration
convertPackageUpdateEdit(pack.getCompilationUnits(), packageChange.getNewName(), edit);
CreateFile createFile = new CreateFile();
createFile.setUri(ResourceUtils.fixURI(newPackagePath.append(TEMP_FILE_NAME).toFile().toURI()));
createFile.setOptions(new CreateFileOptions(false, true));
edit.getDocumentChanges().add(Either.forRight(createFile));
for (ICompilationUnit unit : pack.getCompilationUnits()) {
RenameFile cuResourceChange = new RenameFile();
cuResourceChange.setOldUri(ResourceUtils.fixURI(unit.getResource().getLocationURI()));
IPath newCUPath = newPackagePath.append(unit.getPath().lastSegment());
cuResourceChange.setNewUri(ResourceUtils.fixURI(newCUPath.toFile().toURI()));
edit.getDocumentChanges().add(Either.forRight(cuResourceChange));
}
// Workaround: https://github.com/Microsoft/language-server-protocol/issues/272
DeleteFile deleteFile = new DeleteFile();
deleteFile.setUri(ResourceUtils.fixURI(newPackagePath.append(TEMP_FILE_NAME).toFile().toURI()));
deleteFile.setOptions(new DeleteFileOptions(false, true));
edit.getDocumentChanges().add(Either.forRight(deleteFile));
}
}
Aggregations