public ClassCustomization rename()

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());
    }