Katalon Studio failed to rename a Keyword class

I am using

  • macOS 12.6
  • Katalon Studio 8.3.0

I have created a GitHub repository that contains a Katalon Studio project where you can reproduce the problem:

What happend:

In this project, I have a Keyword class com.kazurayam.ks.testobject.BiMatcher. BiMatcher class works fine.

You can try executing it by running a Test Cases/junit4/com/kazurayam.ks.testobject/BiMatcherTestRunner
Also you can run it by Test Suites/junit4/TS1
The test cases work fine.

Now, I wanted to renamed the class BiMatcher to BilingualMatcher.

I tried to rename it in the Tests Explorer by click the class; click mouse button right; Rename.

When I tried it, Katalon Studio hanged for 10 or 20 seconds; then came back.

But the BiMatcher class was still BiMatcher. Katalon Studio failed to rename it to BilingualMatcher.

I checked the .log file.
log.txt (22.2 KB)

This contains a Stack Trace message:

!ENTRY org.eclipse.e4.ui.workbench 4 0 2023-03-03 22:56:41.621
!MESSAGE 
!STACK 0
org.eclipse.text.edits.MalformedTreeException: Overlapping text edits
	at org.eclipse.text.edits.TextEdit$InsertionComparator.compare(TextEdit.java:126)
	at org.eclipse.text.edits.TextEdit$InsertionComparator.compare(TextEdit.java:1)
	at java.util.Collections.indexedBinarySearch(Collections.java:334)
	at java.util.Collections.binarySearch(Collections.java:322)
	at org.eclipse.text.edits.TextEdit.computeInsertionIndex(TextEdit.java:799)
	at org.eclipse.text.edits.TextEdit.internalAdd(TextEdit.java:784)
	at org.eclipse.text.edits.TextEdit.addChild(TextEdit.java:340)
	at org.eclipse.jdt.internal.core.CopyResourceElementsOperation.updateNonJavaContent(CopyResourceElementsOperation.java:702)
	at org.eclipse.jdt.internal.core.CopyResourceElementsOperation.updateContent(CopyResourceElementsOperation.java:645)
	at org.eclipse.jdt.internal.core.CopyResourceElementsOperation.processCompilationUnitResource(CopyResourceElementsOperation.java:313)
	at org.eclipse.jdt.internal.core.CopyResourceElementsOperation.processElement(CopyResourceElementsOperation.java:422)
	at org.eclipse.jdt.internal.core.MultiOperation.processElements(MultiOperation.java:168)
	at org.eclipse.jdt.internal.core.CopyResourceElementsOperation.processElements(CopyResourceElementsOperation.java:441)
	at org.eclipse.jdt.internal.core.MultiOperation.executeOperation(MultiOperation.java:95)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:736)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2292)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2317)
	at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:807)
	at org.eclipse.jdt.internal.core.JavaModel.rename(JavaModel.java:289)
	at org.eclipse.jdt.internal.core.CompilationUnit.rename(CompilationUnit.java:1350)
	at org.codehaus.jdt.groovy.model.GroovyCompilationUnit.rename(GroovyCompilationUnit.java:575)
	at org.eclipse.jdt.internal.corext.refactoring.changes.RenameCompilationUnitChange.doRename(RenameCompilationUnitChange.java:65)
	at org.eclipse.jdt.internal.corext.refactoring.AbstractJavaElementRenameChange.perform(AbstractJavaElementRenameChange.java:92)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:281)
	at org.eclipse.jdt.internal.corext.refactoring.changes.DynamicValidationStateChange.access$0(DynamicValidationStateChange.java:1)
	at org.eclipse.jdt.internal.corext.refactoring.changes.DynamicValidationStateChange.lambda$0(DynamicValidationStateChange.java:105)
	at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:41)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:736)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2292)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2317)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:5895)
	at org.eclipse.jdt.internal.corext.refactoring.changes.DynamicValidationStateChange.perform(DynamicValidationStateChange.java:106)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:281)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.lambda$0(PerformChangeOperation.java:258)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2292)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2317)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.executeChange(PerformChangeOperation.java:295)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.run(PerformChangeOperation.java:224)
	at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:41)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:736)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2292)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2317)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:5895)
	at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:108)
	at com.kms.katalon.composer.keyword.handlers.RenameKeywordHandler$2.run(RenameKeywordHandler.java:85)
	at org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper.perform(RefactoringExecutionHelper.java:199)
	at org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper.perform(RefactoringExecutionHelper.java:156)
	at org.eclipse.jdt.ui.refactoring.RenameSupport.perform(RenameSupport.java:201)
	at com.kms.katalon.composer.keyword.handlers.RenameKeywordHandler.execute(RenameKeywordHandler.java:79)
	at com.kms.katalon.composer.keyword.handlers.RenameKeywordHandler.access$0(RenameKeywordHandler.java:61)
	at com.kms.katalon.composer.keyword.handlers.RenameKeywordHandler$1.handleEvent(RenameKeywordHandler.java:55)
	at org.eclipse.e4.ui.services.internal.events.UIEventHandler.lambda$0(UIEventHandler.java:38)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4124)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3791)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1158)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1047)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:658)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:154)
	at com.kms.katalon.core.application.WorkbenchApplicationStarter.start(WorkbenchApplicationStarter.java:23)
	at com.kms.katalon.application.Application.runGUI(Application.java:191)
	at com.kms.katalon.application.Application.start(Application.java:102)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1447)

I hope Katalon team to fix this primitive bug.

@vu.tran Pls let them know.

This issue looks similar to another problem:

Katalon Studio can not rename project entities.