in customization-base/src/main/java/com/azure/autorest/customization/ClassCustomization.java [459:498]
public ClassCustomization rename(String newName) {
WorkspaceEdit workspaceEdit = languageClient.renameSymbol(fileUri,
symbol.getLocation().getRange().getStart(), newName);
List<FileEvent> changes = new ArrayList<>();
for (Map.Entry<String, List<TextEdit>> edit : workspaceEdit.getChanges().entrySet()) {
int i = edit.getKey().indexOf("src/main/java/");
String oldEntry = edit.getKey().substring(i);
if (editor.getContents().containsKey(oldEntry)) {
for (TextEdit textEdit : edit.getValue()) {
editor.replace(oldEntry, textEdit.getRange().getStart(), textEdit.getRange().getEnd(), textEdit.getNewText());
}
FileEvent fileEvent = new FileEvent();
fileEvent.setUri(edit.getKey());
if (oldEntry.endsWith("/" + className + ".java")) {
String newEntry = oldEntry.replace(className + ".java", newName + ".java");
editor.renameFile(oldEntry, newEntry);
String newUri = edit.getKey().replace(className + ".java", newName + ".java");
fileEvent.setType(FileChangeType.Deleted);
changes.add(fileEvent);
FileEvent newFile = new FileEvent();
newFile.setUri(newUri);
newFile.setType(FileChangeType.Created);
changes.add(newFile);
} else {
fileEvent.setType(FileChangeType.Changed);
changes.add(fileEvent);
}
}
}
languageClient.notifyWatchedFilesChanged(changes);
String packagePath = packageName.replace(".", "/");
Optional<SymbolInformation> newClassSymbol = languageClient.findWorkspaceSymbol(newName)
.stream().filter(si -> si.getLocation().getUri().endsWith(packagePath + "/" + newName + ".java"))
.findFirst();
if (newClassSymbol.isEmpty()) {
throw new IllegalArgumentException("Renamed failed with new class " + newName + " not found.");
}
return new ClassCustomization(editor, languageClient, packageName, newName, newClassSymbol.get());
}