From 1795c35dfc13866e4234d89f7833e836989ede3b Mon Sep 17 00:00:00 2001 From: ghidra1 Date: Tue, 28 Feb 2023 14:16:25 -0500 Subject: [PATCH] GP-3122 Added AutoCloseable Transaction API to DBHandle and UndoableDomainObject. Performed renaming of some internal classes. --- .../ghidra_scripts/BangAddressToMemory.java | 4 +- .../ghidra_scripts/PopulateTraceLocal.java | 10 +- .../ghidra_scripts/PopulateTraceRemote.java | 4 +- .../ghidra_scripts/PopulateDemoTrace.java | 50 ++- .../LoadEmulatorAutoReadMemorySpec.java | 4 +- .../gui/breakpoint/BreakpointLocationRow.java | 8 +- .../DebuggerCopyIntoProgramDialog.java | 4 +- .../core/debug/gui/memory/RegionRow.java | 21 +- ...aceValueObjectEditableAttributeColumn.java | 6 +- .../DebuggerStaticMappingProvider.java | 6 +- .../core/debug/gui/modules/ModuleRow.java | 5 +- .../core/debug/gui/modules/SectionRow.java | 5 +- .../pcode/DebuggerPcodeStepperProvider.java | 6 +- .../register/DebuggerRegistersProvider.java | 12 +- .../core/debug/gui/stack/StackFrameRow.java | 6 +- .../core/debug/gui/thread/ThreadRow.java | 8 +- .../debug/gui/time/DebuggerTimePlugin.java | 4 +- .../core/debug/gui/time/SnapshotRow.java | 5 +- .../gui/watch/DebuggerWatchesProvider.java | 9 +- .../plugin/core/debug/gui/watch/WatchRow.java | 5 +- .../DefaultDebuggerPlatformMapper.java | 4 +- .../ObjectBasedDebuggerMemoryMapper.java | 5 +- .../DeleteEmuBreakpointActionItem.java | 6 +- .../DisableEmuBreakpointActionItem.java | 6 +- .../EnableEmuBreakpointActionItem.java | 6 +- .../PlaceEmuBreakpointActionItem.java | 5 +- .../service/breakpoint/ProgramBreakpoint.java | 19 +- .../breakpoint/TraceBreakpointSet.java | 7 +- .../DebuggerEmulationServicePlugin.java | 9 +- .../emulation/ProgramEmulationUtils.java | 7 +- .../DebuggerModelServiceProxyPlugin.java | 4 +- .../model/RecorderPermanentTransaction.java | 14 +- .../service/model/TraceObjectManager.java | 9 +- .../AbstractDebuggerProgramLaunchOffer.java | 6 +- .../record/ObjectBasedTraceRecorder.java | 5 +- .../service/model/record/ObjectRecorder.java | 5 +- .../DebuggerStaticMappingServicePlugin.java | 17 +- .../DebuggerTraceManagerServicePlugin.java | 4 +- .../workflow/DisassembleAtPcDebuggerBot.java | 9 +- .../java/ghidra/app/services/ControlMode.java | 5 +- ...ggerBreakpointMarkerPluginScreenShots.java | 6 +- .../DebuggerBreakpointsPluginScreenShots.java | 13 +- .../DebuggerCopyActionsPluginScreenShots.java | 8 +- ...ebuggerTraceViewDiffPluginScreenShots.java | 8 +- .../DebuggerListingPluginScreenShots.java | 6 +- .../DebuggerMemoryBytesPluginScreenShots.java | 4 +- .../DebuggerRegionsPluginScreenShots.java | 8 +- .../DebuggerMemviewPluginScreenShots.java | 10 +- .../DebuggerModulesPluginScreenShots.java | 10 +- ...ebuggerStaticMappingPluginScreenShots.java | 10 +- ...DebuggerPcodeStepperPluginScreenShots.java | 4 +- .../DebuggerPlatformPluginScreenShots.java | 4 +- .../DebuggerRegistersPluginScreenShots.java | 6 +- .../stack/DebuggerStackPluginScreenShots.java | 16 +- .../VariableValueHoverPluginScreenShots.java | 12 +- .../DebuggerThreadsPluginScreenShots.java | 4 +- .../time/DebuggerTimePluginScreenShots.java | 4 +- .../DebuggerWatchesPluginScreenShots.java | 4 +- .../disassemble/DebuggerDisassemblyTest.java | 18 +- .../AbstractGhidraHeadedDebuggerGUITest.java | 7 +- .../core/debug/gui/DebuggerManualTest.java | 6 +- .../DebuggerBreakpointMarkerPluginTest.java | 13 +- ...DebuggerBreakpointsProviderObjectTest.java | 4 +- .../DebuggerBreakpointsProviderTest.java | 9 +- .../control/DebuggerControlPluginTest.java | 12 +- .../DebuggerMethodActionsPluginTest.java | 12 +- .../DebuggerCopyActionsPluginTest.java | 24 +- .../gui/copying/DebuggerCopyPlanTests.java | 50 +-- .../diff/DebuggerTraceViewDiffPluginTest.java | 8 +- .../listing/DebuggerListingProviderTest.java | 86 ++--- .../DebuggerMemoryBytesProviderTest.java | 60 ++-- .../DebuggerRegionsProviderLegacyTest.java | 28 +- .../memory/DebuggerRegionsProviderTest.java | 30 +- .../gui/model/DebuggerModelProviderTest.java | 34 +- .../core/debug/gui/model/ModelQueryTest.java | 11 +- .../DebuggerModulesProviderLegacyTest.java | 20 +- .../modules/DebuggerModulesProviderTest.java | 26 +- .../DebuggerStaticMappingProviderTest.java | 26 +- .../objects/DebuggerObjectsProviderTest.java | 4 +- .../DebuggerPcodeStepperProviderTest.java | 4 +- .../DebuggerRegistersProviderGuestTest.java | 8 +- .../DebuggerRegistersProviderTest.java | 48 +-- .../DebuggerStackProviderLegacyTest.java | 24 +- .../gui/stack/DebuggerStackProviderTest.java | 25 +- .../DebuggerThreadsProviderLegacyTest.java | 10 +- .../thread/DebuggerThreadsProviderTest.java | 12 +- .../gui/time/DebuggerTimeProviderTest.java | 14 +- .../watch/DebuggerWatchesProviderTest.java | 22 +- ...gerLogicalBreakpointServiceObjectTest.java | 6 +- .../DebuggerLogicalBreakpointServiceTest.java | 41 ++- .../DebuggerControlServiceGuestTest.java | 4 +- .../control/DebuggerControlServiceTest.java | 17 +- .../DebuggerEmulationServiceTest.java | 38 +-- .../model/DefaultTraceRecorderTest.java | 11 +- .../DebuggerStaticMappingServiceTest.java | 18 +- .../DebuggerTraceManagerServiceTest.java | 6 +- .../core/debug/stack/StackUnwinderTest.java | 44 +-- .../debug/flatapi/FlatDebuggerAPITest.java | 18 +- .../exec/TraceRecorderPcodeExecTest.java | 4 +- .../java/ghidra/trace/database/DBTrace.java | 3 +- .../database/data/DBTraceDataTypeManager.java | 6 + .../listing/DBTraceCodeUnitAdapter.java | 2 +- .../database/listing/DBTraceInstruction.java | 2 +- .../database/memory/DBTraceMemBuffer.java | 4 +- .../database/program/DBTraceProgramView.java | 10 +- .../program/DBTraceProgramViewRegisters.java | 10 +- .../trace/AbstractTracePcodeEmulatorTest.java | 4 +- .../trace/BytesTracePcodeEmulatorTest.java | 42 +-- .../exec/trace/TraceSleighUtilsTest.java | 21 +- .../database/DBTraceTimeViewportTest.java | 12 +- .../trace/database/ToyDBTraceBuilder.java | 6 +- .../bookmark/DBTraceBookmarkManagerTest.java | 22 +- .../DBTraceBreakpointManagerObjectTest.java | 4 +- .../DBTraceBreakpointManagerTest.java | 24 +- .../data/DBTraceDataTypeManagerTest.java | 35 +- .../DBTraceObjectRegisterSupportTest.java | 28 +- .../guest/DBTracePlatformManagerTest.java | 50 +-- .../listing/DBTraceCodeManagerTest.java | 112 +++---- .../database/listing/DBTraceCodeUnitTest.java | 142 ++++---- ...napRangePropertyMapAddressSetViewTest.java | 35 +- ...rtyMapOcclusionIntoFutureIterableTest.java | 13 +- ...pertyMapOcclusionIntoPastIterableTest.java | 13 +- ...eAddressSnapRangePropertyMapSpaceTest.java | 27 +- ...bstractDBTraceMemoryManagerMemoryTest.java | 68 ++-- ...stractDBTraceMemoryManagerRegionsTest.java | 23 +- ...ractDBTraceMemoryManagerRegistersTest.java | 10 +- .../AbstractDBTraceMemoryManagerTest.java | 4 +- ...DBTraceMemoryManagerObjectRegionsTest.java | 4 +- ...yManagerObjectRegistersPerFrameBETest.java | 4 +- ...ManagerObjectRegistersPerThreadLETest.java | 4 +- .../DBTraceModuleManagerObjectTest.java | 4 +- .../module/DBTraceModuleManagerTest.java | 40 +-- .../DBTraceStaticMappingManagerTest.java | 26 +- .../DBTraceDisassemblerIntegrationTest.java | 27 +- ...DBTraceProgramViewFunctionManagerTest.java | 10 +- .../DBTraceProgramViewListingTest.java | 90 ++--- .../program/DBTraceProgramViewMemoryTest.java | 9 +- .../DBTraceAddressPropertyManagerTest.java | 20 +- .../stack/DBTraceStackManagerObjectTest.java | 4 +- .../stack/DBTraceStackManagerTest.java | 34 +- .../symbol/DBTraceFunctionSymbolTest.java | 100 +++--- .../symbol/DBTraceReferenceManagerTest.java | 48 +-- .../symbol/DBTraceSymbolManagerTest.java | 40 +-- .../target/DBTraceObjectManagerTest.java | 86 ++--- .../DBTraceThreadManagerObjectTest.java | 4 +- .../thread/DBTraceThreadManagerTest.java | 6 +- .../time/schedule/TraceScheduleTest.java | 20 +- .../DBCachedObjectStoreFactoryTest.java | 11 +- .../database/DBCachedObjectStoreTest.java | 121 ++++--- .../database/spatial/RStarTreeMapTest.java | 31 +- .../full/TaintDebuggerPcodeEmulatorTest.java | 8 +- .../taint/plain/TaintPcodeEmulatorTest.java | 8 +- .../trace/TaintTracePcodeEmulatorTest.java | 31 +- .../plugin/core/analysis/DWARFAnalyzer.java | 2 +- .../core/assembler/PatchDataAction.java | 7 +- .../assembler/PatchInstructionAction.java | 7 +- .../archive/DataTypeManagerHandler.java | 4 +- .../misc/MyProgramChangesDisplayPlugin.java | 2 +- .../core/progmgr/AbstractUndoRedoAction.java | 4 +- .../core/progmgr/MultiProgramManager.java | 2 +- .../core/progmgr/ProgramSaveManager.java | 4 +- .../core/progmgr/TransactionMonitor.java | 6 +- .../searchtext/ListingDisplaySearcher.java | 2 +- .../ghidra/app/merge/AbstractMergeTest.java | 4 +- .../framework/data/PairedTransactionTest.java | 24 +- .../program/database/data/SettingsTest.java | 2 +- .../properties/DBPropertyMapManagerTest.java | 2 +- .../core/assembler/AssemblerPluginTest.java | 23 +- .../app/plugin/core/analysis/PdbAnalyzer.java | 2 +- .../core/analysis/PdbUniversalAnalyzer.java | 2 +- .../plugin/core/diff/ProgramDiffPlugin.java | 2 +- .../DebuggerEmuExampleScript.java | 6 +- .../StandAloneSyscallEmuExampleScript.java | 4 +- .../java/ghidra/pcode/struct/DefaultVar.java | 4 +- .../main/java/ghidra/pcode/struct/Expr.java | 4 +- ...EmuLinuxAmd64SyscallUseropLibraryTest.java | 16 +- .../EmuLinuxX86SyscallUseropLibraryTest.java | 16 +- .../sys/EmuAmd64SyscallUseropLibraryTest.java | 13 +- .../ghidra/feature/vt/api/db/VTSessionDB.java | 5 +- .../feature/vt/api/util/EmptyVTSession.java | 16 +- .../vt/gui/editors/TagEditorDialog.java | 6 +- .../vt/gui/plugin/VTControllerImpl.java | 6 +- .../feature/vt/gui/task/SetMatchTagTask.java | 6 +- .../DB/src/main/java/db/DBHandle.java | 35 ++ .../DB/src/main/java/db/Transaction.java | 119 +++++++ .../AbstractBytesPcodeExecutorStatePiece.java | 2 +- .../data/AbstractTransactionManager.java | 21 +- .../framework/data/DomainObjectAdapterDB.java | 40 ++- .../data/DomainObjectDBTransaction.java | 30 +- .../data/DomainObjectTransactionManager.java | 19 +- .../data/SynchronizedTransaction.java | 31 +- .../data/SynchronizedTransactionManager.java | 25 +- .../framework/main/FileActionManager.java | 2 +- ...{Transaction.java => TransactionInfo.java} | 21 +- .../framework/model/TransactionListener.java | 2 +- .../framework/model/UndoableDomainObject.java | 25 +- .../program/database/ProgramUserDataDB.java | 5 + .../database/data/ProgramDataTypeManager.java | 8 +- .../database/data/ProjectDataTypeManager.java | 8 +- .../database/util/ProgramTransaction.java | 87 ----- .../program/model/data/DataTypeManager.java | 27 +- .../model/data/StandAloneDataTypeManager.java | 28 +- .../model/listing/ProgramUserData.java | 14 + ...BufferAdapter.java => MemBufferMixin.java} | 2 +- .../util/database/UndoableTransaction.java | 311 ------------------ .../assembler/sleigh/PublicAPITest.java | 6 +- .../ghidra/program/model/StubProgram.java | 8 +- .../model/data/TestDoubleDataTypeManager.java | 6 + .../model/data/TestDummyDataTypeManager.java | 6 + 209 files changed, 1892 insertions(+), 2054 deletions(-) create mode 100644 Ghidra/Framework/DB/src/main/java/db/Transaction.java rename Ghidra/Framework/Project/src/main/java/ghidra/framework/model/{Transaction.java => TransactionInfo.java} (71%) delete mode 100644 Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/util/ProgramTransaction.java rename Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/mem/{MemBufferAdapter.java => MemBufferMixin.java} (97%) delete mode 100644 Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/util/database/UndoableTransaction.java diff --git a/Ghidra/Debug/Debugger-agent-dbgmodel-traceloader/ghidra_scripts/BangAddressToMemory.java b/Ghidra/Debug/Debugger-agent-dbgmodel-traceloader/ghidra_scripts/BangAddressToMemory.java index 3234480b31..4a1eacbbd0 100644 --- a/Ghidra/Debug/Debugger-agent-dbgmodel-traceloader/ghidra_scripts/BangAddressToMemory.java +++ b/Ghidra/Debug/Debugger-agent-dbgmodel-traceloader/ghidra_scripts/BangAddressToMemory.java @@ -18,6 +18,7 @@ import java.nio.ByteOrder; import agent.dbgeng.manager.impl.DbgManagerImpl; import agent.dbgeng.model.AbstractDbgModel; +import db.Transaction; import ghidra.app.script.GhidraScript; import ghidra.app.services.DebuggerModelService; import ghidra.app.services.DebuggerTraceManagerService; @@ -29,7 +30,6 @@ import ghidra.trace.model.Trace; import ghidra.trace.model.memory.*; import ghidra.util.LockHold; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; /** @@ -119,7 +119,7 @@ public class BangAddressToMemory extends GhidraScript { } private void parse(String result) { - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Populate memory"); + try (Transaction tx = trace.openTransaction("Populate memory"); LockHold hold = trace.lockWrite();) { //Pattern pattern = Pattern.compile("\\s+(*)\\s+(*)\\s+"); //Matcher matcher = pattern.matcher(fullclassname); diff --git a/Ghidra/Debug/Debugger-agent-dbgmodel-traceloader/ghidra_scripts/PopulateTraceLocal.java b/Ghidra/Debug/Debugger-agent-dbgmodel-traceloader/ghidra_scripts/PopulateTraceLocal.java index 15bef1d234..dbac0e981f 100644 --- a/Ghidra/Debug/Debugger-agent-dbgmodel-traceloader/ghidra_scripts/PopulateTraceLocal.java +++ b/Ghidra/Debug/Debugger-agent-dbgmodel-traceloader/ghidra_scripts/PopulateTraceLocal.java @@ -25,6 +25,7 @@ import agent.dbgmodel.dbgmodel.DbgModel; import agent.dbgmodel.dbgmodel.bridge.HostDataModelAccess; import agent.dbgmodel.dbgmodel.main.ModelObject; import agent.dbgmodel.impl.dbgmodel.bridge.HDMAUtil; +import db.Transaction; import ghidra.app.script.GhidraScript; import ghidra.app.services.DebuggerTraceManagerService; import ghidra.program.model.address.*; @@ -39,7 +40,6 @@ import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.thread.TraceThreadManager; import ghidra.trace.model.time.TraceTimeManager; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; /** * This script populates a trace database for demonstrations purposes and opens it in the current @@ -189,8 +189,7 @@ public class PopulateTraceLocal extends GhidraScript { client.openDumpFileWide(f.getAbsolutePath()); control.waitForEvent(); - try (UndoableTransaction tid = - UndoableTransaction.start(trace, "Populate Events")) { + try (Transaction tx = trace.openTransaction("Populate Events")) { List children = util.getElements(List.of("Debugger", "State", "DebuggerVariables", "curprocess", @@ -282,8 +281,7 @@ public class PopulateTraceLocal extends GhidraScript { } } - try (UndoableTransaction tid = - UndoableTransaction.start(trace, "Populate Registers")) { + try (Transaction tx = trace.openTransaction("Populate Registers")) { //for (Long tick : tickManager.getAllTicks()) { for (Long snap : eventSnaps) { control.execute("!tt " + Long.toHexString(snap) + ":0"); @@ -331,7 +329,7 @@ public class PopulateTraceLocal extends GhidraScript { } /* - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Populate Heap", true)) { + try (Transaction tx = trace.openTransaction("Populate Heap")) { ModelObject currentSession = util.getCurrentSession(); ModelObject data = currentSession.getKeyValue("TTD").getKeyValue("Data"); ModelMethod heap = data.getMethod("Heap"); diff --git a/Ghidra/Debug/Debugger-agent-dbgmodel-traceloader/ghidra_scripts/PopulateTraceRemote.java b/Ghidra/Debug/Debugger-agent-dbgmodel-traceloader/ghidra_scripts/PopulateTraceRemote.java index 3d60abb685..7eb2ef9704 100644 --- a/Ghidra/Debug/Debugger-agent-dbgmodel-traceloader/ghidra_scripts/PopulateTraceRemote.java +++ b/Ghidra/Debug/Debugger-agent-dbgmodel-traceloader/ghidra_scripts/PopulateTraceRemote.java @@ -16,6 +16,7 @@ import java.io.File; import java.util.Set; +import db.Transaction; import ghidra.app.script.GhidraScript; import ghidra.app.services.DebuggerModelService; import ghidra.app.services.DebuggerTraceManagerService; @@ -28,7 +29,6 @@ import ghidra.program.model.lang.*; import ghidra.trace.database.DBTrace; import ghidra.trace.model.Trace; import ghidra.trace.model.time.TraceTimeManager; -import ghidra.util.database.UndoableTransaction; /** * This script populates a trace database for demonstrations purposes and opens it in the current @@ -151,7 +151,7 @@ public class PopulateTraceRemote extends GhidraScript { manager = tool.getService(DebuggerTraceManagerService.class); targets = tool.getService(DebuggerModelService.class); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Populate Events")) { + try (Transaction tx = trace.openTransaction("Populate Events")) { timeManager = trace.getTimeManager(); timeManager.createSnapshot("init"); } diff --git a/Ghidra/Debug/Debugger/ghidra_scripts/PopulateDemoTrace.java b/Ghidra/Debug/Debugger/ghidra_scripts/PopulateDemoTrace.java index 27cccbe368..4f202ca7c7 100644 --- a/Ghidra/Debug/Debugger/ghidra_scripts/PopulateDemoTrace.java +++ b/Ghidra/Debug/Debugger/ghidra_scripts/PopulateDemoTrace.java @@ -18,6 +18,7 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.*; +import db.Transaction; import ghidra.app.plugin.assembler.Assembler; import ghidra.app.plugin.assembler.Assemblers; import ghidra.app.script.GhidraScript; @@ -39,7 +40,6 @@ import ghidra.trace.model.symbol.TraceLabelSymbol; import ghidra.trace.model.symbol.TraceNamespaceSymbol; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.TraceSnapshot; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.CancelledException; import ghidra.util.task.TaskMonitor; @@ -289,12 +289,10 @@ public class PopulateDemoTrace extends GhidraScript { /** * For clarity, I will add each tick to the trace in its own transaction. The - * UndoableTransaction class eases the syntax and reduces errors in starting and ending - * transactions. This Utility deprecates ProgramTransaction, as it can be used on any domain - * object. + * Transaction class eases the syntax and reduces errors in starting and ending + * transactions. */ - try (UndoableTransaction tid = - UndoableTransaction.start(trace, "Populate First Snapshot")) { + try (Transaction tx = trace.openTransaction("Populate First Snapshot")) { /** * While not strictly required, each tick should be explicitly added to the database and * given a description. Some things may mis-behave if there does not exist at least one @@ -438,7 +436,7 @@ public class PopulateDemoTrace extends GhidraScript { /** * Just hand emulate the stepping */ - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped: PUSH RBP").getKey(); stack1offset -= 8; @@ -465,7 +463,7 @@ public class PopulateDemoTrace extends GhidraScript { /** * More hand emulation */ - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped: MOV RBP,RSP").getKey(); putRIP(snap, regs1, mainInstructions.get(++pc1)); @@ -481,7 +479,7 @@ public class PopulateDemoTrace extends GhidraScript { * While this is a complicated call, there is nothing new to demonstrate in its * implementation. As an exercise, see if you can follow what is happening within. */ - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager() .createSnapshot("Stepped Thread 1: CALL clone -> Thread 2") .getKey(); @@ -519,7 +517,7 @@ public class PopulateDemoTrace extends GhidraScript { /** * Hand emulate thread1 a few steps */ - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 1: RET from clone").getKey(); @@ -534,7 +532,7 @@ public class PopulateDemoTrace extends GhidraScript { /** * ... */ - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 1: TEST EAX,EAX").getKey(); @@ -544,7 +542,7 @@ public class PopulateDemoTrace extends GhidraScript { placeRegUnits(snap, thread1); } - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 1: JNZ child").getKey(); @@ -556,7 +554,7 @@ public class PopulateDemoTrace extends GhidraScript { /** * Switch to thread2 */ - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 2: RET from clone").getKey(); @@ -568,7 +566,7 @@ public class PopulateDemoTrace extends GhidraScript { placeRegUnits(snap, thread2); } - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 2: TEST EAX,EAX").getKey(); @@ -578,7 +576,7 @@ public class PopulateDemoTrace extends GhidraScript { placeRegUnits(snap, thread2); } - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 2: JNZ child").getKey(); @@ -590,7 +588,7 @@ public class PopulateDemoTrace extends GhidraScript { /** * Switch to thread1 */ - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 1: SUB RSP,0x10").getKey(); @@ -602,7 +600,7 @@ public class PopulateDemoTrace extends GhidraScript { placeRegUnits(snap, thread1); } - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 1: MOV...(1)").getKey(); @@ -613,7 +611,7 @@ public class PopulateDemoTrace extends GhidraScript { placeRegUnits(snap, thread1); } - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 1: MOV...(2)").getKey(); @@ -624,7 +622,7 @@ public class PopulateDemoTrace extends GhidraScript { placeRegUnits(snap, thread1); } - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 1: MOV...(3)").getKey(); @@ -635,7 +633,7 @@ public class PopulateDemoTrace extends GhidraScript { placeRegUnits(snap, thread1); } - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 1: MOV...(4)").getKey(); @@ -649,7 +647,7 @@ public class PopulateDemoTrace extends GhidraScript { /** * Switch to thread2 */ - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 2: SUB RSP,0x10").getKey(); @@ -661,7 +659,7 @@ public class PopulateDemoTrace extends GhidraScript { placeRegUnits(snap, thread2); } - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 2: MOV...(1)").getKey(); @@ -672,7 +670,7 @@ public class PopulateDemoTrace extends GhidraScript { placeRegUnits(snap, thread2); } - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 2: MOV...(2)").getKey(); @@ -683,7 +681,7 @@ public class PopulateDemoTrace extends GhidraScript { placeRegUnits(snap, thread2); } - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 2: MOV...(3)").getKey(); @@ -697,7 +695,7 @@ public class PopulateDemoTrace extends GhidraScript { /** * Let thread2 exit first */ - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 2: CALL exit").getKey(); @@ -707,7 +705,7 @@ public class PopulateDemoTrace extends GhidraScript { /** * Terminate */ - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Step")) { + try (Transaction tx = trace.openTransaction("Step")) { long snap = trace.getTimeManager().createSnapshot("Stepped Thread 1: CALL exit").getKey(); diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/action/LoadEmulatorAutoReadMemorySpec.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/action/LoadEmulatorAutoReadMemorySpec.java index 756379ab30..52a0fd06e4 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/action/LoadEmulatorAutoReadMemorySpec.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/action/LoadEmulatorAutoReadMemorySpec.java @@ -20,6 +20,7 @@ import java.util.concurrent.CompletableFuture; import javax.swing.Icon; +import db.Transaction; import ghidra.app.plugin.core.debug.DebuggerCoordinates; import ghidra.app.plugin.core.debug.gui.DebuggerResources.AutoReadMemoryAction; import ghidra.app.plugin.core.debug.service.emulation.ProgramEmulationUtils; @@ -34,7 +35,6 @@ import ghidra.trace.model.Lifespan; import ghidra.trace.model.Trace; import ghidra.trace.model.memory.TraceMemoryManager; import ghidra.trace.model.memory.TraceMemoryState; -import ghidra.util.database.UndoableTransaction; public class LoadEmulatorAutoReadMemorySpec implements AutoReadMemorySpec { public static final String CONFIG_NAME = "LOAD_EMULATOR"; @@ -85,7 +85,7 @@ public class LoadEmulatorAutoReadMemorySpec implements AutoReadMemorySpec { long snap = coordinates.getSnap(); ByteBuffer buf = ByteBuffer.allocate(4096); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Load Visible")) { + try (Transaction tx = trace.openTransaction("Load Visible")) { new AbstractMappedMemoryBytesVisitor(mappingService, buf.array()) { @Override protected void visitData(Address hostAddr, byte[] data, int size) { diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/breakpoint/BreakpointLocationRow.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/breakpoint/BreakpointLocationRow.java index 2d0fa3bb57..2423c56544 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/breakpoint/BreakpointLocationRow.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/breakpoint/BreakpointLocationRow.java @@ -18,13 +18,13 @@ package ghidra.app.plugin.core.debug.gui.breakpoint; import java.util.Set; import java.util.stream.Collectors; +import db.Transaction; import ghidra.app.services.LogicalBreakpoint; import ghidra.app.services.LogicalBreakpoint.State; import ghidra.pcode.exec.SleighUtils; import ghidra.program.model.address.Address; import ghidra.trace.model.breakpoint.TraceBreakpoint; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; public class BreakpointLocationRow { private final DebuggerBreakpointsProvider provider; @@ -73,8 +73,7 @@ public class BreakpointLocationRow { } public void setName(String name) { - try (UndoableTransaction tid = - UndoableTransaction.start(loc.getTrace(), "Set breakpoint name")) { + try (Transaction tid = loc.getTrace().openTransaction("Set breakpoint name")) { loc.setName(name); } } @@ -100,8 +99,7 @@ public class BreakpointLocationRow { } public void setComment(String comment) { - try (UndoableTransaction tid = - UndoableTransaction.start(loc.getTrace(), "Set breakpoint comment")) { + try (Transaction tid = loc.getTrace().openTransaction("Set breakpoint comment")) { loc.setComment(comment); } } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyIntoProgramDialog.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyIntoProgramDialog.java index 576d032064..17c02ef96a 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyIntoProgramDialog.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyIntoProgramDialog.java @@ -27,6 +27,7 @@ import javax.swing.*; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; +import db.Transaction; import docking.ReusableDialogComponentProvider; import docking.widgets.table.*; import docking.widgets.table.DefaultEnumeratedColumnTableModel.EnumeratedTableColumn; @@ -47,7 +48,6 @@ import ghidra.trace.model.memory.TraceMemoryRegion; import ghidra.trace.model.modules.*; import ghidra.trace.model.program.TraceProgramView; import ghidra.util.*; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.CancelledException; import ghidra.util.table.GhidraTableFilterPanel; import ghidra.util.task.*; @@ -831,7 +831,7 @@ public class DebuggerCopyIntoProgramDialog extends ReusableDialogComponentProvid Program dest = getDestination().getOrCreateProgram(source, this); boolean doRelease = !Arrays.asList(programManager.getAllOpenPrograms()).contains(dest); TraceRecorder recorder = getRecorderIfEnabledAndReadsPresent(); - try (UndoableTransaction tid = UndoableTransaction.start(dest, "Copy From Trace")) { + try (Transaction tx = dest.openTransaction("Copy From Trace")) { monitor.initialize(tableModel.getRowCount()); for (RangeEntry entry : tableModel.getModelData()) { monitor.setMessage("Copying into " + entry.getDstRange()); diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/memory/RegionRow.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/memory/RegionRow.java index 5003ba4d6c..2277cea485 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/memory/RegionRow.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/memory/RegionRow.java @@ -15,11 +15,11 @@ */ package ghidra.app.plugin.core.debug.gui.memory; +import db.Transaction; import ghidra.program.model.address.Address; import ghidra.program.model.address.AddressRange; import ghidra.trace.model.Lifespan; import ghidra.trace.model.memory.TraceMemoryRegion; -import ghidra.util.database.UndoableTransaction; public class RegionRow { private final TraceMemoryRegion region; @@ -33,8 +33,7 @@ public class RegionRow { } public void setName(String name) { - try (UndoableTransaction tid = - UndoableTransaction.start(region.getTrace(), "Rename region")) { + try (Transaction tx = region.getTrace().openTransaction("Rename region")) { region.setName(name); } } @@ -73,8 +72,8 @@ public class RegionRow { } public void setRead(boolean read) { - try (UndoableTransaction tid = - UndoableTransaction.start(region.getTrace(), "Toggle region read flag")) { + try (Transaction tx = + region.getTrace().openTransaction("Toggle region read flag")) { region.setRead(read); } } @@ -84,8 +83,8 @@ public class RegionRow { } public void setWrite(boolean write) { - try (UndoableTransaction tid = - UndoableTransaction.start(region.getTrace(), "Toggle region write flag")) { + try (Transaction tx = + region.getTrace().openTransaction("Toggle region write flag")) { region.setWrite(write); } } @@ -95,8 +94,8 @@ public class RegionRow { } public void setExecute(boolean execute) { - try (UndoableTransaction tid = - UndoableTransaction.start(region.getTrace(), "Toggle region execute flag")) { + try (Transaction tx = + region.getTrace().openTransaction("Toggle region execute flag")) { region.setExecute(execute); } } @@ -106,8 +105,8 @@ public class RegionRow { } public void setVolatile(boolean vol) { - try (UndoableTransaction tid = - UndoableTransaction.start(region.getTrace(), "Toggle region volatile flag")) { + try (Transaction tx = + region.getTrace().openTransaction("Toggle region volatile flag")) { region.setVolatile(vol); } } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/model/columns/TraceValueObjectEditableAttributeColumn.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/model/columns/TraceValueObjectEditableAttributeColumn.java index e11e184ad5..0914dec4f7 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/model/columns/TraceValueObjectEditableAttributeColumn.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/model/columns/TraceValueObjectEditableAttributeColumn.java @@ -15,6 +15,7 @@ */ package ghidra.app.plugin.core.debug.gui.model.columns; +import db.Transaction; import ghidra.app.plugin.core.debug.gui.model.ObjectTableModel.ValueProperty; import ghidra.app.plugin.core.debug.gui.model.ObjectTableModel.ValueRow; import ghidra.docking.settings.Settings; @@ -22,7 +23,6 @@ import ghidra.framework.plugintool.ServiceProvider; import ghidra.trace.model.Lifespan; import ghidra.trace.model.Trace; import ghidra.trace.model.target.TraceObject; -import ghidra.util.database.UndoableTransaction; public class TraceValueObjectEditableAttributeColumn extends TraceValueObjectAttributeColumn implements EditableColumn, Trace> { @@ -40,8 +40,8 @@ public class TraceValueObjectEditableAttributeColumn extends TraceValueObject public void setValue(ValueRow row, ValueProperty value, Settings settings, Trace dataSource, ServiceProvider serviceProvider) { TraceObject object = row.getValue().getChild(); - try (UndoableTransaction tid = - UndoableTransaction.start(object.getTrace(), "Edit column " + getColumnName())) { + try (Transaction tx = + object.getTrace().openTransaction("Edit column " + getColumnName())) { object.setAttribute(Lifespan.nowOn(row.currentSnap()), attributeName, value.getValue()); } } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerStaticMappingProvider.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerStaticMappingProvider.java index f6932a10c3..05a380f9f6 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerStaticMappingProvider.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerStaticMappingProvider.java @@ -27,6 +27,7 @@ import javax.swing.*; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; +import db.Transaction; import docking.ActionContext; import docking.action.DockingAction; import docking.action.DockingActionIf; @@ -50,11 +51,9 @@ import ghidra.trace.model.*; import ghidra.trace.model.Trace.TraceStaticMappingChangeType; import ghidra.trace.model.modules.TraceStaticMapping; import ghidra.trace.model.modules.TraceStaticMappingManager; -import ghidra.trace.model.program.TraceProgramView; import ghidra.util.MathUtilities; import ghidra.util.Msg; import ghidra.util.database.ObjectKey; -import ghidra.util.database.UndoableTransaction; import ghidra.util.table.GhidraTableFilterPanel; public class DebuggerStaticMappingProvider extends ComponentProviderAdapter @@ -305,8 +304,7 @@ public class DebuggerStaticMappingProvider extends ComponentProviderAdapter private void activatedRemove(DebuggerStaticMappingActionContext ctx) { // TODO: Action to adjust life span? // Note: provider displays mappings for all time, so delete means delete, not truncate - try (UndoableTransaction tid = - UndoableTransaction.start(currentTrace, "Remove Static Mappings")) { + try (Transaction tid = currentTrace.openTransaction("Remove Static Mappings")) { for (StaticMappingRow mapping : ctx.getSelectedMappings()) { mapping.getMapping().delete(); } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/ModuleRow.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/ModuleRow.java index e008fde37e..be92fda255 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/ModuleRow.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/ModuleRow.java @@ -15,10 +15,10 @@ */ package ghidra.app.plugin.core.debug.gui.modules; +import db.Transaction; import ghidra.program.model.address.Address; import ghidra.trace.model.Lifespan; import ghidra.trace.model.modules.TraceModule; -import ghidra.util.database.UndoableTransaction; public class ModuleRow { private final TraceModule module; @@ -32,8 +32,7 @@ public class ModuleRow { } public void setName(String name) { - try (UndoableTransaction tid = - UndoableTransaction.start(module.getTrace(), "Renamed module")) { + try (Transaction tx = module.getTrace().openTransaction("Renamed module")) { module.setName(name); } } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/SectionRow.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/SectionRow.java index e627a02890..ac1da236c7 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/SectionRow.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/SectionRow.java @@ -15,6 +15,7 @@ */ package ghidra.app.plugin.core.debug.gui.modules; +import db.Transaction; import ghidra.program.model.address.Address; import ghidra.program.model.address.AddressRange; import ghidra.trace.model.DefaultTraceLocation; @@ -22,7 +23,6 @@ import ghidra.trace.model.TraceLocation; import ghidra.trace.model.modules.TraceModule; import ghidra.trace.model.modules.TraceSection; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; public class SectionRow { @@ -41,8 +41,7 @@ public class SectionRow { } public void setName(String name) { - try (UndoableTransaction tid = - UndoableTransaction.start(section.getTrace(), "Rename section")) { + try (Transaction tx = section.getTrace().openTransaction("Rename section")) { section.setName(name); } catch (DuplicateNameException e) { diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/pcode/DebuggerPcodeStepperProvider.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/pcode/DebuggerPcodeStepperProvider.java index bbd79ea519..4c7112d028 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/pcode/DebuggerPcodeStepperProvider.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/pcode/DebuggerPcodeStepperProvider.java @@ -30,6 +30,7 @@ import javax.swing.table.*; import org.apache.commons.lang3.StringUtils; +import db.Transaction; import docking.action.DockingAction; import docking.widgets.table.*; import docking.widgets.table.DefaultEnumeratedColumnTableModel.EnumeratedTableColumn; @@ -62,7 +63,6 @@ import ghidra.trace.model.Trace; import ghidra.trace.model.time.schedule.TraceSchedule; import ghidra.util.ColorUtils; import ghidra.util.HTMLUtilities; -import ghidra.util.database.UndoableTransaction; import ghidra.util.table.GhidraTable; import ghidra.util.table.GhidraTableFilterPanel; import ghidra.util.table.column.AbstractGColumnRenderer; @@ -241,8 +241,8 @@ public class DebuggerPcodeStepperProvider extends ComponentProviderAdapter { if (dataType == null) { return null; } - try (UndoableTransaction tid = - UndoableTransaction.start(current.getTrace(), "Resolve DataType")) { + try (Transaction tid = + current.getTrace().openTransaction("Resolve DataType")) { return current.getTrace().getDataTypeManager().resolve(dataType, null); } } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersProvider.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersProvider.java index 6c64729259..aa5cf54fc9 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersProvider.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersProvider.java @@ -31,6 +31,7 @@ import javax.swing.table.TableColumnModel; import org.apache.commons.lang3.exception.ExceptionUtils; +import db.Transaction; import docking.*; import docking.action.*; import docking.action.builder.ActionBuilder; @@ -78,7 +79,6 @@ import ghidra.trace.util.TraceRegisterUtils; import ghidra.util.*; import ghidra.util.classfinder.ClassSearcher; import ghidra.util.data.DataTypeParser.AllowedDataTypes; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.CancelledException; import ghidra.util.table.GhidraTable; import ghidra.util.table.GhidraTableFilterPanel; @@ -450,8 +450,7 @@ public class DebuggerRegistersProvider extends ComponentProviderAdapter if (dataType == null) { return null; } - try (UndoableTransaction tid = - UndoableTransaction.start(currentTrace, "Resolve DataType")) { + try (Transaction tx = currentTrace.openTransaction("Resolve DataType")) { return currentTrace.getDataTypeManager().resolve(dataType, null); } } @@ -902,8 +901,7 @@ public class DebuggerRegistersProvider extends ComponentProviderAdapter * register and modify it.... Well, that works until you consider changes in time.... */ void writeRegisterDataType(Register register, DataType dataType) { - try (UndoableTransaction tid = - UndoableTransaction.start(current.getTrace(), "Edit Register Type")) { + try (Transaction tx = current.getTrace().openTransaction("Edit Register Type")) { if (dataType instanceof Pointer ptrType && register.getAddress().isRegisterAddress()) { // Because we're about to use the size, resolve it first ptrType = (Pointer) current.getTrace() @@ -1004,8 +1002,8 @@ public class DebuggerRegistersProvider extends ComponentProviderAdapter void prepareRegisterSpace() { if (current.getThread() != null && current.getTrace().getObjectManager().getRootSchema() != null) { - try (UndoableTransaction tid = - UndoableTransaction.start(current.getTrace(), "Create/initialize register space")) { + try (Transaction tx = + current.getTrace().openTransaction("Create/initialize register space")) { getRegisterMemorySpace(true); } } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/stack/StackFrameRow.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/stack/StackFrameRow.java index 2a7716ae84..a898002452 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/stack/StackFrameRow.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/stack/StackFrameRow.java @@ -15,10 +15,10 @@ */ package ghidra.app.plugin.core.debug.gui.stack; +import db.Transaction; import ghidra.program.model.address.Address; import ghidra.program.model.listing.Function; import ghidra.trace.model.stack.TraceStackFrame; -import ghidra.util.database.UndoableTransaction; public class StackFrameRow { public static class Synthetic extends StackFrameRow { @@ -73,8 +73,8 @@ public class StackFrameRow { } public void setComment(String comment) { - try (UndoableTransaction tid = - UndoableTransaction.start(frame.getStack().getThread().getTrace(), "Frame comment")) { + try (Transaction tx = + frame.getStack().getThread().getTrace().openTransaction("Frame comment")) { frame.setComment(getSnap(), comment); } } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/thread/ThreadRow.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/thread/ThreadRow.java index 0c20ad2cbe..a25e398a10 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/thread/ThreadRow.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/thread/ThreadRow.java @@ -15,6 +15,7 @@ */ package ghidra.app.plugin.core.debug.gui.thread; +import db.Transaction; import ghidra.app.services.DebuggerModelService; import ghidra.app.services.TraceRecorder; import ghidra.dbg.target.TargetExecutionStateful.TargetExecutionState; @@ -22,7 +23,6 @@ import ghidra.trace.model.Lifespan; import ghidra.trace.model.Trace; import ghidra.trace.model.thread.TraceThread; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; public class ThreadRow { private final DebuggerModelService service; @@ -42,8 +42,7 @@ public class ThreadRow { } public void setName(String name) { - try (UndoableTransaction tid = - UndoableTransaction.start(thread.getTrace(), "Rename thread")) { + try (Transaction tx = thread.getTrace().openTransaction("Rename thread")) { thread.setName(name); } } @@ -67,8 +66,7 @@ public class ThreadRow { } public void setComment(String comment) { - try (UndoableTransaction tid = - UndoableTransaction.start(thread.getTrace(), "Rename thread")) { + try (Transaction tx = thread.getTrace().openTransaction("Set thread comment")) { thread.setComment(comment); } } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimePlugin.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimePlugin.java index 7d6d09dc7c..02742aad76 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimePlugin.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimePlugin.java @@ -18,6 +18,7 @@ package ghidra.app.plugin.core.debug.gui.time; import java.util.Map; import java.util.Map.Entry; +import db.Transaction; import docking.ActionContext; import docking.action.DockingAction; import docking.widgets.dialogs.InputDialog; @@ -37,7 +38,6 @@ import ghidra.trace.model.Trace; import ghidra.trace.model.program.TraceProgramView; import ghidra.trace.model.time.TraceSnapshot; import ghidra.trace.model.time.TraceTimeManager; -import ghidra.util.database.UndoableTransaction; @PluginInfo( shortDescription = "Lists recorded snapshots in a trace", @@ -112,7 +112,7 @@ public class DebuggerTimePlugin extends AbstractDebuggerPlugin { if (dialog.isCanceled()) { return; } - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Rename Snapshot")) { + try (Transaction tx = trace.openTransaction("Rename Snapshot")) { if (snapshot == null) { snapshot = manager.getSnapshot(snap, true); } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/SnapshotRow.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/SnapshotRow.java index 24d28bf6be..9585c83262 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/SnapshotRow.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/SnapshotRow.java @@ -17,11 +17,11 @@ package ghidra.app.plugin.core.debug.gui.time; import java.util.Date; +import db.Transaction; import ghidra.trace.model.Trace; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.TraceSnapshot; import ghidra.util.DateUtils; -import ghidra.util.database.UndoableTransaction; public class SnapshotRow { //private static final DateFormat FORMAT = DateFormat.getDateTimeInstance(); @@ -60,8 +60,7 @@ public class SnapshotRow { } public void setDescription(String description) { - try (UndoableTransaction tid = - UndoableTransaction.start(trace, "Modify snapshot description")) { + try (Transaction tx = trace.openTransaction("Modify snapshot description")) { snapshot.setDescription(description); } } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/watch/DebuggerWatchesProvider.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/watch/DebuggerWatchesProvider.java index 33cd9d3a34..dde1f7ae9c 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/watch/DebuggerWatchesProvider.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/watch/DebuggerWatchesProvider.java @@ -31,6 +31,7 @@ import javax.swing.table.TableColumnModel; import org.jdom.Element; +import db.Transaction; import docking.ActionContext; import docking.WindowPosition; import docking.action.DockingAction; @@ -81,7 +82,6 @@ import ghidra.trace.model.time.schedule.TraceSchedule; import ghidra.trace.util.TraceAddressSpace; import ghidra.util.HelpLocation; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.CancelledException; import ghidra.util.table.GhidraTable; import ghidra.util.table.GhidraTableFilterPanel; @@ -280,8 +280,7 @@ public class DebuggerWatchesProvider extends ComponentProviderAdapter if (dataType == null) { return null; } - try (UndoableTransaction tid = - UndoableTransaction.start(currentTrace, "Resolve DataType")) { + try (Transaction tx = currentTrace.openTransaction("Resolve DataType")) { return currentTrace.getDataTypeManager().resolve(dataType, null); } } @@ -605,8 +604,8 @@ public class DebuggerWatchesProvider extends ComponentProviderAdapter return; } } - try (UndoableTransaction tid = - UndoableTransaction.start(current.getTrace(), "Apply Watch Data Type")) { + try (Transaction tx = + current.getTrace().openTransaction("Apply Watch Data Type")) { try { listing.clearCodeUnits(row.getAddress(), row.getRange().getMaxAddress(), false); Data data = listing.createData(address, dataType, size); diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/watch/WatchRow.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/watch/WatchRow.java index ab3704dc74..06184ea615 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/watch/WatchRow.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/watch/WatchRow.java @@ -19,6 +19,7 @@ import java.math.BigInteger; import java.util.*; import java.util.concurrent.CompletableFuture; +import db.Transaction; import ghidra.app.plugin.core.debug.DebuggerCoordinates; import ghidra.app.plugin.processors.sleigh.SleighLanguage; import ghidra.app.services.DataTypeManagerService; @@ -44,7 +45,6 @@ import ghidra.trace.model.memory.TraceMemoryState; import ghidra.trace.model.symbol.TraceLabelSymbol; import ghidra.util.Msg; import ghidra.util.NumericUtilities; -import ghidra.util.database.UndoableTransaction; public class WatchRow { public static final int TRUNCATE_BYTES_LENGTH = 64; @@ -234,8 +234,7 @@ public class WatchRow { dataType = new PointerTypedef(null, ptrType.getDataType(), ptrType.getLength(), dtm, space); if (dtm != null) { - try (UndoableTransaction tid = - UndoableTransaction.start(dtm, "Resolve data type")) { + try (Transaction tid = dtm.openTransaction("Resolve data type")) { dataType = dtm.resolve(dataType, DataTypeConflictHandler.DEFAULT_HANDLER); } } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/mapping/DefaultDebuggerPlatformMapper.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/mapping/DefaultDebuggerPlatformMapper.java index e0c2fd12fb..3a8bc05668 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/mapping/DefaultDebuggerPlatformMapper.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/mapping/DefaultDebuggerPlatformMapper.java @@ -15,6 +15,7 @@ */ package ghidra.app.plugin.core.debug.mapping; +import db.Transaction; import ghidra.framework.plugintool.PluginTool; import ghidra.program.model.address.*; import ghidra.program.model.lang.CompilerSpec; @@ -24,7 +25,6 @@ import ghidra.trace.model.guest.*; import ghidra.trace.model.target.TraceObject; import ghidra.util.MathUtilities; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; public class DefaultDebuggerPlatformMapper extends AbstractDebuggerPlatformMapper { @@ -57,7 +57,7 @@ public class DefaultDebuggerPlatformMapper extends AbstractDebuggerPlatformMappe public void addToTrace(long snap) { String description = "Add guest " + cSpec.getLanguage().getLanguageDescription() + "/" + cSpec.getCompilerSpecDescription(); - try (UndoableTransaction tid = UndoableTransaction.start(trace, description)) { + try (Transaction tx = trace.openTransaction(description)) { TracePlatformManager platformManager = trace.getPlatformManager(); TracePlatform platform = platformManager.getOrAddPlatform(cSpec); if (platform.isHost()) { diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/mapping/ObjectBasedDebuggerMemoryMapper.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/mapping/ObjectBasedDebuggerMemoryMapper.java index 33ff7e4cc8..96087f40e1 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/mapping/ObjectBasedDebuggerMemoryMapper.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/mapping/ObjectBasedDebuggerMemoryMapper.java @@ -18,9 +18,9 @@ package ghidra.app.plugin.core.debug.mapping; import java.util.HashMap; import java.util.Map; +import db.Transaction; import ghidra.program.model.address.*; import ghidra.trace.model.Trace; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; public class ObjectBasedDebuggerMemoryMapper implements DebuggerMemoryMapper { @@ -77,8 +77,7 @@ public class ObjectBasedDebuggerMemoryMapper implements DebuggerMemoryMapper { } protected AddressSpace createSpace(String name) { - try (UndoableTransaction tid = - UndoableTransaction.start(trace, "Create space for mapping")) { + try (Transaction tx = trace.openTransaction("Create space for mapping")) { AddressFactory factory = trace.getBaseAddressFactory(); AddressSpace space = factory.getAddressSpace(name); if (space == null) { diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/DeleteEmuBreakpointActionItem.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/DeleteEmuBreakpointActionItem.java index 731ff4927b..85af3d90dc 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/DeleteEmuBreakpointActionItem.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/DeleteEmuBreakpointActionItem.java @@ -17,15 +17,15 @@ package ghidra.app.plugin.core.debug.service.breakpoint; import java.util.concurrent.CompletableFuture; +import db.Transaction; import ghidra.async.AsyncUtils; import ghidra.trace.model.breakpoint.TraceBreakpoint; -import ghidra.util.database.UndoableTransaction; public record DeleteEmuBreakpointActionItem(TraceBreakpoint bpt) implements BreakpointActionItem { @Override public CompletableFuture execute() { - try (UndoableTransaction tid = - UndoableTransaction.start(bpt.getTrace(), "Delete Emulated Breakpoint")) { + try (Transaction tx = + bpt.getTrace().openTransaction("Delete Emulated Breakpoint")) { String emuName = PlaceEmuBreakpointActionItem.createName(bpt.getMinAddress()); if (bpt.getPath().contains(emuName)) { bpt.delete(); diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/DisableEmuBreakpointActionItem.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/DisableEmuBreakpointActionItem.java index 672138f009..5beb65cd54 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/DisableEmuBreakpointActionItem.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/DisableEmuBreakpointActionItem.java @@ -17,16 +17,16 @@ package ghidra.app.plugin.core.debug.service.breakpoint; import java.util.concurrent.CompletableFuture; +import db.Transaction; import ghidra.async.AsyncUtils; import ghidra.trace.model.breakpoint.TraceBreakpoint; -import ghidra.util.database.UndoableTransaction; public record DisableEmuBreakpointActionItem(TraceBreakpoint bpt) implements BreakpointActionItem { @Override public CompletableFuture execute() { - try (UndoableTransaction tid = - UndoableTransaction.start(bpt.getTrace(), "Disable Emulated Breakpoint")) { + try (Transaction tx = + bpt.getTrace().openTransaction("Disable Emulated Breakpoint")) { bpt.setEmuEnabled(false); } return AsyncUtils.NIL; diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/EnableEmuBreakpointActionItem.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/EnableEmuBreakpointActionItem.java index 2e830276c6..c6883f7211 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/EnableEmuBreakpointActionItem.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/EnableEmuBreakpointActionItem.java @@ -17,15 +17,15 @@ package ghidra.app.plugin.core.debug.service.breakpoint; import java.util.concurrent.CompletableFuture; +import db.Transaction; import ghidra.async.AsyncUtils; import ghidra.trace.model.breakpoint.TraceBreakpoint; -import ghidra.util.database.UndoableTransaction; public record EnableEmuBreakpointActionItem(TraceBreakpoint bpt) implements BreakpointActionItem { @Override public CompletableFuture execute() { - try (UndoableTransaction tid = - UndoableTransaction.start(bpt.getTrace(), "Enable Emulated Breakpoint")) { + try (Transaction tx = + bpt.getTrace().openTransaction("Enable Emulated Breakpoint")) { bpt.setEmuEnabled(true); } return AsyncUtils.NIL; diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/PlaceEmuBreakpointActionItem.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/PlaceEmuBreakpointActionItem.java index f7e0d5b92a..3ef326021e 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/PlaceEmuBreakpointActionItem.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/PlaceEmuBreakpointActionItem.java @@ -18,6 +18,7 @@ package ghidra.app.plugin.core.debug.service.breakpoint; import java.util.*; import java.util.concurrent.CompletableFuture; +import db.Transaction; import ghidra.async.AsyncUtils; import ghidra.dbg.target.TargetBreakpointSpec; import ghidra.dbg.target.TargetBreakpointSpecContainer; @@ -30,7 +31,6 @@ import ghidra.trace.model.breakpoint.TraceBreakpointKind; import ghidra.trace.model.memory.TraceMemoryRegion; import ghidra.trace.model.memory.TraceObjectMemoryRegion; import ghidra.trace.model.target.TraceObject; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; public record PlaceEmuBreakpointActionItem(Trace trace, long snap, Address address, long length, @@ -97,8 +97,7 @@ public record PlaceEmuBreakpointActionItem(Trace trace, long snap, Address addre @Override public CompletableFuture execute() { - try (UndoableTransaction tid = - UndoableTransaction.start(trace, "Place Emulated Breakpoint")) { + try (Transaction tx = trace.openTransaction("Place Emulated Breakpoint")) { // Defaults with emuEnable=true TraceBreakpoint bpt = trace.getBreakpointManager() .addBreakpoint(computePath(), Lifespan.at(snap), range(address, length), diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/ProgramBreakpoint.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/ProgramBreakpoint.java index 6655789ddd..0f243790b6 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/ProgramBreakpoint.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/ProgramBreakpoint.java @@ -19,6 +19,8 @@ import java.util.*; import com.google.gson.*; +import db.Transaction; +import ghidra.app.services.LogicalBreakpoint; import ghidra.app.services.LogicalBreakpoint.ProgramMode; import ghidra.program.model.address.Address; import ghidra.program.model.address.AddressSet; @@ -27,7 +29,6 @@ import ghidra.program.util.ProgramLocation; import ghidra.trace.model.breakpoint.TraceBreakpointKind; import ghidra.trace.model.breakpoint.TraceBreakpointKind.TraceBreakpointKindSet; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.CancelledException; import ghidra.util.task.TaskMonitor; @@ -194,8 +195,7 @@ public class ProgramBreakpoint { } private void writeProperties(Bookmark bookmark) { - try (UndoableTransaction tid = - UndoableTransaction.start(program, "Rename breakpoint")) { + try (Transaction tx = program.openTransaction("Rename breakpoint")) { bookmark.set(bookmark.getCategory(), computeComment()); } catch (ConcurrentModificationException e) { @@ -297,7 +297,7 @@ public class ProgramBreakpoint { // volatile reads Bookmark eBookmark = this.eBookmark; Bookmark dBookmark = this.dBookmark; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Clear breakpoint")) { + try (Transaction tx = program.openTransaction("Clear breakpoint")) { BookmarkManager bookmarkManager = program.getBookmarkManager(); if (eBookmark != null) { bookmarkManager.removeBookmark(eBookmark); @@ -452,13 +452,12 @@ public class ProgramBreakpoint { */ public void toggleWithComment(boolean enabled, String comment) { String addType = - enabled ? LogicalBreakpointInternal.BREAKPOINT_ENABLED_BOOKMARK_TYPE - : LogicalBreakpointInternal.BREAKPOINT_DISABLED_BOOKMARK_TYPE; + enabled ? LogicalBreakpoint.BREAKPOINT_ENABLED_BOOKMARK_TYPE + : LogicalBreakpoint.BREAKPOINT_DISABLED_BOOKMARK_TYPE; String delType = - enabled ? LogicalBreakpointInternal.BREAKPOINT_DISABLED_BOOKMARK_TYPE - : LogicalBreakpointInternal.BREAKPOINT_ENABLED_BOOKMARK_TYPE; - try (UndoableTransaction tid = - UndoableTransaction.start(program, "Enable breakpoint")) { + enabled ? LogicalBreakpoint.BREAKPOINT_DISABLED_BOOKMARK_TYPE + : LogicalBreakpoint.BREAKPOINT_ENABLED_BOOKMARK_TYPE; + try (Transaction tx = program.openTransaction("Toggle breakpoint")) { BookmarkManager manager = program.getBookmarkManager(); String catStr = computeCategory(); manager.setBookmark(address, addType, catStr, comment); diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/TraceBreakpointSet.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/TraceBreakpointSet.java index 9bfa6d3dfe..a315ebc3ef 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/TraceBreakpointSet.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/TraceBreakpointSet.java @@ -19,6 +19,7 @@ import java.util.*; import com.google.common.collect.Collections2; +import db.Transaction; import ghidra.app.services.*; import ghidra.app.services.LogicalBreakpoint.TraceMode; import ghidra.dbg.target.*; @@ -30,7 +31,6 @@ import ghidra.program.model.address.AddressRange; import ghidra.trace.model.Trace; import ghidra.trace.model.breakpoint.TraceBreakpoint; import ghidra.trace.model.breakpoint.TraceBreakpointKind; -import ghidra.util.database.UndoableTransaction; import utilities.util.IDHashed; /** @@ -218,7 +218,7 @@ class TraceBreakpointSet { */ public void setEmuSleigh(String emuSleigh) { this.emuSleigh = emuSleigh; - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Set breakpoint Sleigh")) { + try (Transaction tx = trace.openTransaction("Set breakpoint Sleigh")) { for (IDHashed bpt : breakpoints) { bpt.obj.setEmuSleigh(emuSleigh); } @@ -255,8 +255,7 @@ class TraceBreakpointSet { */ public boolean add(TraceBreakpoint bpt) { if (SleighUtils.UNCONDITIONAL_BREAK.equals(bpt.getEmuSleigh()) && emuSleigh != null) { - try (UndoableTransaction tid = - UndoableTransaction.start(trace, "Set breakpoint Sleigh")) { + try (Transaction tx = trace.openTransaction("Set breakpoint Sleigh")) { bpt.setEmuSleigh(emuSleigh); } } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/DebuggerEmulationServicePlugin.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/DebuggerEmulationServicePlugin.java index 98b7b5b5ac..516a0369ab 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/DebuggerEmulationServicePlugin.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/DebuggerEmulationServicePlugin.java @@ -27,6 +27,7 @@ import javax.swing.event.ChangeListener; import org.apache.commons.lang3.exception.ExceptionUtils; +import db.Transaction; import docking.ActionContext; import docking.action.DockingAction; import docking.action.ToggleDockingAction; @@ -62,7 +63,6 @@ import ghidra.trace.model.time.schedule.Scheduler.RunResult; import ghidra.util.HelpLocation; import ghidra.util.Msg; import ghidra.util.classfinder.ClassSearcher; -import ghidra.util.database.UndoableTransaction; import ghidra.util.datastruct.ListenerSet; import ghidra.util.exception.CancelledException; import ghidra.util.task.Task; @@ -556,8 +556,7 @@ public class DebuggerEmulationServicePlugin extends Plugin implements DebuggerEm DebuggerCoordinates current = traceManager.getCurrent(); Trace trace = current.getTrace(); long version = trace.getEmulatorCacheVersion(); - try (UndoableTransaction tid = - UndoableTransaction.start(trace, "Invalidate Emulator Cache")) { + try (Transaction tx = trace.openTransaction("Invalidate Emulator Cache")) { trace.setEmulatorCacheVersion(version + 1); } // NB. Success should already display on screen, since it's current. @@ -750,7 +749,7 @@ public class DebuggerEmulationServicePlugin extends Plugin implements DebuggerEm } protected TraceSnapshot writeToScratch(CacheKey key, CachedEmulator ce) { - try (UndoableTransaction tid = UndoableTransaction.start(key.trace, "Emulate")) { + try (Transaction tx = key.trace.openTransaction("Emulate")) { TraceSnapshot destSnap = findScratch(key.trace, key.time); try { ce.emulator().writeDown(key.platform, destSnap.getKey(), key.time.getSnap()); @@ -794,7 +793,7 @@ public class DebuggerEmulationServicePlugin extends Plugin implements DebuggerEm // Cause object-register support to copy values into new register spaces // TODO: I wish this were not necessary monitor.setMessage("Creating register spaces"); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Prepare emulation")) { + try (Transaction tx = trace.openTransaction("Prepare emulation")) { for (TraceThread thread : time.getThreads(trace)) { trace.getMemoryManager().getMemoryRegisterSpace(thread, 0, true); } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/ProgramEmulationUtils.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/ProgramEmulationUtils.java index cf48ae10c1..d0215d7135 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/ProgramEmulationUtils.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/ProgramEmulationUtils.java @@ -21,6 +21,7 @@ import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; +import db.Transaction; import ghidra.app.plugin.core.debug.service.modules.DebuggerStaticMappingUtils; import ghidra.app.plugin.core.debug.service.modules.DebuggerStaticMappingUtils.Extrema; import ghidra.app.services.DebuggerEmulationService; @@ -44,7 +45,6 @@ import ghidra.trace.model.thread.*; import ghidra.trace.model.time.TraceSnapshot; import ghidra.util.DifferenceAddressSetView; import ghidra.util.NumericUtilities; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; /** @@ -339,7 +339,7 @@ public enum ProgramEmulationUtils { boolean success = false; try { trace = new DBTrace(getTraceName(program), program.getCompilerSpec(), consumer); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Emulate")) { + try (Transaction tx = trace.openTransaction("Emulate")) { TraceSnapshot initial = trace.getTimeManager().createSnapshot(EMULATION_STARTED_AT + pc); long snap = initial.getKey(); @@ -383,8 +383,7 @@ public enum ProgramEmulationUtils { */ public static TraceThread launchEmulationThread(Trace trace, long snap, Program program, Address tracePc, Address programPc) { - try (UndoableTransaction tid = - UndoableTransaction.start(trace, "Emulate new Thread")) { + try (Transaction tx = trace.openTransaction("Emulate new Thread")) { TraceThread thread = doLaunchEmulationThread(trace, snap, program, tracePc, programPc); return thread; } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/DebuggerModelServiceProxyPlugin.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/DebuggerModelServiceProxyPlugin.java index 84cb8a0434..392f9fbbf7 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/DebuggerModelServiceProxyPlugin.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/DebuggerModelServiceProxyPlugin.java @@ -25,6 +25,7 @@ import java.util.stream.Stream; import org.apache.commons.lang3.exception.ExceptionUtils; +import db.Transaction; import docking.ActionContext; import docking.action.DockingAction; import docking.action.builder.MultiStateActionBuilder; @@ -58,7 +59,6 @@ import ghidra.program.model.util.StringPropertyMap; import ghidra.trace.model.Trace; import ghidra.trace.model.thread.TraceThread; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; import ghidra.util.datastruct.CollectionChangeListener; import ghidra.util.datastruct.ListenerSet; import ghidra.util.exception.CancelledException; @@ -305,7 +305,7 @@ public class DebuggerModelServiceProxyPlugin extends Plugin protected void writeMostRecentLaunches(Program program, List mrl) { ProgramUserData userData = program.getProgramUserData(); - try (UndoableTransaction tid = UndoableTransaction.start(userData)) { + try (Transaction tid = userData.openTransaction()) { StringPropertyMap prop = userData .getStringProperty(getName(), KEY_MOST_RECENT_LAUNCHES, true); Address min = program.getAddressFactory().getDefaultAddressSpace().getMinAddress(); diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/RecorderPermanentTransaction.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/RecorderPermanentTransaction.java index 1404f27400..6dcc822b9c 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/RecorderPermanentTransaction.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/RecorderPermanentTransaction.java @@ -15,27 +15,27 @@ */ package ghidra.app.plugin.core.debug.service.model; +import db.Transaction; import ghidra.framework.model.UndoableDomainObject; -import ghidra.util.database.UndoableTransaction; public class RecorderPermanentTransaction implements AutoCloseable { public static RecorderPermanentTransaction start(UndoableDomainObject obj, String description) { - UndoableTransaction tid = UndoableTransaction.start(obj, description); - return new RecorderPermanentTransaction(obj, tid); + Transaction tx = obj.openTransaction(description); + return new RecorderPermanentTransaction(obj, tx); } private final UndoableDomainObject obj; - private final UndoableTransaction tid; + private final Transaction tx; - public RecorderPermanentTransaction(UndoableDomainObject obj, UndoableTransaction tid) { + public RecorderPermanentTransaction(UndoableDomainObject obj, Transaction tx) { this.obj = obj; - this.tid = tid; + this.tx = tx; } @Override public void close() { - tid.close(); + tx.close(); obj.clearUndo(); } } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/TraceObjectManager.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/TraceObjectManager.java index d034341aca..fddb6c5b80 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/TraceObjectManager.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/TraceObjectManager.java @@ -22,6 +22,7 @@ import java.util.concurrent.CompletableFuture; import java.util.function.*; import java.util.stream.Collectors; +import db.Transaction; import ghidra.app.plugin.core.debug.mapping.*; import ghidra.app.plugin.core.debug.service.model.interfaces.*; import ghidra.app.services.TraceRecorder; @@ -38,7 +39,6 @@ import ghidra.trace.model.modules.TraceModule; import ghidra.trace.model.modules.TraceSection; import ghidra.trace.model.thread.TraceThread; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; import ghidra.util.datastruct.ListenerSet; import ghidra.util.exception.DuplicateNameException; @@ -254,8 +254,8 @@ public class TraceObjectManager { ManagedThreadRecorder threadRecorder = recorder.getThreadRecorder((TargetThread) added); TraceThread traceThread = threadRecorder.getTraceThread(); recorder.createSnapshot(traceThread + " started", traceThread, null); - try (UndoableTransaction tid = - UndoableTransaction.start(recorder.getTrace(), "Adjust thread creation")) { + try (Transaction tx = + recorder.getTrace().openTransaction("Adjust thread creation")) { long existing = traceThread.getCreationSnap(); if (existing == Long.MIN_VALUE) { traceThread.setCreationSnap(recorder.getSnap()); @@ -546,8 +546,7 @@ public class TraceObjectManager { ManagedThreadRecorder rec = recorder.getThreadRecorderForSuccessor(thread); if (rec != null) { String name = (String) added.get(TargetObject.DISPLAY_ATTRIBUTE_NAME); - try (UndoableTransaction tid = - UndoableTransaction.start(rec.getTrace(), "Rename thread")) { + try (Transaction tx = rec.getTrace().openTransaction("Rename thread")) { rec.getTraceThread().setName(name); } } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/launch/AbstractDebuggerProgramLaunchOffer.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/launch/AbstractDebuggerProgramLaunchOffer.java index ed20c6f409..949987d2ba 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/launch/AbstractDebuggerProgramLaunchOffer.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/launch/AbstractDebuggerProgramLaunchOffer.java @@ -15,7 +15,7 @@ */ package ghidra.app.plugin.core.debug.service.model.launch; -import static ghidra.async.AsyncUtils.loop; +import static ghidra.async.AsyncUtils.*; import java.io.IOException; import java.util.*; @@ -29,6 +29,7 @@ import javax.swing.JOptionPane; import org.jdom.Element; import org.jdom.JDOMException; +import db.Transaction; import ghidra.app.plugin.core.debug.gui.objects.components.DebuggerMethodInvocationDialog; import ghidra.app.services.*; import ghidra.app.services.DebuggerTraceManagerService.ActivationCause; @@ -53,7 +54,6 @@ import ghidra.trace.model.TraceLocation; import ghidra.trace.model.modules.TraceModule; import ghidra.util.Msg; import ghidra.util.Swing; -import ghidra.util.database.UndoableTransaction; import ghidra.util.datastruct.CollectionChangeListener; import ghidra.util.exception.CancelledException; import ghidra.util.task.TaskMonitor; @@ -243,7 +243,7 @@ public abstract class AbstractDebuggerProgramLaunchOffer implements DebuggerProg } if (program != null) { ProgramUserData userData = program.getProgramUserData(); - try (UndoableTransaction tid = UndoableTransaction.start(userData)) { + try (Transaction tx = userData.openTransaction()) { Element element = state.saveToXml(); userData.setStringProperty(TargetCmdLineLauncher.CMDLINE_ARGS_NAME, XmlUtilities.toString(element)); diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/record/ObjectBasedTraceRecorder.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/record/ObjectBasedTraceRecorder.java index e60aae77e5..590d2e7383 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/record/ObjectBasedTraceRecorder.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/record/ObjectBasedTraceRecorder.java @@ -21,6 +21,7 @@ import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; +import db.Transaction; import ghidra.app.plugin.core.debug.mapping.*; import ghidra.app.plugin.core.debug.service.model.DebuggerModelServicePlugin; import ghidra.app.plugin.core.debug.service.model.PermanentTransactionExecutor; @@ -56,7 +57,6 @@ import ghidra.trace.model.thread.TraceObjectThread; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.TraceSnapshot; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; import ghidra.util.datastruct.ListenerSet; import ghidra.util.task.TaskMonitor; @@ -193,8 +193,7 @@ public class ObjectBasedTraceRecorder implements TraceRecorder { long snap = timeRecorder.getSnap(); String path = object.getJoinedPath("."); // Don't offload, because we need a consistent map - try (UndoableTransaction tid = - UndoableTransaction.start(trace, "Object created: " + path)) { + try (Transaction trans = trace.openTransaction("Object created: " + path)) { objectRecorder.recordCreated(snap, object); } } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/record/ObjectRecorder.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/record/ObjectRecorder.java index 5699e78fcc..bf444c18cb 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/record/ObjectRecorder.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/model/record/ObjectRecorder.java @@ -24,6 +24,7 @@ import org.apache.commons.collections4.bidimap.DualHashBidiMap; import com.google.gson.Gson; import com.google.gson.JsonElement; +import db.Transaction; import ghidra.dbg.DebuggerObjectModel; import ghidra.dbg.attributes.TargetDataType; import ghidra.dbg.target.*; @@ -45,7 +46,6 @@ import ghidra.trace.model.target.*; import ghidra.trace.model.thread.TraceObjectThread; import ghidra.trace.model.thread.TraceThread; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; import utilities.util.IDKeyed; class ObjectRecorder { @@ -64,8 +64,7 @@ class ObjectRecorder { this.isSupportsFocus = !schema.searchFor(TargetFocusScope.class, false).isEmpty(); this.isSupportsActivation = !schema.searchFor(TargetActiveScope.class, false).isEmpty(); - try (UndoableTransaction tid = - UndoableTransaction.start(recorder.trace, "Create root")) { + try (Transaction tx = recorder.trace.openTransaction("Create root")) { objectManager.createRootObject(schema); } } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/modules/DebuggerStaticMappingServicePlugin.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/modules/DebuggerStaticMappingServicePlugin.java index b979ad996f..7a374de7a1 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/modules/DebuggerStaticMappingServicePlugin.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/modules/DebuggerStaticMappingServicePlugin.java @@ -23,6 +23,7 @@ import java.util.stream.Collectors; import org.apache.commons.lang3.ArrayUtils; +import db.Transaction; import ghidra.app.events.ProgramClosedPluginEvent; import ghidra.app.events.ProgramOpenedPluginEvent; import ghidra.app.plugin.PluginCategoryNames; @@ -53,7 +54,6 @@ import ghidra.trace.model.memory.TraceMemoryRegion; import ghidra.trace.model.modules.*; import ghidra.trace.model.program.TraceProgramView; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; import ghidra.util.datastruct.ListenerSet; import ghidra.util.exception.CancelledException; import ghidra.util.task.TaskMonitor; @@ -733,8 +733,7 @@ public class DebuggerStaticMappingServicePlugin extends Plugin @Override public void addMapping(TraceLocation from, ProgramLocation to, long length, boolean truncateExisting) throws TraceConflictedMappingException { - try (UndoableTransaction tid = - UndoableTransaction.start(from.getTrace(), "Add mapping")) { + try (Transaction tx = from.getTrace().openTransaction("Add mapping")) { DebuggerStaticMappingUtils.addMapping(from, to, length, truncateExisting); } } @@ -742,8 +741,7 @@ public class DebuggerStaticMappingServicePlugin extends Plugin @Override public void addMapping(MapEntry entry, boolean truncateExisting) throws TraceConflictedMappingException { - try (UndoableTransaction tid = - UndoableTransaction.start(entry.getFromTrace(), "Add mapping")) { + try (Transaction tx = entry.getFromTrace().openTransaction("Add mapping")) { DebuggerStaticMappingUtils.addMapping(entry, truncateExisting); } } @@ -755,7 +753,7 @@ public class DebuggerStaticMappingServicePlugin extends Plugin entries.stream().collect(Collectors.groupingBy(ent -> ent.getFromTrace())); for (Map.Entry>> ent : byTrace.entrySet()) { Trace trace = ent.getKey(); - try (UndoableTransaction tid = UndoableTransaction.start(trace, description)) { + try (Transaction tx = trace.openTransaction(description)) { doAddMappings(trace, ent.getValue(), monitor, truncateExisting); } } @@ -778,8 +776,7 @@ public class DebuggerStaticMappingServicePlugin extends Plugin @Override public void addIdentityMapping(Trace from, Program toProgram, Lifespan lifespan, boolean truncateExisting) { - try (UndoableTransaction tid = - UndoableTransaction.start(from, "Add identity mappings")) { + try (Transaction tx = from.openTransaction("Add identity mappings")) { DebuggerStaticMappingUtils.addIdentityMapping(from, toProgram, lifespan, truncateExisting); } @@ -798,8 +795,8 @@ public class DebuggerStaticMappingServicePlugin extends Plugin } } for (Map.Entry> ent : entriesByProgram.entrySet()) { - try (UndoableTransaction tid = - UndoableTransaction.start(ent.getKey(), "Memorize module mapping")) { + try (Transaction tx = + ent.getKey().openTransaction("Memorize module mapping")) { for (ModuleMapEntry entry : ent.getValue()) { ProgramModuleIndexer.addModulePaths(entry.getToProgram(), List.of(entry.getModule().getName())); diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/tracemgr/DebuggerTraceManagerServicePlugin.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/tracemgr/DebuggerTraceManagerServicePlugin.java index 0c0b328239..2c2c3738a6 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/tracemgr/DebuggerTraceManagerServicePlugin.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/tracemgr/DebuggerTraceManagerServicePlugin.java @@ -161,13 +161,13 @@ public class DebuggerTraceManagerServicePlugin extends Plugin public TransactionEndFuture(Trace trace) { this.trace = trace; this.trace.addTransactionListener(this); - if (this.trace.getCurrentTransaction() == null) { + if (this.trace.getCurrentTransactionInfo() == null) { complete(null); } } @Override - public void transactionStarted(DomainObjectAdapterDB domainObj, Transaction tx) { + public void transactionStarted(DomainObjectAdapterDB domainObj, TransactionInfo tx) { } @Override diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/workflow/DisassembleAtPcDebuggerBot.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/workflow/DisassembleAtPcDebuggerBot.java index 3601cd77e7..9e337348ac 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/workflow/DisassembleAtPcDebuggerBot.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/workflow/DisassembleAtPcDebuggerBot.java @@ -20,6 +20,7 @@ import java.util.Map.Entry; import javax.swing.event.ChangeListener; +import db.Transaction; import docking.DockingWindowManager; import docking.Tool; import ghidra.app.plugin.core.debug.mapping.DebuggerPlatformMapper; @@ -33,7 +34,8 @@ import ghidra.framework.model.DomainObject; import ghidra.framework.options.annotation.HelpInfo; import ghidra.framework.plugintool.PluginTool; import ghidra.program.model.address.*; -import ghidra.program.model.data.*; +import ghidra.program.model.data.PointerTypedef; +import ghidra.program.model.data.VoidDataType; import ghidra.program.model.lang.Register; import ghidra.program.model.util.CodeUnitInsertionException; import ghidra.trace.model.*; @@ -49,7 +51,6 @@ import ghidra.trace.model.thread.TraceThread; import ghidra.trace.util.*; import ghidra.util.*; import ghidra.util.classfinder.ClassSearcher; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; @DebuggerBotInfo( // @@ -222,8 +223,8 @@ public class DisassembleAtPcDebuggerBot implements DebuggerBot { return; } TraceData pcUnit = null; - try (UndoableTransaction tid = - UndoableTransaction.start(trace, "Disassemble: PC is code pointer")) { + try (Transaction tx = + trace.openTransaction("Disassemble: PC is code pointer")) { TraceCodeSpace regCode = codeManager.getCodeRegisterSpace(thread, frameLevel, true); // TODO: Should be same platform as pc, not necessarily base AddressSpace space = trace.getBaseAddressFactory().getDefaultAddressSpace(); diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/services/ControlMode.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/services/ControlMode.java index 5bde0252e4..744ba2b5df 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/services/ControlMode.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/services/ControlMode.java @@ -22,6 +22,7 @@ import java.util.concurrent.CompletableFuture; import javax.swing.Icon; +import db.Transaction; import generic.theme.GIcon; import ghidra.app.plugin.core.debug.DebuggerCoordinates; import ghidra.app.services.DebuggerTraceManagerService.ActivationCause; @@ -41,7 +42,6 @@ import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.schedule.PatchStep; import ghidra.trace.model.time.schedule.TraceSchedule; import ghidra.trace.util.TraceRegisterUtils; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.CancelledException; import ghidra.util.task.TaskMonitor; @@ -214,8 +214,7 @@ public enum ControlMode { } TraceMemoryOperations memOrRegs; Address overlayAddress; - try (UndoableTransaction txid = - UndoableTransaction.start(trace, "Edit Variable")) { + try (Transaction tx = trace.openTransaction("Edit Variable")) { if (hostAddress.isRegisterAddress()) { TraceThread thread = coordinates.getThread(); if (thread == null) { diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointMarkerPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointMarkerPluginScreenShots.java index 27a472a395..48ebc15dda 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointMarkerPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointMarkerPluginScreenShots.java @@ -21,6 +21,7 @@ import java.util.Set; import org.junit.Before; import org.junit.Test; +import db.Transaction; import generic.Unique; import ghidra.app.plugin.core.codebrowser.CodeViewerProvider; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest.TestDebuggerTargetTraceMapper; @@ -42,7 +43,6 @@ import ghidra.trace.model.*; import ghidra.trace.model.breakpoint.TraceBreakpointKind; import ghidra.util.Msg; import ghidra.util.Swing; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; import help.screenshot.GhidraScreenShotGenerator; @@ -98,7 +98,7 @@ public class DebuggerBreakpointMarkerPluginScreenShots extends GhidraScreenShotG .getRootFolder() .createFile("WinHelloCPP", program, TaskMonitor.DUMMY); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Add Mapping")) { + try (Transaction tx = trace.openTransaction("Add Mapping")) { mappingService.addIdentityMapping(trace, program, Lifespan.nowOn(0), true); } waitForValue(() -> mappingService.getOpenMappedLocation( @@ -148,7 +148,7 @@ public class DebuggerBreakpointMarkerPluginScreenShots extends GhidraScreenShotG .getRootFolder() .createFile("WinHelloCPP", program, TaskMonitor.DUMMY); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Add Mapping")) { + try (Transaction tx = trace.openTransaction("Add Mapping")) { mappingService.addIdentityMapping(trace, program, Lifespan.nowOn(0), true); } waitForValue(() -> mappingService.getOpenMappedLocation( diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsPluginScreenShots.java index 803116cc5c..f48d746ba2 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsPluginScreenShots.java @@ -15,14 +15,14 @@ */ package ghidra.app.plugin.core.debug.gui.breakpoint; -import static ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest.waitForPass; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; +import static ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest.*; +import static org.junit.Assert.*; import java.util.Set; import org.junit.*; +import db.Transaction; import generic.Unique; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest.TestDebuggerTargetTraceMapper; import ghidra.app.plugin.core.debug.service.breakpoint.DebuggerLogicalBreakpointServicePlugin; @@ -44,7 +44,6 @@ import ghidra.test.ToyProgramBuilder; import ghidra.trace.model.*; import ghidra.trace.model.breakpoint.TraceBreakpoint; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; import help.screenshot.GhidraScreenShotGenerator; @@ -127,19 +126,19 @@ public class DebuggerBreakpointsPluginScreenShots extends GhidraScreenShotGenera mb.testProcess1.addRegion("echo:.data", mb.rng(0x00600000, 0x00600fff), "rw"); mb.testProcess3.addRegion("echo:.text", mb.rng(0x7fac0000, 0x7fac0fff), "rx"); - try (UndoableTransaction tid = UndoableTransaction.start(trace1, "Add mapping")) { + try (Transaction tx = trace1.openTransaction("Add mapping")) { DebuggerStaticMappingUtils.addMapping( new DefaultTraceLocation(trace1, null, Lifespan.nowOn(0), addr(trace1, 0x00400000)), new ProgramLocation(program, addr(program, 0x00400000)), 0x00210000, false); } - try (UndoableTransaction tid = UndoableTransaction.start(trace3, "Add mapping")) { + try (Transaction tx = trace3.openTransaction("Add mapping")) { DebuggerStaticMappingUtils.addMapping( new DefaultTraceLocation(trace3, null, Lifespan.nowOn(0), addr(trace3, 0x7fac0000)), new ProgramLocation(program, addr(program, 0x00400000)), 0x00010000, false); } waitForSwing(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add breakpoint")) { + try (Transaction tx = program.openTransaction("Add breakpoint")) { program.getBookmarkManager() .setBookmark(addr(program, 0x00401234), LogicalBreakpoint.BREAKPOINT_ENABLED_BOOKMARK_TYPE, "SW_EXECUTE;1", diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyActionsPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyActionsPluginScreenShots.java index ff89270190..12bb9e1a8a 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyActionsPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyActionsPluginScreenShots.java @@ -19,6 +19,7 @@ import java.util.Set; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest.TestDebuggerTargetTraceMapper; import ghidra.app.plugin.core.debug.gui.listing.DebuggerListingPlugin; import ghidra.app.plugin.core.debug.gui.listing.DebuggerListingProvider; @@ -40,7 +41,6 @@ import ghidra.trace.model.DefaultTraceLocation; import ghidra.trace.model.Lifespan; import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.modules.TraceModule; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; import help.screenshot.GhidraScreenShotGenerator; @@ -87,7 +87,7 @@ public class DebuggerCopyActionsPluginScreenShots extends GhidraScreenShotGenera @Test public void testCaptureDebuggerCopyIntoProgramDialog() throws Throwable { long snap; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { snap = tb.trace.getTimeManager().createSnapshot("First").getKey(); DBTraceMemoryManager mem = tb.trace.getMemoryManager(); mem.createRegion(".text", snap, tb.range(0x55550000, 0x5555ffff), @@ -110,7 +110,7 @@ public class DebuggerCopyActionsPluginScreenShots extends GhidraScreenShotGenera program = createDefaultProgram("echo", "Toy:BE:64:default", this); AddressSpace stSpace = program.getAddressFactory().getDefaultAddressSpace(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add memory")) { + try (Transaction tx = program.openTransaction("Add memory")) { program.setImageBase(tb.addr(stSpace, 0x00400000), true); Memory memory = program.getMemory(); memory.createInitializedBlock(".text", tb.addr(stSpace, 0x00400000), 0x10000, (byte) 0, @@ -123,7 +123,7 @@ public class DebuggerCopyActionsPluginScreenShots extends GhidraScreenShotGenera root.createFile(tb.trace.getName(), tb.trace, TaskMonitor.DUMMY); root.createFile(program.getName(), program, TaskMonitor.DUMMY); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { mappingService.addMapping( new DefaultTraceLocation(tb.trace, null, Lifespan.nowOn(snap), tb.addr(0x55550000)), new ProgramLocation(program, tb.addr(stSpace, 0x00400000)), 0x10000, true); diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/diff/DebuggerTraceViewDiffPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/diff/DebuggerTraceViewDiffPluginScreenShots.java index d96adf78c3..24b66904bf 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/diff/DebuggerTraceViewDiffPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/diff/DebuggerTraceViewDiffPluginScreenShots.java @@ -15,13 +15,14 @@ */ package ghidra.app.plugin.core.debug.gui.diff; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import java.nio.ByteBuffer; import java.nio.ByteOrder; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.core.debug.gui.listing.DebuggerListingPlugin; import ghidra.app.plugin.core.debug.gui.listing.DebuggerListingProvider; import ghidra.app.plugin.core.debug.gui.time.DebuggerTimeSelectionDialog; @@ -36,7 +37,6 @@ import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.schedule.TraceSchedule; import ghidra.util.Swing; -import ghidra.util.database.UndoableTransaction; import help.screenshot.GhidraScreenShotGenerator; public class DebuggerTraceViewDiffPluginScreenShots extends GhidraScreenShotGenerator @@ -66,7 +66,7 @@ public class DebuggerTraceViewDiffPluginScreenShots extends GhidraScreenShotGene @Test public void testCaptureDebuggerTraceViewDiffPlugin() throws Throwable { long snap1, snap2; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceTimeManager tm = tb.trace.getTimeManager(); snap1 = tm.createSnapshot("Baseline").getKey(); snap2 = tm.createSnapshot("X's first move").getKey(); @@ -106,7 +106,7 @@ public class DebuggerTraceViewDiffPluginScreenShots extends GhidraScreenShotGene @Test public void testCaptureDebuggerTimeSelectionDialog() throws Throwable { TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceTimeManager tm = tb.trace.getTimeManager(); thread = tb.getOrAddThread("main", 0); tm.createSnapshot("Break on main").setEventThread(thread); diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingPluginScreenShots.java index 58bbe729fe..eaeda76b88 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingPluginScreenShots.java @@ -19,6 +19,7 @@ import java.util.Set; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.assembler.Assembler; import ghidra.app.plugin.assembler.Assemblers; import ghidra.app.plugin.core.debug.gui.action.DebuggerGoToDialog; @@ -33,7 +34,6 @@ import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.memory.TraceMemorySpace; import ghidra.trace.model.symbol.*; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; import help.screenshot.GhidraScreenShotGenerator; public class DebuggerListingPluginScreenShots extends GhidraScreenShotGenerator { @@ -59,7 +59,7 @@ public class DebuggerListingPluginScreenShots extends GhidraScreenShotGenerator @Test public void testCaptureDebuggerListingPlugin() throws Throwable { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { long snap = tb.trace.getTimeManager().createSnapshot("First").getKey(); tb.trace.getMemoryManager() .addRegion(".text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), @@ -123,7 +123,7 @@ public class DebuggerListingPluginScreenShots extends GhidraScreenShotGenerator @Test public void testCaptureDebuggerGoToDialog() throws Throwable { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getTimeManager().createSnapshot("First").getKey(); tb.trace.getMemoryManager() .addRegion("bash:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerMemoryBytesPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerMemoryBytesPluginScreenShots.java index 4c50ce2e46..0ebb04a075 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerMemoryBytesPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerMemoryBytesPluginScreenShots.java @@ -19,6 +19,7 @@ import java.util.Set; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.assembler.Assembler; import ghidra.app.plugin.assembler.Assemblers; import ghidra.app.plugin.core.debug.gui.listing.DebuggerListingPlugin; @@ -33,7 +34,6 @@ import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.memory.TraceMemorySpace; import ghidra.trace.model.symbol.*; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; import help.screenshot.GhidraScreenShotGenerator; public class DebuggerMemoryBytesPluginScreenShots extends GhidraScreenShotGenerator { @@ -63,7 +63,7 @@ public class DebuggerMemoryBytesPluginScreenShots extends GhidraScreenShotGenera @Test public void testCaptureDebuggerMemoryBytesPlugin() throws Throwable { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { long snap = tb.trace.getTimeManager().createSnapshot("First").getKey(); tb.trace.getMemoryManager() .addRegion(".text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerRegionsPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerRegionsPluginScreenShots.java index 28309747ff..c3e919a59b 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerRegionsPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerRegionsPluginScreenShots.java @@ -19,6 +19,7 @@ import java.util.Set; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.core.debug.service.tracemgr.DebuggerTraceManagerServicePlugin; import ghidra.app.plugin.core.progmgr.ProgramManagerPlugin; import ghidra.app.services.DebuggerTraceManagerService; @@ -32,7 +33,6 @@ import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.database.memory.DBTraceMemoryManager; import ghidra.trace.model.Lifespan; import ghidra.trace.model.memory.TraceMemoryFlag; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; import help.screenshot.GhidraScreenShotGenerator; @@ -74,7 +74,7 @@ public class DebuggerRegionsPluginScreenShots extends GhidraScreenShotGenerator } private void populateTrace() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { long snap = tb.trace.getTimeManager().createSnapshot("First").getKey(); @@ -102,7 +102,7 @@ public class DebuggerRegionsPluginScreenShots extends GhidraScreenShotGenerator progBash = createDefaultProgram("bash", ProgramBuilder._X64, this); progLibC = createDefaultProgram("libc.so.6", ProgramBuilder._X64, this); - try (UndoableTransaction tid = UndoableTransaction.start(progBash, "Add memory")) { + try (Transaction tx = progBash.openTransaction("Add memory")) { progBash.setImageBase(addr(progBash, 0x00400000), true); progBash.getMemory() .createInitializedBlock(".text", addr(progBash, 0x00400000), 0x10000, (byte) 0, @@ -112,7 +112,7 @@ public class DebuggerRegionsPluginScreenShots extends GhidraScreenShotGenerator TaskMonitor.DUMMY, false); } - try (UndoableTransaction tid = UndoableTransaction.start(progLibC, "Add memory")) { + try (Transaction tx = progLibC.openTransaction("Add memory")) { progLibC.setImageBase(addr(progLibC, 0x00400000), true); progLibC.getMemory() .createInitializedBlock(".text", addr(progLibC, 0x00400000), 0x10000, (byte) 0, diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/memview/DebuggerMemviewPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/memview/DebuggerMemviewPluginScreenShots.java index 663b0d5523..32009c30aa 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/memview/DebuggerMemviewPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/memview/DebuggerMemviewPluginScreenShots.java @@ -20,6 +20,7 @@ import java.util.Set; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.core.debug.service.tracemgr.DebuggerTraceManagerServicePlugin; import ghidra.app.plugin.core.progmgr.ProgramManagerPlugin; import ghidra.app.services.DebuggerTraceManagerService; @@ -31,7 +32,6 @@ import ghidra.trace.model.Lifespan; import ghidra.trace.model.breakpoint.TraceBreakpointKind; import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; import help.screenshot.GhidraScreenShotGenerator; public class DebuggerMemviewPluginScreenShots extends GhidraScreenShotGenerator { @@ -78,13 +78,13 @@ public class DebuggerMemviewPluginScreenShots extends GhidraScreenShotGenerator private void populateTraceAndPrograms() throws Exception { tool.getProject().getProjectData().getRootFolder(); TraceThread thread1; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread1 = tb.trace.getThreadManager().addThread("[0]", Lifespan.span(1, 40)); tb.trace.getThreadManager().addThread("[1]", Lifespan.span(4, 50)); tb.trace.getThreadManager().addThread("[2]", Lifespan.span(6, 20)); } - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getModuleManager() .addLoadedModule("/bin/bash", "/bin/bash", tb.range(0x00400000, 0x0060ffff), 0); tb.trace.getModuleManager() @@ -92,7 +92,7 @@ public class DebuggerMemviewPluginScreenShots extends GhidraScreenShotGenerator tb.range(0x7fac0000, 0x7faeffff), 10); } - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .addRegion("bash.text", Lifespan.nowOn(5), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.EXECUTE); @@ -108,7 +108,7 @@ public class DebuggerMemviewPluginScreenShots extends GhidraScreenShotGenerator TraceMemoryFlag.READ, TraceMemoryFlag.WRITE); } - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { Set threads = new HashSet(); Set kinds = new HashSet(); threads.add(thread1); diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesPluginScreenShots.java index 98b229618a..da6993b934 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesPluginScreenShots.java @@ -19,6 +19,7 @@ import java.util.Set; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.core.debug.service.tracemgr.DebuggerTraceManagerServicePlugin; import ghidra.app.plugin.core.progmgr.ProgramManagerPlugin; import ghidra.app.services.DebuggerTraceManagerService; @@ -30,7 +31,6 @@ import ghidra.program.model.listing.Program; import ghidra.test.ToyProgramBuilder; import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.model.modules.TraceModule; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; import help.screenshot.GhidraScreenShotGenerator; @@ -69,7 +69,7 @@ public class DebuggerModulesPluginScreenShots extends GhidraScreenShotGenerator @Test public void testCaptureDebuggerModulesPlugin() throws Throwable { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { long snap = tb.trace.getTimeManager().createSnapshot("First").getKey(); TraceModule bin = tb.trace.getModuleManager() @@ -96,7 +96,7 @@ public class DebuggerModulesPluginScreenShots extends GhidraScreenShotGenerator private void populateTraceAndPrograms() throws Exception { DomainFolder root = tool.getProject().getProjectData().getRootFolder(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { long snap = tb.trace.getTimeManager().createSnapshot("First").getKey(); TraceModule bin = tb.trace.getModuleManager() @@ -114,7 +114,7 @@ public class DebuggerModulesPluginScreenShots extends GhidraScreenShotGenerator progBash = createDefaultProgram("bash", ProgramBuilder._X64, this); progLibC = createDefaultProgram("libc.so.6", ProgramBuilder._X64, this); - try (UndoableTransaction tid = UndoableTransaction.start(progBash, "Add memory")) { + try (Transaction tx = progBash.openTransaction("Add memory")) { progBash.setImageBase(addr(progBash, 0x00400000), true); progBash.getMemory() .createInitializedBlock(".text", addr(progBash, 0x00400000), 0x10000, (byte) 0, @@ -124,7 +124,7 @@ public class DebuggerModulesPluginScreenShots extends GhidraScreenShotGenerator TaskMonitor.DUMMY, false); } - try (UndoableTransaction tid = UndoableTransaction.start(progLibC, "Add memory")) { + try (Transaction tx = progLibC.openTransaction("Add memory")) { progLibC.setImageBase(addr(progLibC, 0x00400000), true); progLibC.getMemory() .createInitializedBlock(".text", addr(progLibC, 0x00400000), 0x10000, (byte) 0, diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerStaticMappingPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerStaticMappingPluginScreenShots.java index beded9da7c..23938841af 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerStaticMappingPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerStaticMappingPluginScreenShots.java @@ -19,6 +19,7 @@ import java.util.*; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.core.debug.service.modules.DebuggerStaticMappingServicePlugin; import ghidra.app.plugin.core.debug.service.tracemgr.DebuggerTraceManagerServicePlugin; import ghidra.app.plugin.core.progmgr.ProgramManagerPlugin; @@ -31,7 +32,6 @@ import ghidra.program.model.listing.Program; import ghidra.test.ToyProgramBuilder; import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.model.modules.TraceModule; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; import help.screenshot.GhidraScreenShotGenerator; @@ -76,7 +76,7 @@ public class DebuggerStaticMappingPluginScreenShots extends GhidraScreenShotGene @Test public void testCaptureDebuggerStaticMappingPlugin() throws Throwable { DomainFolder root = tool.getProject().getProjectData().getRootFolder(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { long snap = tb.trace.getTimeManager().createSnapshot("First").getKey(); TraceModule bin = tb.trace.getModuleManager() @@ -94,7 +94,7 @@ public class DebuggerStaticMappingPluginScreenShots extends GhidraScreenShotGene progEcho = createDefaultProgram("bash", ProgramBuilder._X64, this); progLibC = createDefaultProgram("libc.so.6", ProgramBuilder._X64, this); - try (UndoableTransaction tid = UndoableTransaction.start(progEcho, "Add memory")) { + try (Transaction tx = progEcho.openTransaction("Add memory")) { progEcho.setImageBase(addr(progEcho, 0x00400000), true); progEcho.getMemory() .createInitializedBlock(".text", addr(progEcho, 0x00400000), 0x10000, (byte) 0, @@ -104,7 +104,7 @@ public class DebuggerStaticMappingPluginScreenShots extends GhidraScreenShotGene TaskMonitor.DUMMY, false); } - try (UndoableTransaction tid = UndoableTransaction.start(progLibC, "Add memory")) { + try (Transaction tx = progLibC.openTransaction("Add memory")) { progLibC.setImageBase(addr(progLibC, 0x00400000), true); progLibC.getMemory() .createInitializedBlock(".text", addr(progLibC, 0x00400000), 0x10000, (byte) 0, @@ -124,7 +124,7 @@ public class DebuggerStaticMappingPluginScreenShots extends GhidraScreenShotGene programManager.openProgram(progEcho); programManager.openProgram(progLibC); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { Map proposal = mappingService.proposeModuleMaps(tb.trace.getModuleManager().getAllModules(), List.of(programManager.getAllOpenPrograms())); diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/pcode/DebuggerPcodeStepperPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/pcode/DebuggerPcodeStepperPluginScreenShots.java index 61a3413d95..90cabff25d 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/pcode/DebuggerPcodeStepperPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/pcode/DebuggerPcodeStepperPluginScreenShots.java @@ -17,6 +17,7 @@ package ghidra.app.plugin.core.debug.gui.pcode; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.assembler.Assembler; import ghidra.app.plugin.assembler.Assemblers; import ghidra.app.plugin.core.debug.service.tracemgr.DebuggerTraceManagerServicePlugin; @@ -29,7 +30,6 @@ import ghidra.trace.model.Lifespan; import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.schedule.TraceSchedule; -import ghidra.util.database.UndoableTransaction; import help.screenshot.GhidraScreenShotGenerator; public class DebuggerPcodeStepperPluginScreenShots extends GhidraScreenShotGenerator { @@ -56,7 +56,7 @@ public class DebuggerPcodeStepperPluginScreenShots extends GhidraScreenShotGener @Test public void testCaptureDebuggerPcodeStepperPlugin() throws Throwable { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { long snap0 = tb.trace.getTimeManager().createSnapshot("First").getKey(); tb.trace.getMemoryManager() diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/platform/DebuggerPlatformPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/platform/DebuggerPlatformPluginScreenShots.java index 947566be71..18c2589f3a 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/platform/DebuggerPlatformPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/platform/DebuggerPlatformPluginScreenShots.java @@ -18,6 +18,7 @@ package ghidra.app.plugin.core.debug.gui.platform; import org.junit.Before; import org.junit.Test; +import db.Transaction; import ghidra.app.plugin.core.debug.service.tracemgr.DebuggerTraceManagerServicePlugin; import ghidra.app.services.DebuggerTraceManagerService; import ghidra.dbg.target.schema.SchemaContext; @@ -25,7 +26,6 @@ import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; import ghidra.dbg.target.schema.XmlSchemaContext; import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.database.target.DBTraceObjectManagerTest; -import ghidra.util.database.UndoableTransaction; import help.screenshot.GhidraScreenShotGenerator; public class DebuggerPlatformPluginScreenShots extends GhidraScreenShotGenerator { @@ -43,7 +43,7 @@ public class DebuggerPlatformPluginScreenShots extends GhidraScreenShotGenerator public void testCaptureDebuggerSelectPlatformOfferDialog() throws Throwable { SchemaContext ctx = XmlSchemaContext.deserialize(DBTraceObjectManagerTest.XML_CTX); try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("echo", "DATA:BE:64:default")) { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getObjectManager() .createRootObject(ctx.getSchema(new SchemaName("Session"))); } diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersPluginScreenShots.java index 7bf10b35e9..de3541ae25 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersPluginScreenShots.java @@ -19,6 +19,7 @@ import java.math.BigInteger; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.core.debug.service.tracemgr.DebuggerTraceManagerServicePlugin; import ghidra.app.services.DebuggerTraceManagerService; import ghidra.program.model.data.PointerDataType; @@ -29,7 +30,6 @@ import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.model.Lifespan; import ghidra.trace.model.memory.TraceMemorySpace; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; import help.screenshot.GhidraScreenShotGenerator; public class DebuggerRegistersPluginScreenShots extends GhidraScreenShotGenerator { @@ -56,7 +56,7 @@ public class DebuggerRegistersPluginScreenShots extends GhidraScreenShotGenerato @Test public void testCaptureDebuggerRegistersPlugin() throws Throwable { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { long snap0 = tb.trace.getTimeManager().createSnapshot("First").getKey(); long snap1 = tb.trace.getTimeManager().createSnapshot("Second").getKey(); @@ -106,7 +106,7 @@ public class DebuggerRegistersPluginScreenShots extends GhidraScreenShotGenerato @Test public void testCaptureDebuggerAvailableRegistersDialog() throws Throwable { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { long snap0 = tb.trace.getTimeManager().createSnapshot("First").getKey(); TraceThread thread = tb.getOrAddThread("[1]", snap0); diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackPluginScreenShots.java index 989f9b827d..d1ec26e7bb 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackPluginScreenShots.java @@ -22,6 +22,7 @@ import java.util.Set; import org.junit.*; +import db.Transaction; import generic.Unique; import ghidra.app.plugin.assembler.*; import ghidra.app.plugin.core.debug.DebuggerCoordinates; @@ -37,8 +38,8 @@ import ghidra.app.plugin.core.debug.service.tracemgr.DebuggerTraceManagerService import ghidra.app.plugin.core.debug.stack.*; import ghidra.app.plugin.core.progmgr.ProgramManagerPlugin; import ghidra.app.services.*; -import ghidra.app.services.DebuggerEmulationService.EmulationResult; import ghidra.app.services.DebuggerControlService.StateEditor; +import ghidra.app.services.DebuggerEmulationService.EmulationResult; import ghidra.async.AsyncTestUtils; import ghidra.framework.model.DomainFolder; import ghidra.framework.model.DomainObject; @@ -63,7 +64,6 @@ import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.schedule.Scheduler; import ghidra.util.InvalidNameException; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.CancelledException; import ghidra.util.task.ConsoleTaskMonitor; import ghidra.util.task.TaskMonitor; @@ -113,7 +113,7 @@ public class DebuggerStackPluginScreenShots extends GhidraScreenShotGenerator public void testCaptureDebuggerStackPlugin() throws Throwable { DomainFolder root = tool.getProject().getProjectData().getRootFolder(); program = createDefaultProgram("echo", ToyProgramBuilder._X64, this); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Populate")) { + try (Transaction tx = program.openTransaction("Populate")) { program.setImageBase(addr(program, 0x00400000), true); program.getMemory() .createInitializedBlock(".text", addr(program, 0x00400000), 0x10000, (byte) 0, @@ -128,7 +128,7 @@ public class DebuggerStackPluginScreenShots extends GhidraScreenShotGenerator } long snap; TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { snap = tb.trace.getTimeManager().createSnapshot("First").getKey(); thread = tb.getOrAddThread("[1]", snap); TraceStack stack = tb.trace.getStackManager().getStack(thread, snap, true); @@ -144,7 +144,7 @@ public class DebuggerStackPluginScreenShots extends GhidraScreenShotGenerator } root.createFile("trace", tb.trace, TaskMonitor.DUMMY); root.createFile("echo", program, TaskMonitor.DUMMY); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DebuggerStaticMappingUtils.addMapping( new DefaultTraceLocation(tb.trace, null, Lifespan.nowOn(snap), tb.addr(0x00400000)), new ProgramLocation(program, addr(program, 0x00400000)), 0x10000, false); @@ -205,7 +205,7 @@ public class DebuggerStackPluginScreenShots extends GhidraScreenShotGenerator protected Function createFibonacciProgramX86_32() throws Throwable { createProgram("x86:LE:32:default", "gcc"); intoProject(program); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Assemble")) { + try (Transaction tx = program.openTransaction("Assemble")) { Address entry = addr(program, 0x00400000); program.getMemory() .createInitializedBlock(".text", entry, 0x1000, (byte) 0, monitor, false); @@ -307,7 +307,7 @@ public class DebuggerStackPluginScreenShots extends GhidraScreenShotGenerator waitOn(frameAtSetup.setReturnAddress(editor, tb.addr(0xdeadbeef))); waitForTasks(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getBreakpointManager() .addBreakpoint("Breakpoints[0]", Lifespan.nowOn(0), retInstr, Set.of(), @@ -321,7 +321,7 @@ public class DebuggerStackPluginScreenShots extends GhidraScreenShotGenerator traceManager.activateTime(result.schedule()); waitForTasks(); DebuggerCoordinates tallest = traceManager.getCurrent(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { new UnwindStackCommand(tool, tallest).applyTo(tb.trace, monitor); } waitForDomainObject(tb.trace); diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/stack/vars/VariableValueHoverPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/stack/vars/VariableValueHoverPluginScreenShots.java index fb2ebb7dcd..29aba8549c 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/stack/vars/VariableValueHoverPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/stack/vars/VariableValueHoverPluginScreenShots.java @@ -25,6 +25,7 @@ import java.util.*; import org.junit.Test; +import db.Transaction; import docking.widgets.fieldpanel.FieldPanel; import docking.widgets.fieldpanel.support.FieldLocation; import generic.Unique; @@ -44,8 +45,8 @@ import ghidra.app.plugin.core.debug.stack.StackUnwinderTest.HoverLocation; import ghidra.app.plugin.core.decompile.DecompilerProvider; import ghidra.app.plugin.core.progmgr.ProgramManagerPlugin; import ghidra.app.services.*; -import ghidra.app.services.DebuggerEmulationService.EmulationResult; import ghidra.app.services.DebuggerControlService.StateEditor; +import ghidra.app.services.DebuggerEmulationService.EmulationResult; import ghidra.app.util.viewer.listingpanel.ListingPanel; import ghidra.async.AsyncTestUtils; import ghidra.framework.model.DomainFolder; @@ -70,7 +71,6 @@ import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.schedule.Scheduler; import ghidra.util.InvalidNameException; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.CancelledException; import ghidra.util.task.ConsoleTaskMonitor; import help.screenshot.GhidraScreenShotGenerator; @@ -138,7 +138,7 @@ public class VariableValueHoverPluginScreenShots extends GhidraScreenShotGenerat protected Function createFibonacciProgramX86_32() throws Throwable { createProgram("x86:LE:32:default", "gcc"); intoProject(program); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Assemble")) { + try (Transaction tx = program.openTransaction("Assemble")) { Address entry = addr(program, 0x00400000); program.getMemory() .createInitializedBlock(".text", entry, 0x1000, (byte) 0, monitor, false); @@ -244,7 +244,7 @@ public class VariableValueHoverPluginScreenShots extends GhidraScreenShotGenerat traceManager.activateThread(thread); waitForSwing(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { MemoryBlock block = program.getMemory().getBlock(".text"); byte[] text = new byte[(int) block.getSize()]; block.getBytes(block.getStart(), text); @@ -269,7 +269,7 @@ public class VariableValueHoverPluginScreenShots extends GhidraScreenShotGenerat waitOn(frameAtSetup.setReturnAddress(editor, tb.addr(0xdeadbeef))); waitForTasks(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getBreakpointManager() .addBreakpoint("Breakpoints[0]", Lifespan.nowOn(0), retInstr, Set.of(), @@ -283,7 +283,7 @@ public class VariableValueHoverPluginScreenShots extends GhidraScreenShotGenerat traceManager.activateTime(result.schedule()); waitForTasks(); DebuggerCoordinates tallest = traceManager.getCurrent(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { new UnwindStackCommand(tool, tallest).applyTo(tb.trace, monitor); } waitForDomainObject(tb.trace); diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/thread/DebuggerThreadsPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/thread/DebuggerThreadsPluginScreenShots.java index 6c8a0604a2..511ff9125a 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/thread/DebuggerThreadsPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/thread/DebuggerThreadsPluginScreenShots.java @@ -18,6 +18,7 @@ package ghidra.app.plugin.core.debug.gui.thread; import org.junit.Before; import org.junit.Test; +import db.Transaction; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest.TestDebuggerTargetTraceMapper; import ghidra.app.plugin.core.debug.service.model.DebuggerModelServiceProxyPlugin; @@ -26,7 +27,6 @@ import ghidra.app.services.*; import ghidra.dbg.model.*; import ghidra.trace.model.Trace; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; import help.screenshot.GhidraScreenShotGenerator; public class DebuggerThreadsPluginScreenShots extends GhidraScreenShotGenerator { @@ -72,7 +72,7 @@ public class DebuggerThreadsPluginScreenShots extends GhidraScreenShotGenerator waitForValue(() -> recorder.getTraceThread(handler2Thread)); AbstractGhidraHeadedDebuggerGUITest.waitForDomainObject(trace); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Comments")) { + try (Transaction tx = trace.openTransaction("Comments")) { recorder.getTraceThread(mainThread).setComment("GUI main loop"); recorder.getTraceThread(serverThread).setComment("Server"); recorder.getTraceThread(handler1Thread).setComment("Handler 1"); diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimePluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimePluginScreenShots.java index b30a777cd9..77372ae33e 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimePluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimePluginScreenShots.java @@ -17,6 +17,7 @@ package ghidra.app.plugin.core.debug.gui.time; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.core.debug.service.tracemgr.DebuggerTraceManagerServicePlugin; import ghidra.app.services.DebuggerTraceManagerService; import ghidra.test.ToyProgramBuilder; @@ -24,7 +25,6 @@ import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.TraceSnapshot; import ghidra.trace.model.time.schedule.TraceSchedule; -import ghidra.util.database.UndoableTransaction; import help.screenshot.GhidraScreenShotGenerator; public class DebuggerTimePluginScreenShots extends GhidraScreenShotGenerator { @@ -52,7 +52,7 @@ public class DebuggerTimePluginScreenShots extends GhidraScreenShotGenerator { public void testCaptureDebuggerTimePlugin() throws Throwable { long fakeClock = (long) Integer.MAX_VALUE * 1000; TraceSnapshot snap; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { snap = tb.trace.getTimeManager().createSnapshot("Trace started"); snap.setRealTime(fakeClock); diff --git a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/watch/DebuggerWatchesPluginScreenShots.java b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/watch/DebuggerWatchesPluginScreenShots.java index 1d6216be49..16a870a0df 100644 --- a/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/watch/DebuggerWatchesPluginScreenShots.java +++ b/Ghidra/Debug/Debugger/src/screen/java/ghidra/app/plugin/core/debug/gui/watch/DebuggerWatchesPluginScreenShots.java @@ -17,6 +17,7 @@ package ghidra.app.plugin.core.debug.gui.watch; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.core.debug.service.tracemgr.DebuggerTraceManagerServicePlugin; import ghidra.app.services.DebuggerTraceManagerService; import ghidra.pcode.exec.PcodeExecutor; @@ -27,7 +28,6 @@ import ghidra.program.model.symbol.SourceType; import ghidra.test.ToyProgramBuilder; import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; import help.screenshot.GhidraScreenShotGenerator; public class DebuggerWatchesPluginScreenShots extends GhidraScreenShotGenerator { @@ -56,7 +56,7 @@ public class DebuggerWatchesPluginScreenShots extends GhidraScreenShotGenerator public void testCaptureDebuggerWatchesPlugin() throws Throwable { TraceThread thread; long snap0, snap1; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { snap0 = tb.trace.getTimeManager().createSnapshot("First").getKey(); snap1 = tb.trace.getTimeManager().createSnapshot("Second").getKey(); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/disassemble/DebuggerDisassemblyTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/disassemble/DebuggerDisassemblyTest.java index 8f7f4f1279..5381948541 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/disassemble/DebuggerDisassemblyTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/disassemble/DebuggerDisassemblyTest.java @@ -27,6 +27,7 @@ import java.util.stream.Collectors; import org.junit.*; +import db.Transaction; import docking.action.DockingActionIf; import generic.Unique; import ghidra.app.context.ListingActionContext; @@ -66,7 +67,6 @@ import ghidra.trace.model.target.TraceObject.ConflictResolution; import ghidra.trace.model.target.TraceObjectKeyPath; import ghidra.trace.model.thread.TraceObjectThread; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; public class DebuggerDisassemblyTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -150,7 +150,7 @@ public class DebuggerDisassemblyTest extends AbstractGhidraHeadedDebuggerGUITest createAndOpenTrace("DATA:BE:64:default"); DBTraceObjectManager objects = tb.trace.getObjectManager(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { objects.createRootObject(ctx.getSchema(new SchemaName("Session"))); DBTraceObject env = objects.createObject(TraceObjectKeyPath.parse("Targets[0].Environment")); @@ -190,7 +190,7 @@ public class DebuggerDisassemblyTest extends AbstractGhidraHeadedDebuggerGUITest Supplier byteSupplier) throws Throwable { createAndOpenTrace(langID); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.createRegion("Memory[bin:.text]", 0, tb.range(offset, offset + 0xffff), Set.of(TraceMemoryFlag.EXECUTE)); @@ -221,7 +221,7 @@ public class DebuggerDisassemblyTest extends AbstractGhidraHeadedDebuggerGUITest // Fabricate the cpsr so that ARM is used. Otherwise, it will assume Cortex-M, so THUMB TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread = tb.getOrAddThread("Threads[0]", 0); DBTraceMemorySpace regs = tb.trace.getMemoryManager().getMemoryRegisterSpace(thread, true); @@ -255,7 +255,7 @@ public class DebuggerDisassemblyTest extends AbstractGhidraHeadedDebuggerGUITest // Fabricate the cpsr so that THUMB is used, even though we could omit as in Cortex-M TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread = tb.getOrAddThread("Threads[0]", 0); DBTraceMemorySpace regs = tb.trace.getMemoryManager().getMemoryRegisterSpace(thread, true); @@ -414,7 +414,7 @@ public class DebuggerDisassemblyTest extends AbstractGhidraHeadedDebuggerGUITest // Ensure the mapper is added to the trace assertNotNull(platformService.getMapper(tb.trace, null, 0)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.addInstruction(0, start, tb.host); } waitForDomainObject(tb.trace); @@ -446,7 +446,7 @@ public class DebuggerDisassemblyTest extends AbstractGhidraHeadedDebuggerGUITest // Ensure the mapper is added to the trace assertNotNull(platformService.getMapper(tb.trace, null, 0)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceDisassembleCommand dis = new TraceDisassembleCommand(tb.host, start, new AddressSet(start, start.addWrap(1))); dis.setInitialContext(DebuggerDisassemblerPlugin.deriveAlternativeDefaultContext( @@ -484,7 +484,7 @@ public class DebuggerDisassemblyTest extends AbstractGhidraHeadedDebuggerGUITest TraceGuestPlatform guest = Unique.assertOne(tb.trace.getPlatformManager().getGuestPlatforms()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.addInstruction(0, start, guest); } waitForDomainObject(tb.trace); @@ -519,7 +519,7 @@ public class DebuggerDisassemblyTest extends AbstractGhidraHeadedDebuggerGUITest waitForPass(() -> Unique.assertOne(tb.trace.getPlatformManager().getGuestPlatforms())); TraceGuestPlatform guest = Unique.assertOne(tb.trace.getPlatformManager().getGuestPlatforms()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceDisassembleCommand dis = new TraceDisassembleCommand(guest, start, new AddressSet(start, start.addWrap(1))); dis.setInitialContext(DebuggerDisassemblerPlugin.deriveAlternativeDefaultContext( diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/AbstractGhidraHeadedDebuggerGUITest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/AbstractGhidraHeadedDebuggerGUITest.java index 9b07978308..6511684383 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/AbstractGhidraHeadedDebuggerGUITest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/AbstractGhidraHeadedDebuggerGUITest.java @@ -37,6 +37,7 @@ import org.junit.rules.TestName; import org.junit.rules.TestWatcher; import org.junit.runner.Description; +import db.Transaction; import docking.ActionContext; import docking.action.ActionContextProvider; import docking.action.DockingActionIf; @@ -75,7 +76,6 @@ import ghidra.trace.model.memory.TraceMemorySpace; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.util.TraceAddressSpace; import ghidra.util.InvalidNameException; -import ghidra.util.database.UndoableTransaction; import ghidra.util.datastruct.ListenerMap; import ghidra.util.exception.CancelledException; import ghidra.util.task.ConsoleTaskMonitor; @@ -702,7 +702,7 @@ public abstract class AbstractGhidraHeadedDebuggerGUITest } protected void addSnapshot(String desc) throws IOException { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getTimeManager().createSnapshot(desc); } } @@ -773,8 +773,7 @@ public abstract class AbstractGhidraHeadedDebuggerGUITest Language lang = getToyBE64Language(); program = new ProgramDB("static-" + name.getMethodName(), lang, lang.getDefaultCompilerSpec(), this); - try (UndoableTransaction tid = - UndoableTransaction.start(program, "Set Executable Path")) { + try (Transaction tx = program.openTransaction("Set Executable Path")) { program.setExecutablePath(path); } programManager.openProgram(program); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/DebuggerManualTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/DebuggerManualTest.java index b5302f2171..382b13090e 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/DebuggerManualTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/DebuggerManualTest.java @@ -19,6 +19,7 @@ import java.io.IOException; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.core.bookmark.BookmarkPlugin; import ghidra.app.plugin.core.byteviewer.ByteViewerPlugin; import ghidra.app.plugin.core.clear.ClearPlugin; @@ -48,7 +49,6 @@ import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.database.guest.DBTraceGuestPlatform; import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.memory.TraceOverlappedRegionException; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; public class DebuggerManualTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -59,7 +59,7 @@ public class DebuggerManualTest extends AbstractGhidraHeadedDebuggerGUITest { public void setUpManualTest() throws IOException { createTrace(); ub = new ToyDBTraceBuilder("dynamic2-" + name.getMethodName(), LANGID_TOYBE64); - try (UndoableTransaction tid = ub.startTransaction()) { + try (Transaction tx = ub.startTransaction()) { ub.trace.getTimeManager().createSnapshot("First snap"); } } @@ -120,7 +120,7 @@ public class DebuggerManualTest extends AbstractGhidraHeadedDebuggerGUITest { //addPlugin(tool, NextPrevSelectedRangePlugin.class); addPlugin(tool, SymbolTablePlugin.class); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .createRegion("Region", 0, tb.range(0x4000, 0x4fff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointMarkerPluginTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointMarkerPluginTest.java index 45edec6ed1..73d27deec7 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointMarkerPluginTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointMarkerPluginTest.java @@ -33,6 +33,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; +import db.Transaction; import docking.action.DockingAction; import docking.widgets.fieldpanel.FieldPanel; import generic.Unique; @@ -65,7 +66,6 @@ import ghidra.trace.model.*; import ghidra.trace.model.breakpoint.TraceBreakpointKind; import ghidra.trace.model.program.TraceProgramView; import ghidra.util.SystemUtilities; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.CancelledException; import ghidra.util.exception.DuplicateNameException; import ghidra.util.task.TaskMonitor; @@ -109,7 +109,7 @@ public class DebuggerBreakpointMarkerPluginTest extends AbstractGhidraHeadedDebu programManager.openProgram(program); waitForSwing(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Create function")) { + try (Transaction tx = program.openTransaction("Create function")) { entry = addr(program, 0x00400000); program.getMemory() .createInitializedBlock(".text", entry, 0x1000, (byte) 0, @@ -133,8 +133,7 @@ public class DebuggerBreakpointMarkerPluginTest extends AbstractGhidraHeadedDebu protected void addStaticMemoryAndBreakpoint() throws LockException, DuplicateNameException, MemoryConflictException, AddressOverflowException, CancelledException { - try (UndoableTransaction tid = - UndoableTransaction.start(program, "Add bookmark break")) { + try (Transaction tx = program.openTransaction("Add bookmark break")) { program.getMemory() .createInitializedBlock(".text", addr(program, 0x00400000), 0x1000, (byte) 0, TaskMonitor.DUMMY, false); @@ -145,7 +144,7 @@ public class DebuggerBreakpointMarkerPluginTest extends AbstractGhidraHeadedDebu } protected void addMapping(Trace trace) throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Add mapping")) { + try (Transaction tx = trace.openTransaction("Add mapping")) { DebuggerStaticMappingUtils.addMapping( new DefaultTraceLocation(trace, null, Lifespan.nowOn(0), addr(trace, 0x55550123)), new ProgramLocation(program, addr(program, 0x00400123)), 0x1000, false); @@ -449,7 +448,7 @@ public class DebuggerBreakpointMarkerPluginTest extends AbstractGhidraHeadedDebu } waitForPass(() -> assertEquals(0, breakpointService.getAllBreakpoints().size())); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Disassemble")) { + try (Transaction tx = program.openTransaction("Disassemble")) { Disassembler.getDisassembler(program, TaskMonitor.DUMMY, msg -> { }).disassemble(addr(program, 0x00400123), set(rng(program, 0x00400123, 0x00400123))); } @@ -478,7 +477,7 @@ public class DebuggerBreakpointMarkerPluginTest extends AbstractGhidraHeadedDebu } waitForPass(() -> assertEquals(0, breakpointService.getAllBreakpoints().size())); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Disassemble")) { + try (Transaction tx = program.openTransaction("Disassemble")) { program.getListing().createData(addr(program, 0x00400123), ByteDataType.dataType); } waitForDomainObject(program); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsProviderObjectTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsProviderObjectTest.java index 592d1bf08a..a1b4dfa813 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsProviderObjectTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsProviderObjectTest.java @@ -19,13 +19,13 @@ import java.io.IOException; import org.junit.experimental.categories.Category; +import db.Transaction; import generic.test.category.NightlyCategory; import ghidra.dbg.target.schema.SchemaContext; import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; import ghidra.dbg.target.schema.XmlSchemaContext; import ghidra.trace.model.Trace; import ghidra.trace.model.target.TraceObjectKeyPath; -import ghidra.util.database.UndoableTransaction; @Category(NightlyCategory.class) public class DebuggerBreakpointsProviderObjectTest extends DebuggerBreakpointsProviderTest { @@ -105,7 +105,7 @@ public class DebuggerBreakpointsProviderObjectTest extends DebuggerBreakpointsPr """, index)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session"))); tb.trace.getObjectManager() .createObject( diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsProviderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsProviderTest.java index 6cc942d830..0cd63f5a6f 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsProviderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/breakpoint/DebuggerBreakpointsProviderTest.java @@ -27,6 +27,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; +import db.Transaction; import docking.widgets.table.RowWrappedEnumeratedColumnTableModel; import generic.Unique; import generic.test.category.NightlyCategory; @@ -52,7 +53,6 @@ import ghidra.trace.model.*; import ghidra.trace.model.breakpoint.TraceBreakpoint; import ghidra.trace.model.time.TraceSnapshot; import ghidra.util.SystemUtilities; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.CancelledException; import ghidra.util.exception.DuplicateNameException; import ghidra.util.task.TaskMonitor; @@ -82,7 +82,7 @@ public class DebuggerBreakpointsProviderTest extends AbstractGhidraHeadedDebugge } protected void addMapping(Trace trace, Program prog) throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Add mapping")) { + try (Transaction tx = trace.openTransaction("Add mapping")) { DebuggerStaticMappingUtils.addMapping( new DefaultTraceLocation(trace, null, Lifespan.nowOn(0), addr(trace, 0x55550000)), new ProgramLocation(prog, addr(prog, 0x00400000)), 0x1000, false); @@ -103,8 +103,7 @@ public class DebuggerBreakpointsProviderTest extends AbstractGhidraHeadedDebugge protected void addStaticMemoryAndBreakpoint() throws LockException, DuplicateNameException, MemoryConflictException, AddressOverflowException, CancelledException { - try (UndoableTransaction tid = - UndoableTransaction.start(program, "Add bookmark break")) { + try (Transaction tx = program.openTransaction("Add bookmark break")) { program.getMemory() .createInitializedBlock(".text", addr(program, 0x00400000), 0x1000, (byte) 0, TaskMonitor.DUMMY, false); @@ -705,7 +704,7 @@ public class DebuggerBreakpointsProviderTest extends AbstractGhidraHeadedDebugge // Do our own launch, so that object mode is enabled during load (region creation) createTrace(program.getLanguageID().getIdAsString()); - try (UndoableTransaction startTransaction = tb.startTransaction()) { + try (Transaction startTransaction = tb.startTransaction()) { TraceSnapshot initial = tb.trace.getTimeManager().getSnapshot(0, true); ProgramEmulationUtils.loadExecutable(initial, program); Address pc = program.getMinAddress(); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/control/DebuggerControlPluginTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/control/DebuggerControlPluginTest.java index 2c1674746e..3672d49d9a 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/control/DebuggerControlPluginTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/control/DebuggerControlPluginTest.java @@ -26,6 +26,7 @@ import java.util.concurrent.CompletableFuture; import org.junit.Before; import org.junit.Test; +import db.Transaction; import docking.ActionContext; import docking.action.DockingAction; import docking.action.DockingActionIf; @@ -65,7 +66,6 @@ import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.schedule.Scheduler; import ghidra.trace.model.time.schedule.TraceSchedule; import ghidra.util.Swing; -import ghidra.util.database.UndoableTransaction; /** * Tests for target control and state editing @@ -277,7 +277,7 @@ public class DebuggerControlPluginTest extends AbstractGhidraHeadedDebuggerGUITe Address start = tb.addr(0x00400000); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { Assembler asm = Assemblers.getAssembler(tb.language); AssemblyBuffer buf = new AssemblyBuffer(asm, start); buf.assemble("br 0x" + start); @@ -376,7 +376,7 @@ public class DebuggerControlPluginTest extends AbstractGhidraHeadedDebuggerGUITe protected void create2SnapTrace() throws Throwable { createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getTimeManager().getSnapshot(1, true); } } @@ -421,7 +421,7 @@ public class DebuggerControlPluginTest extends AbstractGhidraHeadedDebuggerGUITe createAndOpenTrace(); TraceVariableSnapProgramView view = tb.trace.getProgramView(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.getOrAddThread("Threads[0]", 0); tb.trace.getMemoryManager() .createRegion("Memory[bin:.text]", 0, tb.range(0x00400000, 0x00401000), @@ -472,7 +472,7 @@ public class DebuggerControlPluginTest extends AbstractGhidraHeadedDebuggerGUITe createAndOpenTrace(); TraceVariableSnapProgramView view = tb.trace.getProgramView(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.getOrAddThread("Threads[0]", 0); tb.trace.getMemoryManager() .createRegion("Memory[bin:.text]", 0, tb.range(0x00400000, 0x00401000), @@ -528,7 +528,7 @@ public class DebuggerControlPluginTest extends AbstractGhidraHeadedDebuggerGUITe createAndOpenTrace(); TraceVariableSnapProgramView view = tb.trace.getProgramView(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.getOrAddThread("Threads[0]", 0); tb.trace.getMemoryManager() .createRegion("Memory[bin:.text]", 0, tb.range(0x00400000, 0x00401000), diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/control/DebuggerMethodActionsPluginTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/control/DebuggerMethodActionsPluginTest.java index 309ab67d29..7d86f515cc 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/control/DebuggerMethodActionsPluginTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/control/DebuggerMethodActionsPluginTest.java @@ -15,7 +15,7 @@ */ package ghidra.app.plugin.core.debug.gui.control; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.*; import java.io.IOException; import java.lang.invoke.MethodHandles; @@ -26,6 +26,7 @@ import org.jdom.JDOMException; import org.junit.Before; import org.junit.Test; +import db.Transaction; import docking.action.DockingActionIf; import generic.Unique; import ghidra.app.context.ProgramLocationActionContext; @@ -45,7 +46,6 @@ import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; import ghidra.program.model.address.Address; import ghidra.program.util.ProgramLocation; import ghidra.trace.model.Lifespan; -import ghidra.util.database.UndoableTransaction; public class DebuggerMethodActionsPluginTest extends AbstractGhidraHeadedDebuggerGUITest { public static final XmlSchemaContext SCHEMA_CTX; @@ -216,13 +216,13 @@ public class DebuggerMethodActionsPluginTest extends AbstractGhidraHeadedDebugge createProgramFromTrace(tb.trace); intoProject(program); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add memory")) { + try (Transaction tx = program.openTransaction("Add memory")) { program.getMemory() .createInitializedBlock(".text", addr(program, 0x00400000), 0x1000, (byte) 0, monitor, false); } - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { mappingService.addIdentityMapping(tb.trace, program, Lifespan.ALL, true); } waitForDomainObject(tb.trace); @@ -252,13 +252,13 @@ public class DebuggerMethodActionsPluginTest extends AbstractGhidraHeadedDebugge createProgramFromTrace(tb.trace); intoProject(program); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add memory")) { + try (Transaction tx = program.openTransaction("Add memory")) { program.getMemory() .createInitializedBlock(".text", addr(program, 0x00400000), 0x1000, (byte) 0, monitor, false); } - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { mappingService.addIdentityMapping(tb.trace, program, Lifespan.ALL, true); } waitForDomainObject(tb.trace); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyActionsPluginTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyActionsPluginTest.java index daeb83dd2e..2f1242891d 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyActionsPluginTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyActionsPluginTest.java @@ -24,6 +24,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; +import db.Transaction; import docking.action.DockingActionIf; import generic.Unique; import generic.test.category.NightlyCategory; @@ -46,7 +47,6 @@ import ghidra.test.ToyProgramBuilder; import ghidra.trace.database.memory.DBTraceMemoryManager; import ghidra.trace.model.*; import ghidra.trace.model.memory.TraceMemoryFlag; -import ghidra.util.database.UndoableTransaction; @Category(NightlyCategory.class) public class DebuggerCopyActionsPluginTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -92,7 +92,7 @@ public class DebuggerCopyActionsPluginTest extends AbstractGhidraHeadedDebuggerG assertDisabled(copyActionsPlugin.actionCopyIntoCurrentProgram); createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .createRegion(".text", 0, tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -133,7 +133,7 @@ public class DebuggerCopyActionsPluginTest extends AbstractGhidraHeadedDebuggerG AddressSpace stSpace = program.getAddressFactory().getDefaultAddressSpace(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add blocks")) { + try (Transaction tx = program.openTransaction("Add blocks")) { program.getMemory() .createInitializedBlock(".text", tb.addr(stSpace, 0x00400000), 0x8000, (byte) 0, monitor, false); @@ -142,7 +142,7 @@ public class DebuggerCopyActionsPluginTest extends AbstractGhidraHeadedDebuggerG (byte) 0, monitor, false); } - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.createRegion(".text", 0, tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -214,7 +214,7 @@ public class DebuggerCopyActionsPluginTest extends AbstractGhidraHeadedDebuggerG intoProject(program); intoProject(tb.trace); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .createRegion(".text", 0, tb.range(0x55550000, 0x5555ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -227,7 +227,7 @@ public class DebuggerCopyActionsPluginTest extends AbstractGhidraHeadedDebuggerG AddressSpace stSpace = program.getAddressFactory().getDefaultAddressSpace(); MemoryBlock block; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Create block")) { + try (Transaction tx = program.openTransaction("Create block")) { block = program.getMemory() .createUninitializedBlock(".text", tb.addr(stSpace, 0x00400000), 0x10000, false); @@ -236,7 +236,7 @@ public class DebuggerCopyActionsPluginTest extends AbstractGhidraHeadedDebuggerG TraceLocation tloc = new DefaultTraceLocation(tb.trace, null, Lifespan.nowOn(0), tb.addr(0x55550000)); ProgramLocation ploc = new ProgramLocation(program, tb.addr(stSpace, 0x00400000)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { mappingService.addMapping(tloc, ploc, 0x10000, true); } @@ -276,7 +276,7 @@ public class DebuggerCopyActionsPluginTest extends AbstractGhidraHeadedDebuggerG intoProject(program); intoProject(tb.trace); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .createRegion(".text", 0, tb.range(0x55550000, 0x5555ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -289,7 +289,7 @@ public class DebuggerCopyActionsPluginTest extends AbstractGhidraHeadedDebuggerG AddressSpace stSpace = program.getAddressFactory().getDefaultAddressSpace(); MemoryBlock block; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Create block")) { + try (Transaction tx = program.openTransaction("Create block")) { block = program.getMemory() .createUninitializedBlock(".text", tb.addr(stSpace, 0x00400000), 0x10000, false); @@ -298,7 +298,7 @@ public class DebuggerCopyActionsPluginTest extends AbstractGhidraHeadedDebuggerG TraceLocation tloc = new DefaultTraceLocation(tb.trace, null, Lifespan.nowOn(0), tb.addr(0x55550000)); ProgramLocation ploc = new ProgramLocation(program, tb.addr(stSpace, 0x00400000)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { mappingService.addMapping(tloc, ploc, 0x10000, true); } @@ -338,7 +338,7 @@ public class DebuggerCopyActionsPluginTest extends AbstractGhidraHeadedDebuggerG createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .createRegion(".text", 0, tb.range(0x55550000, 0x5555ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -380,7 +380,7 @@ public class DebuggerCopyActionsPluginTest extends AbstractGhidraHeadedDebuggerG createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .createRegion(".text", 0, tb.range(0x55550000, 0x5555ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyPlanTests.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyPlanTests.java index f19818d1e8..3d871f3df2 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyPlanTests.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/copying/DebuggerCopyPlanTests.java @@ -25,6 +25,7 @@ import javax.swing.JCheckBox; import org.junit.Test; +import db.Transaction; import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.app.plugin.assembler.Assembler; import ghidra.app.plugin.assembler.Assemblers; @@ -49,7 +50,6 @@ import ghidra.trace.model.Lifespan; import ghidra.trace.model.breakpoint.TraceBreakpointKind; import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.memory.TraceMemoryState; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { @@ -74,7 +74,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { Random r = new Random(); byte src[] = new byte[0x10000]; r.nextBytes(src); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.createRegion(".text", 0, tb.range(0x55550000, 0x5555ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -83,7 +83,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { Address paddr = tb.addr(stSpace, 0x00400000); assertTrue(AllCopiers.BYTES.isRequiresInitializedMemory()); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Copy")) { + try (Transaction tx = program.openTransaction("Copy")) { program.getMemory() .createInitializedBlock(".text", paddr, 0x10000, (byte) 0, TaskMonitor.DUMMY, false); @@ -106,7 +106,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { DBTraceVariableSnapProgramView view = tb.trace.getProgramView(); assertTrue(AllCopiers.STATE.isAvailable(view, program)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.createRegion(".text", 0, tb.range(0x55550000, 0x5555ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -116,7 +116,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { Address paddr = tb.addr(stSpace, 0x00400000); assertFalse(AllCopiers.STATE.isRequiresInitializedMemory()); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Copy")) { + try (Transaction tx = program.openTransaction("Copy")) { program.getMemory() .createInitializedBlock(".text", paddr, 0x10000, (byte) 0, TaskMonitor.DUMMY, false); @@ -183,7 +183,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { AddressRange trng = tb.range(0x55550000, 0x5555ffff); Assembler asm = Assemblers.getAssembler(view); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.createRegion(".text", 0, trng, TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); InstructionIterator iit = asm.assemble(tb.addr(0x55550000), @@ -193,7 +193,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { assertTrue(iit.hasNext()); } - try (UndoableTransaction tid = UndoableTransaction.start(program, "Copy")) { + try (Transaction tx = program.openTransaction("Copy")) { Address paddr = tb.addr(stSpace, 0x00400000); program.getMemory() .createInitializedBlock(".text", paddr, 0x10000, (byte) 0, TaskMonitor.DUMMY, @@ -231,7 +231,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { AddressRange trng = tb.range(0x55550000, 0x5555ffff); Assembler asm = Assemblers.getAssembler(view); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.createRegion(".text", 0, trng, TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); InstructionIterator iit = asm.assemble(tb.addr(0x55550000), @@ -241,7 +241,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { assertTrue(iit.hasNext()); } - try (UndoableTransaction tid = UndoableTransaction.start(program, "Copy")) { + try (Transaction tx = program.openTransaction("Copy")) { Address paddr = tb.addr(stSpace, 0x00400000); program.getMemory() .createInitializedBlock(".text", paddr, 0x10000, (byte) 0, TaskMonitor.DUMMY, @@ -286,7 +286,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { .getValueWithDefault(tb.host, contextReg, 0, tb.addr(0x55550000)); rv = rv.assign(longMode, BigInteger.ZERO); Instruction checkCtx; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.createRegion(".text", 0, trng, TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); tb.trace.getRegisterContextManager().setValue(tb.language, rv, Lifespan.nowOn(0), trng); @@ -314,7 +314,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { assertFalse(insCtx.equals(tb.trace.getRegisterContextManager() .getDefaultValue(tb.language, contextReg, checkCtx.getAddress()))); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Copy")) { + try (Transaction tx = program.openTransaction("Copy")) { Address paddr = tb.addr(stSpace, 0x00400000); program.getMemory() .createInitializedBlock(".text", paddr, 0x10000, (byte) 0, TaskMonitor.DUMMY, @@ -358,7 +358,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { assertTrue(AllCopiers.DATA.isAvailable(view, program)); AddressRange trng = tb.range(0x55560000, 0x5556ffff); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.createRegion(".data", 0, trng, TraceMemoryFlag.READ, TraceMemoryFlag.WRITE); tb.addData(0, tb.addr(0x55560000), ByteDataType.dataType, tb.buf(0x12)); @@ -371,7 +371,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { tb.buf(0x00, 0x03, 0x00, 0x01, 0x02)); } - try (UndoableTransaction tid = UndoableTransaction.start(program, "Copy")) { + try (Transaction tx = program.openTransaction("Copy")) { Address paddr = tb.addr(stSpace, 0x00600000); program.getMemory() .createInitializedBlock(".data", paddr, 0x10000, (byte) 0, TaskMonitor.DUMMY, @@ -418,7 +418,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { assertTrue(AllCopiers.DYNAMIC_DATA.isAvailable(view, program)); AddressRange trng = tb.range(0x55560000, 0x5556ffff); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.createRegion(".data", 0, trng, TraceMemoryFlag.READ, TraceMemoryFlag.WRITE); tb.addData(0, tb.addr(0x55560000), ByteDataType.dataType, tb.buf(0x12)); @@ -431,7 +431,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { tb.buf(0x00, 0x03, 0x00, 0x01, 0x02)); } - try (UndoableTransaction tid = UndoableTransaction.start(program, "Copy")) { + try (Transaction tx = program.openTransaction("Copy")) { Address paddr = tb.addr(stSpace, 0x00600000); program.getMemory() .createInitializedBlock(".data", paddr, 0x10000, (byte) 0, TaskMonitor.DUMMY, @@ -485,7 +485,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { DBTraceVariableSnapProgramView view = tb.trace.getProgramView(); assertTrue(AllCopiers.LABELS.isAvailable(view, program)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.createRegion(".text", 0, tb.range(0x55550000, 0x5555ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -504,7 +504,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { } Address paddr = tb.addr(stSpace, 0x00400000); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Copy")) { + try (Transaction tx = program.openTransaction("Copy")) { program.getMemory() .createInitializedBlock(".text", paddr, 0x10000, (byte) 0, TaskMonitor.DUMMY, false); @@ -556,7 +556,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { DBTraceVariableSnapProgramView view = tb.trace.getProgramView(); assertTrue(AllCopiers.BREAKPOINTS.isAvailable(view, program)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.createRegion(".text", 0, tb.range(0x55550000, 0x5555ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -569,7 +569,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { } Address paddr = tb.addr(stSpace, 0x55550000); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Init")) { + try (Transaction tx = program.openTransaction("Init")) { program.getMemory() .createInitializedBlock(".text", paddr, 0x10000, (byte) 0, TaskMonitor.DUMMY, false); @@ -609,7 +609,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { DBTraceVariableSnapProgramView view = tb.trace.getProgramView(); assertTrue(AllCopiers.BOOKMARKS.isAvailable(view, program)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.createRegion(".text", 0, tb.range(0x55550000, 0x5555ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -620,7 +620,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { } Address paddr = tb.addr(stSpace, 0x55550000); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Init")) { + try (Transaction tx = program.openTransaction("Init")) { program.getMemory() .createInitializedBlock(".text", paddr, 0x10000, (byte) 0, TaskMonitor.DUMMY, false); @@ -657,7 +657,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { DBTraceVariableSnapProgramView view = tb.trace.getProgramView(); assertTrue(AllCopiers.REFERENCES.isAvailable(view, program)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.createRegion(".text", 0, tb.range(0x55550000, 0x5555ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -676,7 +676,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { } Address paddr = tb.addr(stSpace, 0x55550000); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Init")) { + try (Transaction tx = program.openTransaction("Init")) { program.getMemory() .createInitializedBlock(".text", paddr, 0x10000, (byte) 0, TaskMonitor.DUMMY, false); @@ -708,7 +708,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { DBTraceVariableSnapProgramView view = tb.trace.getProgramView(); assertTrue(AllCopiers.COMMENTS.isAvailable(view, program)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.createRegion(".text", 0, tb.range(0x55550000, 0x5555ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -719,7 +719,7 @@ public class DebuggerCopyPlanTests extends AbstractGhidraHeadedDebuggerGUITest { } Address paddr = tb.addr(stSpace, 0x55550000); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Init")) { + try (Transaction tx = program.openTransaction("Init")) { program.getMemory() .createInitializedBlock(".text", paddr, 0x10000, (byte) 0, TaskMonitor.DUMMY, false); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/diff/DebuggerTraceViewDiffPluginTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/diff/DebuggerTraceViewDiffPluginTest.java index 4a29f62436..e5137a61f4 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/diff/DebuggerTraceViewDiffPluginTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/diff/DebuggerTraceViewDiffPluginTest.java @@ -22,6 +22,7 @@ import java.nio.ByteBuffer; import org.junit.Before; import org.junit.Test; +import db.Transaction; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; import ghidra.app.plugin.core.debug.gui.listing.DebuggerListingPlugin; import ghidra.app.plugin.core.debug.gui.listing.DebuggerListingProvider; @@ -32,7 +33,6 @@ import ghidra.trace.database.memory.DBTraceMemoryManager; import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.time.schedule.TraceSchedule; import ghidra.util.Swing; -import ghidra.util.database.UndoableTransaction; public class DebuggerTraceViewDiffPluginTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -128,7 +128,7 @@ public class DebuggerTraceViewDiffPluginTest extends AbstractGhidraHeadedDebugge @Test public void testColorsDiffBytes() throws Throwable { createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.createRegion(".text", 0, tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -163,7 +163,7 @@ public class DebuggerTraceViewDiffPluginTest extends AbstractGhidraHeadedDebugge @Test public void testActionPrevDiff() throws Throwable { createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.createRegion(".text", 0, tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -200,7 +200,7 @@ public class DebuggerTraceViewDiffPluginTest extends AbstractGhidraHeadedDebugge @Test public void testActionNextDiff() throws Throwable { createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.createRegion(".text", 0, tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingProviderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingProviderTest.java index b48d7ecb3c..0aed8791e5 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingProviderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingProviderTest.java @@ -29,6 +29,7 @@ import java.util.Set; import org.junit.*; import org.junit.experimental.categories.Category; +import db.Transaction; import docking.menu.ActionState; import docking.menu.MultiStateDockingAction; import docking.widgets.EventTrigger; @@ -70,7 +71,6 @@ import ghidra.trace.model.modules.TraceModule; import ghidra.trace.model.stack.TraceStack; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.TraceSnapshot; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.CancelledException; import ghidra.util.exception.VersionException; import ghidra.util.task.TaskMonitor; @@ -120,12 +120,12 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI intoProject(program); AddressSpace ss = program.getAddressFactory().getDefaultAddressSpace(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add block")) { + try (Transaction tx = program.openTransaction("Add block")) { program.getMemory() .createInitializedBlock(".text", ss.getAddress(0x00600000), 0x10000, (byte) 0, monitor, false); } - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -144,7 +144,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI public void testListingViewIsRegionsActivateThenAdd() throws Exception { createAndOpenTrace(); traceManager.activateTrace(tb.trace); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -158,7 +158,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI @Test public void testListingViewIsRegionsAddThenActivate() throws Exception { createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -174,7 +174,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI @Test public void testRegisterTrackingOnRegisterChange() throws Exception { createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -200,7 +200,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI @Test public void testRegisterTrackingOnSnapChange() throws Exception { createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -233,7 +233,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI createAndOpenTrace(); TraceThread thread1; TraceThread thread2; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -279,7 +279,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI .submit(() -> listingPlugin.createListingIfMissing(PCLocationTrackingSpec.INSTANCE, true)) .get(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -315,7 +315,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI @Test public void testRegisterTrackingOnTrackingSpecChange() throws Exception { createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -354,7 +354,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI new ToyDBTraceBuilder(name.getMethodName() + "_2", LANGID_TOYBE64)) { TraceThread t1, t2; - try (UndoableTransaction tid = b1.startTransaction()) { + try (Transaction tx = b1.startTransaction()) { b1.trace.getTimeManager().createSnapshot("First snap"); DBTraceMemoryManager memory = b1.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), b1.range(0x00400000, 0x0040ffff), @@ -366,7 +366,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI regs.setValue(0, new RegisterValue(pc, BigInteger.valueOf(0x00401234))); } waitForDomainObject(b1.trace); - try (UndoableTransaction tid = b2.startTransaction()) { + try (Transaction tx = b2.startTransaction()) { b2.trace.getTimeManager().createSnapshot("First snap"); DBTraceMemoryManager memory = b2.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), b2.range(0x00400000, 0x0040ffff), @@ -410,7 +410,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI new ToyDBTraceBuilder(name.getMethodName() + "_2", LANGID_TOYBE64)) { TraceThread t1, t2; - try (UndoableTransaction tid = b1.startTransaction()) { + try (Transaction tx = b1.startTransaction()) { b1.trace.getTimeManager().createSnapshot("First snap"); DBTraceMemoryManager memory = b1.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), b1.range(0x00400000, 0x0040ffff), @@ -422,7 +422,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI regs.setValue(0, new RegisterValue(pc, BigInteger.valueOf(0x00401234))); } waitForDomainObject(b1.trace); - try (UndoableTransaction tid = b2.startTransaction()) { + try (Transaction tx = b2.startTransaction()) { b2.trace.getTimeManager().createSnapshot("First snap"); DBTraceMemoryManager memory = b2.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), b2.range(0x00400000, 0x0040ffff), @@ -494,13 +494,13 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI intoProject(program); AddressSpace ss = program.getAddressFactory().getDefaultAddressSpace(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add block")) { + try (Transaction tx = program.openTransaction("Add block")) { program.getMemory() .createInitializedBlock(".text", ss.getAddress(0x00600000), 0x10000, (byte) 0, monitor, false); } TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -579,7 +579,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI waitForSwing(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -607,13 +607,13 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI intoProject(program); AddressSpace ss = program.getAddressFactory().getDefaultAddressSpace(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add block")) { + try (Transaction tx = program.openTransaction("Add block")) { program.getMemory() .createInitializedBlock(".text", ss.getAddress(0x00600000), 0x10000, (byte) 0, monitor, false); } TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -769,7 +769,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI createAndOpenTrace(); waitForSwing(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -829,7 +829,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI assertFalse(listingProvider.actionGoTo.isEnabled()); createAndOpenTrace(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -870,7 +870,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI assertTrue(listingProvider.actionTrackLocation.isEnabled()); createAndOpenTrace(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -1017,7 +1017,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI createAndOpenTrace(); TraceThread thread1; TraceThread thread2; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -1069,7 +1069,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI // To verify enabled requires live target createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x55550000, 0x555500ff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -1185,7 +1185,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI DebuggerConsolePlugin consolePlugin = addPlugin(tool, DebuggerConsolePlugin.class); createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .addRegion("bash:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0041ffff), Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE)); @@ -1216,7 +1216,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI DebuggerConsolePlugin consolePlugin = addPlugin(tool, DebuggerConsolePlugin.class); createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .addRegion("bash:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0041ffff), Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE)); @@ -1247,7 +1247,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI waitForSwing(); assertEquals("(nowhere)", listingProvider.locationLabel.getText()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .addRegion("test_region", Lifespan.nowOn(0), tb.range(0x55550000, 0x555502ff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -1256,7 +1256,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI waitForPass(() -> assertEquals("test_region", listingProvider.locationLabel.getText())); TraceModule modExe; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { modExe = tb.trace.getModuleManager() .addModule("modExe", "modExe", tb.range(0x55550000, 0x555501ff), Lifespan.nowOn(0)); @@ -1264,7 +1264,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI waitForDomainObject(tb.trace); waitForPass(() -> assertEquals("modExe", listingProvider.locationLabel.getText())); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { modExe.addSection(".text", tb.range(0x55550000, 0x555500ff)); } waitForDomainObject(tb.trace); @@ -1282,7 +1282,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI new ToyDBTraceBuilder("dynamic2-" + name.getMethodName(), "dsPIC33F:LE:24:default")) { TraceThread thread1; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getTimeManager().createSnapshot("First"); tb.trace.getMemoryManager() .createRegion(".text", 0, tb.range(0x00400000, 0x0040ffff), @@ -1292,7 +1292,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI } TraceThread thread2; - try (UndoableTransaction tid = tb2.startTransaction()) { + try (Transaction tx = tb2.startTransaction()) { tb2.trace.getTimeManager().createSnapshot("First"); tb2.trace.getMemoryManager() .createRegion(".text", 0, tb2.range(0x200, 0x3ff), TraceMemoryFlag.READ, @@ -1323,7 +1323,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI Register pc = tb.language.getProgramCounter(); TraceThread thread1; TraceThread thread2; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -1354,7 +1354,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI createAndOpenTrace(); Register pc = tb.language.getProgramCounter(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -1382,7 +1382,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI createAndOpenTrace(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -1413,7 +1413,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI DBTraceMemoryManager mm = tb.trace.getMemoryManager(); Register pc = tb.language.getProgramCounter(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); thread = tb.getOrAddThread("Thread 1", 0); @@ -1426,7 +1426,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI assertEquals(tb.addr(0x00401234), listingProvider.getLocation().getAddress()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemorySpace regs = mm.getMemoryRegisterSpace(thread, true); regs.setValue(0, new RegisterValue(pc, new BigInteger("00404321", 16))); } @@ -1444,7 +1444,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI DBTraceMemoryManager mm = tb.trace.getMemoryManager(); Register pc = tb.language.getProgramCounter(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); thread = tb.getOrAddThread("Thread 1", 0); @@ -1461,7 +1461,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI assertEquals(tb.addr(0x00401234), listingProvider.getLocation().getAddress()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemorySpace regs = mm.getMemoryRegisterSpace(thread, true); regs.setValue(0, new RegisterValue(pc, new BigInteger("00404321", 16))); } @@ -1478,7 +1478,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI createAndOpenTrace(); DBTraceStackManager sm = tb.trace.getStackManager(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -1492,7 +1492,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI assertEquals(tb.addr(0x00401234), listingProvider.getLocation().getAddress()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceStack stack = sm.getStack(thread, 0, true); stack.getFrame(0, true).setProgramCounter(Lifespan.ALL, tb.addr(0x00404321)); } @@ -1511,12 +1511,12 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI intoProject(program); AddressSpace ss = program.getAddressFactory().getDefaultAddressSpace(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add block")) { + try (Transaction tx = program.openTransaction("Add block")) { program.getMemory() .createInitializedBlock(".text", ss.getAddress(0x00600000), 0x10000, (byte) 0, monitor, false); } - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -1625,7 +1625,7 @@ public class DebuggerListingProviderTest extends AbstractGhidraHeadedDebuggerGUI } protected Instruction placeGuestInstruction(int guestRangeLength) throws Throwable { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .addRegion("Memory[.text]", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE)); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerMemoryBytesProviderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerMemoryBytesProviderTest.java index c9a906000d..724f7888ad 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerMemoryBytesProviderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerMemoryBytesProviderTest.java @@ -30,6 +30,7 @@ import java.util.Objects; import org.junit.*; import org.junit.experimental.categories.Category; +import db.Transaction; import docking.ActionContext; import docking.action.DockingActionIf; import docking.dnd.GClipboard; @@ -66,7 +67,6 @@ import ghidra.trace.model.modules.TraceModule; import ghidra.trace.model.stack.TraceStack; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.TraceSnapshot; -import ghidra.util.database.UndoableTransaction; @Category(NightlyCategory.class) public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -110,7 +110,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge public void testBytesViewIsRegionsActivateThenAdd() throws Exception { createAndOpenTrace(); traceManager.activateTrace(tb.trace); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -126,7 +126,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge @Test public void testBytesViewIsRegionsAddThenActivate() throws Exception { createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -142,7 +142,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge @Test public void testRegisterTrackingOnRegisterChange() throws Exception { createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -168,7 +168,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge @Test public void testRegisterTrackingOnSnapChange() throws Exception { createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -202,7 +202,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge createAndOpenTrace(); TraceThread thread1; TraceThread thread2; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -248,7 +248,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge .submit(() -> memBytesPlugin.createViewerIfMissing(PCLocationTrackingSpec.INSTANCE, true)) .get(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -284,7 +284,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge @Test public void testRegisterTrackingOnTrackingSpecChange() throws Exception { createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -322,7 +322,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge new ToyDBTraceBuilder(name.getMethodName() + "_2", LANGID_TOYBE64)) { TraceThread t1, t2; - try (UndoableTransaction tid = b1.startTransaction()) { + try (Transaction tx = b1.startTransaction()) { b1.trace.getTimeManager().createSnapshot("First snap"); DBTraceMemoryManager memory = b1.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), b1.range(0x00400000, 0x0040ffff), @@ -334,7 +334,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge regs.setValue(0, new RegisterValue(pc, BigInteger.valueOf(0x00401234))); } waitForDomainObject(b1.trace); - try (UndoableTransaction tid = b2.startTransaction()) { + try (Transaction tx = b2.startTransaction()) { b2.trace.getTimeManager().createSnapshot("First snap"); DBTraceMemoryManager memory = b2.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), b2.range(0x00400000, 0x0040ffff), @@ -373,7 +373,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge new ToyDBTraceBuilder(name.getMethodName() + "_2", LANGID_TOYBE64)) { TraceThread t1, t2; - try (UndoableTransaction tid = b1.startTransaction()) { + try (Transaction tx = b1.startTransaction()) { b1.trace.getTimeManager().createSnapshot("First snap"); DBTraceMemoryManager memory = b1.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), b1.range(0x00400000, 0x0040ffff), @@ -385,7 +385,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge regs.setValue(0, new RegisterValue(pc, BigInteger.valueOf(0x00401234))); } waitForDomainObject(b1.trace); - try (UndoableTransaction tid = b2.startTransaction()) { + try (Transaction tx = b2.startTransaction()) { b2.trace.getTimeManager().createSnapshot("First snap"); DBTraceMemoryManager memory = b2.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), b2.range(0x00400000, 0x0040ffff), @@ -445,7 +445,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge waitForSwing(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -548,7 +548,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge createAndOpenTrace(); waitForSwing(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -611,7 +611,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge assertFalse(memBytesProvider.actionGoTo.isEnabled()); createAndOpenTrace(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -655,7 +655,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge assertTrue(memBytesProvider.actionTrackLocation.isEnabled()); createAndOpenTrace(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -708,7 +708,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge createAndOpenTrace(); TraceThread thread1; TraceThread thread2; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager memory = tb.trace.getMemoryManager(); memory.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -761,7 +761,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge // To verify enabled requires live target createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x55550000, 0x555500ff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -881,7 +881,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge waitForSwing(); assertEquals("(nowhere)", memBytesProvider.locationLabel.getText()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .addRegion("test_region", Lifespan.nowOn(0), tb.range(0x55550000, 0x555502ff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -892,7 +892,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge waitForPass(() -> assertEquals("test_region", memBytesProvider.locationLabel.getText())); TraceModule modExe; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { modExe = tb.trace.getModuleManager() .addModule("modExe", "modExe", tb.range(0x55550000, 0x555501ff), Lifespan.nowOn(0)); @@ -900,7 +900,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge waitForDomainObject(tb.trace); waitForPass(() -> assertEquals("modExe", memBytesProvider.locationLabel.getText())); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { modExe.addSection(".text", tb.range(0x55550000, 0x555500ff)); } waitForDomainObject(tb.trace); @@ -916,7 +916,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge Register pc = tb.language.getProgramCounter(); TraceThread thread1; TraceThread thread2; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -947,7 +947,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge createAndOpenTrace(); Register pc = tb.language.getProgramCounter(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -975,7 +975,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge createAndOpenTrace(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -1006,7 +1006,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge DBTraceMemoryManager mm = tb.trace.getMemoryManager(); Register pc = tb.language.getProgramCounter(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); thread = tb.getOrAddThread("Thread 1", 0); @@ -1019,7 +1019,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge assertEquals(tb.addr(0x00401234), memBytesProvider.getLocation().getAddress()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemorySpace regs = mm.getMemoryRegisterSpace(thread, true); regs.setValue(0, new RegisterValue(pc, new BigInteger("00404321", 16))); } @@ -1037,7 +1037,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge DBTraceMemoryManager mm = tb.trace.getMemoryManager(); Register pc = tb.language.getProgramCounter(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); thread = tb.getOrAddThread("Thread 1", 0); @@ -1054,7 +1054,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge assertEquals(tb.addr(0x00401234), memBytesProvider.getLocation().getAddress()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemorySpace regs = mm.getMemoryRegisterSpace(thread, true); regs.setValue(0, new RegisterValue(pc, new BigInteger("00404321", 16))); } @@ -1071,7 +1071,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge createAndOpenTrace(); DBTraceStackManager sm = tb.trace.getStackManager(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.addRegion("exe:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -1085,7 +1085,7 @@ public class DebuggerMemoryBytesProviderTest extends AbstractGhidraHeadedDebugge assertEquals(tb.addr(0x00401234), memBytesProvider.getLocation().getAddress()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceStack stack = sm.getStack(thread, 0, true); stack.getFrame(0, true).setProgramCounter(Lifespan.ALL, tb.addr(0x00404321)); } diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerRegionsProviderLegacyTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerRegionsProviderLegacyTest.java index 925e130299..618b6d2728 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerRegionsProviderLegacyTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerRegionsProviderLegacyTest.java @@ -23,6 +23,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; +import db.Transaction; import generic.Unique; import generic.test.category.NightlyCategory; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; @@ -40,7 +41,6 @@ import ghidra.program.util.ProgramSelection; import ghidra.trace.model.Lifespan; import ghidra.trace.model.memory.*; import ghidra.trace.model.modules.TraceStaticMapping; -import ghidra.util.database.UndoableTransaction; @Category(NightlyCategory.class) public class DebuggerRegionsProviderLegacyTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -63,7 +63,7 @@ public class DebuggerRegionsProviderLegacyTest extends AbstractGhidraHeadedDebug protected void addRegions() throws Exception { TraceMemoryManager mm = tb.trace.getMemoryManager(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { regionExeText = mm.createRegion("Memory[/bin/echo 0x55550000]", 0, tb.range(0x55550000, 0x555500ff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); regionExeData = mm.createRegion("Memory[/bin/echo 0x55750000]", 0, @@ -76,7 +76,7 @@ public class DebuggerRegionsProviderLegacyTest extends AbstractGhidraHeadedDebug } protected void addBlocks() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add block")) { + try (Transaction tx = program.openTransaction("Add block")) { Memory mem = program.getMemory(); blockExeText = mem.createInitializedBlock(".text", tb.addr(0x00400000), 0x100, (byte) 0, monitor, false); @@ -104,7 +104,7 @@ public class DebuggerRegionsProviderLegacyTest extends AbstractGhidraHeadedDebug createTrace(); TraceMemoryRegion region; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemoryManager mm = tb.trace.getMemoryManager(); region = mm.addRegion("Memory[bin:.text]", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -132,7 +132,7 @@ public class DebuggerRegionsProviderLegacyTest extends AbstractGhidraHeadedDebug traceManager.activateTrace(tb.trace); TraceMemoryRegion region; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemoryManager mm = tb.trace.getMemoryManager(); region = mm.addRegion("Memory[bin:.text]", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -149,7 +149,7 @@ public class DebuggerRegionsProviderLegacyTest extends AbstractGhidraHeadedDebug createTrace(); TraceMemoryRegion region; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemoryManager mm = tb.trace.getMemoryManager(); region = mm.addRegion("Memory[bin:.text]", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -162,7 +162,7 @@ public class DebuggerRegionsProviderLegacyTest extends AbstractGhidraHeadedDebug RegionRow row = Unique.assertOne(provider.legacyPanel.regionTableModel.getModelData()); assertEquals(region, row.getRegion()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { region.delete(); } waitForDomainObject(tb.trace); @@ -174,7 +174,7 @@ public class DebuggerRegionsProviderLegacyTest extends AbstractGhidraHeadedDebug public void testUndoRedo() throws Exception { createTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemoryManager mm = tb.trace.getMemoryManager(); mm.addRegion("Memory[bin:.text]", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -197,14 +197,14 @@ public class DebuggerRegionsProviderLegacyTest extends AbstractGhidraHeadedDebug createAndOpenTrace(); traceManager.activateTrace(tb.trace); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemoryManager mm = tb.trace.getMemoryManager(); mm.addRegion("Memory[bin:.text]", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); waitForDomainObject(tb.trace); Unique.assertOne(provider.legacyPanel.regionTableModel.getModelData()); - tid.abort(); + tx.abort(); } waitForDomainObject(tb.trace); assertEquals(0, provider.legacyPanel.regionTableModel.getModelData().size()); @@ -218,7 +218,7 @@ public class DebuggerRegionsProviderLegacyTest extends AbstractGhidraHeadedDebug createTrace(); TraceMemoryRegion region; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemoryManager mm = tb.trace.getMemoryManager(); region = mm.addRegion("Memory[bin:.text]", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -256,7 +256,7 @@ public class DebuggerRegionsProviderLegacyTest extends AbstractGhidraHeadedDebug assertFalse(provider.actionMapRegions.isEnabled()); addBlocks(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Change name")) { + try (Transaction tx = program.openTransaction("Change name")) { program.setName("echo"); } waitForDomainObject(program); @@ -331,7 +331,7 @@ public class DebuggerRegionsProviderLegacyTest extends AbstractGhidraHeadedDebug createTrace(); TraceMemoryRegion region; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemoryManager mm = tb.trace.getMemoryManager(); region = mm.addRegion("Memory[bin:.text]", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); @@ -362,7 +362,7 @@ public class DebuggerRegionsProviderLegacyTest extends AbstractGhidraHeadedDebug createTrace(); TraceMemoryRegion region; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemoryManager mm = tb.trace.getMemoryManager(); region = mm.addRegion("Memory[bin:.text]", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerRegionsProviderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerRegionsProviderTest.java index af2c7344d3..6638f23661 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerRegionsProviderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/memory/DebuggerRegionsProviderTest.java @@ -23,6 +23,7 @@ import java.util.*; import org.junit.*; import org.junit.experimental.categories.Category; +import db.Transaction; import docking.widgets.table.DynamicTableColumn; import generic.test.category.NightlyCategory; import ghidra.app.plugin.core.debug.DebuggerCoordinates; @@ -50,7 +51,6 @@ import ghidra.trace.model.memory.TraceObjectMemoryRegion; import ghidra.trace.model.modules.TraceStaticMapping; import ghidra.trace.model.target.*; import ghidra.trace.model.target.TraceObject.ConflictResolution; -import ghidra.util.database.UndoableTransaction; import ghidra.util.table.GhidraTable; @Category(NightlyCategory.class) @@ -100,7 +100,7 @@ public class DebuggerRegionsProviderTest extends AbstractGhidraHeadedDebuggerGUI """); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session"))); } } @@ -124,7 +124,7 @@ public class DebuggerRegionsProviderTest extends AbstractGhidraHeadedDebuggerGUI } protected void addRegions() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { regionExeText = addRegion("/bin/echo .text", 0, tb.range(0x55550000, 0x555500ff)); regionExeData = addRegion("/bin/echo .data", 0, tb.range(0x55750000, 0x5575007f)); regionLibText = addRegion("/lib/libc.so .text", 0, tb.range(0x7f000000, 0x7f0003ff)); @@ -133,7 +133,7 @@ public class DebuggerRegionsProviderTest extends AbstractGhidraHeadedDebuggerGUI } protected void addBlocks() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add block")) { + try (Transaction tx = program.openTransaction("Add block")) { Memory mem = program.getMemory(); blockExeText = mem.createInitializedBlock(".text", tb.addr(0x00400000), 0x100, (byte) 0, monitor, false); @@ -206,7 +206,7 @@ public class DebuggerRegionsProviderTest extends AbstractGhidraHeadedDebuggerGUI createAndOpenTrace(); TraceObjectMemoryRegion region; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { region = addRegion("bin:.text", 0, tb.range(0x00400000, 0x0040ffff)); } @@ -228,7 +228,7 @@ public class DebuggerRegionsProviderTest extends AbstractGhidraHeadedDebuggerGUI waitForPass(() -> assertTableSize(0)); TraceObjectMemoryRegion region; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { region = addRegion("bin:.text", 0, tb.range(0x00400000, 0x0040ffff)); } waitForTasks(); @@ -245,7 +245,7 @@ public class DebuggerRegionsProviderTest extends AbstractGhidraHeadedDebuggerGUI createAndOpenTrace(); TraceObjectMemoryRegion region; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { region = addRegion("bin:.text", 0, tb.range(0x00400000, 0x0040ffff)); } @@ -258,7 +258,7 @@ public class DebuggerRegionsProviderTest extends AbstractGhidraHeadedDebuggerGUI 0x10000, "rx"); }); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { region.getObject().removeTree(Lifespan.nowOn(0)); } waitForDomainObject(tb.trace); @@ -272,7 +272,7 @@ public class DebuggerRegionsProviderTest extends AbstractGhidraHeadedDebuggerGUI createAndOpenTrace(); TraceObjectMemoryRegion region; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { region = addRegion("bin:.text", 0, tb.range(0x00400000, 0x0040ffff)); } @@ -308,7 +308,7 @@ public class DebuggerRegionsProviderTest extends AbstractGhidraHeadedDebuggerGUI traceManager.activateTrace(tb.trace); TraceObjectMemoryRegion region; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { region = addRegion("bin:.text", 0, tb.range(0x00400000, 0x0040ffff)); waitForDomainObject(tb.trace); waitForTasks(); @@ -318,7 +318,7 @@ public class DebuggerRegionsProviderTest extends AbstractGhidraHeadedDebuggerGUI assertRow(0, region.getObject(), "bin:.text", tb.addr(0x00400000), tb.addr(0x0040ffff), 0x10000, "rx"); }); - tid.abort(); + tx.abort(); } waitForDomainObject(tb.trace); waitForTasks(); @@ -334,7 +334,7 @@ public class DebuggerRegionsProviderTest extends AbstractGhidraHeadedDebuggerGUI createAndOpenTrace(); TraceObjectMemoryRegion region; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { region = addRegion("bin:.text", 0, tb.range(0x00400000, 0x0040ffff)); } @@ -376,7 +376,7 @@ public class DebuggerRegionsProviderTest extends AbstractGhidraHeadedDebuggerGUI assertFalse(provider.actionMapRegions.isEnabled()); addBlocks(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Change name")) { + try (Transaction tx = program.openTransaction("Change name")) { program.setName("echo"); } waitForDomainObject(program); @@ -449,7 +449,7 @@ public class DebuggerRegionsProviderTest extends AbstractGhidraHeadedDebuggerGUI createAndOpenTrace(); TraceObjectMemoryRegion region; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { region = addRegion("bin:.text", 0, tb.range(0x00400000, 0x0040ffff)); } @@ -479,7 +479,7 @@ public class DebuggerRegionsProviderTest extends AbstractGhidraHeadedDebuggerGUI createAndOpenTrace(); TraceObjectMemoryRegion region; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { region = addRegion("bin:.text", 0, tb.range(0x00400000, 0x0040ffff)); } diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/model/DebuggerModelProviderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/model/DebuggerModelProviderTest.java index 1cec493b44..804633d0da 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/model/DebuggerModelProviderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/model/DebuggerModelProviderTest.java @@ -24,6 +24,7 @@ import java.util.Set; import org.jdom.JDOMException; import org.junit.*; +import db.Transaction; import docking.widgets.table.DynamicTableColumn; import docking.widgets.table.GDynamicColumnTableModel; import docking.widgets.tree.GTree; @@ -47,7 +48,6 @@ import ghidra.trace.model.target.*; import ghidra.trace.model.target.TraceObject.ConflictResolution; import ghidra.trace.model.thread.TraceObjectThread; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; public class DebuggerModelProviderTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -130,14 +130,14 @@ public class DebuggerModelProviderTest extends AbstractGhidraHeadedDebuggerGUITe } protected void populateSnapshots() throws Throwable { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getTimeManager().getSnapshot(20, true); } } protected TraceObjectValue createSessionObject() throws Throwable { TraceObjectManager objects = tb.trace.getObjectManager(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { return objects.createRootObject(CTX.getSchema(new SchemaName("Session"))); } } @@ -162,7 +162,7 @@ public class DebuggerModelProviderTest extends AbstractGhidraHeadedDebuggerGUITe } protected TraceObject createStack(TraceObject thread) { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceObjectKeyPath stackPath = thread.getCanonicalPath().key("Stack"); TraceObjectManager objects = tb.trace.getObjectManager(); TraceObject stack = objects.createObject(stackPath); @@ -175,7 +175,7 @@ public class DebuggerModelProviderTest extends AbstractGhidraHeadedDebuggerGUITe } protected void populateThreads() throws Throwable { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceObject prevThread = null; for (long i = 0; i < 10; i++) { TraceObject thread = createThread(i, prevThread); @@ -186,7 +186,7 @@ public class DebuggerModelProviderTest extends AbstractGhidraHeadedDebuggerGUITe protected void addThread10() throws Throwable { TraceObjectManager objects = tb.trace.getObjectManager(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { createThread(10, objects.getObjectByCanonicalPath( TraceObjectKeyPath.parse("Processes[0].Threads[9]"))); } @@ -194,7 +194,7 @@ public class DebuggerModelProviderTest extends AbstractGhidraHeadedDebuggerGUITe protected void populateHandles() throws Throwable { TraceObjectManager objects = tb.trace.getObjectManager(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceObject handleContainer = objects.createObject(TraceObjectKeyPath.parse("Processes[0].Handles")); handleContainer.insert(Lifespan.nowOn(0), ConflictResolution.DENY); @@ -208,7 +208,7 @@ public class DebuggerModelProviderTest extends AbstractGhidraHeadedDebuggerGUITe protected void populateLinks() throws Throwable { TraceObjectManager objects = tb.trace.getObjectManager(); TraceObjectKeyPath threadContainerPath = TraceObjectKeyPath.parse("Processes[0].Threads"); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceObject linkContainer = objects.createObject(TraceObjectKeyPath.parse("Processes[0].Links")); linkContainer.insert(Lifespan.nowOn(0), ConflictResolution.DENY); @@ -221,7 +221,7 @@ public class DebuggerModelProviderTest extends AbstractGhidraHeadedDebuggerGUITe protected void populateBoxedPrimitive() throws Throwable { TraceObjectManager objects = tb.trace.getObjectManager(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceObject boxed = objects.createObject(TraceObjectKeyPath.parse("Processes[0].Boxed")); boxed.insert(Lifespan.nowOn(0), ConflictResolution.DENY); @@ -684,7 +684,7 @@ public class DebuggerModelProviderTest extends AbstractGhidraHeadedDebuggerGUITe assertPathIs(path, 0, 3); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceObject thread = tb.trace.getObjectManager().getObjectByCanonicalPath(path); thread.setAttribute(Lifespan.nowOn(0), "NewAttribute", 11); } @@ -705,7 +705,7 @@ public class DebuggerModelProviderTest extends AbstractGhidraHeadedDebuggerGUITe assertPathIsThreadsContainer(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceObject threads = tb.trace.getObjectManager().getObjectByCanonicalPath(path); threads.setElement(Lifespan.ALL, 2, null); } @@ -726,7 +726,7 @@ public class DebuggerModelProviderTest extends AbstractGhidraHeadedDebuggerGUITe assertPathIs(path, 0, 3); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceObject thread = tb.trace.getObjectManager().getObjectByCanonicalPath(path); thread.setAttribute(Lifespan.ALL, "_self", null); } @@ -751,14 +751,14 @@ public class DebuggerModelProviderTest extends AbstractGhidraHeadedDebuggerGUITe assertPathIs(path, 3, 0); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { element2.setLifespan(Lifespan.nowOn(10), ConflictResolution.DENY); } waitForTasks(); assertPathIs(path, 2, 0); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { element2.setLifespan(Lifespan.nowOn(2), ConflictResolution.DENY); } waitForTasks(); @@ -783,14 +783,14 @@ public class DebuggerModelProviderTest extends AbstractGhidraHeadedDebuggerGUITe assertPathIs(path, 0, 4); // _next created at snap 3 - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { attrSelf.setLifespan(Lifespan.nowOn(10), ConflictResolution.DENY); } waitForTasks(); assertPathIs(path, 0, 3); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { attrSelf.setLifespan(Lifespan.nowOn(2), ConflictResolution.DENY); } waitForTasks(); @@ -813,7 +813,7 @@ public class DebuggerModelProviderTest extends AbstractGhidraHeadedDebuggerGUITe waitForValue(() -> modelProvider.objectsTreePanel.treeModel.getNode(path)); assertEquals("[2]", node.getDisplayText()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread.setAttribute(Lifespan.nowOn(0), "_display", "Renamed Thread"); } waitForTasks(); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/model/ModelQueryTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/model/ModelQueryTest.java index ad4096dc7e..ac00868261 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/model/ModelQueryTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/model/ModelQueryTest.java @@ -15,12 +15,12 @@ */ package ghidra.app.plugin.core.debug.gui.model; -import static ghidra.app.plugin.core.debug.gui.model.DebuggerModelProviderTest.CTX; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static ghidra.app.plugin.core.debug.gui.model.DebuggerModelProviderTest.*; +import static org.junit.Assert.*; import org.junit.Test; +import db.Transaction; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; import ghidra.trace.database.target.DBTraceObjectManager; @@ -28,7 +28,6 @@ import ghidra.trace.model.Lifespan; import ghidra.trace.model.target.TraceObject.ConflictResolution; import ghidra.trace.model.target.TraceObjectKeyPath; import ghidra.trace.model.target.TraceObjectValue; -import ghidra.util.database.UndoableTransaction; public class ModelQueryTest extends AbstractGhidraHeadedDebuggerGUITest { @Test @@ -38,7 +37,7 @@ public class ModelQueryTest extends AbstractGhidraHeadedDebuggerGUITest { ModelQuery rootQuery = ModelQuery.parse(""); ModelQuery threadQuery = ModelQuery.parse("Processes[].Threads[]"); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceObjectManager objects = tb.trace.getObjectManager(); TraceObjectValue rootVal = @@ -65,7 +64,7 @@ public class ModelQueryTest extends AbstractGhidraHeadedDebuggerGUITest { ModelQuery rootQuery = ModelQuery.parse(""); ModelQuery threadQuery = ModelQuery.parse("Processes[].Threads[]"); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceObjectManager objects = tb.trace.getObjectManager(); TraceObjectValue rootVal = diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProviderLegacyTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProviderLegacyTest.java index 6e598a5ff6..a5a727c316 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProviderLegacyTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProviderLegacyTest.java @@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit; import org.junit.*; import org.junit.experimental.categories.Category; +import db.Transaction; import docking.widgets.filechooser.GhidraFileChooser; import generic.Unique; import generic.test.category.NightlyCategory; @@ -59,7 +60,6 @@ import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.memory.TraceOverlappedRegionException; import ghidra.trace.model.modules.*; import ghidra.trace.model.symbol.TraceSymbol; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; @Category(NightlyCategory.class) // this may actually be an @PortSensitive test @@ -83,7 +83,7 @@ public class DebuggerModulesProviderLegacyTest extends AbstractGhidraHeadedDebug protected void addRegionsFromModules() throws TraceOverlappedRegionException, DuplicateNameException { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager manager = tb.trace.getMemoryManager(); for (TraceModule module : tb.trace.getModuleManager().getAllModules()) { for (TraceSection section : module.getSections()) { @@ -108,7 +108,7 @@ public class DebuggerModulesProviderLegacyTest extends AbstractGhidraHeadedDebug protected void addModules() throws Exception { TraceModuleManager manager = tb.trace.getModuleManager(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { modExe = manager.addLoadedModule("Processes[1].Modules[first_proc]", "first_proc", tb.range(0x55550000, 0x5575007f), 0); secExeText = modExe.addSection("Processes[1].Modules[first_proc].Sections[.text]", @@ -126,7 +126,7 @@ public class DebuggerModulesProviderLegacyTest extends AbstractGhidraHeadedDebug } protected MemoryBlock addBlock() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add block")) { + try (Transaction tx = program.openTransaction("Add block")) { return program.getMemory() .createInitializedBlock(".text", tb.addr(0x00400000), 0x1000, (byte) 0, monitor, false); @@ -225,7 +225,7 @@ public class DebuggerModulesProviderLegacyTest extends AbstractGhidraHeadedDebug waitForSwing(); MemoryBlock block = addBlock(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Change name")) { + try (Transaction tx = program.openTransaction("Change name")) { program.setName(modExe.getName()); } waitForDomainObject(program); @@ -261,7 +261,7 @@ public class DebuggerModulesProviderLegacyTest extends AbstractGhidraHeadedDebug assertProviderPopulated(); // Cheap sanity check - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { modExe.delete(); } waitForDomainObject(tb.trace); @@ -355,7 +355,7 @@ public class DebuggerModulesProviderLegacyTest extends AbstractGhidraHeadedDebug assertTrue(modulesProvider.actionMapIdentically.isEnabled()); // Need some substance in the program - try (UndoableTransaction tid = UndoableTransaction.start(program, "Populate")) { + try (Transaction tx = program.openTransaction("Populate")) { addBlock(); } waitForDomainObject(program); @@ -390,7 +390,7 @@ public class DebuggerModulesProviderLegacyTest extends AbstractGhidraHeadedDebug // Still assertFalse(modulesProvider.actionMapModules.isEnabled()); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Change name")) { + try (Transaction tx = program.openTransaction("Change name")) { program.setImageBase(addr(program, 0x00400000), true); program.setName(modExe.getName()); @@ -459,7 +459,7 @@ public class DebuggerModulesProviderLegacyTest extends AbstractGhidraHeadedDebug assertFalse(modulesProvider.actionMapSections.isEnabled()); MemoryBlock block = addBlock(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Change name")) { + try (Transaction tx = program.openTransaction("Change name")) { program.setName(modExe.getName()); } waitForDomainObject(program); @@ -669,7 +669,7 @@ public class DebuggerModulesProviderLegacyTest extends AbstractGhidraHeadedDebug traceManager.activateTrace(tb.trace); waitForSwing(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { modExe.setName("/bin/echo"); // File has to exist } waitForPass( diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProviderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProviderTest.java index 826a33e3eb..88f6f794a1 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProviderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProviderTest.java @@ -25,6 +25,7 @@ import java.util.concurrent.TimeUnit; import org.junit.*; import org.junit.experimental.categories.Category; +import db.Transaction; import docking.widgets.filechooser.GhidraFileChooser; import docking.widgets.table.DynamicTableColumn; import generic.Unique; @@ -46,9 +47,9 @@ import ghidra.app.plugin.core.debug.gui.modules.DebuggerSectionMapProposalDialog import ghidra.app.plugin.core.debug.mapping.DebuggerTargetTraceMapper; import ghidra.app.plugin.core.debug.mapping.ObjectBasedDebuggerTargetTraceMapper; import ghidra.app.services.DebuggerListingService; -import ghidra.app.services.TraceRecorder; import ghidra.app.services.ModuleMapProposal.ModuleMapEntry; import ghidra.app.services.SectionMapProposal.SectionMapEntry; +import ghidra.app.services.TraceRecorder; import ghidra.dbg.attributes.TargetPrimitiveDataType.DefaultTargetPrimitiveDataType; import ghidra.dbg.attributes.TargetPrimitiveDataType.PrimitiveKind; import ghidra.dbg.model.TestTargetModule; @@ -56,8 +57,8 @@ import ghidra.dbg.model.TestTargetTypedefDataType; import ghidra.dbg.target.*; import ghidra.dbg.target.schema.SchemaContext; import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; -import ghidra.dbg.util.*; import ghidra.dbg.target.schema.XmlSchemaContext; +import ghidra.dbg.util.*; import ghidra.framework.main.DataTreeDialog; import ghidra.plugin.importer.ImporterPlugin; import ghidra.program.model.address.*; @@ -73,7 +74,6 @@ import ghidra.trace.model.modules.*; import ghidra.trace.model.symbol.TraceSymbol; import ghidra.trace.model.target.*; import ghidra.trace.model.target.TraceObject.ConflictResolution; -import ghidra.util.database.UndoableTransaction; import ghidra.util.table.GhidraTable; @Category(NightlyCategory.class) @@ -175,7 +175,7 @@ public class DebuggerModulesProviderTest extends AbstractGhidraHeadedDebuggerGUI """); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session"))); } } @@ -183,7 +183,7 @@ public class DebuggerModulesProviderTest extends AbstractGhidraHeadedDebuggerGUI protected void addRegionsFromModules() throws Exception { PathPattern regionPattern = new PathPattern(PathUtils.parse("Processes[1].Memory[]")); TraceObjectManager om = tb.trace.getObjectManager(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceObject root = om.getRootObject(); for (TraceObject module : (Iterable) () -> root .querySuccessorsTargetInterface(Lifespan.at(0), TargetModule.class, true) @@ -242,7 +242,7 @@ public class DebuggerModulesProviderTest extends AbstractGhidraHeadedDebuggerGUI protected void addModules() throws Exception { Lifespan zeroOn = Lifespan.nowOn(0); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { modExe = addModule("first_proc", tb.range(0x55550000, 0x5575007f), zeroOn); secExeText = addSection(modExe, ".text", tb.range(0x55550000, 0x555500ff)); secExeData = addSection(modExe, ".data", tb.range(0x55750000, 0x5575007f)); @@ -254,7 +254,7 @@ public class DebuggerModulesProviderTest extends AbstractGhidraHeadedDebuggerGUI } protected MemoryBlock addBlock() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add block")) { + try (Transaction tx = program.openTransaction("Add block")) { return program.getMemory() .createInitializedBlock(".text", tb.addr(0x00400000), 0x1000, (byte) 0, monitor, false); @@ -392,7 +392,7 @@ public class DebuggerModulesProviderTest extends AbstractGhidraHeadedDebuggerGUI waitForTasks(); MemoryBlock block = addBlock(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Change name")) { + try (Transaction tx = program.openTransaction("Change name")) { program.setName(modExe.getName()); } waitForDomainObject(program); @@ -427,7 +427,7 @@ public class DebuggerModulesProviderTest extends AbstractGhidraHeadedDebuggerGUI waitForPass(() -> assertProviderPopulated()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { modExe.getObject().removeTree(Lifespan.nowOn(0)); } waitForDomainObject(tb.trace); @@ -515,7 +515,7 @@ public class DebuggerModulesProviderTest extends AbstractGhidraHeadedDebuggerGUI waitForPass(() -> assertTrue(provider.actionMapIdentically.isEnabled())); // Need some substance in the program - try (UndoableTransaction tid = UndoableTransaction.start(program, "Populate")) { + try (Transaction tx = program.openTransaction("Populate")) { addBlock(); } waitForDomainObject(program); @@ -550,7 +550,7 @@ public class DebuggerModulesProviderTest extends AbstractGhidraHeadedDebuggerGUI // Still assertFalse(provider.actionMapModules.isEnabled()); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Change name")) { + try (Transaction tx = program.openTransaction("Change name")) { program.setImageBase(addr(program, 0x00400000), true); program.setName(modExe.getName()); @@ -618,7 +618,7 @@ public class DebuggerModulesProviderTest extends AbstractGhidraHeadedDebuggerGUI assertFalse(provider.actionMapSections.isEnabled()); MemoryBlock block = addBlock(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Change name")) { + try (Transaction tx = program.openTransaction("Change name")) { program.setName(modExe.getName()); } waitForDomainObject(program); @@ -819,7 +819,7 @@ public class DebuggerModulesProviderTest extends AbstractGhidraHeadedDebuggerGUI traceManager.activateTrace(tb.trace); waitForTasks(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { modExe.setName("/bin/echo"); // File has to exist } waitForPass(() -> assertModuleTableSize(2)); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerStaticMappingProviderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerStaticMappingProviderTest.java index a3581c6bd3..1719e41708 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerStaticMappingProviderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerStaticMappingProviderTest.java @@ -25,6 +25,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; +import db.Transaction; import generic.Unique; import generic.test.category.NightlyCategory; import ghidra.app.plugin.core.codebrowser.CodeBrowserPlugin; @@ -39,7 +40,6 @@ import ghidra.trace.model.Lifespan; import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.modules.TraceStaticMapping; import ghidra.trace.model.modules.TraceStaticMappingManager; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; @Category(NightlyCategory.class) @@ -64,7 +64,7 @@ public class DebuggerStaticMappingProviderTest extends AbstractGhidraHeadedDebug traceManager.openTrace(tb.trace); traceManager.activateTrace(tb.trace); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { manager.add(tb.range(0xdeadbeef, 0xdeadbeef + 0xff), Lifespan.nowOn(0), new URL("ghidra://static"), "DEADBEEF"); } @@ -84,7 +84,7 @@ public class DebuggerStaticMappingProviderTest extends AbstractGhidraHeadedDebug traceManager.openTrace(tb.trace); // Note: don't activate yet - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { manager.add(tb.range(0xdeadbeef, 0xdeadbeef + 0xff), Lifespan.nowOn(0), new URL("ghidra://static"), "DEADBEEF"); } @@ -114,7 +114,7 @@ public class DebuggerStaticMappingProviderTest extends AbstractGhidraHeadedDebug intoProject(tb.trace); intoProject(program); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .addRegion(".text", Lifespan.nowOn(0), tb.range(0xdeadbeefL, 0xdeadbeefL + 0xff), @@ -122,7 +122,7 @@ public class DebuggerStaticMappingProviderTest extends AbstractGhidraHeadedDebug } waitForDomainObject(tb.trace); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add block")) { + try (Transaction tx = program.openTransaction("Add block")) { program.getMemory() .createInitializedBlock(".text", addr(program, 0xc0de1234L), 0x100, (byte) 0, TaskMonitor.DUMMY, false); @@ -162,7 +162,7 @@ public class DebuggerStaticMappingProviderTest extends AbstractGhidraHeadedDebug traceManager.openTrace(tb.trace); traceManager.activateTrace(tb.trace); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { manager.add(tb.range(0xdeadbeef, 0xdeadbeef + 0xff), Lifespan.nowOn(0), new URL("ghidra://static"), "DEADBEEF"); manager.add(tb.range(0xdeadbeef + 0x100, 0xdeadbeef + 0x17f), Lifespan.nowOn(0), @@ -203,7 +203,7 @@ public class DebuggerStaticMappingProviderTest extends AbstractGhidraHeadedDebug traceManager.openTrace(tb.trace); traceManager.activateTrace(tb.trace); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { manager.add(tb.range(0xdeadbeef, 0xdeadbeef + 0xff), Lifespan.nowOn(0), new URL("ghidra://static"), "DEADBEEF"); manager.add(tb.range(0xdeadbeef + 0x100, 0xdeadbeef + 0x17f), Lifespan.nowOn(0), @@ -218,7 +218,7 @@ public class DebuggerStaticMappingProviderTest extends AbstractGhidraHeadedDebug assertEquals(3, displayed.size()); // Remove the first two in another transaction - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { manager.findContaining(tb.addr(0xdeadbeef), 0).delete(); manager.findContaining(tb.addr(0xdeadbeef + 0x100), 0).delete(); } @@ -236,14 +236,14 @@ public class DebuggerStaticMappingProviderTest extends AbstractGhidraHeadedDebug traceManager.openTrace(tb.trace); traceManager.activateTrace(tb.trace); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { manager.add(tb.range(0xdeadbeef, 0xdeadbeef + 0xff), Lifespan.nowOn(0), new URL("ghidra://static"), "DEADBEEF"); manager.add(tb.range(0xdeadbeef + 0x100, 0xdeadbeef + 0x17f), Lifespan.nowOn(0), new URL("ghidra://static"), "C0DE1234"); } - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { manager.add(tb.range(0xdeadbeef + 0x180, 0xdeadbeef + 0x1bf), Lifespan.nowOn(0), new URL("ghidra://static"), "1E55C0DE"); } @@ -263,14 +263,14 @@ public class DebuggerStaticMappingProviderTest extends AbstractGhidraHeadedDebug traceManager.openTrace(tb.trace); traceManager.activateTrace(tb.trace); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { manager.add(tb.range(0xdeadbeef, 0xdeadbeef + 0xff), Lifespan.nowOn(0), new URL("ghidra://static"), "DEADBEEF"); manager.add(tb.range(0xdeadbeef + 0x100, 0xdeadbeef + 0x17f), Lifespan.nowOn(0), new URL("ghidra://static"), "C0DE1234"); } - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { manager.add(tb.range(0xdeadbeef + 0x180, 0xdeadbeef + 0x1bf), Lifespan.nowOn(0), new URL("ghidra://static"), "1E55C0DE"); waitForDomainObject(tb.trace); @@ -278,7 +278,7 @@ public class DebuggerStaticMappingProviderTest extends AbstractGhidraHeadedDebug // Check that all records are displayed in the interim assertEquals(3, mappingsProvider.mappingTableModel.getModelData().size()); - tid.abort(); + tx.abort(); } waitForDomainObject(tb.trace); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/objects/DebuggerObjectsProviderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/objects/DebuggerObjectsProviderTest.java index dc6b6c4ac6..23655afc35 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/objects/DebuggerObjectsProviderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/objects/DebuggerObjectsProviderTest.java @@ -18,10 +18,10 @@ package ghidra.app.plugin.core.debug.gui.objects; import org.junit.Before; import org.junit.Test; +import db.Transaction; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; import ghidra.app.services.CodeViewerService; import ghidra.app.services.DebuggerStaticMappingService; -import ghidra.util.database.UndoableTransaction; public class DebuggerObjectsProviderTest extends AbstractGhidraHeadedDebuggerGUITest { protected DebuggerObjectsPlugin objectsPlugin; @@ -43,7 +43,7 @@ public class DebuggerObjectsProviderTest extends AbstractGhidraHeadedDebuggerGUI public void testBasic() throws Exception { createAndOpenTrace(); traceManager.activateTrace(tb.trace); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { //objectsProvider.importFromXMLAction.run(); } waitForDomainObject(tb.trace); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/pcode/DebuggerPcodeStepperProviderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/pcode/DebuggerPcodeStepperProviderTest.java index dbebcd99a9..76deb43965 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/pcode/DebuggerPcodeStepperProviderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/pcode/DebuggerPcodeStepperProviderTest.java @@ -23,6 +23,7 @@ import java.util.List; import org.junit.Before; import org.junit.Test; +import db.Transaction; import generic.Unique; import ghidra.app.plugin.assembler.Assembler; import ghidra.app.plugin.assembler.Assemblers; @@ -45,7 +46,6 @@ import ghidra.trace.model.Lifespan; import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.schedule.TraceSchedule; -import ghidra.util.database.UndoableTransaction; public class DebuggerPcodeStepperProviderTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -75,7 +75,7 @@ public class DebuggerPcodeStepperProviderTest extends AbstractGhidraHeadedDebugg protected void populateTrace() throws Exception { start = tb.addr(0x00400000); InstructionIterator iit; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .addRegion("echo:.text", Lifespan.nowOn(0), tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersProviderGuestTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersProviderGuestTest.java index 976503d82a..ce2fa3a6ff 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersProviderGuestTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersProviderGuestTest.java @@ -15,7 +15,7 @@ */ package ghidra.app.plugin.core.debug.gui.register; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.*; import java.io.IOException; import java.util.Set; @@ -24,6 +24,7 @@ import java.util.stream.Collectors; import org.junit.Before; import org.junit.experimental.categories.Category; +import db.Transaction; import generic.test.category.NightlyCategory; import ghidra.app.plugin.core.debug.gui.listing.DebuggerListingPlugin; import ghidra.app.plugin.core.debug.mapping.DebuggerTargetTraceMapper; @@ -39,7 +40,6 @@ import ghidra.trace.model.guest.TraceGuestPlatform; import ghidra.trace.model.guest.TracePlatform; import ghidra.trace.model.memory.TraceMemorySpace; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; @Category(NightlyCategory.class) // this may actually be an @PortSensitive test public class DebuggerRegistersProviderGuestTest extends DebuggerRegistersProviderTest { @@ -52,7 +52,7 @@ public class DebuggerRegistersProviderGuestTest extends DebuggerRegistersProvide } public void createToyPlatform() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { toy = tb.trace.getPlatformManager() .addGuestPlatform(getToyBE64Language().getDefaultCompilerSpec()); toy.addMappedRange(tb.addr(0), tb.addr(toy, 0), -1); @@ -130,7 +130,7 @@ public class DebuggerRegistersProviderGuestTest extends DebuggerRegistersProvide } @Override - protected void addRegisterValues(TraceThread thread, UndoableTransaction tid) { + protected void addRegisterValues(TraceThread thread, Transaction tx) { TraceMemorySpace regVals = tb.trace.getMemoryManager().getMemoryRegisterSpace(thread, true); regVals.putBytes(toy, 0, pc, tb.buf(0, 0, 0, 0, 0, 0x40, 0, 0)); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersProviderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersProviderTest.java index 9a2343ac13..ae2a46cc2c 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersProviderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/register/DebuggerRegistersProviderTest.java @@ -15,7 +15,7 @@ */ package ghidra.app.plugin.core.debug.gui.register; -import static ghidra.lifecycle.Unfinished.TODO; +import static ghidra.lifecycle.Unfinished.*; import static org.junit.Assert.*; import java.math.BigInteger; @@ -26,6 +26,7 @@ import java.util.stream.Collectors; import org.junit.*; import org.junit.experimental.categories.Category; +import db.Transaction; import generic.test.category.NightlyCategory; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; import ghidra.app.plugin.core.debug.gui.action.NoneLocationTrackingSpec; @@ -48,7 +49,6 @@ import ghidra.trace.model.listing.*; import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.memory.TraceMemorySpace; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; @Category(NightlyCategory.class) // this may actually be an @PortSensitive test @@ -107,7 +107,7 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG } protected TraceThread addThread(String threadName) throws DuplicateNameException { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { return tb.trace.getThreadManager().createThread(threadName, 0); } } @@ -121,12 +121,12 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG } protected void addRegisterValues(TraceThread thread) { - try (UndoableTransaction tid = tb.startTransaction()) { - addRegisterValues(thread, tid); + try (Transaction tx = tb.startTransaction()) { + addRegisterValues(thread, tx); } } - protected void addRegisterValues(TraceThread thread, UndoableTransaction tid) { + protected void addRegisterValues(TraceThread thread, Transaction tx) { TraceMemorySpace regVals = tb.trace.getMemoryManager().getMemoryRegisterSpace(thread, true); regVals.putBytes(0, pc, tb.buf(0, 0, 0, 0, 0, 0x40, 0, 0)); @@ -134,7 +134,7 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG regVals.putBytes(0, r0, tb.buf(1, 2, 3, 4, 5, 6, 7, 8)); } - protected void addRegisterTypes(TraceThread thread, UndoableTransaction tid) + protected void addRegisterTypes(TraceThread thread, Transaction tx) throws CodeUnitInsertionException { TraceCodeSpace regCode = tb.trace.getCodeManager().getCodeRegisterSpace(thread, true); @@ -146,8 +146,8 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG } protected void addRegisterTypes(TraceThread thread) throws CodeUnitInsertionException { - try (UndoableTransaction tid = tb.startTransaction()) { - addRegisterTypes(thread, tid); + try (Transaction tx = tb.startTransaction()) { + addRegisterTypes(thread, tx); } } @@ -475,7 +475,7 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG traceManager.openTrace(tb.trace); TraceThread thread = addThread(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.exec(getPlatform(), 0, thread, 0, "pc = 100;"); } activateThread(thread); @@ -540,9 +540,9 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG TraceThread thread = addThread(); activateThread(thread); // Group adds into a single transaction - try (UndoableTransaction tid = tb.startTransaction()) { - addRegisterValues(thread, tid); - addRegisterTypes(thread, tid); + try (Transaction tx = tb.startTransaction()) { + addRegisterValues(thread, tx); + addRegisterTypes(thread, tx); } waitForSwing(); @@ -574,9 +574,9 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG TraceThread thread = addThread(); activateThread(thread); - try (UndoableTransaction tid = tb.startTransaction()) { - addRegisterValues(thread, tid); - addRegisterTypes(thread, tid); + try (Transaction tx = tb.startTransaction()) { + addRegisterValues(thread, tx); + addRegisterTypes(thread, tx); waitForSwing(); // Sanity @@ -585,7 +585,7 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG assertPCRowTypePopulated(); assertR0RowTypePopulated(); - tid.abort(); + tx.abort(); } waitForDomainObject(tb.trace); @@ -628,7 +628,7 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG assertPCRowValuePopulated(); assertR0RowValuePopulated(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemorySpace regVals = tb.trace.getMemoryManager().getMemoryRegisterSpace(thread, true); TraceCodeSpace regCode = @@ -657,7 +657,7 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG assertEquals(1, traceManager.getCurrentSnap()); assertR0RowTypePopulated(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceCodeSpace regCode = tb.trace.getCodeManager().getCodeRegisterSpace(thread, true); TraceCodeUnit code = regCode.codeUnits().getContaining(getPlatform(), 1, r0); @@ -687,7 +687,7 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG assertR0RowTypePopulated(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceCodeSpace regCode = tb.trace.getCodeManager().getCodeRegisterSpace(thread, true); TraceCodeUnit code = regCode.codeUnits().getContaining(getPlatform(), 1, r0); @@ -755,7 +755,7 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG traceManager.openTrace(tb.trace); TraceThread thread = addThread(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { // Unconventional start, to ensure goto PC is actually the cause, not just min of view tb.trace.getMemoryManager() .addRegion("bin:.text", Lifespan.nowOn(0), tb.range(0x00300000, 0x00500000), @@ -864,7 +864,7 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG traceManager.openTrace(ub.trace); TraceThread thread3; - try (UndoableTransaction tid = ub.startTransaction()) { + try (Transaction tx = ub.startTransaction()) { thread3 = ub.trace.getThreadManager().createThread("Thread3", 0); } traceManager.activateTrace(ub.trace); @@ -898,7 +898,7 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG assertR0RowValuePopulated(); assertR0RowTypePopulated(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemorySpace regVals = tb.trace.getMemoryManager().getMemoryRegisterSpace(thread, true); TraceCodeSpace regCode = @@ -940,7 +940,7 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG assertR0RowValuePopulated(); assertR0RowTypePopulated(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemorySpace regVals = tb.trace.getMemoryManager().getMemoryRegisterSpace(thread, 1, true); regVals.putBytes(getPlatform(), 0, pc, tb.buf(0, 0, 0, 0, 0, 0x50, 0, 0)); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackProviderLegacyTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackProviderLegacyTest.java index 06e08956d0..02a36d445a 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackProviderLegacyTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackProviderLegacyTest.java @@ -23,6 +23,7 @@ import java.util.List; import org.junit.Before; import org.junit.Test; +import db.Transaction; import generic.Unique; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; import ghidra.app.plugin.core.debug.service.modules.DebuggerStaticMappingServicePlugin; @@ -41,7 +42,6 @@ import ghidra.trace.model.memory.TraceMemorySpace; import ghidra.trace.model.stack.TraceStack; import ghidra.trace.model.stack.TraceStackFrame; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; import ghidra.util.task.TaskMonitor; @@ -63,13 +63,13 @@ public class DebuggerStackProviderLegacyTest extends AbstractGhidraHeadedDebugge } protected TraceThread addThread(String n) throws DuplicateNameException { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { return tb.trace.getThreadManager().createThread(n, 0); } } protected void addRegVals(TraceThread thread) { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemorySpace regs = tb.trace.getMemoryManager().getMemoryRegisterSpace(thread, true); regs.setValue(0, new RegisterValue(pc, new BigInteger("00400123", 16))); @@ -77,7 +77,7 @@ public class DebuggerStackProviderLegacyTest extends AbstractGhidraHeadedDebugge } protected TraceStack addStack(TraceThread thread, int snap) { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { return tb.trace.getStackManager().getStack(thread, snap, true); } } @@ -87,7 +87,7 @@ public class DebuggerStackProviderLegacyTest extends AbstractGhidraHeadedDebugge } protected void addStackFrames(TraceStack stack) { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { stack.setDepth(2, false); TraceStackFrame frame = stack.getFrame(0, false); @@ -234,7 +234,7 @@ public class DebuggerStackProviderLegacyTest extends AbstractGhidraHeadedDebugge assertProviderPopulated(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { stack.setDepth(3, false); } waitForDomainObject(tb.trace); @@ -259,7 +259,7 @@ public class DebuggerStackProviderLegacyTest extends AbstractGhidraHeadedDebugge assertProviderPopulated(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { stack.setDepth(3, true); } waitForDomainObject(tb.trace); @@ -284,7 +284,7 @@ public class DebuggerStackProviderLegacyTest extends AbstractGhidraHeadedDebugge assertProviderPopulated(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { stack.setDepth(1, false); } waitForDomainObject(tb.trace); @@ -307,7 +307,7 @@ public class DebuggerStackProviderLegacyTest extends AbstractGhidraHeadedDebugge assertProviderPopulated(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { stack.setDepth(1, true); } waitForDomainObject(tb.trace); @@ -330,7 +330,7 @@ public class DebuggerStackProviderLegacyTest extends AbstractGhidraHeadedDebugge assertProviderPopulated(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { stack.delete(); } waitForDomainObject(tb.trace); @@ -472,7 +472,7 @@ public class DebuggerStackProviderLegacyTest extends AbstractGhidraHeadedDebugge assertProviderPopulated(); Function func; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add Function")) { + try (Transaction tx = program.openTransaction("Add Function")) { program.getMemory() .createInitializedBlock(".text", addr(program, 0x00600000), 0x1000, (byte) 0, TaskMonitor.DUMMY, false); @@ -483,7 +483,7 @@ public class DebuggerStackProviderLegacyTest extends AbstractGhidraHeadedDebugge } waitForDomainObject(program); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .addRegion("Processes[1].Memory[bin:.text]", Lifespan.nowOn(0), tb.drng(0x00400000, 0x00400fff), diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackProviderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackProviderTest.java index b257b8f863..e8338bf81e 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackProviderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackProviderTest.java @@ -15,8 +15,7 @@ */ package ghidra.app.plugin.core.debug.gui.stack; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import java.io.IOException; import java.util.List; @@ -24,6 +23,7 @@ import java.util.Objects; import org.junit.*; +import db.Transaction; import docking.widgets.table.DynamicTableColumn; import ghidra.app.plugin.core.debug.DebuggerCoordinates; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; @@ -52,7 +52,6 @@ import ghidra.trace.model.stack.TraceObjectStack; import ghidra.trace.model.target.*; import ghidra.trace.model.target.TraceObject.ConflictResolution; import ghidra.trace.model.thread.TraceObjectThread; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; /** @@ -159,7 +158,7 @@ public class DebuggerStackProviderTest extends AbstractGhidraHeadedDebuggerGUITe """); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session"))); } } @@ -168,7 +167,7 @@ public class DebuggerStackProviderTest extends AbstractGhidraHeadedDebuggerGUITe PathPattern threadPattern = new PathPattern(PathUtils.parse("Processes[1].Threads[]")); TraceObjectKeyPath threadPath = TraceObjectKeyPath.of(threadPattern.applyIntKeys(n).getSingletonPath()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { return Objects.requireNonNull(tb.trace.getObjectManager() .createObject(threadPath) .insert(Lifespan.nowOn(0), ConflictResolution.TRUNCATE) @@ -179,7 +178,7 @@ public class DebuggerStackProviderTest extends AbstractGhidraHeadedDebuggerGUITe protected TraceObjectStack addStack(TraceObjectThread thread) { TraceObjectKeyPath stackPath = thread.getObject().getCanonicalPath().extend("Stack"); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { return Objects.requireNonNull(tb.trace.getObjectManager() .createObject(stackPath) .insert(Lifespan.nowOn(0), ConflictResolution.TRUNCATE) @@ -195,7 +194,7 @@ public class DebuggerStackProviderTest extends AbstractGhidraHeadedDebuggerGUITe protected void addStackFrames(TraceObjectStack stack, int count) { TraceObjectKeyPath stackPath = stack.getObject().getCanonicalPath(); TraceObjectManager om = tb.trace.getObjectManager(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { for (int i = 0; i < count; i++) { TraceObject frame = om.createObject(stackPath.index(i)) .insert(Lifespan.nowOn(0), ConflictResolution.TRUNCATE) @@ -346,7 +345,7 @@ public class DebuggerStackProviderTest extends AbstractGhidraHeadedDebuggerGUITe waitForPass(() -> assertProviderPopulated()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceObject frame2 = tb.trace.getObjectManager() .createObject(stack.getObject().getCanonicalPath().index(2)) .insert(Lifespan.nowOn(0), ConflictResolution.TRUNCATE) @@ -379,7 +378,7 @@ public class DebuggerStackProviderTest extends AbstractGhidraHeadedDebuggerGUITe waitForPass(() -> assertProviderPopulated()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceObject frame1 = stack.getObject().getElement(0, 1).getChild(); frame1.removeTree(Lifespan.nowOn(0)); } @@ -405,7 +404,7 @@ public class DebuggerStackProviderTest extends AbstractGhidraHeadedDebuggerGUITe waitForPass(() -> assertProviderPopulated()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { stack.getObject().removeTree(Lifespan.nowOn(0)); } waitForDomainObject(tb.trace); @@ -449,7 +448,7 @@ public class DebuggerStackProviderTest extends AbstractGhidraHeadedDebuggerGUITe waitForPass(() -> assertProviderPopulated()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { stack.getObject().removeTree(Lifespan.nowOn(1)); } waitForDomainObject(tb.trace); @@ -563,7 +562,7 @@ public class DebuggerStackProviderTest extends AbstractGhidraHeadedDebuggerGUITe waitForPass(() -> assertProviderPopulated()); Function func; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add Function")) { + try (Transaction tx = program.openTransaction("Add Function")) { program.getMemory() .createInitializedBlock(".text", addr(program, 0x00600000), 0x1000, (byte) 0, TaskMonitor.DUMMY, false); @@ -574,7 +573,7 @@ public class DebuggerStackProviderTest extends AbstractGhidraHeadedDebuggerGUITe } waitForDomainObject(program); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceObjectMemoryRegion region = Objects.requireNonNull(tb.trace.getObjectManager() .createObject(TraceObjectKeyPath.parse("Processes[1].Memory[bin:.text]")) .insert(Lifespan.nowOn(0), ConflictResolution.TRUNCATE) diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/thread/DebuggerThreadsProviderLegacyTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/thread/DebuggerThreadsProviderLegacyTest.java index e63532cee7..ea0662e01d 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/thread/DebuggerThreadsProviderLegacyTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/thread/DebuggerThreadsProviderLegacyTest.java @@ -25,6 +25,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; +import db.Transaction; import generic.test.category.NightlyCategory; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; import ghidra.app.plugin.core.debug.gui.thread.DebuggerLegacyThreadsPanel.ThreadTableColumns; @@ -33,7 +34,6 @@ import ghidra.trace.model.Trace; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.thread.TraceThreadManager; import ghidra.trace.model.time.TraceTimeManager; -import ghidra.util.database.UndoableTransaction; @Category(NightlyCategory.class) // this may actually be an @PortSensitive test public class DebuggerThreadsProviderLegacyTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -52,7 +52,7 @@ public class DebuggerThreadsProviderLegacyTest extends AbstractGhidraHeadedDebug protected void addThreads() throws Exception { TraceThreadManager manager = tb.trace.getThreadManager(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread1 = manager.addThread("Processes[1].Threads[1]", Lifespan.nowOn(0)); thread1.setComment("A comment"); thread2 = manager.addThread("Processes[1].Threads[2]", Lifespan.span(5, 10)); @@ -267,7 +267,7 @@ public class DebuggerThreadsProviderLegacyTest extends AbstractGhidraHeadedDebug assertEquals(1, threadsProvider.legacyPanel.spanRenderer.getFullRange().max().longValue()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { manager.getSnapshot(10, true); } waitForSwing(); @@ -284,7 +284,7 @@ public class DebuggerThreadsProviderLegacyTest extends AbstractGhidraHeadedDebug traceManager.activateTrace(tb.trace); waitForSwing(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread1.setDestructionSnap(15); } waitForSwing(); @@ -304,7 +304,7 @@ public class DebuggerThreadsProviderLegacyTest extends AbstractGhidraHeadedDebug assertEquals(2, threadsProvider.legacyPanel.threadTableModel.getModelData().size()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread2.delete(); } waitForSwing(); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/thread/DebuggerThreadsProviderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/thread/DebuggerThreadsProviderTest.java index 32a803ef79..56c8ea94c6 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/thread/DebuggerThreadsProviderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/thread/DebuggerThreadsProviderTest.java @@ -25,6 +25,7 @@ import java.util.Set; import org.junit.*; import org.junit.experimental.categories.Category; +import db.Transaction; import docking.widgets.table.*; import generic.test.category.NightlyCategory; import ghidra.app.plugin.core.debug.DebuggerCoordinates; @@ -52,7 +53,6 @@ import ghidra.trace.model.target.TraceObjectKeyPath; import ghidra.trace.model.target.TraceObjectManager; import ghidra.trace.model.thread.TraceObjectThread; import ghidra.trace.model.time.TraceTimeManager; -import ghidra.util.database.UndoableTransaction; import ghidra.util.table.GhidraTable; @Category(NightlyCategory.class) @@ -133,7 +133,7 @@ public class DebuggerThreadsProviderTest extends AbstractGhidraHeadedDebuggerGUI """); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session"))); } } @@ -154,7 +154,7 @@ public class DebuggerThreadsProviderTest extends AbstractGhidraHeadedDebuggerGUI } protected void addThreads() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread1 = addThread(1, Lifespan.nowOn(0), "A comment"); thread2 = addThread(2, Lifespan.span(0, 10), "Another comment"); } @@ -411,7 +411,7 @@ public class DebuggerThreadsProviderTest extends AbstractGhidraHeadedDebuggerGUI assertEquals(1, renderer.getFullRange().max().longValue()); }); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { manager.getSnapshot(10, true); } waitForSwing(); @@ -432,7 +432,7 @@ public class DebuggerThreadsProviderTest extends AbstractGhidraHeadedDebuggerGUI traceManager.activateTrace(tb.trace); waitForTasks(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread1.getObject().removeTree(Lifespan.nowOn(16)); } waitForTasks(); @@ -453,7 +453,7 @@ public class DebuggerThreadsProviderTest extends AbstractGhidraHeadedDebuggerGUI waitForPass(() -> assertThreadsTableSize(2)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread2.getObject().removeTree(Lifespan.ALL); } waitForTasks(); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimeProviderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimeProviderTest.java index e99ef6150b..a0baf2826a 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimeProviderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/time/DebuggerTimeProviderTest.java @@ -23,6 +23,7 @@ import java.util.List; import org.junit.Before; import org.junit.Test; +import db.Transaction; import docking.widgets.dialogs.InputDialog; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; import ghidra.app.plugin.core.debug.gui.listing.DebuggerListingPlugin; @@ -32,7 +33,6 @@ import ghidra.trace.database.time.DBTraceTimeManager; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.TraceSnapshot; import ghidra.trace.model.time.schedule.TraceSchedule; -import ghidra.util.database.UndoableTransaction; public class DebuggerTimeProviderTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -47,7 +47,7 @@ public class DebuggerTimeProviderTest extends AbstractGhidraHeadedDebuggerGUITes protected void addSnapshots() { DBTraceTimeManager timeManager = tb.trace.getTimeManager(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceSnapshot first = timeManager.createSnapshot("First"); Calendar c = Calendar.getInstance(); // System time zone c.set(2020, 0, 1, 9, 0, 0); @@ -60,7 +60,7 @@ public class DebuggerTimeProviderTest extends AbstractGhidraHeadedDebuggerGUITes protected void addScratchSnapshot() { DBTraceTimeManager timeManager = tb.trace.getTimeManager(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceSnapshot scratch = timeManager.getSnapshot(Long.MIN_VALUE, true); scratch.setDescription("Scratch"); scratch.setSchedule(TraceSchedule.parse("0:t0-5")); @@ -149,7 +149,7 @@ public class DebuggerTimeProviderTest extends AbstractGhidraHeadedDebuggerGUITes public void testActivateByThreadThenAddSnapshotsPopulatesProvider() throws Exception { createSnaplessTrace(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread = tb.trace.getThreadManager().createThread("Thread 1", 0); } traceManager.openTrace(tb.trace); @@ -193,7 +193,7 @@ public class DebuggerTimeProviderTest extends AbstractGhidraHeadedDebuggerGUITes assertProviderPopulated(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getTimeManager().getSnapshot(10, false).delete(); } waitForDomainObject(tb.trace); @@ -233,13 +233,13 @@ public class DebuggerTimeProviderTest extends AbstractGhidraHeadedDebuggerGUITes assertProviderEmpty(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { addSnapshots(); waitForDomainObject(tb.trace); assertProviderPopulated(); - tid.abort(); + tx.abort(); } waitForDomainObject(tb.trace); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/watch/DebuggerWatchesProviderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/watch/DebuggerWatchesProviderTest.java index b7eb9ab11d..4e432c1dd3 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/watch/DebuggerWatchesProviderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/watch/DebuggerWatchesProviderTest.java @@ -24,6 +24,7 @@ import java.util.stream.Collectors; import org.junit.*; +import db.Transaction; import generic.Unique; import ghidra.app.plugin.core.codebrowser.CodeBrowserPlugin; import ghidra.app.plugin.core.codebrowser.CodeViewerProvider; @@ -53,7 +54,6 @@ import ghidra.trace.model.memory.*; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.util.TraceRegisterUtils; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; public class DebuggerWatchesProviderTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -96,7 +96,7 @@ public class DebuggerWatchesProviderTest extends AbstractGhidraHeadedDebuggerGUI createTrace(); r0 = tb.language.getRegister("r0"); r1 = tb.language.getRegister("r1"); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread = tb.getOrAddThread("Thread1", 0); } } @@ -112,7 +112,7 @@ public class DebuggerWatchesProviderTest extends AbstractGhidraHeadedDebuggerGUI } private void setRegisterValues(TraceThread thread) { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemorySpace regVals = tb.trace.getMemoryManager().getMemoryRegisterSpace(thread, true); regVals.setValue(0, new RegisterValue(r0, BigInteger.valueOf(0x00400000))); @@ -595,7 +595,7 @@ public class DebuggerWatchesProviderTest extends AbstractGhidraHeadedDebuggerGUI } protected void setupUnmappedDataSection() throws Throwable { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemoryOperations mem = tb.trace.getMemoryManager(); mem.createRegion("Memory[bin:.data]", 0, tb.range(0x00600000, 0x0060ffff), TraceMemoryFlag.READ, TraceMemoryFlag.WRITE); @@ -612,7 +612,7 @@ public class DebuggerWatchesProviderTest extends AbstractGhidraHeadedDebuggerGUI intoProject(tb.trace); intoProject(program); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemoryOperations mem = tb.trace.getMemoryManager(); mem.createRegion("Memory[bin:.data]", 0, tb.range(0x55750000, 0x5575ffff), TraceMemoryFlag.READ, TraceMemoryFlag.WRITE); @@ -624,7 +624,7 @@ public class DebuggerWatchesProviderTest extends AbstractGhidraHeadedDebuggerGUI programManager.openProgram(program); AddressSpace stSpace = program.getAddressFactory().getDefaultAddressSpace(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add block")) { + try (Transaction tx = program.openTransaction("Add block")) { Memory mem = program.getMemory(); mem.createInitializedBlock(".data", tb.addr(stSpace, 0x00600000), 0x10000, (byte) 0, TaskMonitor.DUMMY, false); @@ -633,7 +633,7 @@ public class DebuggerWatchesProviderTest extends AbstractGhidraHeadedDebuggerGUI DefaultTraceLocation tloc = new DefaultTraceLocation(tb.trace, null, Lifespan.nowOn(0), tb.addr(0x55750000)); ProgramLocation ploc = new ProgramLocation(program, tb.addr(stSpace, 0x00600000)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { mappingService.addMapping(tloc, ploc, 0x10000, false); } waitForValue(() -> mappingService.getOpenMappedLocation(tloc)); @@ -681,7 +681,7 @@ public class DebuggerWatchesProviderTest extends AbstractGhidraHeadedDebuggerGUI structDt.add(DWordDataType.dataType, "field0", ""); structDt.add(DWordDataType.dataType, "field4", ""); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getCodeManager() .definedData() .create(Lifespan.nowOn(0), tb.addr(0x00600000), structDt); @@ -705,7 +705,7 @@ public class DebuggerWatchesProviderTest extends AbstractGhidraHeadedDebuggerGUI structDt.add(DWordDataType.dataType, "field0", ""); structDt.add(DWordDataType.dataType, "field4", ""); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add data")) { + try (Transaction tx = program.openTransaction("Add data")) { program.getListing().createData(tb.addr(stSpace, 0x00600000), structDt); } @@ -746,11 +746,11 @@ public class DebuggerWatchesProviderTest extends AbstractGhidraHeadedDebuggerGUI setupMappedDataSection(); Symbol symbol; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add symbol")) { + try (Transaction tx = program.openTransaction("Add symbol")) { symbol = program.getSymbolTable() .createLabel(tb.addr(0x00601234), "my_symbol", SourceType.USER_DEFINED); } - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceMemorySpace regVals = tb.trace.getMemoryManager().getMemoryRegisterSpace(thread, true); regVals.setValue(0, new RegisterValue(r0, BigInteger.valueOf(0x55751234))); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/breakpoint/DebuggerLogicalBreakpointServiceObjectTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/breakpoint/DebuggerLogicalBreakpointServiceObjectTest.java index dbe87dcc97..7eb2342b7b 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/breakpoint/DebuggerLogicalBreakpointServiceObjectTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/breakpoint/DebuggerLogicalBreakpointServiceObjectTest.java @@ -17,12 +17,12 @@ package ghidra.app.plugin.core.debug.service.breakpoint; import java.io.IOException; +import db.Transaction; import ghidra.dbg.target.schema.SchemaContext; -import ghidra.dbg.target.schema.XmlSchemaContext; import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; +import ghidra.dbg.target.schema.XmlSchemaContext; import ghidra.trace.model.Trace; import ghidra.trace.model.target.TraceObjectKeyPath; -import ghidra.util.database.UndoableTransaction; public class DebuggerLogicalBreakpointServiceObjectTest extends DebuggerLogicalBreakpointServiceTest { @@ -102,7 +102,7 @@ public class DebuggerLogicalBreakpointServiceObjectTest """, index)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session"))); tb.trace.getObjectManager() .createObject( diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/breakpoint/DebuggerLogicalBreakpointServiceTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/breakpoint/DebuggerLogicalBreakpointServiceTest.java index 39ae5b8a64..74785d3e96 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/breakpoint/DebuggerLogicalBreakpointServiceTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/breakpoint/DebuggerLogicalBreakpointServiceTest.java @@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit; import org.junit.*; +import db.Transaction; import generic.Unique; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; import ghidra.app.plugin.core.debug.service.control.DebuggerControlServicePlugin; @@ -46,7 +47,6 @@ import ghidra.trace.model.memory.TraceMemoryRegion; import ghidra.trace.model.modules.TraceStaticMapping; import ghidra.util.Msg; import ghidra.util.SystemUtilities; -import ghidra.util.database.UndoableTransaction; import ghidra.util.datastruct.ListenerMap; public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -256,8 +256,7 @@ public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDe } protected void addProgramTextBlock(Program p) throws Throwable { - try (UndoableTransaction tid = - UndoableTransaction.start(program, "Add .text block")) { + try (Transaction tx = program.openTransaction("Add .text block")) { p.getMemory() .createInitializedBlock(".text", addr(p, 0x00400000), 0x1000, (byte) 0, monitor, false); @@ -281,8 +280,7 @@ public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDe Trace t = r.getTrace(); TraceMemoryRegion textRegion = waitFor(() -> r.getTraceMemoryRegion(region), "Recorder missed region: " + region); - try (UndoableTransaction tid = - UndoableTransaction.start(t, "Add .text mapping")) { + try (Transaction tx = t.openTransaction("Add .text mapping")) { DebuggerStaticMappingUtils.addMapping( new DefaultTraceLocation(t, null, textRegion.getLifespan(), textRegion.getMinAddress()), @@ -293,7 +291,7 @@ public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDe protected void removeTextMapping(TraceRecorder r, Program p) throws Throwable { Trace t = r.getTrace(); - try (UndoableTransaction tid = UndoableTransaction.start(t, "Remove .text mapping")) { + try (Transaction tx = t.openTransaction("Remove .text mapping")) { TraceStaticMapping mapping = t.getStaticMappingManager().findContaining(addr(t, 0x55550000), r.getSnap()); mapping.delete(); @@ -342,7 +340,7 @@ public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDe } protected void addProgramBreakpoints(Program p) throws Throwable { - try (UndoableTransaction tid = UndoableTransaction.start(p, "Create bookmarks")) { + try (Transaction tx = p.openTransaction("Create bookmarks")) { enBm = p.getBookmarkManager() .setBookmark(addr(p, 0x00400123), LogicalBreakpoint.BREAKPOINT_ENABLED_BOOKMARK_TYPE, "SW_EXECUTE;1", ""); @@ -363,7 +361,7 @@ public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDe } protected void removeProgramBreakpoints(Program p) throws Throwable { - try (UndoableTransaction tid = UndoableTransaction.start(p, "Remove breakpoints")) { + try (Transaction tx = p.openTransaction("Remove breakpoints")) { p.getBookmarkManager().removeBookmark(enBm); p.getBookmarkManager().removeBookmark(disBm); } @@ -1141,13 +1139,13 @@ public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDe expectMappingChange(() -> addTextMapping(recorder1, text, program)); waitForSwing(); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Will abort")) { + try (Transaction tx = trace.openTransaction("Will abort")) { addTargetSoftwareBreakpoint(recorder1, text); waitForDomainObject(trace); // Sanity assertLogicalBreakpointForMappedSoftwareBreakpoint(trace); - tid.abort(); + tx.abort(); } waitForDomainObject(trace); @@ -1179,14 +1177,14 @@ public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDe waitForDomainObject(trace); changeListener.assertAgreesWithService(); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Will abort")) { + try (Transaction tx = trace.openTransaction("Will abort")) { expectMappingChange(() -> addTextMapping(recorder1, text, program)); waitForSwing(); // Sanity assertLogicalBreakpointForMappedSoftwareBreakpoint(trace); - expectMappingChange(() -> tid.abort()); + expectMappingChange(() -> tx.abort()); } waitForPass(() -> { @@ -1208,7 +1206,7 @@ public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDe addProgramTextBlock(program); TestTargetMemoryRegion text = addTargetTextRegion(mb.testProcess1); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Will abort")) { + try (Transaction tx = trace.openTransaction("Will abort")) { addTargetSoftwareBreakpoint(recorder1, text); expectMappingChange(() -> addTextMapping(recorder1, text, program)); @@ -1217,7 +1215,7 @@ public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDe // Sanity assertLogicalBreakpointForMappedSoftwareBreakpoint(trace); - expectMappingChange(() -> tid.abort()); + expectMappingChange(() -> tx.abort()); } waitForDomainObject(trace); // Duplicative, but for form's sake.... @@ -1242,13 +1240,13 @@ public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDe expectMappingChange(() -> addTextMapping(recorder1, text, program)); waitForSwing(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Will abort")) { + try (Transaction tx = program.openTransaction("Will abort")) { addProgramBreakpoints(program); waitForDomainObject(program); // Sanity assertLogicalBreakpointsForMappedBookmarks(trace); - tid.abort(); + tx.abort(); } waitForDomainObject(program); @@ -1268,7 +1266,7 @@ public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDe addProgramTextBlock(program); TestTargetMemoryRegion text = addTargetTextRegion(mb.testProcess1); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Will undo")) { + try (Transaction tx = trace.openTransaction("Will undo")) { addTargetSoftwareBreakpoint(recorder1, text); expectMappingChange(() -> addTextMapping(recorder1, text, program)); } @@ -1310,7 +1308,7 @@ public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDe expectMappingChange(() -> addTextMapping(recorder1, text, program)); waitForSwing(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Will undo")) { + try (Transaction tx = program.openTransaction("Will undo")) { addProgramBreakpoints(program); } waitForDomainObject(program); @@ -1536,7 +1534,7 @@ public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDe protected void addTextMappingDead(Program p, ToyDBTraceBuilder tb) throws Throwable { addProgramTextBlock(p); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tid = tb.startTransaction()) { TraceMemoryRegion textRegion = tb.trace.getMemoryManager() .addRegion("Processes[1].Memory[bin:.text]", Lifespan.nowOn(0), tb.range(0x55550000, 0x55550fff), @@ -1550,8 +1548,7 @@ public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDe } protected void addEnabledProgramBreakpointWithSleigh(Program p) { - try (UndoableTransaction tid = - UndoableTransaction.start(p, "Create bookmark bp with sleigh")) { + try (Transaction tid = p.openTransaction("Create bookmark bp with sleigh")) { enBm = p.getBookmarkManager() .setBookmark(addr(p, 0x00400123), LogicalBreakpoint.BREAKPOINT_ENABLED_BOOKMARK_TYPE, "SW_EXECUTE;1", @@ -1632,7 +1629,7 @@ public class DebuggerLogicalBreakpointServiceTest extends AbstractGhidraHeadedDe intoProject(program); programManager.openProgram(program); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tid = tb.startTransaction()) { TraceBreakpoint bpt = tb.trace.getBreakpointManager() .addBreakpoint("Processes[1].Breakpoints[0]", Lifespan.nowOn(0), tb.addr(0x55550123), diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/control/DebuggerControlServiceGuestTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/control/DebuggerControlServiceGuestTest.java index e541b1e3ca..9c51d6291e 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/control/DebuggerControlServiceGuestTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/control/DebuggerControlServiceGuestTest.java @@ -18,6 +18,7 @@ package ghidra.app.plugin.core.debug.service.control; import java.io.IOException; import java.util.Set; +import db.Transaction; import ghidra.app.plugin.core.debug.mapping.DebuggerTargetTraceMapper; import ghidra.app.plugin.core.debug.mapping.ObjectBasedDebuggerTargetTraceMapper; import ghidra.app.plugin.core.debug.service.model.DebuggerModelServicePlugin; @@ -28,13 +29,12 @@ import ghidra.program.model.lang.LanguageID; import ghidra.trace.model.Trace; import ghidra.trace.model.guest.TraceGuestPlatform; import ghidra.trace.model.guest.TracePlatform; -import ghidra.util.database.UndoableTransaction; public class DebuggerControlServiceGuestTest extends DebuggerControlServiceTest { protected TraceGuestPlatform platform; public void createToyPlatform() { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { platform = tb.trace.getPlatformManager() .addGuestPlatform(getToyBE64Language().getDefaultCompilerSpec()); platform.addMappedRegisterRange(); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/control/DebuggerControlServiceTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/control/DebuggerControlServiceTest.java index 5f59a26b80..55b74affa8 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/control/DebuggerControlServiceTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/control/DebuggerControlServiceTest.java @@ -23,10 +23,10 @@ import java.nio.ByteBuffer; import org.junit.Before; import org.junit.Test; +import db.Transaction; import ghidra.app.plugin.assembler.*; import ghidra.app.plugin.core.debug.DebuggerCoordinates; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; -import ghidra.app.plugin.core.debug.service.control.DebuggerControlServicePlugin; import ghidra.app.services.*; import ghidra.app.services.DebuggerControlService.StateEditor; import ghidra.async.AsyncUtils.TemperamentalRunnable; @@ -38,7 +38,6 @@ import ghidra.trace.model.guest.TracePlatform; import ghidra.trace.model.memory.TraceMemorySpace; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.schedule.TraceSchedule; -import ghidra.util.database.UndoableTransaction; public class DebuggerControlServiceTest extends AbstractGhidraHeadedDebuggerGUITest { protected DebuggerControlService editingService; @@ -134,7 +133,7 @@ public class DebuggerControlServiceTest extends AbstractGhidraHeadedDebuggerGUIT createAndOpenTrace(); editingService.setCurrentMode(tb.trace, ControlMode.RW_EMULATOR); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { // NB. TraceManager should automatically activate the first thread tb.getOrAddThread("Threads[0]", 0); } @@ -161,7 +160,7 @@ public class DebuggerControlServiceTest extends AbstractGhidraHeadedDebuggerGUIT editingService.setCurrentMode(tb.trace, ControlMode.RW_EMULATOR); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { // NB. TraceManager should automatically activate the first thread thread = tb.getOrAddThread("Threads[0]", 0); } @@ -189,7 +188,7 @@ public class DebuggerControlServiceTest extends AbstractGhidraHeadedDebuggerGUIT createAndOpenTrace(); editingService.setCurrentMode(tb.trace, ControlMode.RW_TRACE); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { // NB. TraceManager should automatically activate the first thread TraceThread thread = tb.getOrAddThread("Threads[0]", 0); Assembler asm = Assemblers.getAssembler(getPlatform().getLanguage()); @@ -228,7 +227,7 @@ public class DebuggerControlServiceTest extends AbstractGhidraHeadedDebuggerGUIT editingService.setCurrentMode(tb.trace, ControlMode.RW_TRACE); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { // NB. TraceManager should automatically activate the first thread thread = tb.getOrAddThread("Threads[0]", 0); Assembler asm = Assemblers.getAssembler(getPlatform().getLanguage()); @@ -267,7 +266,7 @@ public class DebuggerControlServiceTest extends AbstractGhidraHeadedDebuggerGUIT createAndOpenTrace(); editingService.setCurrentMode(tb.trace, ControlMode.RW_EMULATOR); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { // NB. TraceManager should automatically activate the first thread tb.getOrAddThread("Threads[0]", 0); } @@ -297,7 +296,7 @@ public class DebuggerControlServiceTest extends AbstractGhidraHeadedDebuggerGUIT editingService.setCurrentMode(tb.trace, ControlMode.RW_EMULATOR); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { // NB. TraceManager should automatically activate the first thread thread = tb.getOrAddThread("Threads[0]", 0); } @@ -367,7 +366,7 @@ public class DebuggerControlServiceTest extends AbstractGhidraHeadedDebuggerGUIT editingService.setCurrentMode(tb.trace, ControlMode.RW_TRACE); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { // NB. TraceManager should automatically activate the first thread thread = tb.getOrAddThread("Threads[0]", 0); } diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/emulation/DebuggerEmulationServiceTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/emulation/DebuggerEmulationServiceTest.java index 0b9bb4e53a..55256e1e8c 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/emulation/DebuggerEmulationServiceTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/emulation/DebuggerEmulationServiceTest.java @@ -26,6 +26,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; +import db.Transaction; import generic.Unique; import generic.test.category.NightlyCategory; import ghidra.app.plugin.assembler.*; @@ -36,8 +37,8 @@ import ghidra.app.plugin.core.debug.mapping.DebuggerPlatformMapper; import ghidra.app.plugin.core.debug.mapping.DebuggerPlatformOpinion; import ghidra.app.plugin.core.debug.service.platform.DebuggerPlatformServicePlugin; import ghidra.app.services.DebuggerEmulationService.EmulationResult; -import ghidra.app.services.DebuggerTraceManagerService.ActivationCause; import ghidra.app.services.DebuggerStaticMappingService; +import ghidra.app.services.DebuggerTraceManagerService.ActivationCause; import ghidra.pcode.exec.InterruptPcodeExecutionException; import ghidra.pcode.utils.Utils; import ghidra.program.model.address.Address; @@ -57,7 +58,6 @@ import ghidra.trace.model.memory.TraceMemorySpace; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.schedule.Scheduler; import ghidra.trace.model.time.schedule.TraceSchedule; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; @Category(NightlyCategory.class) // this may actually be an @PortSensitive test @@ -84,7 +84,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU Register regPC = program.getRegister("pc"); Register regR0 = program.getRegister("r0"); Register regR1 = program.getRegister("r1"); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { MemoryBlock blockText = memory.createInitializedBlock(".text", addrText, 0x1000, (byte) 0, TaskMonitor.DUMMY, false); blockText.setExecute(true); @@ -139,7 +139,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU Register regPC = program.getRegister("pc"); Register regR0 = program.getRegister("r0"); Register regR1 = program.getRegister("r1"); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { MemoryBlock blockText = memory.createInitializedBlock(".text", addrText, 0x1000, (byte) 0, TaskMonitor.DUMMY, false); blockText.setExecute(true); @@ -197,7 +197,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU Register regPC = program.getRegister("PC"); Register regW0 = program.getRegister("W0"); Register regW1 = program.getRegister("W1"); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { MemoryBlock blockText = memory.createInitializedBlock(".text", addrText, 0x1000, (byte) 0, TaskMonitor.DUMMY, false); blockText.setExecute(true); @@ -251,7 +251,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU Memory memory = program.getMemory(); Address addrText = addr(program, 0x00400000); Address addrData = addr(program, 0x00600000); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { MemoryBlock blockText = memory.createInitializedBlock("text", addrText, 0x1000, (byte) 0, TaskMonitor.DUMMY, false); blockText.setExecute(true); @@ -271,7 +271,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU CompletableFuture settled; TraceThread thread; TraceMemorySpace regs; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread = tb.getOrAddThread("Threads[0]", 0); regs = tb.trace.getMemoryManager().getMemoryRegisterSpace(thread, true); regs.setValue(0, new RegisterValue(program.getLanguage().getProgramCounter(), @@ -304,7 +304,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU AssemblyBuffer buf = new AssemblyBuffer(asm, tb.addr(x64, 0x00400000)); TraceMemoryManager mem = tb.trace.getMemoryManager(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread = tb.getOrAddThread("Threads[0]", 0); buf.assemble("MOV RAX, qword ptr [0x00600800]"); mem.putBytes(0, tb.addr(0x00400000), ByteBuffer.wrap(buf.getBytes())); @@ -330,7 +330,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU waitForPass(() -> assertEquals(x64, traceManager.getCurrentPlatform().getLanguage())); TracePlatform platform = traceManager.getCurrentPlatform(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.exec(platform, 0, thread, 0, "RIP = 0x00400000;"); } @@ -355,7 +355,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU Register regR1 = program.getRegister("r1"); Register regR2 = program.getRegister("r2"); Address addrI2; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { MemoryBlock blockText = memory.createInitializedBlock(".text", addrText, 0x1000, (byte) 0, TaskMonitor.DUMMY, false); blockText.setExecute(true); @@ -381,7 +381,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU TraceThread thread = Unique.assertOne(trace.getThreadManager().getAllThreads()); TraceMemorySpace regs = trace.getMemoryManager().getMemoryRegisterSpace(thread, false); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Add breakpoint")) { + try (Transaction tx = trace.openTransaction("Add breakpoint")) { trace.getBreakpointManager() .addBreakpoint("Breakpoints[0]", Lifespan.nowOn(0), addrI2, Set.of(thread), Set.of(TraceBreakpointKind.SW_EXECUTE), true, "test"); @@ -414,7 +414,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU Address addrText = addr(program, 0x000400000); Address addrI1; Address addrI2; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { MemoryBlock blockText = memory.createInitializedBlock(".text", addrText, 0x1000, (byte) 0, TaskMonitor.DUMMY, false); blockText.setExecute(true); @@ -439,7 +439,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU TraceThread thread = Unique.assertOne(trace.getThreadManager().getAllThreads()); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Add breakpoint")) { + try (Transaction tx = trace.openTransaction("Add breakpoint")) { trace.getBreakpointManager() .addBreakpoint("Breakpoints[0]", Lifespan.nowOn(0), addrText, Set.of(thread), Set.of(TraceBreakpointKind.SW_EXECUTE), true, "test"); @@ -476,7 +476,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU Register regR1 = program.getRegister("r1"); Register regR2 = program.getRegister("r2"); Address addrI2; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { MemoryBlock blockText = memory.createInitializedBlock(".text", addrText, 0x1000, (byte) 0, TaskMonitor.DUMMY, false); blockText.setExecute(true); @@ -502,7 +502,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU TraceThread thread = Unique.assertOne(trace.getThreadManager().getAllThreads()); TraceMemorySpace regs = trace.getMemoryManager().getMemoryRegisterSpace(thread, false); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Add breakpoint")) { + try (Transaction tx = trace.openTransaction("Add breakpoint")) { TraceBreakpoint tb = trace.getBreakpointManager() .addBreakpoint("Breakpoints[0]", Lifespan.nowOn(0), addrI2, Set.of(thread), Set.of(TraceBreakpointKind.SW_EXECUTE), true, "test"); @@ -542,7 +542,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU Register regR0 = program.getRegister("r0"); Register regR1 = program.getRegister("r1"); Register regR2 = program.getRegister("r2"); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { MemoryBlock blockText = memory.createInitializedBlock(".text", addrText, 0x1000, (byte) 0, TaskMonitor.DUMMY, false); blockText.setExecute(true); @@ -568,7 +568,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU TraceMemoryManager mem = trace.getMemoryManager(); TraceMemorySpace regs = mem.getMemoryRegisterSpace(thread, false); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Add breakpoint")) { + try (Transaction tx = trace.openTransaction("Add breakpoint")) { trace.getBreakpointManager() .addBreakpoint("Breakpoints[0]", Lifespan.nowOn(0), addr(trace, 0x1234), Set.of(thread), Set.of(TraceBreakpointKind.READ), true, "test"); @@ -605,7 +605,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU Register regR0 = program.getRegister("r0"); Register regR2 = program.getRegister("r2"); Address addrI2; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { MemoryBlock blockText = memory.createInitializedBlock(".text", addrText, 0x1000, (byte) 0, TaskMonitor.DUMMY, false); blockText.setExecute(true); @@ -646,7 +646,7 @@ public class DebuggerEmulationServiceTest extends AbstractGhidraHeadedDebuggerGU regs.getViewValue(scratch, regR2).getUnsignedValue()); // Inject some logic that would require a cache refresh to materialize - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Add breakpoint")) { + try (Transaction tx = trace.openTransaction("Add breakpoint")) { TraceBreakpoint tb = trace.getBreakpointManager() .addBreakpoint("Breakpoints[0]", Lifespan.nowOn(0), addrI2, Set.of(thread), Set.of(TraceBreakpointKind.SW_EXECUTE), true, "test"); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/model/DefaultTraceRecorderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/model/DefaultTraceRecorderTest.java index 22a9fe7944..f6b03a5ae9 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/model/DefaultTraceRecorderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/model/DefaultTraceRecorderTest.java @@ -22,6 +22,7 @@ import java.util.Map.Entry; import org.junit.Test; +import db.Transaction; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; import ghidra.app.plugin.core.debug.mapping.DebuggerRegisterMapper; import ghidra.app.services.ActionSource; @@ -36,7 +37,6 @@ import ghidra.trace.model.*; import ghidra.trace.model.listing.TraceCodeSpace; import ghidra.trace.model.memory.*; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; public class DefaultTraceRecorderTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -73,8 +73,7 @@ public class DefaultTraceRecorderTest extends AbstractGhidraHeadedDebuggerGUITes } protected TraceMemorySpace createRegSpace(TraceThread thread) { - try (UndoableTransaction tid = - UndoableTransaction.start(thread.getTrace(), "Create register space")) { + try (Transaction tx = thread.getTrace().openTransaction("Create register space")) { return thread.getTrace().getMemoryManager().getMemoryRegisterSpace(thread, true); } } @@ -140,7 +139,7 @@ public class DefaultTraceRecorderTest extends AbstractGhidraHeadedDebuggerGUITes mb.testProcess1.regs.addRegistersFromLanguage(getToyBE64Language(), r -> r.isBaseRegister() && r != pc && r != sp); TestTargetRegisterBankInThread regs = mb.testThread1.addRegisterBank(); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Add PC type")) { + try (Transaction tx = trace.openTransaction("Add PC type")) { TraceCodeSpace code = trace.getCodeManager().getCodeRegisterSpace(thread, true); code.definedData().create(Lifespan.nowOn(0), pc, PointerDataType.dataType); } @@ -189,7 +188,7 @@ public class DefaultTraceRecorderTest extends AbstractGhidraHeadedDebuggerGUITes mb.testProcess1.regs.addRegistersFromLanguage(getToyBE64Language(), r -> r.isBaseRegister() && r != pc && r != sp); TestTargetRegisterBankInThread regs = mb.testThread1.addRegisterBank(); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Add SP type")) { + try (Transaction tx = trace.openTransaction("Add SP type")) { TraceCodeSpace code = trace.getCodeManager().getCodeRegisterSpace(thread, true); code.definedData().create(Lifespan.nowOn(0), sp, PointerDataType.dataType); } @@ -238,7 +237,7 @@ public class DefaultTraceRecorderTest extends AbstractGhidraHeadedDebuggerGUITes //waitForCondition(() -> registerMapped(recorder, thread, pc)); TraceThread thread = waitForValue(() -> recorder.getTraceThread(mb.testThread1)); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Add PC type")) { + try (Transaction tx = trace.openTransaction("Add PC type")) { TraceCodeSpace code = trace.getCodeManager().getCodeRegisterSpace(thread, true); code.definedData().create(Lifespan.nowOn(0), pc, PointerDataType.dataType); } diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/modules/DebuggerStaticMappingServiceTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/modules/DebuggerStaticMappingServiceTest.java index 980c466bd8..0665076a31 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/modules/DebuggerStaticMappingServiceTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/modules/DebuggerStaticMappingServiceTest.java @@ -23,6 +23,7 @@ import java.util.*; import org.junit.Before; import org.junit.Test; +import db.Transaction; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; import ghidra.app.services.DebuggerStaticMappingService; import ghidra.app.services.DebuggerStaticMappingService.MappedAddressRange; @@ -37,7 +38,6 @@ import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.memory.TraceMemoryRegion; import ghidra.trace.model.modules.*; import ghidra.util.Msg; -import ghidra.util.database.UndoableTransaction; // Not technically a GUI test, but must be carried out in the context of a plugin tool public class DebuggerStaticMappingServiceTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -75,7 +75,7 @@ public class DebuggerStaticMappingServiceTest extends AbstractGhidraHeadedDebugg new DefaultTraceLocation(tb.trace, null, Lifespan.nowOn(0), dynSpace.getAddress(0x00100000)); ProgramLocation to = new ProgramLocation(program, stSpace.getAddress(0x00200000)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DebuggerStaticMappingUtils.addMapping(from, to, 0x1000, false); } waitForDomainObject(tb.trace); @@ -85,7 +85,7 @@ public class DebuggerStaticMappingServiceTest extends AbstractGhidraHeadedDebugg TraceLocation from = new DefaultTraceLocation(tb.trace, null, Lifespan.nowOn(10), dynSpace.getAddress(0x00100800)); ProgramLocation to = new ProgramLocation(program, stSpace.getAddress(0x00300000)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DebuggerStaticMappingUtils.addMapping(from, to, 0x1000, truncateExisting); } } @@ -104,7 +104,7 @@ public class DebuggerStaticMappingServiceTest extends AbstractGhidraHeadedDebugg new DefaultTraceLocation(tb.trace, null, Lifespan.nowOn(0), dynSpace.getAddress(0x00102000)); ProgramLocation to = new ProgramLocation(program, stSpace.getAddress(0x00200000)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DebuggerStaticMappingUtils.addMapping(from, to, 0x800, false); } waitForDomainObject(tb.trace); @@ -550,12 +550,12 @@ public class DebuggerStaticMappingServiceTest extends AbstractGhidraHeadedDebugg TraceLocation goodLoc = new DefaultTraceLocation(tb.trace, null, Lifespan.nowOn(0), dynSpace.getAddress(0x00100c0d)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { mappingManager.findContaining(dynSpace.getAddress(0x00100000), 0).delete(); waitForDomainObject(tb.trace); // pre-check assertNull(mappingService.getOpenMappedLocation(goodLoc)); - tid.abort(); + tx.abort(); } waitForDomainObject(tb.trace); @@ -573,7 +573,7 @@ public class DebuggerStaticMappingServiceTest extends AbstractGhidraHeadedDebugg // pre-pre-check assertNotNull(mappingService.getOpenMappedLocation(goodLoc)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { mappingManager.findContaining(dynSpace.getAddress(0x00100000), 0).delete(); } waitForDomainObject(tb.trace); @@ -594,7 +594,7 @@ public class DebuggerStaticMappingServiceTest extends AbstractGhidraHeadedDebugg public void testGroupRegionsByLikelyModule() throws Exception { TraceMemoryRegion echoText, echoData, libText, libData; DBTraceMemoryManager mm = tb.trace.getMemoryManager(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { echoText = mm.createRegion("Memory.Regions[/bin/echo (0x00400000)]", 0, tb.range(0x00400000, 0x0040ffff), TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); echoData = mm.createRegion("Memory.Regions[/bin/echo (0x00600000)]", @@ -620,7 +620,7 @@ public class DebuggerStaticMappingServiceTest extends AbstractGhidraHeadedDebugg @Test public void testMapFullSpace() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TraceLocation traceLoc = new DefaultTraceLocation(tb.trace, null, Lifespan.nowOn(0), tb.addr(0)); ProgramLocation progLoc = new ProgramLocation(program, stSpace.getAddress(0)); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/tracemgr/DebuggerTraceManagerServiceTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/tracemgr/DebuggerTraceManagerServiceTest.java index 34282df0d2..1e1220f785 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/tracemgr/DebuggerTraceManagerServiceTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/service/tracemgr/DebuggerTraceManagerServiceTest.java @@ -23,6 +23,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; +import db.Transaction; import generic.test.category.NightlyCategory; import ghidra.app.plugin.core.debug.DebuggerCoordinates; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; @@ -42,7 +43,6 @@ import ghidra.trace.model.target.TraceObject; import ghidra.trace.model.target.TraceObjectKeyPath; import ghidra.trace.model.thread.TraceObjectThread; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; @Category(NightlyCategory.class) // this may actually be an @PortSensitive test public class DebuggerTraceManagerServiceTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -131,7 +131,7 @@ public class DebuggerTraceManagerServiceTest extends AbstractGhidraHeadedDebugge assertNull(traceManager.getCurrentThread()); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread = tb.getOrAddThread("Thread 1", 0); } waitForDomainObject(tb.trace); @@ -231,7 +231,7 @@ public class DebuggerTraceManagerServiceTest extends AbstractGhidraHeadedDebugge SchemaContext ctx = XmlSchemaContext.deserialize(DBTraceObjectManagerTest.XML_CTX); TraceObject objThread0; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceObjectManager objectManager = tb.trace.getObjectManager(); objectManager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); objThread0 = diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/stack/StackUnwinderTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/stack/StackUnwinderTest.java index 2e4f6c47e7..338a8e7257 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/stack/StackUnwinderTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/stack/StackUnwinderTest.java @@ -25,6 +25,7 @@ import java.util.function.Predicate; import org.junit.Test; +import db.Transaction; import docking.widgets.fieldpanel.Layout; import docking.widgets.fieldpanel.field.Field; import docking.widgets.fieldpanel.support.FieldLocation; @@ -48,8 +49,8 @@ import ghidra.app.plugin.core.decompile.DecompilePlugin; import ghidra.app.plugin.core.decompile.DecompilerProvider; import ghidra.app.plugin.core.disassembler.DisassemblerPlugin; import ghidra.app.services.*; -import ghidra.app.services.DebuggerEmulationService.EmulationResult; import ghidra.app.services.DebuggerControlService.StateEditor; +import ghidra.app.services.DebuggerEmulationService.EmulationResult; import ghidra.app.util.viewer.field.FieldFactory; import ghidra.app.util.viewer.field.ListingField; import ghidra.app.util.viewer.listingpanel.ListingPanel; @@ -78,7 +79,6 @@ import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.schedule.Scheduler; import ghidra.util.Msg; import ghidra.util.NumericUtilities; -import ghidra.util.database.UndoableTransaction; public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -135,7 +135,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { protected Function createSumSquaresProgramX86_32() throws Throwable { createProgram("x86:LE:32:default", "gcc"); intoProject(program); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Assemble")) { + try (Transaction tx = program.openTransaction("Assemble")) { Address entry = addr(program, 0x00400000); program.getMemory() .createInitializedBlock(".text", entry, 0x1000, (byte) 0, monitor, false); @@ -199,7 +199,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { protected Function createFibonacciProgramX86_32() throws Throwable { createProgram("x86:LE:32:default", "gcc"); intoProject(program); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Assemble")) { + try (Transaction tx = program.openTransaction("Assemble")) { Address entry = addr(program, 0x00400000); program.getMemory() .createInitializedBlock(".text", entry, 0x1000, (byte) 0, monitor, false); @@ -276,7 +276,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { createProgram("x86:LE:32:default", "gcc"); intoProject(program); Address entry; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Assemble")) { + try (Transaction tx = program.openTransaction("Assemble")) { entry = addr(program, 0x00400000); Address externs = addr(program, 0x00700000); program.getMemory() @@ -338,7 +338,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { createProgram("x86:LE:32:default", "gcc"); intoProject(program); Address entry; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Assemble")) { + try (Transaction tx = program.openTransaction("Assemble")) { entry = addr(program, 0x00400000); program.getMemory() .createInitializedBlock(".text", entry, 0x1000, (byte) 0, monitor, false); @@ -393,7 +393,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { createProgram("x86:LE:32:default", "gcc"); intoProject(program); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Assemble")) { + try (Transaction tx = program.openTransaction("Assemble")) { Address entry = addr(program, 0x00400000); program.getMemory() .createInitializedBlock(".text", entry, 0x1000, (byte) 0, monitor, false); @@ -430,7 +430,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { createProgram("x86:LE:32:default", "gcc"); intoProject(program); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Assemble")) { + try (Transaction tx = program.openTransaction("Assemble")) { ProgramBasedDataTypeManager dtm = program.getDataTypeManager(); Structure structure = new StructureDataType("MyStruct", 0, dtm); structure.add(WordDataType.dataType, "y", ""); @@ -515,7 +515,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { createProgram("x86:LE:32:default", "gcc"); intoProject(program); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Assemble")) { + try (Transaction tx = program.openTransaction("Assemble")) { ProgramBasedDataTypeManager dtm = program.getDataTypeManager(); Structure structure = new StructureDataType("MyStruct", 0, dtm); structure.add(WordDataType.dataType, "y", ""); @@ -702,7 +702,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { waitOn(frameAtSetup.setValue(editor, param1, BigInteger.valueOf(4))); waitForTasks(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getBreakpointManager() .addBreakpoint("Breakpoints[0]", Lifespan.nowOn(0), retInstr, Set.of(), Set.of(TraceBreakpointKind.SW_EXECUTE), true, "capture return value"); @@ -764,7 +764,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { waitForTasks(); TraceBreakpoint bptUnwind; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { bptUnwind = tb.trace.getBreakpointManager() .addBreakpoint("Breakpoints[0]", Lifespan.nowOn(0), retInstr, Set.of(), @@ -802,7 +802,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { } } - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { bptUnwind.delete(); } @@ -845,7 +845,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { waitForSwing(); DebuggerCoordinates atSetup = traceManager.getCurrent(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { new UnwindStackCommand(tool, atSetup).applyTo(tb.trace, monitor); } waitForDomainObject(tb.trace); @@ -907,7 +907,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { waitOn(frameAtSetup.setReturnAddress(editor, tb.addr(0xdeadbeef))); waitForTasks(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getBreakpointManager() .addBreakpoint("Breakpoints[0]", Lifespan.nowOn(0), retInstr, Set.of(), @@ -921,7 +921,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { traceManager.activateTime(result.schedule()); waitForTasks(); DebuggerCoordinates tallest = traceManager.getCurrent(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { new UnwindStackCommand(tool, tallest).applyTo(tb.trace, monitor); } waitForDomainObject(tb.trace); @@ -950,7 +950,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { Register sp = program.getCompilerSpec().getStackPointer(); waitOn(editor.setRegister(new RegisterValue(sp, BigInteger.valueOf(0x4ff0)))); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getBreakpointManager() .addBreakpoint("Breakpoints[0]", Lifespan.nowOn(0), retInstr, Set.of(), @@ -965,7 +965,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { traceManager.activateTime(result.schedule()); waitForTasks(); DebuggerCoordinates atRet = traceManager.getCurrent(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { new UnwindStackCommand(tool, atRet).applyTo(tb.trace, monitor); } waitForDomainObject(tb.trace); @@ -994,7 +994,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { Register sp = program.getCompilerSpec().getStackPointer(); waitOn(editor.setRegister(new RegisterValue(sp, BigInteger.valueOf(0x4ff0)))); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getBreakpointManager() .addBreakpoint("Breakpoints[0]", Lifespan.nowOn(0), retInstr, Set.of(), @@ -1009,7 +1009,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { traceManager.activateTime(result.schedule()); waitForTasks(); DebuggerCoordinates atRet = traceManager.getCurrent(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { new UnwindStackCommand(tool, atRet).applyTo(tb.trace, monitor); } waitForDomainObject(tb.trace); @@ -1038,7 +1038,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { Register sp = program.getCompilerSpec().getStackPointer(); waitOn(editor.setRegister(new RegisterValue(sp, BigInteger.valueOf(0x4ff0)))); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getBreakpointManager() .addBreakpoint("Breakpoints[0]", Lifespan.nowOn(0), retInstr, Set.of(), @@ -1053,7 +1053,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { traceManager.activateTime(result.schedule()); waitForTasks(); DebuggerCoordinates atRet = traceManager.getCurrent(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { new UnwindStackCommand(tool, atRet).applyTo(tb.trace, monitor); } waitForDomainObject(tb.trace); @@ -1261,7 +1261,7 @@ public class StackUnwinderTest extends AbstractGhidraHeadedDebuggerGUITest { TraceLocation dynLoc = mappingService.getOpenMappedLocation(tb.trace, new ProgramLocation(program, stIns.getAddress()), current.getSnap()); Address dynamicAddress = dynLoc.getAddress(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { int length = stIns.getLength(); assertEquals(length, tb.trace.getMemoryManager() .putBytes(current.getSnap(), dynamicAddress, diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/debug/flatapi/FlatDebuggerAPITest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/debug/flatapi/FlatDebuggerAPITest.java index 3116b85361..120f037db9 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/debug/flatapi/FlatDebuggerAPITest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/debug/flatapi/FlatDebuggerAPITest.java @@ -29,6 +29,7 @@ import java.util.function.Function; import org.junit.Before; import org.junit.Test; +import db.Transaction; import generic.Unique; import ghidra.app.plugin.assembler.Assembler; import ghidra.app.plugin.assembler.Assemblers; @@ -65,7 +66,6 @@ import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.stack.TraceStack; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.schedule.TraceSchedule; -import ghidra.util.database.UndoableTransaction; public class FlatDebuggerAPITest extends AbstractGhidraHeadedDebuggerGUITest { @@ -187,7 +187,7 @@ public class FlatDebuggerAPITest extends AbstractGhidraHeadedDebuggerGUITest { createAndOpenTrace(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread = tb.getOrAddThread("Threads[0]", 0); } waitForSwing(); @@ -217,7 +217,7 @@ public class FlatDebuggerAPITest extends AbstractGhidraHeadedDebuggerGUITest { createAndOpenTrace(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread = tb.getOrAddThread("Threads[0]", 0); TraceStack stack = tb.trace.getStackManager().getStack(thread, 0, true); stack.setDepth(3, true); @@ -289,7 +289,7 @@ public class FlatDebuggerAPITest extends AbstractGhidraHeadedDebuggerGUITest { createTrace(); } TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread = tb.getOrAddThread("Threads[0]", 0); TraceStack stack = tb.trace.getStackManager().getStack(thread, 0, true); stack.setDepth(3, true); @@ -354,7 +354,7 @@ public class FlatDebuggerAPITest extends AbstractGhidraHeadedDebuggerGUITest { protected void createTraceWithBinText() throws Throwable { createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceMemoryManager mm = tb.trace.getMemoryManager(); mm.createRegion("Memory[bin.text]", 0, tb.range(0x00400000, 0x0040ffff), Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE)); @@ -401,14 +401,14 @@ public class FlatDebuggerAPITest extends AbstractGhidraHeadedDebuggerGUITest { programManager.openProgram(program); traceManager.activateTrace(tb.trace); - try (UndoableTransaction tid = UndoableTransaction.start(program, "add block")) { + try (Transaction tx = program.openTransaction("add block")) { program.getMemory() .createInitializedBlock(".text", addr(program, 0x00400000), 4096, (byte) 0, monitor, false); } CompletableFuture changesSettled; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getMemoryManager() .createRegion("Memory[bin.text]", 0, tb.range(0x00400000, 0x00400fff), Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE)); @@ -463,7 +463,7 @@ public class FlatDebuggerAPITest extends AbstractGhidraHeadedDebuggerGUITest { programManager.openProgram(program); Address entry = addr(program, 0x00400000); - try (UndoableTransaction start = UndoableTransaction.start(program, "init")) { + try (Transaction start = program.openTransaction("init")) { program.getMemory() .createInitializedBlock(".text", entry, 4096, (byte) 0, monitor, false); @@ -1050,7 +1050,7 @@ public class FlatDebuggerAPITest extends AbstractGhidraHeadedDebuggerGUITest { programManager.openProgram(program); waitForSwing(); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Add block")) { + try (Transaction tx = program.openTransaction("Add block")) { program.getMemory() .createInitializedBlock( ".text", addr(program, 0x00400000), 1024, (byte) 0, monitor, false); diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/pcode/exec/TraceRecorderPcodeExecTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/pcode/exec/TraceRecorderPcodeExecTest.java index 6647c15bf8..82c8727a20 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/pcode/exec/TraceRecorderPcodeExecTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/pcode/exec/TraceRecorderPcodeExecTest.java @@ -22,6 +22,7 @@ import java.util.Map; import org.junit.Test; +import db.Transaction; import ghidra.app.plugin.core.debug.DebuggerCoordinates; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; import ghidra.app.plugin.core.debug.mapping.DebuggerRegisterMapper; @@ -40,7 +41,6 @@ import ghidra.trace.model.memory.TraceMemorySpace; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.TraceSnapshot; import ghidra.trace.model.time.schedule.TraceSchedule; -import ghidra.util.database.UndoableTransaction; /** * Test the {@link DirectBytesTracePcodeExecutorState} in combination with @@ -127,7 +127,7 @@ public class TraceRecorderPcodeExecTest extends AbstractGhidraHeadedDebuggerGUIT }); TraceSchedule oneTick = TraceSchedule.snap(recorder.getSnap()).steppedForward(thread, 1); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Scratch")) { + try (Transaction tx = trace.openTransaction("Scratch")) { TraceSnapshot scratch = trace.getTimeManager().getSnapshot(Long.MIN_VALUE, true); scratch.setSchedule(oneTick); scratch.setDescription("Faked"); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTrace.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTrace.java index 3146b72940..1a9ca6111e 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTrace.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTrace.java @@ -23,6 +23,7 @@ import org.apache.commons.collections4.collection.CompositeCollection; import com.google.common.cache.RemovalNotification; +import db.Transaction; import db.DBHandle; import generic.depends.DependentService; import generic.depends.err.ServiceConstructionException; @@ -165,7 +166,7 @@ public class DBTrace extends DBCachedDomainObjectAdapter implements Trace, Trace this.baseAddressFactory = new TraceAddressFactory(this.baseLanguage, this.baseCompilerSpec); - try (UndoableTransaction tid = UndoableTransaction.start(this, "Create")) { + try (Transaction tx = this.openTransaction("Create")) { initOptions(DBOpenMode.CREATE); init(); } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/data/DBTraceDataTypeManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/data/DBTraceDataTypeManager.java index 64483bcb8f..fc96d2e0c2 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/data/DBTraceDataTypeManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/data/DBTraceDataTypeManager.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.util.LinkedList; import java.util.concurrent.locks.ReadWriteLock; +import db.Transaction; import db.DBHandle; import ghidra.framework.model.DomainFile; import ghidra.program.database.data.ProgramBasedDataTypeManagerDB; @@ -176,6 +177,11 @@ public class DBTraceDataTypeManager extends ProgramBasedDataTypeManagerDB return trace.isChangeable(); } + @Override + public Transaction openTransaction(String description) throws IllegalStateException { + return trace.openTransaction(description); + } + @Override public int startTransaction(String description) { return trace.startTransaction(description); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceCodeUnitAdapter.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceCodeUnitAdapter.java index 66da485a20..d0291eba04 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceCodeUnitAdapter.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceCodeUnitAdapter.java @@ -50,7 +50,7 @@ import ghidra.util.exception.NoValueException; * This behaves somewhat like a mixin, allowing it to be used on code units as well as data * components, e.g., fields of a struct data unit. */ -public interface DBTraceCodeUnitAdapter extends TraceCodeUnit, MemBufferAdapter { +public interface DBTraceCodeUnitAdapter extends TraceCodeUnit, MemBufferMixin { @Override DBTrace getTrace(); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceInstruction.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceInstruction.java index 64b7827935..9ba646ac6f 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceInstruction.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceInstruction.java @@ -110,7 +110,7 @@ public class DBTraceInstruction extends AbstractDBTraceCodeUnit assembly) throws Throwable { TraceMemoryManager mm = tb.trace.getMemoryManager(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread = tb.getOrAddThread("Thread1", 0); mm.addRegion("Regions[bin:.text]", Lifespan.nowOn(0), text, TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/pcode/exec/trace/BytesTracePcodeEmulatorTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/pcode/exec/trace/BytesTracePcodeEmulatorTest.java index 66a0696e41..349ca08731 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/pcode/exec/trace/BytesTracePcodeEmulatorTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/pcode/exec/trace/BytesTracePcodeEmulatorTest.java @@ -25,6 +25,7 @@ import java.util.List; import org.junit.Test; +import db.Transaction; import ghidra.app.plugin.assembler.*; import ghidra.app.plugin.assembler.sleigh.sem.AssemblyPatternBlock; import ghidra.dbg.target.schema.SchemaContext; @@ -48,7 +49,6 @@ import ghidra.trace.model.target.TraceObject.ConflictResolution; import ghidra.trace.model.target.TraceObjectKeyPath; import ghidra.trace.model.thread.TraceThread; import ghidra.util.NumericUtilities; -import ghidra.util.database.UndoableTransaction; public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest { @@ -80,7 +80,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest assertEquals(BigInteger.valueOf(0), TraceSleighUtils.evaluate("*:4 0x0010fffc:8", tb.trace, 0, thread, 0)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -115,7 +115,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest emuThread.stepInstruction(); emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -160,7 +160,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -207,7 +207,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest byte[] mov = asm.assembleLine(tb.addr(0x00401000), "movs r0, #123", thumbPat); // #123 is decimal - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { asm.patchProgram(mov, tb.addr(0x00401000)); } @@ -226,7 +226,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -258,7 +258,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest PcodeThread emuThread = emu.newThread(thread.getPath()); emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -292,7 +292,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest emuThread.stepInstruction(); // brds and 1st imm executed emuThread.stepInstruction(); // 3rd imm executed - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -336,7 +336,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest emuThread.stepInstruction(); emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -389,7 +389,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest emuThread.finishInstruction(); assertNull(emuThread.getFrame()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -513,7 +513,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest assertEquals("0c00400000000000", dumped.toString()); dumped.delete(0, dumped.length()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -573,7 +573,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest PcodeThread emuThread = emu.newThread(thread.getPath()); emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -610,7 +610,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest assertArrayEquals(tb.arr(0x07, 0, 0x40, 0, 0, 0, 0, 0), emuThread.getState().getVar(pc, Reason.INSPECT)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -647,7 +647,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest assertArrayEquals(tb.arr(0x02, 0, 0x40, 0, 0, 0, 0, 0), emuThread.getState().getVar(pc, Reason.INSPECT)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -673,7 +673,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest emuThread.stepInstruction(); emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -805,7 +805,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest RegisterValue ctxVal = new RegisterValue(ctxReg) .assign(longModeReg, BigInteger.ZERO); DBTraceRegisterContextManager ctxManager = tb.trace.getRegisterContextManager(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { ctxManager.setValue(lang, ctxVal, Lifespan.nowOn(0), tb.range(0x00400000, 0x00400002)); } @@ -829,7 +829,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest emuThread.stepInstruction(); emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -863,7 +863,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest PcodeThread emuThread = emu.newThread(thread.getPath()); emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -962,7 +962,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest PcodeThread emuThread = emu.newThread(thread.getPath()); emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 1); } @@ -989,7 +989,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest TraceMemoryManager mm = tb.trace.getMemoryManager(); TraceThread thread; TraceGuestPlatform x64; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { SchemaContext ctx = XmlSchemaContext.deserialize(DBTraceObjectManagerTest.XML_CTX); DBTraceObjectManager objects = tb.trace.getObjectManager(); objects.createRootObject(ctx.getSchema(new SchemaName("Session"))); @@ -1033,7 +1033,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest assertEquals(BigInteger.valueOf(0), TraceSleighUtils.evaluate(changedExpr, tb.trace, 0, thread, 0)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(x64, 1, 1); } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/pcode/exec/trace/TraceSleighUtilsTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/pcode/exec/trace/TraceSleighUtilsTest.java index abd05a7421..e59c14d6b5 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/pcode/exec/trace/TraceSleighUtilsTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/pcode/exec/trace/TraceSleighUtilsTest.java @@ -15,8 +15,7 @@ */ package ghidra.pcode.exec.trace; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.*; import java.math.BigInteger; import java.util.Map; @@ -24,6 +23,7 @@ import java.util.Map; import org.junit.Before; import org.junit.Test; +import db.Transaction; import ghidra.app.plugin.processors.sleigh.SleighLanguage; import ghidra.pcode.exec.*; import ghidra.pcode.exec.PcodeExecutorStatePiece.Reason; @@ -34,7 +34,6 @@ import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.model.memory.TraceMemorySpace; import ghidra.trace.model.memory.TraceMemoryState; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest { private static final String TOY_BE_64_HARVARD = "Toy:BE:64:harvard"; @@ -67,7 +66,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest public void testRegister() throws Exception { try (ToyDBTraceBuilder b = new ToyDBTraceBuilder("test", TOY_BE_64_HARVARD)) { TraceThread thread; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Thread1", 0); Register r0 = language.getRegister("r0"); @@ -84,7 +83,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest @Test public void testMemory() throws Exception { try (ToyDBTraceBuilder b = new ToyDBTraceBuilder("test", TOY_BE_64_HARVARD)) { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getMemoryManager().putBytes(0, b.addr(0x00400000), b.buf(1, 2, 3, 4)); } @@ -96,7 +95,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest @Test public void testBigMemory() throws Exception { try (ToyDBTraceBuilder b = new ToyDBTraceBuilder("test", TOY_BE_64_HARVARD)) { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getMemoryManager().putBytes(0, b.addr(0x00400000), b.buf(1, 2, 3, 4)); } @@ -111,7 +110,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest public void testRegDeref() throws Exception { try (ToyDBTraceBuilder b = new ToyDBTraceBuilder("test", TOY_BE_64_HARVARD)) { TraceThread thread; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Thread1", 0); Register r0 = language.getRegister("r0"); @@ -131,7 +130,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest public void testDoubleDeref() throws Exception { try (ToyDBTraceBuilder b = new ToyDBTraceBuilder("test", TOY_BE_64_HARVARD)) { TraceThread thread; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Thread1", 0); Register r0 = language.getRegister("r0"); @@ -154,7 +153,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest public void testDoubleDerefWithState() throws Exception { try (ToyDBTraceBuilder b = new ToyDBTraceBuilder("test", TOY_BE_64_HARVARD)) { TraceThread thread; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Thread1", 0); Register r0 = language.getRegister("r0"); @@ -184,7 +183,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest public void testDerefData() throws Exception { try (ToyDBTraceBuilder b = new ToyDBTraceBuilder("test", TOY_BE_64_HARVARD)) { TraceThread thread; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Thread1", 0); Register r0 = language.getRegister("r0"); @@ -216,7 +215,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest """, PcodeUseropLibrary.NIL); TraceThread thread; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Thread1", 0); PcodeExecutor executor = new PcodeExecutor<>(sp.getLanguage(), diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/DBTraceTimeViewportTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/DBTraceTimeViewportTest.java index 90a5504e9a..e166f886b8 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/DBTraceTimeViewportTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/DBTraceTimeViewportTest.java @@ -15,16 +15,16 @@ */ package ghidra.trace.database; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.*; import org.junit.Test; +import db.Transaction; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; import ghidra.trace.database.time.DBTraceTimeManager; import ghidra.trace.model.Lifespan; import ghidra.trace.model.Lifespan.*; import ghidra.trace.model.time.schedule.TraceSchedule; -import ghidra.util.database.UndoableTransaction; public class DBTraceTimeViewportTest extends AbstractGhidraHeadlessIntegrationTest { public static > LifeSet lifeSetOf(Lifespan... spans) { @@ -47,7 +47,7 @@ public class DBTraceTimeViewportTest extends AbstractGhidraHeadlessIntegrationTe @Test public void testSelfScheduleSnapshot0RemovesScratch() throws Exception { try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getTimeManager().getSnapshot(0, true).setSchedule(TraceSchedule.snap(0)); } @@ -60,7 +60,7 @@ public class DBTraceTimeViewportTest extends AbstractGhidraHeadlessIntegrationTe @Test public void testNotationalSchedulesDontFork() throws Exception { try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceTimeManager tm = tb.trace.getTimeManager(); tm.getSnapshot(0, true).setSchedule(TraceSchedule.snap(0)); tm.getSnapshot(5, true).setSchedule(TraceSchedule.parse("4:1")); @@ -75,7 +75,7 @@ public class DBTraceTimeViewportTest extends AbstractGhidraHeadlessIntegrationTe @Test public void testForkFromScratch() throws Exception { try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceTimeManager tm = tb.trace.getTimeManager(); tm.getSnapshot(0, true).setSchedule(TraceSchedule.snap(0)); tm.getSnapshot(Long.MIN_VALUE, true).setSchedule(TraceSchedule.parse("10:4")); @@ -91,7 +91,7 @@ public class DBTraceTimeViewportTest extends AbstractGhidraHeadlessIntegrationTe @Test public void testCyclesIgnored() throws Exception { try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { DBTraceTimeManager tm = tb.trace.getTimeManager(); tm.getSnapshot(Long.MIN_VALUE, true).setSchedule(TraceSchedule.parse("10:4")); } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/ToyDBTraceBuilder.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/ToyDBTraceBuilder.java index 68b746630f..b071e40189 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/ToyDBTraceBuilder.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/ToyDBTraceBuilder.java @@ -27,6 +27,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Collection; +import db.Transaction; import db.DBHandle; import generic.theme.GThemeDefaults.Colors.Messages; import ghidra.app.plugin.processors.sleigh.SleighLanguage; @@ -54,7 +55,6 @@ import ghidra.trace.model.symbol.TraceReferenceManager; import ghidra.trace.model.thread.TraceThread; import ghidra.util.Msg; import ghidra.util.database.DBOpenMode; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.*; import ghidra.util.task.ConsoleTaskMonitor; @@ -432,8 +432,8 @@ public class ToyDBTraceBuilder implements AutoCloseable { * * @return the transaction handle */ - public UndoableTransaction startTransaction() { - return UndoableTransaction.start(trace, "Testing"); + public Transaction startTransaction() { + return trace.openTransaction("Testing"); } /** diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/bookmark/DBTraceBookmarkManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/bookmark/DBTraceBookmarkManagerTest.java index afbf186158..9dc44c2b78 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/bookmark/DBTraceBookmarkManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/bookmark/DBTraceBookmarkManagerTest.java @@ -23,11 +23,11 @@ import java.util.Set; import org.junit.*; +import db.Transaction; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.model.Lifespan; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegrationTest { protected ToyDBTraceBuilder b; @@ -58,7 +58,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio DBTraceBookmark bm = manager.getBookmark(0); assertNull(bm); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { bm = b.addBookmark(0, 0, "Test Type", "Cat1", "Test comment"); } long id = bm.getId(); @@ -70,12 +70,12 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testDeleteBookmark() { DBTraceBookmark bm; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { bm = b.addBookmark(0, 0, "Test Type", "Cat1", "Test comment"); } long id = bm.getId(); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { bm.delete(); } DBTraceBookmark found = manager.getBookmark(id); @@ -86,7 +86,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio public void testGetRegisterBookmarkById() throws Exception { // TODO: Should I check that bookmarks in register spaces are enclosed by the corresponding thread's lifespan? DBTraceBookmark bm; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { bm = b.addRegisterBookmark(0, "Thread1", "r4", "Test Type", "Cat1", "Test comment"); } long id = bm.getId(); @@ -97,7 +97,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testGetCategoriesForType() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceThread thread = b.trace.getThreadManager().createThread("Thread1", 0); DBTraceBookmarkSpace rSpace = manager.getBookmarkRegisterSpace(thread, true); @@ -120,7 +120,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testGetBookmarksForType() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceBookmarkType type = b.getOrAddBookmarkType("Test Type"); assertFalse(type.hasBookmarks()); assertEquals(0, type.countBookmarks()); @@ -146,7 +146,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testGetAllBookmarks() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceBookmark bm1 = b.addBookmark(0, 0, "Test Type", "Cat1", "First"); DBTraceBookmark bm2 = b.addBookmark(1, 4, "Test Type", "Cat2", "Second"); @@ -156,7 +156,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testGetBookmarksAt() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceBookmark bm1 = b.addBookmark(0, 0, "Test Type", "Cat1", "First"); DBTraceBookmark bm2 = b.addBookmark(1, 4, "Test Type", "Cat2", "Second"); @@ -168,7 +168,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testGetBookmarksEnclosed() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceBookmark bm1 = b.addBookmark(0, 0, "Test Type", "Cat1", "First"); DBTraceBookmark bm2 = b.addBookmark(1, 4, "Test Type", "Cat2", "Second"); @@ -185,7 +185,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testGetBookmarksIntersecting() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceBookmark bm1 = b.addBookmark(0, 0, "Test Type", "Cat1", "First"); DBTraceBookmark bm2 = b.addBookmark(1, 4, "Test Type", "Cat2", "Second"); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/breakpoint/DBTraceBreakpointManagerObjectTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/breakpoint/DBTraceBreakpointManagerObjectTest.java index f197636d72..711056fddc 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/breakpoint/DBTraceBreakpointManagerObjectTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/breakpoint/DBTraceBreakpointManagerObjectTest.java @@ -17,10 +17,10 @@ package ghidra.trace.database.breakpoint; import org.junit.Before; +import db.Transaction; import ghidra.dbg.target.schema.SchemaContext; import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; import ghidra.dbg.target.schema.XmlSchemaContext; -import ghidra.util.database.UndoableTransaction; public class DBTraceBreakpointManagerObjectTest extends DBTraceBreakpointManagerTest { @@ -52,7 +52,7 @@ public class DBTraceBreakpointManagerObjectTest extends DBTraceBreakpointManager " " + // ""); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session"))); } } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/breakpoint/DBTraceBreakpointManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/breakpoint/DBTraceBreakpointManagerTest.java index 73c4bd0e04..6028127218 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/breakpoint/DBTraceBreakpointManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/breakpoint/DBTraceBreakpointManagerTest.java @@ -22,13 +22,13 @@ import java.util.Set; import org.junit.*; +import db.Transaction; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.model.Lifespan; import ghidra.trace.model.breakpoint.TraceBreakpoint; import ghidra.trace.model.breakpoint.TraceBreakpointKind; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrationTest { @@ -54,13 +54,13 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat @Test public void testAddBreakpoint() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { breakpointManager.addBreakpoint("Breakpoints[0]", Lifespan.span(0, 10), b.addr(0x00400000), Set.of(), Set.of(TraceBreakpointKind.SW_EXECUTE), true, "main"); } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { breakpointManager.addBreakpoint("Breakpoints[0]", Lifespan.span(0, 10), b.range(0x00400000, 0x00400003), Set.of(), Set.of(), false, "duplicate"); } @@ -72,7 +72,7 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat } protected void addBreakpoints() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Threads[1]", 0); // NB. threads parameter is deprecated by object mode. // For table mode, ensure the answer is the same as object mode @@ -151,7 +151,7 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat public void testSetGetName() throws Exception { addBreakpoints(); assertEquals("Breakpoints[0]", breakMain.getName()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { breakMain.setName("bpt 0"); assertEquals("bpt 0", breakMain.getName()); } @@ -186,7 +186,7 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat @Test public void testSetCleared() throws Exception { addBreakpoints(); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { breakMain.setClearedSnap(5); assertEquals(5, breakMain.getClearedSnap()); } @@ -200,7 +200,7 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat addBreakpoints(); TraceBreakpoint disMain; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceBreakpoint oopsMain = breakMain.splitAndSet(0, true, Set.of(TraceBreakpointKind.HW_EXECUTE)); assertSame(breakMain, oopsMain); @@ -223,12 +223,12 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat public void testSetIsEnabled() throws Exception { addBreakpoints(); assertTrue(breakMain.isEnabled(0)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { breakMain.setEnabled(false); assertFalse(breakMain.isEnabled(0)); } assertFalse(breakMain.isEnabled(0)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { breakMain.setEnabled(true); assertTrue(breakMain.isEnabled(0)); } @@ -239,7 +239,7 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat public void testSetGetKinds() throws Exception { addBreakpoints(); assertEquals(Set.of(TraceBreakpointKind.SW_EXECUTE), Set.copyOf(breakMain.getKinds())); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { breakMain.setKinds(Set.of(TraceBreakpointKind.HW_EXECUTE)); assertEquals(Set.of(TraceBreakpointKind.HW_EXECUTE), Set.copyOf(breakMain.getKinds())); } @@ -250,7 +250,7 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat public void testSetGetComment() throws Exception { addBreakpoints(); assertEquals("main", breakMain.getComment()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { breakMain.setComment("WinMain"); assertEquals("WinMain", breakMain.getComment()); } @@ -261,7 +261,7 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat public void testDelete() throws Exception { addBreakpoints(); assertEquals(breakMain, breakpointManager.getPlacedBreakpointByPath(0, "Breakpoints[0]")); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { breakMain.delete(); assertNull(breakpointManager.getPlacedBreakpointByPath(0, "Breakpoints[0]")); } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/data/DBTraceDataTypeManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/data/DBTraceDataTypeManagerTest.java index c659240af1..349a0f67b5 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/data/DBTraceDataTypeManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/data/DBTraceDataTypeManagerTest.java @@ -15,8 +15,7 @@ */ package ghidra.trace.database.data; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; +import static org.junit.Assert.*; import java.io.File; import java.io.IOException; @@ -25,6 +24,7 @@ import java.nio.file.Path; import org.junit.*; +import db.Transaction; import ghidra.program.model.data.*; import ghidra.program.model.lang.Language; import ghidra.program.model.lang.LanguageID; @@ -32,7 +32,6 @@ import ghidra.program.util.DefaultLanguageService; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; import ghidra.trace.database.DBTrace; import ghidra.util.InvalidNameException; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; import ghidra.util.task.ConsoleTaskMonitor; @@ -80,7 +79,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testSetName() throws InvalidNameException { - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) { + try (Transaction tx = trace.openTransaction("Testing")) { dtm.setName("Another name"); } assertEquals("Another name", trace.getName()); @@ -93,12 +92,12 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio Path tmpDir = Files.createTempDirectory("test"); File archiveFile = tmpDir.resolve("test.gdt").toFile(); FileDataTypeManager dtm2 = FileDataTypeManager.createFileArchive(archiveFile); - try (UndoableTransaction tid = UndoableTransaction.start(dtm2, "Testing")) { + try (Transaction tx = dtm2.openTransaction("Testing")) { dtm2.addDataType(mine, DataTypeConflictHandler.DEFAULT_HANDLER); } DataType got = dtm2.getDataType(minePath); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) { + try (Transaction tx = trace.openTransaction("Testing")) { dtm.addDataType(got, DataTypeConflictHandler.DEFAULT_HANDLER); } dtm2.delete(); @@ -112,7 +111,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio public void testAddAndGet() { StructureDataType mine = getTestDataType(); DataTypePath minePath = mine.getDataTypePath(); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) { + try (Transaction tx = trace.openTransaction("Testing")) { dtm.addDataType(mine, DataTypeConflictHandler.REPLACE_HANDLER); } @@ -125,14 +124,14 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio public void testAddRemoveUndoThenGet() throws IOException { StructureDataType mine = getTestDataType(); DataTypePath minePath = mine.getDataTypePath(); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) { + try (Transaction tx = trace.openTransaction("Testing")) { dtm.addDataType(mine, DataTypeConflictHandler.REPLACE_HANDLER); } DataType got = dtm.getDataType(minePath); assertEquals(mine.toString(), got.toString()); // TODO: Eww - try (UndoableTransaction tid = UndoableTransaction.start(trace, "To Undo")) { + try (Transaction tx = trace.openTransaction("To Undo")) { dtm.remove(got, new ConsoleTaskMonitor()); } @@ -148,7 +147,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio public void testChangeDataType() { StructureDataType mine = getTestDataType(); DataTypePath minePath = mine.getDataTypePath(); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) { + try (Transaction tx = trace.openTransaction("Testing")) { dtm.addDataType(mine, DataTypeConflictHandler.REPLACE_HANDLER); Structure got = (Structure) dtm.getDataType(minePath); @@ -165,7 +164,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio DataTypePath mineAPath = mineA.getDataTypePath(); StructureDataType mineB = getTestDataTypeB(); DataTypePath mineBPath = mineB.getDataTypePath(); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) { + try (Transaction tx = trace.openTransaction("Testing")) { dtm.addDataType(mineA, DataTypeConflictHandler.REPLACE_HANDLER); DataType got = dtm.getDataType(mineAPath); @@ -181,7 +180,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio StructureDataType mine = getTestDataType(); DataTypePath minePath = mine.getDataTypePath(); DataType got; - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) { + try (Transaction tx = trace.openTransaction("Testing")) { dtm.addDataType(mine, DataTypeConflictHandler.REPLACE_HANDLER); got = dtm.getDataType(minePath); @@ -197,7 +196,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio StructureDataType mine = getTestDataType(); DataTypePath minePath = mine.getDataTypePath(); DataType got; - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) { + try (Transaction tx = trace.openTransaction("Testing")) { dtm.addDataType(mine, DataTypeConflictHandler.REPLACE_HANDLER); got = dtm.getDataType(minePath); @@ -211,7 +210,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testCreateCategory() { Category category; - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) { + try (Transaction tx = trace.openTransaction("Testing")) { category = dtm.createCategory(new CategoryPath("/Another/Path")); } assertEquals(category, dtm.getCategory(new CategoryPath("/Another/Path"))); @@ -220,7 +219,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testMoveCategory() throws DuplicateNameException { Category toMove; - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) { + try (Transaction tx = trace.openTransaction("Testing")) { Category category = dtm.createCategory(new CategoryPath("/Another/Path")); toMove = dtm.createCategory(new CategoryPath("/MoveMe")); category.moveCategory(toMove, new ConsoleTaskMonitor()); @@ -231,7 +230,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testRenameCategory() throws DuplicateNameException, InvalidNameException { Category category; - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) { + try (Transaction tx = trace.openTransaction("Testing")) { category = dtm.createCategory(new CategoryPath("/Another/Path")); category.setName("Renamed"); } @@ -241,12 +240,12 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testRemoveCategory() { Category category; - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) { + try (Transaction tx = trace.openTransaction("Testing")) { category = dtm.createCategory(new CategoryPath("/Another/Path")); } assertEquals(category, dtm.getCategory(new CategoryPath("/Another/Path"))); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) { + try (Transaction tx = trace.openTransaction("Testing")) { dtm.getCategory(new CategoryPath("/Another")) .removeEmptyCategory("Path", new ConsoleTaskMonitor()); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/guest/DBTraceObjectRegisterSupportTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/guest/DBTraceObjectRegisterSupportTest.java index 556a539854..44cc7d94bc 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/guest/DBTraceObjectRegisterSupportTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/guest/DBTraceObjectRegisterSupportTest.java @@ -23,6 +23,7 @@ import java.nio.ByteBuffer; import org.junit.Before; import org.junit.Test; +import db.Transaction; import ghidra.dbg.target.TargetRegister; import ghidra.dbg.target.schema.SchemaContext; import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; @@ -41,7 +42,6 @@ import ghidra.trace.model.memory.TraceMemorySpace; import ghidra.trace.model.target.TraceObject; import ghidra.trace.model.target.TraceObject.ConflictResolution; import ghidra.trace.model.target.TraceObjectKeyPath; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessIntegrationTest { @@ -61,7 +61,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte @Test public void testRegisterMappingHost() throws DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObject thread = @@ -89,7 +89,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte @Test public void testRegisterMappingGuest() throws Throwable { TraceGuestPlatform amd64; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObject thread = @@ -123,7 +123,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte public void testRegisterMappingLabel() throws Throwable { TraceGuestPlatform amd64; Register RAX; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObject thread = @@ -158,7 +158,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte @Test public void testRegisterMappingGuestMemoryMapped() throws Throwable { TraceGuestPlatform avr8; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObject thread = @@ -192,7 +192,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte public void testRegisterMappingGuestMemoryMappedHostOverlay() throws Throwable { TraceGuestPlatform avr8; AddressSpace overlay; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObject thread = @@ -230,7 +230,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte public void testRegisterMappingLabelMemoryMapped() throws Throwable { TraceGuestPlatform avr8; Register R0; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObject thread = @@ -265,7 +265,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte public void testAddLabelCopiesRegisterValues() throws Throwable { TraceGuestPlatform amd64; Register RAX; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObject thread = @@ -302,7 +302,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte public void testAddLabelCopiesRegisterValuesMemoryMapped() throws Throwable { TraceGuestPlatform avr8; Register R0; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObject thread = @@ -337,7 +337,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte @Test public void testAddGuestMappingCopiesRegisterValues() throws Throwable { TraceGuestPlatform amd64; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObject thread = @@ -370,7 +370,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte @Test public void testAddOverlaySpaceCopiesRegisterValues() throws Throwable { TraceGuestPlatform amd64; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObject thread = @@ -406,7 +406,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte DBTraceGuestPlatform x86; AddressSpace registers = b.trace.getBaseAddressFactory().getRegisterSpace(); AddressSpace overlay; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); x86 = b.trace.getPlatformManager() @@ -437,7 +437,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte AddressSpace overlay; Register EAX; Register EBX; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); x86 = b.trace.getPlatformManager() @@ -465,7 +465,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte AddressSpace registers = b.trace.getBaseAddressFactory().getRegisterSpace(); AddressSpace overlay; Register r0; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); r0 = b.language.getRegister("r0"); overlay = b.trace.getMemoryManager() diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/guest/DBTracePlatformManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/guest/DBTracePlatformManagerTest.java index 72c83f69cf..f47e8baa2f 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/guest/DBTracePlatformManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/guest/DBTracePlatformManagerTest.java @@ -23,11 +23,11 @@ import java.util.*; import org.junit.*; +import db.Transaction; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.model.guest.TraceGuestPlatform; import ghidra.trace.model.guest.TracePlatform; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.ConsoleTaskMonitor; public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegrationTest { @@ -54,7 +54,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testAddGuestPlatform() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(0, manager.languageStore.getRecordCount()); assertEquals(0, manager.platformStore.getRecordCount()); manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); @@ -65,7 +65,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testAddGuestPlatformHostCompilerErr() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.addGuestPlatform(b.getLanguage("Toy:BE:64:default").getDefaultCompilerSpec()); fail(); } @@ -80,7 +80,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testAddGuestPlatformHostLanguage() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(0, manager.languageStore.getRecordCount()); assertEquals(0, manager.platformStore.getRecordCount()); manager.addGuestPlatform(b.getCompiler("Toy:BE:64:default", "long8")); @@ -92,7 +92,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testGetGuestPlatforms() throws Throwable { DBTraceGuestPlatform guest; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertTrue(manager.getGuestPlatforms().isEmpty()); guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); } @@ -102,7 +102,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testAddPlatformThenUndo() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); } @@ -113,7 +113,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testAddPlatformThenSaveAndLoad() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); } @@ -133,11 +133,11 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testDeleteGuestPlatform() throws Throwable { DBTraceGuestPlatform guest; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { guest.delete(new ConsoleTaskMonitor()); } @@ -147,7 +147,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testAddMappedRange() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceGuestPlatform guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); @@ -175,7 +175,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testGetHostAndGuestAddressSet() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceGuestPlatform guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); assertEquals(b.set(), guest.getHostAddressSet()); @@ -188,7 +188,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testMapHostToGuest() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceGuestPlatform guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); guest.addMappedRange(b.addr(0x01000000), b.addr(guest, 0x02000000), 0x1000); @@ -204,7 +204,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testMapGuestToHost() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceGuestPlatform guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); guest.addMappedRange(b.addr(0x01000000), b.addr(guest, 0x02000000), 0x1000); @@ -220,7 +220,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testAddMappedRangeThenSaveAndLoad() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceGuestPlatform guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); guest.addMappedRange(b.addr(0x01000000), b.addr(guest, 0x02000000), 0x1000); @@ -237,7 +237,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testMappedRangeGetHostLanguage() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceGuestPlatform guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); DBTraceGuestPlatformMappedRange range = @@ -249,7 +249,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testMappedRangeGetHostRange() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceGuestPlatform guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); DBTraceGuestPlatformMappedRange range = @@ -260,7 +260,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testMappedRangeGetGuestPlatform() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceGuestPlatform guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); DBTraceGuestPlatformMappedRange range = @@ -271,7 +271,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testMappedRangeGetGuestRange() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceGuestPlatform guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); DBTraceGuestPlatformMappedRange range = @@ -282,7 +282,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio @Test public void testDeleteMappedRange() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceGuestPlatform guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); DBTraceGuestPlatformMappedRange range = @@ -305,14 +305,14 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio public void testDeleteMappedRangeThenUndo() throws Throwable { DBTraceGuestPlatform guest; DBTraceGuestPlatformMappedRange range; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); range = guest.addMappedRange(b.addr(0x01000000), b.addr(guest, 0x02000000), 0x1000); assertNotNull(guest.mapHostToGuest(b.addr(0x01000800))); // Sanity check assertNotNull(guest.mapGuestToHost(b.addr(guest, 0x02000800))); // Sanity check } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { range.delete(new ConsoleTaskMonitor()); assertNull(guest.mapHostToGuest(b.addr(0x01000800))); // Sanity check assertNull(guest.mapGuestToHost(b.addr(guest, 0x02000800))); // Sanity check @@ -330,12 +330,12 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio public void testDeleteGuestPlatformDeletesMappedRanges() throws Throwable { // TODO: Check that it also deletes code units DBTraceGuestPlatform guest; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); guest.addMappedRange(b.addr(0x01000000), b.addr(guest, 0x02000000), 0x1000); } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { guest.delete(new ConsoleTaskMonitor()); assertEquals(0, manager.rangeMappingStore.getRecordCount()); } @@ -345,12 +345,12 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio public void testDeleteGuestPlatformThenUndo() throws Throwable { // TODO: Check that it also deletes code units DBTraceGuestPlatform guest; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc")); guest.addMappedRange(b.addr(0x01000000), b.addr(guest, 0x02000000), 0x1000); } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { guest.delete(new ConsoleTaskMonitor()); } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/listing/DBTraceCodeManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/listing/DBTraceCodeManagerTest.java index 36ea9f7b35..632f6d0382 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/listing/DBTraceCodeManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/listing/DBTraceCodeManagerTest.java @@ -27,6 +27,7 @@ import java.util.function.Function; import org.junit.*; +import db.Transaction; import ghidra.lifecycle.Unfinished; import ghidra.program.model.address.*; import ghidra.program.model.data.*; @@ -46,7 +47,6 @@ import ghidra.trace.model.listing.*; import ghidra.trace.model.stack.TraceStack; import ghidra.trace.model.thread.TraceThread; import ghidra.util.IntersectionAddressSetView; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.CancelledException; import ghidra.util.task.ConsoleTaskMonitor; import ghidra.util.task.TaskMonitor; @@ -112,14 +112,14 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testAddDefinedData() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); } } @Test public void testAddDataPrecedingBytesChanged() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getMemoryManager().putBytes(10, b.addr(0x4001), b.buf(0xaa)); TraceData d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); @@ -129,7 +129,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testPutBytesTruncatesDynamicData() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceData d4000 = b.addData(0, b.addr(0x4000), NoMaxStringDataType.dataType, b.buf("Hello")); assertEquals(b.addr(0x4005), d4000.getMaxAddress()); @@ -142,7 +142,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testPutBytesSplitsDynamicDataSameLength() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceData d0at4000 = b.addData(0, b.addr(0x4000), NoMaxStringDataType.dataType, b.buf("Hello")); assertEquals(b.addr(0x4005), d0at4000.getMaxAddress()); @@ -158,7 +158,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testPutBytesSplitsStaticData() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceData d0at4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); assertEquals(Lifespan.nowOn(0), d0at4000.getLifespan()); @@ -174,7 +174,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testPutBytesInScratchLeavesStaticDataUntouched() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceData d0at4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); assertEquals(Lifespan.nowOn(0), d0at4000.getLifespan()); @@ -191,7 +191,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testPutBytesDeletesDynamicData() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceData d4000 = b.addData(0, b.addr(0x4000), NoMaxStringDataType.dataType, b.buf("Hello")); assertEquals(b.addr(0x4005), d4000.getMaxAddress()); @@ -203,14 +203,14 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testAddInstruction() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); } } @Test public void testAddInstructionPrecedingBytesChanged() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getMemoryManager().putBytes(10, b.addr(0x4001), b.buf(0xaa)); TraceInstruction i4000 = b.addInstruction(0, b.addr(0x4000), b.host, b.buf(0xf4, 0)); @@ -220,7 +220,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testAddInstructionInScratch() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getMemoryManager().putBytes(-5, b.addr(0x4001), b.buf(0xaa)); TraceInstruction i4000 = b.addInstruction(-10, b.addr(0x4000), b.host, b.buf(0xf4, 0)); @@ -238,7 +238,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testPutBytesTruncatesInstruction() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceInstruction i4000 = b.addInstruction(0, b.addr(0x4000), b.host, b.buf(0xf4, 0)); assertEquals(b.addr(0x4001), i4000.getMaxAddress()); @@ -251,7 +251,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testPutBytesDeletesInstruction() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceInstruction i4000 = b.addInstruction(0, b.addr(0x4000), b.host, b.buf(0xf4, 0)); assertEquals(b.addr(0x4001), i4000.getMaxAddress()); @@ -263,7 +263,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testAddUndefinedData() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addData(0, b.addr(0x4000), DefaultDataType.dataType, b.buf(1)); DBTraceCodeSpace code = manager.getCodeSpace(b.language.getDefaultSpace(), true); assertTrue(code.definedData().mapSpace.isEmpty()); @@ -272,7 +272,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testOverlapErrors() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); try { @@ -315,7 +315,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes ArrayList> creators = new ArrayList<>(); for (int i = 0; i < 10; i++) { creators.add(CompletableFuture.supplyAsync(() -> { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getCodeManager() .definedData() .create(Lifespan.ALL, b.addr(0x4000), IntegerDataType.dataType); @@ -335,13 +335,13 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testOverlapAllowedAfterAbort() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getCodeManager() .definedData() .create(Lifespan.ALL, b.addr(0x4000), IntegerDataType.dataType); - tid.abort(); + tx.abort(); } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getCodeManager() .definedData() .create(Lifespan.ALL, b.addr(0x4000), IntegerDataType.dataType); @@ -349,14 +349,14 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes } public void testOverlapErrAfterInvalidate() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getCodeManager() .definedData() .create(Lifespan.ALL, b.addr(0x4000), IntegerDataType.dataType); } b.trace.undo(); b.trace.redo(); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getCodeManager() .definedData() .create(Lifespan.ALL, b.addr(0x4000), IntegerDataType.dataType); @@ -377,12 +377,12 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes public void testOverlapErrWithDataTypeSettings() throws Throwable { AddressSpace space = b.trace.getBaseAddressFactory().getDefaultAddressSpace(); PointerTypedef type = new PointerTypedef(null, VoidDataType.dataType, 8, null, space); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getCodeManager() .definedData() .create(Lifespan.ALL, b.addr(0x4000), type); } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getCodeManager() .definedData() .create(Lifespan.ALL, b.addr(0x4000), type); @@ -395,7 +395,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testOverlapErrAfterSetEndSnap() throws Throwable { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceDataAdapter data = b.trace.getCodeManager() .definedData() .create(Lifespan.ALL, b.addr(0x4000), IntegerDataType.dataType); @@ -403,7 +403,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes data.setEndSnap(-10); assertEquals(Lifespan.before(-9), data.getLifespan()); } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getCodeManager() .definedData() .create(Lifespan.ALL, b.addr(0x4000), IntegerDataType.dataType); @@ -454,7 +454,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testGetAt() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertUndefinedFunc(v -> v.getAt(0, b.addr(0x4000))); TraceData d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); @@ -485,7 +485,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testGetContaining() throws CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertUndefinedFunc(v -> v.getContaining(0, b.addr(0x4000))); TraceData d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); @@ -565,7 +565,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes TraceData d4000; TraceData d4004; TraceInstruction i4008; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); d4000.setEndSnap(9); d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8)); @@ -707,7 +707,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes TraceData d4000; TraceData d4004; TraceInstruction i4008; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); d4000.setEndSnap(9); d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8)); @@ -846,7 +846,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes TraceData d4000; TraceData d4004; TraceInstruction i4008; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); d4000.setEndSnap(9); d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8)); @@ -986,7 +986,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes TraceData d4000; TraceData d4004; TraceInstruction i4008; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); d4000.setEndSnap(9); d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8)); @@ -1200,7 +1200,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes TraceData d4000; TraceData d4004; TraceInstruction i4008; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); d4000.setEndSnap(9); d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8)); @@ -1257,7 +1257,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes manager.undefinedData().getAfter(0, b.addr(-0x0001))); TraceInstruction iCodeMax; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { iCodeMax = b.addInstruction(0, b.addr(-0x0002), b.host, b.buf(0xf4, 0)); } @@ -1275,7 +1275,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes b.trace.undo(); TraceData dDataMin; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { dDataMin = b.addData(0, b.data(0x0000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); } @@ -1290,7 +1290,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes assertUndefinedWithAddr(b.addr(-0x0001), manager.undefinedData().getFloor(0, b.data(0x0003))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { iCodeMax = b.addInstruction(0, b.addr(-0x0002), b.host, b.buf(0xf4, 0)); } TraceData uCodePre = manager.undefinedData().getAt(0, b.addr(-0x0003)); @@ -1327,7 +1327,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes public void testGetsSingleSpace() throws CodeUnitInsertionException { TraceData d4000; TraceInstruction i4008; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); d4000.setEndSnap(9); i4008 = b.addInstruction(0, b.addr(0x4008), b.host, b.buf(0xf4, 0)); @@ -1394,7 +1394,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes DBTraceCodeSpace regCode; TraceData dR4; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Thread 1", 0); regCode = manager.getCodeRegisterSpace(thread, true); dR4 = regCode.definedData() @@ -1413,7 +1413,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes DBTraceCodeSpace frameCode; TraceData dR5; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceStack stack = b.trace.getStackManager().getStack(thread, 0, true); stack.setDepth(2, true); assertEquals(regCode, manager.getCodeRegisterSpace(stack.getFrame(0, false), false)); @@ -1460,7 +1460,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes TraceData d4000; TraceData d4004; TraceInstruction i4008; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); d4000.setEndSnap(9); d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8)); @@ -1530,7 +1530,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes TraceData d4000; TraceData d4004; TraceInstruction i4008; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); d4000.setEndSnap(9); d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8)); @@ -1605,7 +1605,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes TraceData d4000; TraceData d4004; TraceInstruction i4008; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); d4000.setEndSnap(9); d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8)); @@ -1690,7 +1690,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes TraceData d4000; TraceData d4004; TraceInstruction i4008; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); d4000.setEndSnap(9); d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8)); @@ -1700,7 +1700,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes } assertEquals(d4000, manager.definedUnits().getAt(0, b.addr(0x4000))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.definedUnits() .clear(Lifespan.ALL, b.range(0x0000, -0x0001), false, TaskMonitor.DUMMY); @@ -1716,7 +1716,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes i4008 = manager.instructions().getAt(0, b.addr(0x4008)); assertEquals(d4000, manager.definedUnits().getAt(7, b.addr(0x4000))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.definedUnits() .clear(Lifespan.span(7, 8), b.range(0x0000, -0x0001), false, TaskMonitor.DUMMY); @@ -1734,7 +1734,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes i4008 = manager.instructions().getAt(0, b.addr(0x4008)); assertEquals(d4000, manager.definedUnits().getAt(7, b.addr(0x4000))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.definedUnits() .clear(Lifespan.span(7, 8), b.range(0x4000, 0x4000), false, TaskMonitor.DUMMY); @@ -1752,7 +1752,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes i4008 = manager.instructions().getAt(0, b.addr(0x4008)); assertEquals(d4000, manager.definedUnits().getAt(0, b.addr(0x4000))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.instructions() .clear(Lifespan.ALL, b.range(0x0000, -0x0001), false, TaskMonitor.DUMMY); @@ -1767,7 +1767,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes i4008 = manager.instructions().getAt(0, b.addr(0x4008)); assertEquals(d4000, manager.definedUnits().getAt(0, b.addr(0x4000))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.definedData() .clear(Lifespan.ALL, b.range(0x0000, -0x0001), false, TaskMonitor.DUMMY); @@ -1789,7 +1789,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes TraceData d4000; TraceData d4004; TraceInstruction i4008; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4)); d4000.setEndSnap(9); d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8)); @@ -1807,7 +1807,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes assertEquals(rvOne, ctxManager.getValue(b.language, r4, 0, b.addr(0x4008))); assertEquals(rvOne, ctxManager.getValue(b.language, r4, 7, b.addr(0x4008))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.instructions() .clear(Lifespan.ALL, b.range(0x0000, -0x0001), true, TaskMonitor.DUMMY); @@ -1818,7 +1818,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes assertEquals(rvOne, ctxManager.getValue(b.language, r4, 0, b.addr(0x4008))); assertEquals(rvOne, ctxManager.getValue(b.language, r4, 7, b.addr(0x4008))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.instructions() .clear(Lifespan.span(7, 7), b.range(0x0000, -0x0001), true, TaskMonitor.DUMMY); @@ -1838,7 +1838,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes TraceInstruction g4000; TraceInstruction i4001; TraceData d4003; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { guest = langMan.addGuestPlatform(x86.getDefaultCompilerSpec()); mappedRange = guest.addMappedRange(b.addr(0x0000), b.addr(guest, 0x0000), 1L << 32); g4000 = b.addInstruction(0, b.addr(0x4000), guest, b.buf(0x90)); @@ -1847,7 +1847,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes } assertEquals(g4000, manager.codeUnits().getAt(0, b.addr(0x4000))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mappedRange.delete(new ConsoleTaskMonitor()); } assertUndefinedWithAddr(b.addr(0x4000), manager.codeUnits().getAt(0, b.addr(0x4000))); @@ -1861,7 +1861,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes g4000 = manager.instructions().getAt(0, b.addr(0x4000)); assertNotNull(g4000); assertEquals(guest, g4000.getPlatform()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { guest.delete(new ConsoleTaskMonitor()); } assertUndefinedWithAddr(b.addr(0x4000), manager.codeUnits().getAt(0, b.addr(0x4000))); @@ -1874,7 +1874,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testSaveAndLoad() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); TraceThread thread = b.getOrAddThread("Thread 1", 0); @@ -1922,7 +1922,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testUndoThenRedo() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); TraceThread thread = b.getOrAddThread("Thread 1", 0); @@ -1970,7 +1970,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testOverlaySpaces() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { AddressSpace os = b.trace.getMemoryManager() .createOverlayAddressSpace("test", b.trace.getBaseAddressFactory().getDefaultAddressSpace()); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/listing/DBTraceCodeUnitTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/listing/DBTraceCodeUnitTest.java index b958aa19b5..6d0f0fc261 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/listing/DBTraceCodeUnitTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/listing/DBTraceCodeUnitTest.java @@ -25,8 +25,7 @@ import java.util.*; import org.junit.*; -import db.IntField; -import db.StringField; +import db.*; import ghidra.app.plugin.assembler.*; import ghidra.docking.settings.Settings; import ghidra.lifecycle.Unfinished; @@ -54,7 +53,6 @@ import ghidra.trace.model.symbol.TraceReference; import ghidra.trace.model.symbol.TraceStackReference; import ghidra.trace.model.thread.TraceThread; import ghidra.util.*; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; import ghidra.util.exception.NoValueException; import ghidra.util.map.TypeMismatchException; @@ -186,7 +184,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest public void testCodeUnitLocationGetters() throws CodeUnitInsertionException, TraceOverlappedRegionException, DuplicateNameException { TraceInstruction ins; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { ins = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); } TraceData und = manager.undefinedData().getAt(0, b.addr(0x4006)); @@ -210,7 +208,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest assertEquals("ram:00004004", ins.getAddressString(true, false)); assertEquals("ram:0000000000004004", ins.getAddressString(true, true)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getMemoryManager() .addRegion(".text", Lifespan.nowOn(0), b.range(0x4000, 0x4fff), TraceMemoryFlag.READ); @@ -225,7 +223,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest @Test public void testGetProgram() throws CodeUnitInsertionException { TraceInstruction i4004; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); } @@ -235,7 +233,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest @Test public void testGetMemory() throws CodeUnitInsertionException { TraceInstruction i4004; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); } @@ -248,7 +246,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest TraceGuestPlatform guest; TraceInstruction i4004; TraceInstruction g4006; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); guest = b.trace.getPlatformManager().addGuestPlatform(x86.getDefaultCompilerSpec()); guest.addMappedRange(b.addr(0x0000), b.addr(guest, 0x0000), 1L << 32); @@ -263,14 +261,14 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest public void testPropertySettersGetters() throws CodeUnitInsertionException, NoValueException { TraceInstruction i4004; TraceInstruction i4006; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); i4006 = b.addInstruction(0, b.addr(0x4006), b.host, b.buf(0xf4, 0)); } assertFalse(i4004.hasProperty("myVoid")); assertFalse(i4004.getVoidProperty("myVoid")); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setProperty("myVoid"); } assertTrue(i4004.hasProperty("myVoid")); @@ -288,7 +286,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest // pass } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setProperty("myInt", 0x1234); } assertTrue(i4004.hasProperty("myInt")); @@ -311,7 +309,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest // pass } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setProperty("myString", "Hello!"); } assertTrue(i4004.hasProperty("myString")); @@ -329,7 +327,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest // pass } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setProperty("mySaveable", TestSaveable.class, new TestSaveable(0x5678, "Good bye!")); i4004.setProperty("myObject", new TestSaveable(0x9abc, "Bonjour!")); @@ -355,7 +353,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest set(i4004.propertyNames())); assertEquals(Set.of(), set(i4006.propertyNames())); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.removeProperty("myVoid"); i4006.removeProperty("myVoid"); // NOP i4004.removeProperty("noProperty"); @@ -381,19 +379,19 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest public void testCommentSettersGetters() throws CodeUnitInsertionException { TraceInstruction i4004; TraceInstruction i4006; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); i4006 = b.addInstruction(0, b.addr(0x4006), b.host, b.buf(0xf4, 0)); } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setComment(CodeUnit.NO_COMMENT, "Shouldn't work"); fail(); } catch (IllegalArgumentException e) { // pass } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setComment(5, "Shouldn't work"); fail(); } @@ -402,14 +400,14 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest } assertNull(i4004.getComment(CodeUnit.EOL_COMMENT)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setComment(CodeUnit.EOL_COMMENT, "My EOL Comment"); } assertEquals("My EOL Comment", i4004.getComment(CodeUnit.EOL_COMMENT)); assertNull(i4006.getComment(CodeUnit.EOL_COMMENT)); assertArrayEquals(EMPTY_STRING_ARRAY, i4004.getCommentAsArray(CodeUnit.PRE_COMMENT)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setCommentAsArray(CodeUnit.PRE_COMMENT, new String[] { "My", "Pre", "Comment" }); } assertEquals("My EOL Comment", i4004.getComment(CodeUnit.EOL_COMMENT)); @@ -418,7 +416,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest assertArrayEquals(EMPTY_STRING_ARRAY, i4006.getCommentAsArray(CodeUnit.PRE_COMMENT)); assertEquals("My\nPre\nComment", i4004.getComment(CodeUnit.PRE_COMMENT)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setCommentAsArray(CodeUnit.PRE_COMMENT, null); i4006.setCommentAsArray(CodeUnit.PRE_COMMENT, null); // NOP } @@ -431,7 +429,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest commentAdapter.reduce(TraceAddressSnapRangeQuery.at(b.addr(0x4004), 0)).firstValue(); assertNotNull(c4004); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setEndSnap(9); i4006.setEndSnap(9); // TODO: Decide whether or not to shrink the comment lifespan with the unit lifespan @@ -444,14 +442,14 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest assertEquals(Lifespan.span(0, 9), c4004.getLifespan()); assertEquals("My EOL Comment", i4004.getComment(CodeUnit.EOL_COMMENT)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { commentAdapter.clearComments(Lifespan.nowOn(0), b.range(0x4000, 0x5000), CodeUnit.EOL_COMMENT); } assertNull(i4004.getComment(CodeUnit.EOL_COMMENT)); assertEquals("Get this back in the mix", i4004_10.getComment(CodeUnit.PRE_COMMENT)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { commentAdapter.clearComments(Lifespan.nowOn(0), b.range(0x4000, 0x5000), CodeUnit.NO_COMMENT); } @@ -464,7 +462,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest TraceInstruction i4004; TraceInstruction i4006; TraceData d4008; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); i4006 = b.addInstruction(0, b.addr(0x4006), b.host, b.buf(0xf4, 0)); d4008 = b.addData(0, b.addr(0x4008), LongDataType.dataType, b.buf(1, 2, 3, 4)); @@ -489,7 +487,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest TraceData d4000; TraceInstruction i4004; TraceInstruction i4006; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), LongDataType.dataType, b.buf(1, 2, 3, 4)); i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); i4006 = b.addInstruction(0, b.addr(0x4006), b.host, b.buf(0xf4, 0)); @@ -497,7 +495,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest Set refs; assertArrayEquals(new TraceReference[] {}, d4000.getValueReferences()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000.addValueReference(b.addr(0x5000), RefType.DATA); // ODD: No source parameter? } refs = set(d4000.getValueReferences()); @@ -511,7 +509,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest assertEquals(0, valueRef.getOperandIndex()); assertArrayEquals(new TraceReference[] {}, i4004.getMnemonicReferences()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.addMnemonicReference(b.addr(0x5000), RefType.READ, SourceType.USER_DEFINED); } refs = set(i4004.getMnemonicReferences()); @@ -527,7 +525,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest // TODO: Should I be allowed to add an operand reference for a non-existent operand? assertArrayEquals(new TraceReference[] {}, i4004.getOperandReferences(0)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.addOperandReference(0, b.addr(0x5001), RefType.WRITE, SourceType.USER_DEFINED); } refs = set(i4004.getOperandReferences(0)); @@ -541,7 +539,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest assertEquals(SourceType.USER_DEFINED, opRef.getSource()); assertEquals(0, opRef.getOperandIndex()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setStackReference(CodeUnit.MNEMONIC, -0x30, SourceType.USER_DEFINED, RefType.READ); } @@ -557,7 +555,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest assertEquals(SourceType.USER_DEFINED, stackRef.getSource()); assertEquals(CodeUnit.MNEMONIC, stackRef.getOperandIndex()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setRegisterReference(CodeUnit.MNEMONIC, b.language.getRegister("r4"), SourceType.USER_DEFINED, RefType.READ); } @@ -574,7 +572,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest assertEquals(SourceType.USER_DEFINED, regRef.getSource()); assertEquals(CodeUnit.MNEMONIC, regRef.getOperandIndex()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setPrimaryMemoryReference(stackRef); } assertEquals(stackRef, i4004.getPrimaryReference(CodeUnit.MNEMONIC)); @@ -582,7 +580,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest assertEquals(Set.of(mnemRef, opRef, stackRef, regRef), set(i4004.getReferencesFrom())); DBTraceReference refTo; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { refTo = b.trace.getReferenceManager() .addMemoryReference(Lifespan.ALL, b.addr(0x3000), b.addr(0x4004), RefType.COMPUTED_JUMP, SourceType.USER_DEFINED, @@ -592,32 +590,32 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest assertNull(i4004.getExternalReference(CodeUnit.MNEMONIC)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000.removeValueReference(b.addr(0x6000)); // NOP } assertEquals(Set.of(valueRef), set(d4000.getValueReferences())); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000.removeValueReference(b.addr(0x5000)); } assertArrayEquals(new TraceReference[] {}, d4000.getValueReferences()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.removeMnemonicReference(b.addr(0x6000)); // NOP } assertEquals(Set.of(mnemRef, stackRef, regRef), set(i4004.getMnemonicReferences())); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.removeMnemonicReference(b.addr(0x5000)); } assertEquals(Set.of(stackRef, regRef), set(i4004.getMnemonicReferences())); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.removeOperandReference(0, b.addr(0x5001)); // NOP } assertEquals(0, i4004.getOperandReferences(1).length); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { // All modules should be loaded in trace. i4004.removeExternalReference(CodeUnit.MNEMONIC); fail(); @@ -634,7 +632,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest TraceData data; TraceData undefined; TraceData undReg; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { instruction = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); undefined = manager.undefinedData().getAt(0, b.addr(0x4006)); @@ -664,7 +662,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest public void testSetEndSnap() throws CodeUnitInsertionException { TraceData d4000; TraceInstruction i4004; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), LongDataType.dataType, b.buf(1, 2, 3, 4)); i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); @@ -699,7 +697,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest // TODO: Test listen for events } TraceData u4006 = manager.undefinedData().getAt(0, b.addr(0x4007)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { u4006.setEndSnap(10); fail(); } @@ -717,7 +715,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest TraceData und; TraceData reg; TraceInstruction lil; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { data = b.addData(0, b.addr(0x4000), LongDataType.dataType, b.buf(1, 2, 3, 4)); // In space without memory, yet. und = manager.undefinedData().getAt(0, b.data(0x7fff)); @@ -740,7 +738,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest assertEquals(4, data.getBytes(buf, 0)); assertArrayEquals(b.arr(1, 2, 3, 4), buf.array()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { data = b.addData(0, b.addr(0x4004), LongDataType.dataType, b.buf(1, 2, 3, 4)); } buf = ByteBuffer.allocate(1); @@ -781,7 +779,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest buf = ByteBuffer.allocate(1); assertEquals(0, und.getBytes(buf, 0)); // Because the memory space has not been created - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceMemorySpace dataMem = b.trace.getMemoryManager().getMemorySpace(b.language.getDefaultDataSpace(), true); dataMem.putBytes(0, b.data(0x7fff), b.buf(5, 6, 7, 8)); @@ -834,7 +832,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest TraceData ds4014; TraceData da4018; TraceData dd401c; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { // StringDataType accesses memory via program view, so "block" must exist b.trace.getMemoryManager() .addRegion("myRegion", Lifespan.nowOn(0), @@ -972,7 +970,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest TraceInstruction i4006; TraceInstruction i4008; TraceInstruction i400a; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { // Disassembler's new cacheing in mem-buffer uses program view, so "block" must exist b.trace.getMemoryManager() .addRegion("myRegion", Lifespan.nowOn(0), @@ -1075,7 +1073,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest assertTrue(i4008.hasFallthrough()); // Try some mutations - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.addOperandReference(1, b.addr(0x5000), RefType.DATA_IND, SourceType.USER_DEFINED); // TODO: This should probably be default for first/only reference b.trace.getReferenceManager() @@ -1088,7 +1086,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest // See InstructionDB#getOperandRefType(int) assertEquals(RefType.DATA, i4004.getOperandRefType(1)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setFallThrough(b.addr(0x5000)); } assertEquals(b.addr(0x5000), i4004.getAddress(1)); @@ -1100,19 +1098,19 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest // TODO: Test FALL_THROUGH mutations via ReferenceManager reflected in Instruction's // flowOverride flags. Cannot be done until ReferenceManager is observable by CodeManager. - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.clearFallThroughOverride(); } assertEquals(b.addr(0x4006), i4004.getFallThrough()); assertEquals(b.addr(0x4004), i4006.getFallFrom()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i400a.addMnemonicReference(b.addr(0x6000), RefType.COMPUTED_CALL, SourceType.USER_DEFINED); } assertEquals(Set.of(b.addr(0x6000)), set(i400a.getFlows())); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i400a.setFlowOverride(FlowOverride.RETURN); } assertEquals(Set.of(), set(i400a.getDefaultFlows())); @@ -1129,7 +1127,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest Register r5 = b.language.getRegister("r5"); TraceInstruction i4004; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); } @@ -1143,11 +1141,11 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest assertNull(i4004.getValue(r4, true)); assertNull(i4004.getRegisterValue(r4)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.clearRegister(r4); // NOP, but cannot crash } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setValue(r4, new BigInteger("ffffffffffff1234", 16)); } assertTrue(i4004.hasValue(r4)); @@ -1159,14 +1157,14 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest assertEquals(new RegisterValue(r4, new BigInteger("-edcc", 16)), i4004.getRegisterValue(r4)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.setRegisterValue(new RegisterValue(r5, new BigInteger("5678", 16))); } assertTrue(i4004.hasValue(r5)); assertEquals(new BigInteger("5678", 16), i4004.getValue(r5, false)); assertEquals(new RegisterValue(r5, new BigInteger("5678", 16)), i4004.getRegisterValue(r5)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004.clearRegister(r4); // NOP, but cannot crash } assertFalse(i4004.hasValue(r4)); @@ -1177,7 +1175,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest TraceData d4000; TraceInstruction i4004; TraceData d4006; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), LongDataType.dataType, b.buf(1, 2, 3, 4)); i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); d4006 = b.addData(0, b.addr(0x4006), PointerDataType.dataType, @@ -1197,7 +1195,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest TraceData d4000; TraceInstruction i4004; TraceData d4006; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), LongDataType.dataType, b.buf(1, 2, 3, 4)); i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); d4006 = b.addData(0, b.addr(0x4006), PointerDataType.dataType, @@ -1205,12 +1203,12 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest } TraceData u400e = manager.undefinedData().getAt(0, b.addr(0x400e)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000.delete(); i4004.delete(); } // TODO: Test for events - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { u400e.delete(); fail(); } @@ -1227,7 +1225,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest TraceGuestPlatform guest; TraceInstruction i4004; TraceInstruction g4006; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0)); guest = b.trace.getPlatformManager().addGuestPlatform(x86.getDefaultCompilerSpec()); guest.addMappedRange(b.addr(0x0000), b.addr(guest, 0x0000), 1L << 32); @@ -1249,7 +1247,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest TraceInstruction i4004; TraceInstruction g4006; TraceInstruction i4007; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { // Disassembler's new cacheing in mem-buffer uses program view, so "block" must exist b.trace.getMemoryManager() .addRegion("myRegion", Lifespan.nowOn(0), @@ -1276,7 +1274,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest public void testGetDataType() throws CodeUnitInsertionException { DataType myTypedef = new TypedefDataType("myTypedef", ShortDataType.dataType); TraceData d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), myTypedef, b.buf(1, 2)); } myTypedef = b.trace.getDataTypeManager().getDataType("/myTypedef"); @@ -1299,7 +1297,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest myStruct.add(PointerDataType.dataType, 8, null, null); // Default field name by null TraceData s4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { s4000 = b.addData(0, b.addr(0x4000), myStruct, b.buf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)); } @@ -1377,7 +1375,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest TraceData d4000; TraceData dR4; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), myStruct, b.buf(1, 2, 3, 4)); thread = b.getOrAddThread("Thread 1", 0); @@ -1444,7 +1442,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest assertSame(myShort, d4000sB.getBaseDataType()); assertNull(d4000sB.getLong("myLong")); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000sB.setLong("myLong", 0x1234); } assertEquals(0x1234, d4000sB.getLong("myLong").longValue()); @@ -1454,7 +1452,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest public void testGetDefaultSettings() throws CodeUnitInsertionException { assertNotNull(ByteDataType.dataType.getDefaultSettings()); TraceData d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), ByteDataType.dataType, b.buf(1)); } DataType byteDataType = b.trace.getDataTypeManager().getDataType("/byte"); @@ -1464,7 +1462,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest @Test public void testSettingsGettersSetters() throws CodeUnitInsertionException { DataType myTypedef = new TypedefDataType("myTypedef", LongDataType.dataType); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceData d4000 = b.addData(0, b.addr(0x4000), myTypedef, b.buf(1, 2, 3, 4)); TraceData u3fff = manager.undefinedData().getAt(0, b.addr(0x3fff)); myTypedef = b.trace.getDataTypeManager().getDataType("/myTypedef"); @@ -1556,7 +1554,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest @Test public void testGetNumOperands() throws CodeUnitInsertionException { TraceData d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), LongDataType.dataType, b.buf(1, 2, 3, 4)); } @@ -1566,7 +1564,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest @Test public void testIsDefined() throws CodeUnitInsertionException { TraceData d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), LongDataType.dataType, b.buf(1, 2, 3, 4)); } TraceData u3fff = manager.undefinedData().getAt(0, b.addr(0x3fff)); @@ -1605,7 +1603,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest TraceData d400c; TraceData d401c; TraceData d4020; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { // StringDataType accesses memory via program view, so "block" must exist b.trace.getMemoryManager() .addRegion("myRegion", Lifespan.nowOn(0), @@ -1731,7 +1729,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest myStruct.add(LongDataType.dataType, 4, "lC", null); TraceData s4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { s4000 = b.addData(0, b.addr(0x4000), myStruct, b.buf(1, 2, 3, 4, 5, 6, 7, 8)); } TraceData u3fff = manager.undefinedData().getAt(0, b.addr(0x3fff)); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapAddressSetViewTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapAddressSetViewTest.java index 3df694223a..36a497319d 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapAddressSetViewTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapAddressSetViewTest.java @@ -23,8 +23,7 @@ import java.util.function.Predicate; import org.junit.*; -import db.DBHandle; -import db.DBRecord; +import db.*; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.program.model.lang.LanguageID; @@ -145,7 +144,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest .getLanguage(new LanguageID("Toy:BE:64:default")); obj = new MyObject(this); factory = new DBCachedObjectStoreFactory(obj); - try (UndoableTransaction tid = UndoableTransaction.start(obj, "CreateTable")) { + try (Transaction tx = obj.openTransaction("CreateTable")) { space = new DBTraceAddressSnapRangePropertyMapSpace<>("Entries", factory, obj.getReadWriteLock(), toy.getDefaultSpace(), null, 0, MyEntry.class, MyEntry::new); @@ -164,7 +163,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest view = makeIntersectingView(tasr(0x0100, 0x2fff, 0, 0), s -> true); assertFalse(view.contains(addr(0x1800))); - try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 0, 9), "A"); } @@ -196,7 +195,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest view = makeIntersectingView(tasr(0x0100, 0x2fff, 0, 0), s -> true); assertFalse(view.contains(addr(0x1000), addr(0x1fff))); - try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x2fff, 0, 0), "A"); space.put(tasr(0x2000, 0x3fff, 1, 1), "B"); } @@ -233,7 +232,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest view = makeIntersectingView(tasr(0x0100, 0x2fff, 0, 0), s -> true); assertFalse(view.contains(set(rng(0x1000, 0x1fff)))); - try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x2fff, 0, 0), "A"); space.put(tasr(0x2000, 0x3fff, 1, 1), "B"); } @@ -272,7 +271,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest assertEquals(0, view.getNumAddressRanges()); assertEquals(0, view.getNumAddresses()); - try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 1, 1), "B"); @@ -308,7 +307,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest assertNull(view.getMinAddress()); assertNull(view.getMaxAddress()); - try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x2fff, 0, 0), "A"); space.put(tasr(0x2000, 0x3fff, 1, 1), "B"); } @@ -338,7 +337,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest view = makeIntersectingView(tasr(0x0100, 0x2fff, 0, 0), s -> true); assertEquals(List.of(), list(view.iterator())); - try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 1, 1), "B"); @@ -377,7 +376,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest view = makeIntersectingView(tasr(0x0100, 0x2fff, 0, 0), s -> true); assertEquals(List.of(), list(view.getAddresses(true))); - try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(1, 5, 0, 0), "A"); } @@ -397,7 +396,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest @Test public void testIntersects() { - try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 1, 1), "B"); @@ -419,7 +418,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest @Test public void testUnion() { - try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 1, 1), "B"); @@ -432,7 +431,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest @Test public void testSubtract() { - try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 1, 1), "B"); @@ -446,7 +445,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest @Test public void testXor() { - try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 1, 1), "B"); @@ -460,7 +459,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest @Test public void testHasSameAddresses() { - try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 1, 1), "B"); @@ -476,7 +475,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest @Test public void testGetFirstLastRanges() { - try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 0, 0), "A"); space.put(tasr(0x2000, 0x27ff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 1, 1), "B"); @@ -490,7 +489,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest @Test public void testGetRangeContaining() { - try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 1, 1), "B"); @@ -510,7 +509,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest @Test public void testFindFirstAddressInCommon() { - try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 0, 0), "A"); space.put(tasr(0x2000, 0x2fff, 1, 1), "B"); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest.java index c14d9fd888..f3ece2af32 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest.java @@ -24,8 +24,7 @@ import java.util.Map.Entry; import org.apache.commons.lang3.tuple.ImmutablePair; import org.junit.*; -import db.DBHandle; -import db.DBRecord; +import db.*; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.program.model.lang.LanguageID; @@ -157,7 +156,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest new LanguageID("Toy:BE:64:default")); obj = new MyObject(this); factory = new DBCachedObjectStoreFactory(obj); - try (UndoableTransaction tid = UndoableTransaction.start(obj, "CreateTable")) { + try (Transaction tx = obj.openTransaction("CreateTable")) { space = new DBTraceAddressSnapRangePropertyMapSpace<>("Entries", factory, obj.getReadWriteLock(), toy.getDefaultSpace(), null, 0, MyEntry.class, MyEntry::new); @@ -189,7 +188,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest @Test public void testOutOfWindow() { DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterable it; - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 5, 10), "A"); } @@ -209,7 +208,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest @Test public void testSingleEntry() { DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterable it; - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 90, 95), "A"); } @@ -233,7 +232,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest @Test public void testEntriesAtExtremes() { DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterable it; - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x0000, 0x0fff, 5, 10), "W"); space.put(tasr(-0x1000, -0x0001, 5, 10), "E"); space.put(tasr(0x1000, 0x1fff, Long.MIN_VALUE, Long.MIN_VALUE + 10), "S"); @@ -252,7 +251,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest @Test public void testOcclusion() { DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterable it; - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tx = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 90, 95), "A"); space.put(tasr(0x1800, 0x27ff, 89, 95), "B"); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest.java index 6ba3dbaf4c..3c80f4fa5b 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest.java @@ -24,8 +24,7 @@ import java.util.Map.Entry; import org.apache.commons.lang3.tuple.ImmutablePair; import org.junit.*; -import db.DBHandle; -import db.DBRecord; +import db.*; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.program.model.lang.LanguageID; @@ -157,7 +156,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest new LanguageID("Toy:BE:64:default")); obj = new MyObject(this); factory = new DBCachedObjectStoreFactory(obj); - try (UndoableTransaction tid = UndoableTransaction.start(obj, "CreateTable")) { + try (Transaction tid = obj.openTransaction("CreateTable")) { space = new DBTraceAddressSnapRangePropertyMapSpace<>("Entries", factory, obj.getReadWriteLock(), toy.getDefaultSpace(), null, 0, MyEntry.class, MyEntry::new); @@ -189,7 +188,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest @Test public void testOutOfWindow() { DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterable it; - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tid = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 5, 10), "A"); } @@ -209,7 +208,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest @Test public void testSingleEntry() { DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterable it; - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tid = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 5, 10), "A"); } @@ -233,7 +232,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest @Test public void testEntriesAtExtremes() { DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterable it; - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tid = obj.openTransaction("Create Entries")) { space.put(tasr(0x0000, 0x0fff, 5, 10), "W"); space.put(tasr(-0x1000, -0x0001, 5, 10), "E"); space.put(tasr(0x1000, 0x1fff, Long.MIN_VALUE, Long.MIN_VALUE + 10), "S"); @@ -252,7 +251,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest @Test public void testOcclusion() { DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterable it; - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) { + try (Transaction tid = obj.openTransaction("Create Entries")) { space.put(tasr(0x1000, 0x1fff, 5, 10), "A"); space.put(tasr(0x1800, 0x27ff, 5, 11), "B"); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapSpaceTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapSpaceTest.java index a49088e841..dd8bf97d21 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapSpaceTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapSpaceTest.java @@ -15,7 +15,7 @@ */ package ghidra.trace.database.map; -import static ghidra.lifecycle.Unfinished.TODO; +import static ghidra.lifecycle.Unfinished.*; import static org.junit.Assert.*; import java.io.File; @@ -28,8 +28,7 @@ import java.util.Map.Entry; import org.apache.commons.lang3.tuple.ImmutablePair; import org.junit.*; -import db.DBHandle; -import db.DBRecord; +import db.*; import ghidra.program.model.address.Address; import ghidra.program.model.lang.Language; import ghidra.program.model.lang.LanguageID; @@ -80,7 +79,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest } protected void loadSpaces() throws VersionException, IOException { - try (UndoableTransaction tid = UndoableTransaction.start(this, "Create Tables")) { + try (Transaction tx = this.openTransaction("Create Tables")) { this.space1 = new DBTraceAddressSnapRangePropertyMapSpace<>("Entries1", factory, getReadWriteLock(), toy.getDefaultSpace(), null, 0, MyEntry.class, MyEntry::new); @@ -239,7 +238,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest @Test public void testDeleteValue() { - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) { + try (Transaction tx = obj.openTransaction("Create entries")) { MyEntry entry1 = obj.space1.put(at(0x1000, 5), null); MyEntry entry2 = obj.space2.put(at(0x1001, 5), null); String value3 = obj.space3.put(at(0x1002, 5), "Test"); @@ -271,7 +270,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest @Test @Ignore("TODO") public void testRemove() { - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) { + try (Transaction tx = obj.openTransaction("Create entries")) { obj.space1.put(at(0x1000, 5), null); obj.space2.put(at(0x1000, 5), null); assertEquals(1, obj.space1.size()); @@ -311,7 +310,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest public void testCollections() { MyEntry entry1; MyEntry entry2; - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) { + try (Transaction tx = obj.openTransaction("Create entries")) { entry1 = obj.space1.put(new ImmutableTraceAddressSnapRange(addr(0x1000), 5), null); entry2 = obj.space1.put(new ImmutableTraceAddressSnapRange(addr(0x1001), 6), null); } @@ -332,7 +331,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest @Test public void testReduce() { MyEntry ent1; - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) { + try (Transaction tx = obj.openTransaction("Create entries")) { ent1 = obj.space1.put(at(0x1000, 5), null); } @@ -345,7 +344,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest @Test public void testFirsts() { MyEntry entry1; - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) { + try (Transaction tx = obj.openTransaction("Create entries")) { entry1 = obj.space1.put(new ImmutableTraceAddressSnapRange(addr(0x1000), 5), null); } @@ -356,7 +355,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest @Test public void testClear() { - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) { + try (Transaction tx = obj.openTransaction("Create entries")) { MyEntry entry1 = obj.space1.put(new ImmutableTraceAddressSnapRange(addr(0x1000), 5), null); assertEquals(1, obj.space1.size()); @@ -372,7 +371,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest public void testGetDataByKey() { assertNull(obj.space1.getDataByKey(0)); MyEntry entry1; - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) { + try (Transaction tx = obj.openTransaction("Create entries")) { entry1 = obj.space1.put(new ImmutableTraceAddressSnapRange(addr(0x1000), 5), null); } @@ -384,7 +383,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest @Ignore("TODO") public void testSaveAndLoad() throws IOException, CancelledException, VersionException { MyEntry entry1; - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) { + try (Transaction tx = obj.openTransaction("Create entries")) { entry1 = obj.space1.put(new ImmutableTraceAddressSnapRange(addr(0x1000), 5), null); } assertEquals(ent(0x1000, 5, entry1), obj.space1.firstEntry()); @@ -403,12 +402,12 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest @Ignore("Related to GP-479") public void testUndoThenRedo() throws IOException { MyEntry entry1; - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) { + try (Transaction tx = obj.openTransaction("Create entries")) { entry1 = obj.space1.put(new ImmutableTraceAddressSnapRange(addr(0x1000), 5), null); } assertEquals(ent(0x1000, 5, entry1), obj.space1.firstEntry()); - try (UndoableTransaction tid = UndoableTransaction.start(obj, "Clear")) { + try (Transaction tx = obj.openTransaction("Clear")) { obj.space1.clear(); } assertNull(obj.space1.firstEntry()); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerMemoryTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerMemoryTest.java index 65ee395f77..f4145442cb 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerMemoryTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerMemoryTest.java @@ -24,13 +24,13 @@ import java.util.*; import org.junit.Test; +import db.Transaction; import db.DBHandle; import ghidra.program.model.address.*; import ghidra.trace.database.DBTrace; import ghidra.trace.model.TraceAddressSnapRange; import ghidra.trace.model.memory.TraceMemoryState; import ghidra.util.database.DBOpenMode; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.ConsoleTaskMonitor; import ghidra.util.task.TaskMonitor; @@ -39,7 +39,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testSetState() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memory.setState(0, b.addr(0x4000), b.addr(0x5000), TraceMemoryState.KNOWN); // +1 Overflow @@ -80,7 +80,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest public void testSetGetStateOneByte() { assertEquals(null, memory.getState(3, b.addr(0x4000))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memory.setState(3, b.addr(0x4000), TraceMemoryState.KNOWN); } @@ -90,7 +90,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest assertEquals(TraceMemoryState.UNKNOWN, memory.getState(2, b.addr(0x4000))); assertEquals(TraceMemoryState.UNKNOWN, memory.getState(4, b.addr(0x4000))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memory.setState(3, b.addr(0x4000), TraceMemoryState.ERROR); } @@ -103,7 +103,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testSetRangeGetState() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memory.setState(3, b.addr(0x4000), b.addr(0x5000), TraceMemoryState.KNOWN); } @@ -118,7 +118,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testGetMostRecentStateSingleRange() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memory.setState(3, b.addr(0x4000), b.addr(0x5000), TraceMemoryState.KNOWN); } @@ -147,7 +147,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testGetMostRecentStateSameSnap() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memory.setState(3, b.addr(0x4000), b.addr(0x5000), TraceMemoryState.KNOWN); memory.setState(3, b.addr(0x4020), b.addr(0x4080), TraceMemoryState.ERROR); } @@ -197,7 +197,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testGetMostRecentStateLaterBefore() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memory.setState(3, b.addr(0x4000), b.addr(0x5000), TraceMemoryState.KNOWN); memory.setState(4, b.addr(0x3000), b.addr(0x3500), TraceMemoryState.ERROR); } @@ -255,7 +255,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testGetMostRecentStateLaterOverStart() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memory.setState(3, b.addr(0x4000), b.addr(0x5000), TraceMemoryState.KNOWN); memory.setState(4, b.addr(0x3000), b.addr(0x4500), TraceMemoryState.ERROR); } @@ -319,7 +319,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testGetMostRecentStates() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memory.setState(3, b.addr(0x4000), b.addr(0x7000), TraceMemoryState.KNOWN); memory.setState(3, b.addr(0x5000), b.addr(0x6000), TraceMemoryState.ERROR); memory.setState(4, b.addr(0x3000), b.addr(0x4800), TraceMemoryState.KNOWN); @@ -351,7 +351,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testGetAddressesWithState() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memory.setState(3, b.addr(0x4000), b.addr(0x7000), TraceMemoryState.KNOWN); memory.setState(3, b.addr(0x5000), b.addr(0x6000), TraceMemoryState.ERROR); memory.setState(4, b.addr(0x3000), b.addr(0x4800), TraceMemoryState.KNOWN); @@ -390,7 +390,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testGetStates() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memory.setState(3, b.addr(0x4000), b.addr(0x7000), TraceMemoryState.KNOWN); memory.setState(3, b.addr(0x5000), b.addr(0x6000), TraceMemoryState.ERROR); } @@ -406,7 +406,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testBytes0Length() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(0, memory.putBytes(3, b.addr(0x4000), b.buf())); assertEquals(0, getBlockRecordCount()); assertEquals(0, getBufferRecordCount()); @@ -423,7 +423,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testBytesSimple4Zeros() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(0, 0, 0, 0))); assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(0, 0, 0, 0))); // Should have no effect assertEquals(1, getBlockRecordCount()); @@ -444,7 +444,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testBytesSimple4Bytes() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4))); assertEquals(1, getBlockRecordCount()); assertEquals(1, getBufferRecordCount()); @@ -465,7 +465,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testBytesSpan4Bytes() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(4, memory.putBytes(3, b.addr(0x3ffe), b.buf(1, 2, 3, 4))); assertEquals(2, getBlockRecordCount()); assertEquals(2, getBufferRecordCount()); @@ -478,7 +478,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testBytesSpan12BytesInChunks() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(4, memory.putBytes(3, b.addr(0x3ffa), b.buf(1, 2, 3, 4))); assertEquals(1, getBlockRecordCount()); assertEquals(4, memory.putBytes(3, b.addr(0x3ffe), b.buf(5, 6, 7, 8))); @@ -495,7 +495,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testBytesOverflow() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { ByteBuffer write = b.buf(1, 2, 3, 4); assertEquals(2, memory.putBytes(3, b.addr(0xfffffffffffffffeL), write)); assertEquals(2, write.remaining()); @@ -511,7 +511,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testBytesWriteSameLater() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4))); assertEquals(1, getBlockRecordCount()); assertEquals(1, getBufferRecordCount()); @@ -543,7 +543,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testBytesArrayOffset() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { byte[] array = new byte[20]; array[9] = -1; array[10] = 1; @@ -564,7 +564,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testGetBytesMostRecent() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4))); assertEquals(4, memory.putBytes(4, b.addr(0x4002), b.buf(5, 6, 7, 8))); assertEquals(1, memory.putBytes(5, b.addr(0x4003), b.buf(0))); @@ -595,7 +595,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testPutBytesIntoPastGetBytesMostRecent() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(4, memory.putBytes(4, b.addr(0x4800), b.buf(5, 6, 7, 8))); assertEquals(4, memory.putBytes(3, b.addr(0x4802), b.buf(1, 2, 3, 4))); assertEquals(10, @@ -627,7 +627,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testGetBytesCrossScratch() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(4, memory.putBytes(Long.MIN_VALUE, b.addr(0x4000), b.buf(1, 2, 3, 4))); } @@ -642,7 +642,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testPutBytesPackGetBytes() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4))); memory.pack(); assertEquals(1, getBlockRecordCount()); @@ -660,7 +660,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testPutBytesPackPutBytes() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4))); memory.pack(); assertEquals(1, getBlockRecordCount()); @@ -678,7 +678,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testFindBytes() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(5, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4, 5))); } @@ -743,7 +743,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testRemoveBytes() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(10, memory.putBytes(2, b.addr(0x47fe), b.buf(9, 10, 11, 12, 13, 14, 15, 16, 17, 18))); assertEquals(4, memory.putBytes(4, b.addr(0x4800), b.buf(5, 6, 7, 8))); @@ -798,7 +798,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testSaveAndLoad() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4))); assertEquals(1, getBlockRecordCount()); assertEquals(1, getBufferRecordCount()); @@ -836,7 +836,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testAddButAbortedStillEmpty() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4))); assertEquals(1, getBlockRecordCount()); assertEquals(1, getBufferRecordCount()); @@ -847,7 +847,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest expected.put(b.srange(3, 0x4000, 0x4003), TraceMemoryState.KNOWN); assertEquals(expected, collectAsMap(memory.getStates(3, b.range(0x3000, 0x5000)))); - tid.abort(); + tx.abort(); } assertEquals(0, getBlockRecordCount()); assertEquals(0, getBufferRecordCount()); @@ -864,7 +864,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testAddThenUndo() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4))); assertEquals(1, getBlockRecordCount()); assertEquals(1, getBufferRecordCount()); @@ -892,7 +892,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testAddThenUndoThenRedo() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4))); assertEquals(1, getBlockRecordCount()); assertEquals(1, getBufferRecordCount()); @@ -939,7 +939,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest * situation by writing to the same b.address at more than 127 different snaps. */ - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { for (int i = 0; i < 300; i++) { memory.putBytes(i, b.addr(0x4000), b.buf(1, 2, 3, i % 256)); } @@ -954,7 +954,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest @Test public void testOverlaySpaces() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { AddressSpace os = memory.createOverlayAddressSpace("test", b.trace.getBaseAddressFactory().getDefaultAddressSpace()); DBTraceMemorySpace space = memory.getMemorySpace(os, true); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerRegionsTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerRegionsTest.java index 799e2841a9..ab9f6f06cb 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerRegionsTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerRegionsTest.java @@ -15,14 +15,14 @@ */ package ghidra.trace.database.memory; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; +import static org.junit.Assert.*; import java.io.IOException; import java.util.Set; import org.junit.*; +import db.Transaction; import ghidra.program.model.lang.LanguageID; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; import ghidra.trace.database.ToyDBTraceBuilder; @@ -30,7 +30,6 @@ import ghidra.trace.model.Lifespan; import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.memory.TraceMemoryRegion; import ghidra.trace.util.LanguageTestWatcher; -import ghidra.util.database.UndoableTransaction; public abstract class AbstractDBTraceMemoryManagerRegionsTest extends AbstractGhidraHeadlessIntegrationTest { @@ -46,7 +45,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest @Before public void setUp() throws IOException { b = new ToyDBTraceBuilder("Testing", testLanguage.getLanguage()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getTimeManager().createSnapshot("Initialize"); } memory = b.trace.getMemoryManager(); @@ -59,7 +58,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest @Test public void testAddRegion() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff), Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE)); } @@ -70,7 +69,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest assertEquals(Set.of(), Set.copyOf(memory.getAllRegions())); TraceMemoryRegion region; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { region = memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff), Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE)); } @@ -83,7 +82,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest assertNull(memory.getLiveRegionByPath(0, "Regions[0x1000]")); TraceMemoryRegion region; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { region = memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff), Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE)); } @@ -98,7 +97,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest assertNull(memory.getRegionContaining(0, b.addr(0x1000))); TraceMemoryRegion region; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { region = memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff), Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE)); } @@ -116,7 +115,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest memory.getRegionsIntersecting(Lifespan.span(0, 10), b.range(0x1800, 0x27ff)))); TraceMemoryRegion region; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { region = memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff), Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE)); } @@ -134,7 +133,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest assertEquals(Set.of(), Set.copyOf(memory.getRegionsAtSnap(0))); TraceMemoryRegion region; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { region = memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff), Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE)); } @@ -147,7 +146,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest public void testGetRegionsAddressSet() throws Exception { assertEquals(b.set(), memory.getRegionsAddressSet(0)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff), Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE)); } @@ -160,7 +159,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest public void testGetRegionsAddressSetWith() throws Exception { assertEquals(b.set(), memory.getRegionsAddressSetWith(0, r -> true)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff), Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE)); } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerRegistersTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerRegistersTest.java index 1202f2ca5d..ecfa24ba62 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerRegistersTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerRegistersTest.java @@ -21,13 +21,13 @@ import java.math.BigInteger; import org.junit.Test; +import db.Transaction; import ghidra.program.model.lang.*; import ghidra.trace.model.guest.TraceGuestPlatform; import ghidra.trace.model.guest.TracePlatform; import ghidra.trace.model.memory.TraceMemoryState; import ghidra.trace.model.stack.TraceStack; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; public abstract class AbstractDBTraceMemoryManagerRegistersTest extends AbstractDBTraceMemoryManagerTest { @@ -45,7 +45,7 @@ public abstract class AbstractDBTraceMemoryManagerRegistersTest Register r0l = b.language.getRegister("r0l"); TraceThread thread; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = getOrAddThread("Threads[1]", 0); DBTraceMemorySpace regs = memory.getMemoryRegisterSpace(thread, true); @@ -96,7 +96,7 @@ public abstract class AbstractDBTraceMemoryManagerRegistersTest Register counter = language.getRegister("counter"); TraceThread thread; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = getOrAddThread("Threads[1]", 0); waitForSwing(); DBTraceMemorySpace regs = memory.getMemoryRegisterSpace(thread, true); @@ -137,7 +137,7 @@ public abstract class AbstractDBTraceMemoryManagerRegistersTest public void testManyStateEntries() throws Exception { Register pc = b.language.getRegister("pc"); TraceThread thread; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = getOrAddThread("Threads[1]", 0); DBTraceMemorySpace regs = memory.getMemoryRegisterSpace(thread, true); @@ -152,7 +152,7 @@ public abstract class AbstractDBTraceMemoryManagerRegistersTest protected void runTestGuestMappingRegisterBits(LanguageID langID, CompilerSpecID cSpecID) throws Throwable { TraceGuestPlatform guest; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { guest = b.trace.getPlatformManager() .addGuestPlatform( getLanguageService().getLanguage(langID).getCompilerSpecByID(cSpecID)); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerTest.java index a828e4099e..c46b8310ab 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerTest.java @@ -24,6 +24,7 @@ import java.util.Map.Entry; import org.junit.*; +import db.Transaction; import ghidra.program.model.lang.LanguageID; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; import ghidra.trace.database.ToyDBTraceBuilder; @@ -31,7 +32,6 @@ import ghidra.trace.model.TraceAddressSnapRange; import ghidra.trace.model.memory.TraceMemoryState; import ghidra.trace.util.LanguageTestWatcher; import ghidra.util.database.DBCachedObjectStore; -import ghidra.util.database.UndoableTransaction; public abstract class AbstractDBTraceMemoryManagerTest extends AbstractGhidraHeadlessIntegrationTest { @@ -47,7 +47,7 @@ public abstract class AbstractDBTraceMemoryManagerTest @Before public void setUp() throws IOException { b = new ToyDBTraceBuilder("Testing", testLanguage.getLanguage()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getTimeManager().createSnapshot("Initialize"); } memory = b.trace.getMemoryManager(); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/DBTraceMemoryManagerObjectRegionsTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/DBTraceMemoryManagerObjectRegionsTest.java index 6e93bf26fe..f1882852ec 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/DBTraceMemoryManagerObjectRegionsTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/DBTraceMemoryManagerObjectRegionsTest.java @@ -17,10 +17,10 @@ package ghidra.trace.database.memory; import org.junit.Before; +import db.Transaction; import ghidra.dbg.target.schema.SchemaContext; import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; import ghidra.dbg.target.schema.XmlSchemaContext; -import ghidra.util.database.UndoableTransaction; public class DBTraceMemoryManagerObjectRegionsTest extends DBTraceMemoryManagerRegionsTest { @@ -43,7 +43,7 @@ public class DBTraceMemoryManagerObjectRegionsTest extends DBTraceMemoryManagerR """); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session"))); } } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/DBTraceMemoryManagerObjectRegistersPerFrameBETest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/DBTraceMemoryManagerObjectRegistersPerFrameBETest.java index 4ebd20b19e..5a20a15362 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/DBTraceMemoryManagerObjectRegistersPerFrameBETest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/DBTraceMemoryManagerObjectRegistersPerFrameBETest.java @@ -18,6 +18,7 @@ package ghidra.trace.database.memory; import org.junit.Before; import org.junit.Test; +import db.Transaction; import ghidra.dbg.target.schema.SchemaContext; import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; import ghidra.dbg.target.schema.XmlSchemaContext; @@ -29,7 +30,6 @@ import ghidra.trace.model.target.TraceObject.ConflictResolution; import ghidra.trace.model.thread.TraceObjectThread; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.util.LanguageTestWatcher.TestLanguage; -import ghidra.util.database.UndoableTransaction; public class DBTraceMemoryManagerObjectRegistersPerFrameBETest extends AbstractDBTraceMemoryManagerRegistersTest { @@ -77,7 +77,7 @@ public class DBTraceMemoryManagerObjectRegistersPerFrameBETest """); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session"))); } } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/DBTraceMemoryManagerObjectRegistersPerThreadLETest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/DBTraceMemoryManagerObjectRegistersPerThreadLETest.java index c30a63f2a4..0b6ad673ac 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/DBTraceMemoryManagerObjectRegistersPerThreadLETest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/DBTraceMemoryManagerObjectRegistersPerThreadLETest.java @@ -18,6 +18,7 @@ package ghidra.trace.database.memory; import org.junit.Before; import org.junit.Test; +import db.Transaction; import ghidra.dbg.target.schema.SchemaContext; import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; import ghidra.dbg.target.schema.XmlSchemaContext; @@ -28,7 +29,6 @@ import ghidra.trace.model.target.TraceObject.ConflictResolution; import ghidra.trace.model.thread.TraceObjectThread; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.util.LanguageTestWatcher.TestLanguage; -import ghidra.util.database.UndoableTransaction; public class DBTraceMemoryManagerObjectRegistersPerThreadLETest extends AbstractDBTraceMemoryManagerRegistersTest { @@ -79,7 +79,7 @@ public class DBTraceMemoryManagerObjectRegistersPerThreadLETest """); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session"))); } } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceModuleManagerObjectTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceModuleManagerObjectTest.java index b212a7c9cc..b88f786c0a 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceModuleManagerObjectTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceModuleManagerObjectTest.java @@ -17,10 +17,10 @@ package ghidra.trace.database.module; import org.junit.Before; +import db.Transaction; import ghidra.dbg.target.schema.SchemaContext; import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; import ghidra.dbg.target.schema.XmlSchemaContext; -import ghidra.util.database.UndoableTransaction; public class DBTraceModuleManagerObjectTest extends DBTraceModuleManagerTest { @@ -50,7 +50,7 @@ public class DBTraceModuleManagerObjectTest extends DBTraceModuleManagerTest { " " + // ""); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session"))); } } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceModuleManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceModuleManagerTest.java index 717f6f1d90..db15f816aa 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceModuleManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceModuleManagerTest.java @@ -22,12 +22,12 @@ import java.util.*; import org.junit.*; +import db.Transaction; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.model.Lifespan; import ghidra.trace.model.modules.TraceModule; import ghidra.trace.model.modules.TraceSection; -import ghidra.util.database.UndoableTransaction; public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationTest { @@ -47,7 +47,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testAddModule() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); moduleManager.addLoadedModule("Modules[second]", "second", @@ -57,7 +57,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testAddSections() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceModule mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); mod1.addSection("Modules[first].Sections[.text]", b.range(0x00401000, 0x00401f9f)); @@ -74,7 +74,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT TraceModule mod1; TraceModule mod2; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); mod1.addSection("Modules[first].Sections[.text]", b.range(0x00401000, 0x00401f9f)); @@ -93,7 +93,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT TraceModule mod1; TraceModule mod2; TraceModule mod3; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); mod1.addSection("Modules[first].Sections[.text]", b.range(0x00401000, 0x00401f9f)); @@ -112,7 +112,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testModuleGetTrace() throws Exception { TraceModule mod1; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); } @@ -122,7 +122,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testModuleSetGetName() throws Exception { TraceModule mod1; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); assertEquals("first", mod1.getName()); @@ -136,7 +136,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT public void testModuleSetGetBase() throws Exception { // TODO: Should adjusting the base shift the sections? TraceModule mod1; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); assertEquals(b.addr(0x00400000), mod1.getBase()); @@ -149,7 +149,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testModuleSetGetLifespan() throws Exception { TraceModule mod1; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); assertEquals(Lifespan.span(0, 10), mod1.getLifespan()); @@ -176,7 +176,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT TraceSection s1data; TraceSection s2text; TraceSection s2data; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); s1text = @@ -203,7 +203,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT TraceSection s1data; TraceSection s2text; TraceSection s2data; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); s1text = mod1.addSection("Modules[first].Sections[.text]", ".text", @@ -228,7 +228,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT public void testModuleDelete() throws Exception { TraceModule mod1; TraceModule mod2; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); mod1.addSection("Modules[first].Sections[.text]", b.range(0x00401000, 0x00401f9f)); @@ -238,7 +238,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT b.range(0x7f400000, 0x7f60002f), Lifespan.span(0, 10)); } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1.delete(); } @@ -249,7 +249,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT public void testSectionGetModule() throws Exception { TraceModule mod1; TraceSection s1text; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); s1text = @@ -263,7 +263,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT public void testSectionSetGetName() throws Exception { TraceModule mod1; TraceSection s1text; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); s1text = mod1.addSection("Modules[first].Sections[.text]", ".text", @@ -279,7 +279,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT public void testSectionGetRange() throws Exception { TraceModule mod1; TraceSection s1text; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); s1text = mod1.addSection("Modules[first].Sections[.text]", ".text", @@ -301,7 +301,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT public void testSaveThenLoad() throws Exception { TraceModule mod1; TraceModule mod2; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); mod1.addSection("Modules[first].Sections[.text]", ".text", @@ -334,14 +334,14 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testUndoIdentitiesPreserved() throws Exception { TraceModule mod1; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); mod1.addSection("Modules[first].Sections[.text]", b.range(0x00401000, 0x00401f9f)); mod1.addSection("Modules[first].Sections[.data]", b.range(0x00600000, 0x0060002f)); } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { moduleManager.addModule("Modules[second]", "second", b.range(0x7f400000, 0x7f60002f), Lifespan.span(1, 11)); } @@ -356,7 +356,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT public void testUndoThenRedo() throws Exception { TraceModule mod1; TraceModule mod2; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { mod1 = moduleManager.addModule("Modules[first]", "first", b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10)); mod1.addSection("Modules[first].Sections[.text]", ".text", diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceStaticMappingManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceStaticMappingManagerTest.java index 7ddd4d830e..4a6a1ab8e9 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceStaticMappingManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/module/DBTraceStaticMappingManagerTest.java @@ -24,12 +24,12 @@ import java.util.Collection; import org.junit.*; +import db.Transaction; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.model.Lifespan; import ghidra.trace.model.modules.TraceConflictedMappingException; import ghidra.trace.model.modules.TraceStaticMapping; -import ghidra.util.database.UndoableTransaction; public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessIntegrationTest { @@ -49,7 +49,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg @Test public void testAddAndGet() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99), Lifespan.span(2, 5), new URL("ghidra://static"), "DEADBEEF"); } @@ -74,7 +74,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg @Test public void testAddAndEnumerate() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99), Lifespan.span(2, 4), new URL("ghidra://static"), "DEADBEEF"); @@ -86,7 +86,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg @Test public void testAddRemoveAndEnumerate() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99), Lifespan.span(2, 4), new URL("ghidra://static"), "DEADBEEF"); @@ -106,7 +106,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg @Test public void testOverlapCausesException() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99), Lifespan.span(2, 4), new URL("ghidra://static"), "DEADBEEF"); @@ -121,7 +121,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg @Test public void testOverlapAgreeingAccepted() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99), Lifespan.span(2, 4), new URL("ghidra://static"), "DEADBEEF"); @@ -132,7 +132,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg @Test public void testTouchingProceedingIsNotOverlapping() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99), Lifespan.span(2, 4), new URL("ghidra://static"), "DEADBEEF"); @@ -144,7 +144,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg @SuppressWarnings("hiding") @Test public void testSaveAndLoad() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99), Lifespan.span(2, 5), new URL("ghidra://static"), "DEADBEEF"); } @@ -165,11 +165,11 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg @Test public void testAddButAbortedStillEmpty() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99), Lifespan.span(2, 4), new URL("ghidra://static"), "DEADBEEF"); - tid.abort(); + tx.abort(); } assertEquals(0, staticMappingManager.getAllEntries().size()); @@ -177,7 +177,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg @Test public void testAddThenUndo() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99), Lifespan.span(2, 4), new URL("ghidra://static"), "DEADBEEF"); @@ -189,13 +189,13 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg @Test public void testAddThenRemoveThenUndo() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99), Lifespan.span(2, 4), new URL("ghidra://static"), "DEADBEEF"); } assertEquals(1, staticMappingManager.getAllEntries().size()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { for (TraceStaticMapping m : staticMappingManager.getAllEntries()) { m.delete(); } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceDisassemblerIntegrationTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceDisassemblerIntegrationTest.java index 44b3d9b9e2..816b528514 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceDisassemblerIntegrationTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceDisassemblerIntegrationTest.java @@ -15,7 +15,7 @@ */ package ghidra.trace.database.program; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.*; import java.io.File; import java.io.IOException; @@ -27,6 +27,7 @@ import java.util.stream.StreamSupport; import org.junit.*; +import db.Transaction; import ghidra.app.cmd.disassemble.*; import ghidra.app.plugin.assembler.*; import ghidra.program.database.ProgramBuilder; @@ -47,7 +48,6 @@ import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.memory.TraceOverlappedRegionException; import ghidra.trace.util.LanguageTestWatcher; import ghidra.trace.util.LanguageTestWatcher.TestLanguage; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.*; import ghidra.util.task.ConsoleTaskMonitor; import ghidra.util.task.TaskMonitor; @@ -62,7 +62,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn @Before public void setUp() throws IOException { b = new ToyDBTraceBuilder("Testing", testLanguage.getLanguage()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getTimeManager().createSnapshot("Initialize"); } view = b.trace.getProgramView(); @@ -76,7 +76,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn @Test public void testSingleInstruction() throws IOException, CancelledException, VersionException, DuplicateNameException, TraceOverlappedRegionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceMemoryManager memoryManager = b.trace.getMemoryManager(); memoryManager.createRegion("Region", 0, b.range(0x4000, 0x4fff), TraceMemoryFlag.EXECUTE, TraceMemoryFlag.READ); @@ -107,7 +107,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn Language x86 = getSLEIGH_X86_LANGUAGE(); Disassembler dis = Disassembler.getDisassembler(x86, x86.getAddressFactory(), new ConsoleTaskMonitor(), msg -> System.out.println("Listener: " + msg)); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceMemorySpace space = b.trace.getMemoryManager().getMemorySpace(b.language.getDefaultSpace(), true); space.putBytes(0, b.addr(0x4000), b.buf(0x90)); @@ -145,8 +145,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn @Test public void testThumbSampleProgramDB() throws Exception { ProgramBuilder b = new ProgramBuilder(getName(), ProgramBuilder._ARM); - try (UndoableTransaction tid = - UndoableTransaction.start(b.getProgram(), "Disassemble (THUMB)")) { + try (Transaction tx = b.getProgram().openTransaction("Disassemble (THUMB)")) { MemoryBlock text = b.createMemory(".text", "b6fa2cd0", 32, "Sample", (byte) 0); text.putBytes(b.addr(0xb6fa2cdc), new byte[] { // GDB: stmdb sp!, {r4,r5,r6,r7,r8,lr} @@ -172,7 +171,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn @Test @TestLanguage(ProgramBuilder._ARM) public void testThumbSampleDBTrace() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceMemoryManager memory = b.trace.getMemoryManager(); memory.createRegion(".text", 0, b.range(0xb6fa2cd0, 0xb6fa2cef), Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE)); @@ -198,7 +197,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn @Test @TestLanguage("MIPS:BE:64:default") public void testDelaySlotSampleDBTrace() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceMemoryManager memory = b.trace.getMemoryManager(); memory.createRegion(".text", 0, b.range(0x120000000L, 0x120010000L), Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE)); @@ -224,7 +223,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn @Test @TestLanguage(ProgramBuilder._X64) public void test64BitX86DBTrace() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceMemoryManager memory = b.trace.getMemoryManager(); memory.createRegion(".text", 0, b.range(0x00400000, 0x00400fff)); memory.putBytes(0, b.addr(0x00400000), b.buf( @@ -254,7 +253,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn @Test @TestLanguage(ProgramBuilder._X64) public void test32BitX64CompatDBTrace() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceMemoryManager memory = b.trace.getMemoryManager(); memory.createRegion(".text", 0, b.range(0x00400000, 0x00400fff)); memory.putBytes(0, b.addr(0x00400000), b.buf( @@ -290,7 +289,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn @Test @TestLanguage(ProgramBuilder._X86) public void test32BitX86DBTrace() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceMemoryManager memory = b.trace.getMemoryManager(); memory.createRegion(".text", 0, b.range(0x00400000, 0x00400fff)); memory.putBytes(0, b.addr(0x00400000), b.buf( @@ -320,7 +319,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn } protected void runTestCoalesceInstructions(List repetitions) throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceMemoryManager memory = b.trace.getMemoryManager(); DBTraceCodeManager code = b.trace.getCodeManager(); @@ -411,7 +410,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn @Test public void testNoCoalesceAcrossByteChanges() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { DBTraceMemoryManager memory = b.trace.getMemoryManager(); DBTraceCodeManager code = b.trace.getCodeManager(); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceProgramViewFunctionManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceProgramViewFunctionManagerTest.java index 93bfbdfbb4..5a12f6b8e6 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceProgramViewFunctionManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceProgramViewFunctionManagerTest.java @@ -15,7 +15,7 @@ */ package ghidra.trace.database.program; -import static ghidra.lifecycle.Unfinished.TODO; +import static ghidra.lifecycle.Unfinished.*; import static org.junit.Assert.*; import java.io.IOException; @@ -24,6 +24,7 @@ import java.util.List; import org.junit.*; +import db.Transaction; import ghidra.app.cmd.function.AddStackVarCmd; import ghidra.app.cmd.refs.AddStackRefCmd; import ghidra.program.database.ProgramBuilder; @@ -35,26 +36,25 @@ import ghidra.program.model.listing.*; import ghidra.program.model.symbol.*; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; import ghidra.trace.database.ToyDBTraceBuilder; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.InvalidInputException; public class DBTraceProgramViewFunctionManagerTest extends AbstractGhidraHeadlessIntegrationTest { ToyDBTraceBuilder b; FunctionManager functionManager; Program program; - UndoableTransaction tid; + Transaction tx; @Before public void setUpFunctionManagerTest() throws IOException { b = new ToyDBTraceBuilder("Testing", ProgramBuilder._TOY); program = b.trace.getFixedProgramView(0); functionManager = program.getFunctionManager(); - tid = b.startTransaction(); + tx = b.startTransaction(); } @After public void tearDownFunctionManagerTest() { - tid.close(); + tx.close(); b.close(); } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceProgramViewListingTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceProgramViewListingTest.java index 91ac722e54..b1e77af6f1 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceProgramViewListingTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceProgramViewListingTest.java @@ -15,7 +15,7 @@ */ package ghidra.trace.database.program; -import static ghidra.lifecycle.Unfinished.TODO; +import static ghidra.lifecycle.Unfinished.*; import static org.junit.Assert.*; import java.io.IOException; @@ -23,6 +23,7 @@ import java.util.*; import org.junit.*; +import db.Transaction; import ghidra.program.database.ProgramBuilder; import ghidra.program.model.address.AddressSet; import ghidra.program.model.data.*; @@ -34,7 +35,6 @@ import ghidra.test.AbstractGhidraHeadlessIntegrationTest; import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.database.listing.DBTraceCodeManager; import ghidra.trace.database.memory.DBTraceMemoryManager; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.CancelledException; import ghidra.util.task.TaskMonitor; @@ -64,7 +64,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra @Before public void setUpTraceProgramViewListingTest() throws LanguageNotFoundException, IOException { b = new ToyDBTraceBuilder("Testing", ProgramBuilder._TOY64_BE); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getTimeManager().createSnapshot("Created"); } memory = b.trace.getMemoryManager(); @@ -99,7 +99,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra @Test public void testAddData() throws CodeUnitInsertionException { Data data; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { data = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertEquals(b.trace.getDataTypeManager() @@ -113,7 +113,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra public void testAddInstruction() throws InsufficientBytesException, UnknownInstructionException, CodeUnitInsertionException { Instruction ins; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { ins = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertEquals("ret", ins.toString()); @@ -125,7 +125,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(listing.getCodeUnitAt(b.addr(0x4000))); Data d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertEquals(d4000, listing.getCodeUnitAt(b.addr(0x4000))); @@ -137,7 +137,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(listing.getCodeUnitAt(b.addr(0x4005))); Instruction i4005; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertEquals(i4005, listing.getCodeUnitAt(b.addr(0x4005))); @@ -151,7 +151,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(listing.getCodeUnitContaining(b.addr(0x4000))); Data d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertEquals(d4000, listing.getCodeUnitContaining(b.addr(0x4000))); @@ -162,7 +162,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(listing.getCodeUnitContaining(b.addr(0x4005))); Instruction i4005; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertEquals(i4005, listing.getCodeUnitContaining(b.addr(0x4005))); @@ -178,7 +178,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(cu = listing.getCodeUnitAfter(b.addr(0x3fff))); assertEquals(b.addr(0x4000), cu.getAddress()); Data d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertEquals(d4000, listing.getCodeUnitAfter(b.addr(0x3fff))); @@ -188,7 +188,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(cu = listing.getCodeUnitAfter(b.addr(0x4004))); assertEquals(b.addr(0x4005), cu.getAddress()); Instruction i4005; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertEquals(i4005, listing.getCodeUnitAfter(b.addr(0x4004))); @@ -204,7 +204,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(cu = listing.getCodeUnitBefore(b.addr(0x4001))); assertEquals(b.addr(0x4000), cu.getAddress()); Data d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertEquals(d4000, listing.getCodeUnitBefore(b.addr(0x4001))); @@ -214,7 +214,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(cu = listing.getCodeUnitBefore(b.addr(0x4006))); assertEquals(b.addr(0x4005), cu.getAddress()); Instruction i4005; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertEquals(i4005, listing.getCodeUnitBefore(b.addr(0x4006))); @@ -289,7 +289,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra Data d4000; Instruction i4005; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } @@ -354,7 +354,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra UnknownInstructionException, CodeUnitInsertionException { assertNull(listing.getInstructionAt(b.addr(0x4005))); Instruction i4005; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertEquals(i4005, listing.getInstructionAt(b.addr(0x4005))); @@ -367,7 +367,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra UnknownInstructionException, CodeUnitInsertionException { assertNull(listing.getInstructionContaining(b.addr(0x4005))); Instruction i4005; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertEquals(i4005, listing.getInstructionContaining(b.addr(0x4005))); @@ -380,7 +380,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra UnknownInstructionException, CodeUnitInsertionException { assertNull(listing.getInstructionAfter(b.addr(0x4004))); Instruction i4005; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertEquals(i4005, listing.getInstructionAfter(b.addr(0x4004))); @@ -392,7 +392,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra UnknownInstructionException, CodeUnitInsertionException { assertNull(listing.getInstructionBefore(b.addr(0x4006))); Instruction i4005; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertEquals(i4005, listing.getInstructionBefore(b.addr(0x4006))); @@ -420,7 +420,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra Instruction i4005; Instruction i4007; Instruction i400a; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); i4007 = b.addInstruction(0, b.addr(0x4007), b.host, b.buf(0xf4, 0)); i400a = b.addInstruction(0, b.addr(0x400a), b.host, b.buf(0xf4, 0)); @@ -443,7 +443,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra UnknownInstructionException { assertUndefined(listing.getDataAt(b.addr(0x4000))); Data d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertEquals(d4000, listing.getDataAt(b.addr(0x4000))); @@ -453,7 +453,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(listing.getDataAt(b.addr(0x4004))); assertUndefined(listing.getDataAt(b.addr(0x4005))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertNull(listing.getDataAt(b.addr(0x4005))); @@ -466,7 +466,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra InsufficientBytesException, UnknownInstructionException { assertUndefined(listing.getDataContaining(b.addr(0x4000))); Data d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertEquals(d4000, listing.getDataContaining(b.addr(0x4000))); @@ -476,7 +476,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(listing.getDataContaining(b.addr(0x4004))); assertUndefined(listing.getDataContaining(b.addr(0x4005))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertNull(listing.getDataContaining(b.addr(0x4005))); @@ -492,7 +492,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(cu = listing.getDataAfter(b.addr(0x3fff))); assertEquals(b.addr(0x4000), cu.getAddress()); Data d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertEquals(d4000, listing.getDataAfter(b.addr(0x3fff))); @@ -501,7 +501,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(cu = listing.getDataAfter(b.addr(0x4004))); assertEquals(b.addr(0x4005), cu.getAddress()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertUndefined(cu = listing.getDataAfter(b.addr(0x4004))); @@ -516,7 +516,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(cu = listing.getDataBefore(b.addr(0x4001))); assertEquals(b.addr(0x4000), cu.getAddress()); Data d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertEquals(d4000, listing.getDataBefore(b.addr(0x4001))); @@ -525,7 +525,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(cu = listing.getDataBefore(b.addr(0x4006))); assertEquals(b.addr(0x4005), cu.getAddress()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertUndefined(cu = listing.getDataBefore(b.addr(0x4007))); @@ -598,7 +598,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertEquals(b.addr(0x3ffe), sample.get(7).getAddress()); Data d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } @@ -658,7 +658,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra public void testGetDefinedDataAt() throws CodeUnitInsertionException { assertNull(listing.getDefinedDataAt(b.addr(0x4000))); Data d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertEquals(d4000, listing.getDefinedDataAt(b.addr(0x4000))); @@ -673,7 +673,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra public void testGetDefinedDataContaining() throws CodeUnitInsertionException { assertNull(listing.getDefinedDataContaining(b.addr(0x4005))); Data d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertEquals(d4000, listing.getDefinedDataContaining(b.addr(0x4000))); @@ -687,7 +687,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra public void testGetDefinedDataAfter() throws CodeUnitInsertionException { assertNull(listing.getDefinedDataAfter(b.addr(0x4000))); Data d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertEquals(d4000, listing.getDefinedDataAfter(b.addr(0x3fff))); @@ -698,7 +698,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra public void testGetDefinedDataBefore() throws CodeUnitInsertionException { assertNull(listing.getDefinedDataBefore(b.addr(0x4004))); Data d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertEquals(d4000, listing.getDefinedDataBefore(b.addr(0x4001))); @@ -726,7 +726,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra Data d4000; Data d4004; Data d400a; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(0, 1, 2, 3)); d4004 = b.addData(0, b.addr(0x4004), Undefined4DataType.dataType, b.buf(5, 6, 7, 8)); d400a = @@ -749,7 +749,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra public void testGetUndefinedDataAt() throws CodeUnitInsertionException, InsufficientBytesException, UnknownInstructionException { assertUndefined(listing.getUndefinedDataAt(b.addr(0x4000))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertNull(listing.getUndefinedDataAt(b.addr(0x4000))); @@ -759,7 +759,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(listing.getUndefinedDataAt(b.addr(0x4004))); assertUndefined(listing.getUndefinedDataAt(b.addr(0x4005))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertNull(listing.getUndefinedDataAt(b.addr(0x4005))); @@ -774,7 +774,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(cu = listing.getUndefinedDataAfter(b.addr(0x3fff), TaskMonitor.DUMMY)); assertEquals(b.addr(0x4000), cu.getAddress()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertUndefined(cu = listing.getUndefinedDataAfter(b.addr(0x3fff), TaskMonitor.DUMMY)); @@ -782,7 +782,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(cu = listing.getUndefinedDataAfter(b.addr(0x4004), TaskMonitor.DUMMY)); assertEquals(b.addr(0x4005), cu.getAddress()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertUndefined(cu = listing.getUndefinedDataAfter(b.addr(0x4004), TaskMonitor.DUMMY)); @@ -796,7 +796,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(cu = listing.getUndefinedDataBefore(b.addr(0x4001), TaskMonitor.DUMMY)); assertEquals(b.addr(0x4000), cu.getAddress()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertUndefined(cu = listing.getUndefinedDataBefore(b.addr(0x4004), TaskMonitor.DUMMY)); @@ -804,7 +804,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra assertUndefined(cu = listing.getUndefinedDataBefore(b.addr(0x4006), TaskMonitor.DUMMY)); assertEquals(b.addr(0x4005), cu.getAddress()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertUndefined(cu = listing.getUndefinedDataBefore(b.addr(0x4007), TaskMonitor.DUMMY)); @@ -814,7 +814,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra @Test public void testGetFirstUndefinedData() throws InsufficientBytesException, UnknownInstructionException, CodeUnitInsertionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } @@ -832,7 +832,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra @Ignore("TODO") public void testGetUndefinedRanges() throws InsufficientBytesException, UnknownInstructionException, CodeUnitInsertionException, CancelledException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } @@ -848,13 +848,13 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra UnknownInstructionException, CodeUnitInsertionException { assertNull(listing.getDefinedCodeUnitAfter(b.addr(0x3fff))); Instruction i4005; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertEquals(i4005, listing.getDefinedCodeUnitAfter(b.addr(0x3fff))); assertNull(listing.getDefinedCodeUnitAfter(b.addr(0x4005))); Data d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertEquals(d4000, listing.getDefinedCodeUnitAfter(b.addr(0x3fff))); @@ -866,13 +866,13 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra UnknownInstructionException, CodeUnitInsertionException { assertNull(listing.getDefinedCodeUnitBefore(b.addr(0x4006))); Data d4000; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4)); } assertEquals(d4000, listing.getDefinedCodeUnitBefore(b.addr(0x4006))); assertNull(listing.getDefinedCodeUnitBefore(b.addr(0x4000))); Instruction i4005; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0)); } assertEquals(i4005, listing.getDefinedCodeUnitBefore(b.addr(0x4006))); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceProgramViewMemoryTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceProgramViewMemoryTest.java index 677dae4963..1634f99b30 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceProgramViewMemoryTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/program/DBTraceProgramViewMemoryTest.java @@ -15,13 +15,13 @@ */ package ghidra.trace.database.program; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertSame; +import static org.junit.Assert.*; import java.io.IOException; import org.junit.*; +import db.Transaction; import ghidra.program.database.ProgramBuilder; import ghidra.program.model.address.*; import ghidra.program.model.lang.LanguageNotFoundException; @@ -32,7 +32,6 @@ import ghidra.trace.database.memory.DBTraceMemoryManager; import ghidra.trace.database.memory.DBTraceMemoryRegion; import ghidra.trace.model.memory.TraceMemoryFlag; import ghidra.trace.model.memory.TraceOverlappedRegionException; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; public class DBTraceProgramViewMemoryTest extends AbstractGhidraHeadlessIntegrationTest { @@ -46,7 +45,7 @@ public class DBTraceProgramViewMemoryTest extends AbstractGhidraHeadlessIntegrat @Before public void setUpTraceProgramViewMemoryTest() throws LanguageNotFoundException, IOException { b = new ToyDBTraceBuilder("Testing", ProgramBuilder._TOY64_BE); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getTimeManager().createSnapshot("Created"); } memory = b.trace.getMemoryManager(); @@ -67,7 +66,7 @@ public class DBTraceProgramViewMemoryTest extends AbstractGhidraHeadlessIntegrat AddressOutOfBoundsException { AddressSpace os; DBTraceMemoryRegion io; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { os = memory.createOverlayAddressSpace("test", b.trace.getBaseAddressFactory().getDefaultAddressSpace()); io = (DBTraceMemoryRegion) memory.createRegion(".io", 0, b.range(os, 0x1000, 0x1fff), diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/property/DBTraceAddressPropertyManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/property/DBTraceAddressPropertyManagerTest.java index 78530e5bff..8f8d5dc1ad 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/property/DBTraceAddressPropertyManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/property/DBTraceAddressPropertyManagerTest.java @@ -23,6 +23,7 @@ import java.util.Objects; import org.junit.*; +import db.Transaction; import ghidra.program.model.address.Address; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; import ghidra.trace.database.ToyDBTraceBuilder; @@ -31,7 +32,6 @@ import ghidra.trace.model.TraceAddressSnapRange; import ghidra.trace.model.property.*; import ghidra.util.ObjectStorage; import ghidra.util.Saveable; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; import ghidra.util.map.TypeMismatchException; @@ -168,10 +168,10 @@ public class DBTraceAddressPropertyManagerTest extends AbstractGhidraHeadlessInt } protected void doTestCreatePropertyMap(Class valueClass) throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { propertyManager.createPropertyMap("MyProp", valueClass); } - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { propertyManager.createPropertyMap("MyProp", valueClass); fail(); } @@ -207,7 +207,7 @@ public class DBTraceAddressPropertyManagerTest extends AbstractGhidraHeadlessInt @Test(expected = IllegalArgumentException.class) public void testCreateUnsupportedPropertyMap() throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { propertyManager.createPropertyMap("MyProp", Unsupported.class); } } @@ -216,7 +216,7 @@ public class DBTraceAddressPropertyManagerTest extends AbstractGhidraHeadlessInt public void testGetPropertyMap() throws Exception { assertNull(propertyManager.getPropertyMap("MyProp")); TracePropertyMapOperations map; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { map = propertyManager.createPropertyMap("MyProp", String.class); } assertNotNull(map); @@ -236,7 +236,7 @@ public class DBTraceAddressPropertyManagerTest extends AbstractGhidraHeadlessInt public void testGetOrCreatePropertyMap() throws Exception { assertNull(propertyManager.getPropertyMap("MyProp")); TracePropertyMapOperations map; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { map = propertyManager.getOrCreatePropertyMap("MyProp", String.class); } assertNotNull(map); @@ -255,7 +255,7 @@ public class DBTraceAddressPropertyManagerTest extends AbstractGhidraHeadlessInt public void testGetAllProperties() throws Exception { assertEquals(0, propertyManager.getAllProperties().size()); TracePropertyMapOperations map; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { map = propertyManager.createPropertyMap("MyProp", String.class); } assertNotNull(map); @@ -266,14 +266,14 @@ public class DBTraceAddressPropertyManagerTest extends AbstractGhidraHeadlessInt @Test public void testMapGetValueClass() throws Exception { TracePropertyMapOperations map; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { map = propertyManager.createPropertyMap("MyProp", String.class); } assertSame(String.class, map.getValueClass()); } protected void doTestMap(Class valueClass, T value) throws Exception { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TracePropertyMapOperations map = propertyManager.createPropertyMap("MyProp", valueClass); assertSame(valueClass, map.getValueClass()); @@ -337,7 +337,7 @@ public class DBTraceAddressPropertyManagerTest extends AbstractGhidraHeadlessInt @Test public void testStringMapAtNoAdress() throws Exception { TracePropertyMap map; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { map = propertyManager.createPropertyMap("MyProp", String.class); map.set(Lifespan.nowOn(0), Address.NO_ADDRESS, "Value"); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/stack/DBTraceStackManagerObjectTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/stack/DBTraceStackManagerObjectTest.java index fffb556336..0754a92d75 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/stack/DBTraceStackManagerObjectTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/stack/DBTraceStackManagerObjectTest.java @@ -17,10 +17,10 @@ package ghidra.trace.database.stack; import org.junit.Before; +import db.Transaction; import ghidra.dbg.target.schema.SchemaContext; import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; import ghidra.dbg.target.schema.XmlSchemaContext; -import ghidra.util.database.UndoableTransaction; public class DBTraceStackManagerObjectTest extends DBTraceStackManagerTest { @@ -59,7 +59,7 @@ public class DBTraceStackManagerObjectTest extends DBTraceStackManagerTest { " " + // ""); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session"))); } } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/stack/DBTraceStackManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/stack/DBTraceStackManagerTest.java index 3838aa636b..3434487d82 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/stack/DBTraceStackManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/stack/DBTraceStackManagerTest.java @@ -24,13 +24,13 @@ import java.util.stream.StreamSupport; import org.junit.*; +import db.Transaction; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.model.Lifespan; import ghidra.trace.model.stack.TraceStack; import ghidra.trace.model.stack.TraceStackFrame; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTest { @@ -50,7 +50,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe @Test public void testCreateStack() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceThread thread = b.getOrAddThread("Threads[1]", 0); stackManager.getStack(thread, 0, true); } @@ -59,7 +59,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe @Test public void testSetDepth() throws Exception { TraceStack stack; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceThread thread = b.getOrAddThread("Threads[1]", 0); stack = stackManager.getStack(thread, 0, true); stack.setDepth(1, true); @@ -72,7 +72,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe } assertEquals(5, expectedLevel); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { stack.setDepth(3, true); } @@ -82,7 +82,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe } assertEquals(3, expectedLevel); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { stack.setDepth(1, false); } @@ -101,7 +101,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe TraceStack stack1b; TraceStack stack2a; TraceStack stack2b; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread1 = b.getOrAddThread("Threads[1]", 0); thread2 = b.getOrAddThread("Threads[2]", 0); stack1a = stackManager.getStack(thread1, 2, true); @@ -133,7 +133,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe TraceStackFrame frame1b; TraceStackFrame frame2a; TraceStackFrame frame2b; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceThread thread = b.getOrAddThread("Threads[1]", 0); TraceStack stack1 = stackManager.getStack(thread, 0, true); @@ -163,7 +163,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe public void testStackGetThread() throws Exception { TraceThread thread; TraceStack stack; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Threads[1]", 0); stack = stackManager.getStack(thread, 0, true); } @@ -175,7 +175,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe public void testStackGetSnap() throws Exception { TraceThread thread; TraceStack stack; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Threads[1]", 0); stack = stackManager.getStack(thread, 2, true); } @@ -187,7 +187,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe public void testStackGetDepth() throws Exception { TraceThread thread; TraceStack stack; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Threads[1]", 0); stack = stackManager.getStack(thread, 0, true); stack.setDepth(2, true); @@ -200,7 +200,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe public void testStackGetFrames() throws Exception { TraceThread thread; TraceStack stack; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Threads[1]", 0); stack = stackManager.getStack(thread, 0, true); stack.setDepth(2, true); @@ -216,7 +216,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe public void testStackDelete() throws Exception { TraceThread thread; TraceStack stack; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Threads[1]", 0); stack = stackManager.getStack(thread, 0, true); stack.setDepth(2, true); @@ -226,7 +226,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe assertEquals(stack, stackManager.getStack(thread, 0, false)); assertEquals(2, stack.getFrames(0).size()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { stack.delete(); } @@ -239,7 +239,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe TraceThread thread; TraceStack stack; TraceStackFrame frame; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Threads[1]", 0); stack = stackManager.getStack(thread, 0, true); frame = stack.getFrame(0, true); @@ -254,7 +254,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe TraceStack stack; TraceStackFrame frame0; TraceStackFrame frame1; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Threads[1]", 0); stack = stackManager.getStack(thread, 0, true); stack.setDepth(2, true); @@ -271,7 +271,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe TraceThread thread; TraceStack stack; TraceStackFrame frame; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Threads[1]", 0); stack = stackManager.getStack(thread, 0, true); stack.setDepth(1, true); @@ -289,7 +289,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe TraceThread thread; TraceStack stack; TraceStackFrame frame; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Threads[1]", 0); stack = stackManager.getStack(thread, 0, true); stack.setDepth(1, true); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/symbol/DBTraceFunctionSymbolTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/symbol/DBTraceFunctionSymbolTest.java index 429f86ac44..a8a1342289 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/symbol/DBTraceFunctionSymbolTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/symbol/DBTraceFunctionSymbolTest.java @@ -15,7 +15,7 @@ */ package ghidra.trace.database.symbol; -import static ghidra.lifecycle.Unfinished.TODO; +import static ghidra.lifecycle.Unfinished.*; import static org.junit.Assert.*; import java.io.IOException; @@ -23,6 +23,7 @@ import java.util.*; import org.junit.*; +import db.Transaction; import ghidra.app.cmd.function.AddRegisterParameterCommand; import ghidra.app.cmd.function.AddStackVarCmd; import ghidra.app.cmd.refs.AddStackRefCmd; @@ -42,7 +43,6 @@ import ghidra.trace.model.Lifespan; import ghidra.trace.model.memory.TraceOverlappedRegionException; import ghidra.trace.model.symbol.*; import ghidra.util.IntersectionAddressSetView; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; import ghidra.util.exception.InvalidInputException; import ghidra.util.task.TaskMonitor; @@ -56,7 +56,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration public void setUpFunctionTest() throws IOException, TraceOverlappedRegionException, DuplicateNameException { b = new ToyDBTraceBuilder("Testing", ProgramBuilder._TOY); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getMemoryManager().createRegion("test", 0, b.range(100, 599)); } functions = b.trace.getSymbolManager().functions(); @@ -165,7 +165,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testGetName() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); assertEquals("foo", f.getName()); @@ -175,7 +175,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetNameUser() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); // TODO: Monitor for event @@ -189,7 +189,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetNameAnalysis() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); f.setName("bar", SourceType.ANALYSIS); @@ -201,7 +201,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetNameImported() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); f.setName("bar", SourceType.IMPORTED); @@ -213,7 +213,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetNameDefault() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { String defaultName = SymbolUtilities.getDefaultFunctionName(b.addr(100)); TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); @@ -226,7 +226,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetNameDefaultError() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); try { @@ -242,7 +242,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetComment() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); f.setComment("Test Comment\nLine 2"); @@ -254,7 +254,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetRepeatable() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); f.setRepeatableComment("Test Comment\nLine 2"); @@ -266,7 +266,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testCreateFunction() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { // TODO: Monitor events AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550)); TraceFunctionSymbol f = @@ -285,7 +285,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetBody() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { // TODO: Monitor events AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550)); TraceFunctionSymbol f = @@ -301,7 +301,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetBodyClearVarRefs() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550)); TraceFunctionSymbol f = functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED); @@ -354,7 +354,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetBodyClearVarRefsExceptOneInBoth() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550)); TraceFunctionSymbol f = functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED); @@ -412,7 +412,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetBodyInvalidEntryPoint() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550)); TraceFunctionSymbol f = functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED); @@ -431,7 +431,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetBodyOverlapping() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550)); TraceFunctionSymbol f = functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED); @@ -460,7 +460,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetBodyClearSymbols() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550)); TraceFunctionSymbol f = functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED); @@ -490,7 +490,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testGetVariables() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550)); TraceFunctionSymbol f = functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED); @@ -529,7 +529,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testGetReturnType() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550)); TraceFunctionSymbol f = functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED); @@ -540,7 +540,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetReturnType() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550)); TraceFunctionSymbol f = functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED); @@ -558,7 +558,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetCustomStorage() throws DuplicateNameException, InvalidInputException, IllegalArgumentException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = createTestFunction(); int initialParamCnt = f.getParameterCount(); @@ -622,7 +622,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetCallingConvention() throws DuplicateNameException, InvalidInputException, IllegalArgumentException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = createTestFunction(); int initialParamCnt = f.getParameterCount(); @@ -725,7 +725,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testUpdateFunctionCustomStorage() throws DuplicateNameException, InvalidInputException, IllegalArgumentException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { Function f = createTestFunction(); Structure bigStruct = new StructureDataType("bigStruct", 20); @@ -762,7 +762,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testUpdateFunctionDynamicStorage() throws DuplicateNameException, InvalidInputException, IllegalArgumentException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { Function f = createTestFunction(); @@ -813,7 +813,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testUpdateFunctionDynamicStorage1() throws DuplicateNameException, InvalidInputException, IllegalArgumentException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { Function f = createTestFunction(); @@ -865,7 +865,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testUpdateFunctionDynamicStorage2() throws DuplicateNameException, InvalidInputException, IllegalArgumentException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { Function f = createTestFunction(); @@ -971,7 +971,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testAutoAddingRemovingThisParameter() throws DuplicateNameException, InvalidInputException, IllegalArgumentException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = createTestFunction(); assertEquals(5, f.getParameters().length); @@ -1069,7 +1069,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testGetSignatureString() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); Structure s = new StructureDataType("bar", 20); @@ -1152,7 +1152,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Ignore("TODO") public void testDataTypeOnRegisterVariable() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { Register r7l = b.trace.getBaseLanguage().getRegister("r7l"); assertNotNull(r7l); @@ -1165,7 +1165,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration // TODO: Monitor events - try (UndoableTransaction localTid = b.startTransaction()) { + try (Transaction localTx = b.startTransaction()) { DataType bdt = b.trace.getDataTypeManager() .addDataType(ByteDataType.dataType, DataTypeConflictHandler.DEFAULT_HANDLER); @@ -1188,7 +1188,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration assertEquals(r7l, rp.getRegister()); // delete the typedef data type - try (UndoableTransaction localTid = b.startTransaction()) { + try (Transaction localTx = b.startTransaction()) { b.trace.getDataTypeManager().remove(dt, TaskMonitor.DUMMY); } @@ -1204,7 +1204,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetStackDepthChange() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); @@ -1220,7 +1220,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetStackParameter() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); f.setCustomVariableStorage(true); @@ -1287,7 +1287,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetDuplicateStackParameter() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); f.setCustomVariableStorage(true); @@ -1326,7 +1326,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetStackVariable() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); @@ -1361,7 +1361,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetStackVariableOverwrite() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); @@ -1397,7 +1397,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetDuplicateStackVariable() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); @@ -1435,7 +1435,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetRegisterParameter() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); f.setCustomVariableStorage(true); @@ -1471,7 +1471,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetDuplicateRegisterParameter() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); f.setCustomVariableStorage(true); @@ -1507,7 +1507,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetRegisterVariable() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); @@ -1543,7 +1543,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetDuplicateRegisterVariable() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); @@ -1578,7 +1578,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetMemoryParameter() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); f.setCustomVariableStorage(true); @@ -1613,7 +1613,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetDuplicateMemoryParameter() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); f.setCustomVariableStorage(true); @@ -1649,7 +1649,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testRemoveRegisterParameter() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); f.setCustomVariableStorage(true); @@ -1686,7 +1686,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetInline() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); @@ -1710,7 +1710,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetNoReturn() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); @@ -1734,7 +1734,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetCallFixup() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)), "foo", null, null, SourceType.USER_DEFINED); @@ -1759,7 +1759,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testSetThunkFunction() throws InvalidInputException, OverlappingFunctionException, DuplicateNameException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { Function f1 = functions.create(0, b.addr(0x100), b.set(b.range(0x100, 0x200)), "foo1", null, null, SourceType.USER_DEFINED); @@ -1856,7 +1856,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration @Test public void testPromoteLocalUserLabelsToGlobal() throws InvalidInputException, OverlappingFunctionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceFunctionSymbol foo2 = functions.create(0, b.addr(201), b.set(b.range(201, 249)), "foo2", null, null, SourceType.USER_DEFINED); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/symbol/DBTraceReferenceManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/symbol/DBTraceReferenceManagerTest.java index 56fa501dd2..979bed8d14 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/symbol/DBTraceReferenceManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/symbol/DBTraceReferenceManagerTest.java @@ -23,6 +23,7 @@ import java.util.*; import org.junit.*; +import db.Transaction; import ghidra.program.model.address.Address; import ghidra.program.model.address.AddressSpace; import ghidra.program.model.symbol.*; @@ -31,7 +32,6 @@ import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.model.Lifespan; import ghidra.trace.model.Trace; import ghidra.trace.model.symbol.*; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.CancelledException; import ghidra.util.exception.VersionException; @@ -189,7 +189,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati DBTraceReference memRef; DBTraceReference offRef; DBTraceReference sftRef; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memRef = manager.addReference(new DummyTraceReference(0, b.addr(0x4000), b.addr(0x5000))); offRef = manager.addReference( @@ -218,7 +218,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati @Test public void testAddMemoryReference() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000)); } DBTraceReferenceSpace space = @@ -230,7 +230,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati @Test public void testAddOffsetReference() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addOffsetReference(0, b.addr(0x4001), b.addr(0x5001), false, 20); } DBTraceReferenceSpace space = @@ -242,7 +242,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati @Test public void testAddShiftedReference() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addShiftedReference(0, b.addr(0x4002), b.addr(0x5002), 1); } DBTraceReferenceSpace space = @@ -254,7 +254,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati @Test public void testAddRegisterReference() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addRegisterReference(0, b.addr(0x4003), "r5"); } DBTraceReferenceSpace space = @@ -266,7 +266,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati @Test public void testAddStackReference() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addStackReference(0, b.addr(0x4004), 0x20); } DBTraceReferenceSpace space = @@ -283,7 +283,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati DBTraceReference sftRef; DBTraceReference regRef; DBTraceReference stkRef; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memRef = b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000)); offRef = b.addOffsetReference(0, b.addr(0x4001), b.addr(0x5001), false, 20); sftRef = b.addShiftedReference(0, b.addr(0x4002), b.addr(0x5002), 1); @@ -321,7 +321,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati DBTraceReference sftRef; DBTraceReference regRef; DBTraceReference stkRef; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memRef = b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000), 3); offRef = b.addOffsetReference(0, b.addr(0x4000), b.addr(0x5001), false, 20); sftRef = b.addShiftedReference(0, b.addr(0x4000), b.addr(0x5002), 1); @@ -346,7 +346,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati DBTraceReference diffFrom; DBTraceReference diffTo; DBTraceReference diffOpIndex; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { at0 = b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000), 0); b.addMemoryReference(15, b.addr(0x4000), b.addr(0x5000), 0); // Lost at10 = b.addMemoryReference(10, b.addr(0x4000), b.addr(0x5000), 0); @@ -374,7 +374,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati // TODO: See how ReferenceDBManager select new primary on deletion DBTraceReference memRef; DBTraceReference offRef; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memRef = b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000)); offRef = b.addOffsetReference(0, b.addr(0x4000), b.addr(0x5001), false, 20); @@ -396,7 +396,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati @Test public void testGetFlowReferencesFrom() { DBTraceReference flowRef; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { flowRef = manager.addMemoryReference(Lifespan.nowOn(0), b.addr(0x4000), b.addr(0x4001), RefType.FLOW, SourceType.DEFAULT, -1); b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000)); @@ -410,7 +410,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati @Test public void testClearReferencesFrom() { DBTraceReference keptRef; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000), 3); b.addOffsetReference(0, b.addr(0x4000), b.addr(0x5001), false, 20); b.addShiftedReference(0, b.addr(0x4000), b.addr(0x5002), 1); @@ -422,7 +422,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati assertEquals(5, manager.getReferencesFrom(0, b.addr(0x4000)).size()); assertEquals(1, manager.getReferencesFrom(0, b.addr(0x4001)).size()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.clearReferencesFrom(Lifespan.nowOn(10), b.range(0x3000, 0x4000)); } @@ -431,7 +431,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati assertEquals(Lifespan.span(0, 9), manager.getReferencesFrom(0, b.addr(0x4000)).iterator().next().getLifespan()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.clearReferencesFrom(Lifespan.nowOn(0), b.range(0x3000, 0x4000)); } @@ -447,7 +447,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati DBTraceReference memRef; DBTraceReference offRef; DBTraceReference sftRef; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { memRef = b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000)); offRef = b.addOffsetReference(0, b.addr(0x4001), b.addr(0x5000), false, 20); sftRef = b.addShiftedReference(0, b.addr(0x4002), b.addr(0x5000), 1); @@ -464,7 +464,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati @Test public void testClearReferencesTo() { DBTraceReference keptRef; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000), 3); b.addOffsetReference(0, b.addr(0x4001), b.addr(0x5000), false, 20); b.addShiftedReference(0, b.addr(0x4002), b.addr(0x5000), 1); @@ -474,7 +474,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati assertEquals(3, manager.getReferencesTo(0, b.addr(0x5000)).size()); assertEquals(1, manager.getReferencesTo(0, b.addr(0x5001)).size()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.clearReferencesTo(Lifespan.nowOn(10), b.range(0x4000, 0x5000)); } @@ -483,7 +483,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati assertEquals(Lifespan.span(0, 9), manager.getReferencesTo(0, b.addr(0x5000)).iterator().next().getLifespan()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.clearReferencesTo(Lifespan.nowOn(0), b.range(0x4000, 0x5000)); } @@ -496,7 +496,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati @Test public void testGetReferenceSourcesAndDestinations() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000)); b.addOffsetReference(0, b.addr(0x4001), b.addr(0x5001), false, 20); b.addShiftedReference(0, b.addr(0x4002), b.addr(0x5002), 1); @@ -518,7 +518,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati assertEquals(0, manager.getReferenceCountFrom(0, b.addr(0x4000))); assertEquals(0, manager.getReferenceCountTo(0, b.addr(0x5000))); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000)); b.addOffsetReference(0, b.addr(0x4000), b.addr(0x5001), false, 20); b.addShiftedReference(0, b.addr(0x4000), b.addr(0x5002), 1); @@ -536,7 +536,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati @Test public void testSaveAndLoad() throws CancelledException, IOException, VersionException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000)); b.addOffsetReference(0, b.addr(0x4000), b.addr(0x5001), false, 20); b.addShiftedReference(0, b.addr(0x4000), b.addr(0x5002), 1); @@ -573,7 +573,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati @Test public void testUndo() throws IOException { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000)); b.addOffsetReference(0, b.addr(0x4000), b.addr(0x5001), false, 20); b.addShiftedReference(0, b.addr(0x4000), b.addr(0x5002), 1); @@ -592,7 +592,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati @Test public void testOverlaySpaces() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { AddressSpace os = b.trace.getMemoryManager() .createOverlayAddressSpace("test", b.trace.getBaseAddressFactory().getDefaultAddressSpace()); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/symbol/DBTraceSymbolManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/symbol/DBTraceSymbolManagerTest.java index db2c32ea2d..14e1555fbf 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/symbol/DBTraceSymbolManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/symbol/DBTraceSymbolManagerTest.java @@ -24,6 +24,7 @@ import java.util.Set; import org.junit.*; +import db.Transaction; import ghidra.lifecycle.Unfinished; import ghidra.program.model.address.GlobalNamespace; import ghidra.program.model.symbol.Namespace; @@ -34,7 +35,6 @@ import ghidra.trace.model.Lifespan; import ghidra.trace.model.symbol.TraceLabelSymbol; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.util.TraceRegisterUtils; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.*; public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationTest @@ -108,7 +108,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testAddLabels() throws Exception { DBTraceNamespaceSymbol global = manager.getGlobalNamespace(); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceThread thread = b.getOrAddThread("Thread1", 0); manager.labels() @@ -140,7 +140,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT public void testAddNamespaces() throws Exception { DBTraceNamespaceSymbol top; DBTraceNamespaceSymbol a; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { top = manager.namespaces() .add("top", manager.getGlobalNamespace(), SourceType.USER_DEFINED); @@ -169,7 +169,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT public void testAddClasses() throws Exception { DBTraceClassSymbol classA; DBTraceClassSymbol nested; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { classA = manager.classes().add("A", manager.getGlobalNamespace(), SourceType.USER_DEFINED); assertEquals(1, manager.classStore.getRecordCount()); @@ -209,7 +209,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT DBTraceClassSymbol clsA; TraceLabelSymbol lab1; TraceLabelSymbol lab2; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED); clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED); lab1 = manager.labels() @@ -240,7 +240,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT DBTraceClassSymbol clsA; TraceLabelSymbol lab1; TraceLabelSymbol lab2; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED); clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED); lab1 = manager.labels() @@ -281,7 +281,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT DBTraceClassSymbol clsA; TraceLabelSymbol lab1; TraceLabelSymbol lab2; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED); clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED); lab1 = manager.labels() @@ -310,7 +310,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT DBTraceClassSymbol clsA; TraceLabelSymbol lab1; TraceLabelSymbol lab2; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED); clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED); lab1 = manager.labels() @@ -332,7 +332,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT DBTraceNamespaceSymbol global = manager.getGlobalNamespace(); DBTraceNamespaceSymbol nsA; DBTraceClassSymbol clsA; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED); clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED); manager.labels().create(0, null, b.addr(0x4000), "LAB1", nsA, SourceType.USER_DEFINED); @@ -352,7 +352,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT DBTraceNamespaceSymbol global = manager.getGlobalNamespace(); DBTraceNamespaceSymbol nsA; DBTraceClassSymbol clsA; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED); clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED); manager.labels().create(0, null, b.addr(0x4000), "LAB1", nsA, SourceType.USER_DEFINED); @@ -372,7 +372,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT DBTraceClassSymbol clsA; TraceLabelSymbol lab1; TraceLabelSymbol lab2; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED); clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED); lab1 = manager.labels() @@ -394,7 +394,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT DBTraceClassSymbol clsA; TraceLabelSymbol lab1; TraceLabelSymbol lab2; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED); clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED); lab1 = manager.labels() @@ -421,7 +421,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT TraceLabelSymbol lab2; TraceLabelSymbol lab3; TraceLabelSymbol lab4; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Thread1", 0); nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED); clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED); @@ -463,7 +463,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT public void testGetGlobalWithNameAt() throws InvalidInputException { DBTraceNamespaceSymbol global = manager.getGlobalNamespace(); TraceLabelSymbol lab1; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { lab1 = manager.labels() .create(4, null, b.addr(0x4000), "LAB1", global, SourceType.USER_DEFINED); @@ -484,7 +484,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT TraceLabelSymbol lab2; TraceLabelSymbol lab3; TraceLabelSymbol lab4; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Thread1", 0); nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED); clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED); @@ -532,7 +532,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT TraceLabelSymbol lab1; TraceLabelSymbol lab2; TraceLabelSymbol lab3; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED); clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED); lab1 = manager.labels() @@ -565,7 +565,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT DBTraceClassSymbol clsA; TraceLabelSymbol lab2; TraceLabelSymbol lab3; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Thread1", 0); nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED); clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED); @@ -581,7 +581,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT nsA, SourceType.USER_DEFINED); } - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { lab3.delete(); assertEquals(Set.of(lab2), new HashSet<>(manager.allSymbols().getChildren(clsA))); @@ -601,7 +601,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT TraceLabelSymbol lab2; TraceLabelSymbol lab3; TraceLabelSymbol lab4; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Thread1", 0); nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED); clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED); @@ -646,7 +646,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT TraceLabelSymbol lab2; TraceLabelSymbol lab3; TraceLabelSymbol lab4; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = b.getOrAddThread("Thread1", 0); nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED); clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/target/DBTraceObjectManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/target/DBTraceObjectManagerTest.java index 93478e5319..dc47257532 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/target/DBTraceObjectManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/target/DBTraceObjectManagerTest.java @@ -24,6 +24,7 @@ import java.util.stream.Collectors; import org.junit.Before; import org.junit.Test; +import db.Transaction; import generic.Unique; import ghidra.dbg.target.schema.SchemaContext; import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; @@ -36,7 +37,8 @@ import ghidra.trace.model.Lifespan; import ghidra.trace.model.target.*; import ghidra.trace.model.target.TraceObject.ConflictResolution; import ghidra.trace.model.thread.TraceObjectThread; -import ghidra.util.database.*; +import ghidra.util.database.DBAnnotatedObject; +import ghidra.util.database.DBCachedObjectStore; public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationTest { public static final String XML_CTX = """ @@ -103,7 +105,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT } protected void populateModel(int targetCount) { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObjectKeyPath pathTargets = TraceObjectKeyPath.of("Targets"); targetContainer = manager.createObject(pathTargets); @@ -138,7 +140,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT */ @Test(expected = IllegalStateException.class) public void testCreateObjectWithoutRootErr() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.createObject(TraceObjectKeyPath.of("Test")); } } @@ -149,7 +151,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT */ @Test(expected = IllegalArgumentException.class) public void testCreateObjectAsRootErrNoSchema() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.createObject(TraceObjectKeyPath.of()); } } @@ -160,7 +162,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT */ @Test(expected = IllegalArgumentException.class) public void testCreateObjectAsRootErrRootExists() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.createRootObject(ctx.getSchema(new SchemaName("Session"))); manager.createObject(TraceObjectKeyPath.of()); } @@ -168,7 +170,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testCreateRoot() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.createRootObject(ctx.getSchema(new SchemaName("Session"))); } } @@ -178,7 +180,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT */ @Test(expected = IllegalStateException.class) public void testCreate2ndRootErr() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.createRootObject(ctx.getSchema(new SchemaName("Session"))); manager.createRootObject(ctx.getSchema(new SchemaName("Session"))); } @@ -189,7 +191,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT assertNull(manager.getRootObject()); assertNull(manager.getRootSchema()); TraceObjectValue value; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { value = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))); } assertEquals(value.getValue(), manager.getRootObject()); @@ -199,7 +201,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testCreateObject() { TraceObject obj; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.createRootObject(ctx.getSchema(new SchemaName("Session"))); obj = manager.createObject(TraceObjectKeyPath.of("Targets")); } @@ -208,7 +210,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testGetObjectsByCanonicalPath() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); targetContainer = manager.createObject(TraceObjectKeyPath.of("Targets")); } @@ -223,7 +225,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT public void testGetValuesByPathRootOnly() { assertEquals(0, manager.getValuePaths(Lifespan.ALL, PathPredicates.pattern()).count()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.createRootObject(ctx.getSchema(new SchemaName("Session"))); } assertEquals(1, manager.getValuePaths(Lifespan.ALL, PathPredicates.pattern()).count()); @@ -257,7 +259,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testGetRangeValues() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); targetContainer = manager.createObject(TraceObjectKeyPath.parse("Targets")); root.setAttribute(Lifespan.ALL, "Targets", targetContainer); @@ -300,7 +302,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT public void testQueryAllInterface() { populateModel(3); TraceObject thread; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread = manager.createObject(TraceObjectKeyPath.parse("Targets[0].Threads[0]")); thread.insert(Lifespan.nowOn(0), ConflictResolution.DENY); } @@ -318,7 +320,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT populateModel(3); assertEquals(5, manager.getAllObjects().size()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { manager.clear(); } assertEquals(0, manager.getAllObjects().size()); @@ -341,11 +343,11 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testAbort() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { populateModel(3); assertEquals(5, manager.getAllObjects().size()); - tid.abort(); + tx.abort(); } assertEquals(0, manager.getAllObjects().size()); @@ -356,7 +358,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testObjectGetTrace() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); } assertEquals(b.trace, root.getTrace()); @@ -364,7 +366,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testIsRoot() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); targetContainer = manager.createObject(TraceObjectKeyPath.of("Targets")); } @@ -412,7 +414,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testGetInterfaces() { TraceObject thread; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); thread = manager.createObject(TraceObjectKeyPath.parse("Targets[0].Threads[0]")); @@ -425,7 +427,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testQueryInterface() { TraceObject thread; - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); thread = manager.createObject(TraceObjectKeyPath.parse("Targets[0].Threads[0]")); @@ -556,7 +558,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testSetValue_TruncatesOrDeletes() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObjectValue valA = root.setValue(Lifespan.ALL, "a", 1); TraceObjectValue valB = root.setValue(Lifespan.at(0), "b", 2); @@ -601,7 +603,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testSetValue_AbutLeftCoalesces() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1); @@ -613,7 +615,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testSetRangeValue_AbutLeftCoalesces() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", b.range(0x1000, 0x1fff)); @@ -627,7 +629,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testSetValue_AbutRightCoalesces() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1); @@ -639,7 +641,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testSetValue_IntersectLeftCoalesces() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1); @@ -651,7 +653,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testSetValue_IntersectRightCoalesces() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1); @@ -663,7 +665,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testSetValue_EqualSpansCoalesces() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1); @@ -675,7 +677,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testSetValue_ContainsCoalesces() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1); @@ -691,7 +693,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testSetValue_SameLeftCoalesces() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1); @@ -707,7 +709,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testSetValue_SameRightCoalesces() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1); @@ -723,7 +725,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testSetValue_ConnectDisjointCoalesces() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1); TraceObjectValue valB = root.setValue(Lifespan.span(20, 29), "a", 1); @@ -739,7 +741,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testSetValuePrimitives() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); root.setValue(Lifespan.ALL, "aBool", true); @@ -819,7 +821,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testSetValue_NullContainedTruncates() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); assertNull(root.setValue(Lifespan.span(0, 9), "a", null)); assertEquals(0, root.getValues().size()); @@ -839,7 +841,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testSetValue_NullSameDeletes() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); assertNotNull(root.setValue(Lifespan.span(0, 9), "a", 1)); assertEquals(1, root.getValues().size()); @@ -851,7 +853,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testSetAttribute() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); root.setAttribute(Lifespan.ALL, "myAttribute", 1234); @@ -882,7 +884,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT assertEquals(t1, t1.getAttribute(1, "self").getValue()); assertEquals(t1, root.getValue(1, "curTarget").getValue()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { t1.delete(); } @@ -906,7 +908,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT assertEquals(2, targetContainer.getValues().size()); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { targetContainer.delete(); } @@ -920,7 +922,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testValueSetLifespanTruncatesOrDeletes() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceObjectValue rootVal = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))); root = rootVal.getChild(); @@ -970,7 +972,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testValueSetLifespan_Coalesces() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild(); TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1); @@ -985,7 +987,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testIsCanonical() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceObjectValue rootVal = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))); root = rootVal.getChild(); @@ -1007,7 +1009,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testValueDelete() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceObjectValue rootVal = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))); root = rootVal.getChild(); @@ -1032,7 +1034,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testValueTruncateOrDelete() { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { TraceObjectValue rootVal = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))); root = rootVal.getChild(); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/thread/DBTraceThreadManagerObjectTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/thread/DBTraceThreadManagerObjectTest.java index b4430f7e3e..f07f10fb5a 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/thread/DBTraceThreadManagerObjectTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/thread/DBTraceThreadManagerObjectTest.java @@ -17,10 +17,10 @@ package ghidra.trace.database.thread; import org.junit.Before; +import db.Transaction; import ghidra.dbg.target.schema.SchemaContext; import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; import ghidra.dbg.target.schema.XmlSchemaContext; -import ghidra.util.database.UndoableTransaction; public class DBTraceThreadManagerObjectTest extends DBTraceThreadManagerTest { @@ -42,7 +42,7 @@ public class DBTraceThreadManagerObjectTest extends DBTraceThreadManagerTest { " " + // ""); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { b.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session"))); } } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/thread/DBTraceThreadManagerTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/thread/DBTraceThreadManagerTest.java index 587e784499..083465a82d 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/thread/DBTraceThreadManagerTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/thread/DBTraceThreadManagerTest.java @@ -21,11 +21,11 @@ import java.util.Set; import org.junit.*; +import db.Transaction; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.model.Lifespan; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; import ghidra.util.exception.DuplicateNameException; public class DBTraceThreadManagerTest extends AbstractGhidraHeadlessIntegrationTest { @@ -37,7 +37,7 @@ public class DBTraceThreadManagerTest extends AbstractGhidraHeadlessIntegrationT TraceThread thread2; protected void addThreads() throws Exception { - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { thread1 = threadManager.createThread("Threads[1]", 0); thread2 = threadManager.addThread("Threads[2]", Lifespan.span(0, 10)); } @@ -57,7 +57,7 @@ public class DBTraceThreadManagerTest extends AbstractGhidraHeadlessIntegrationT @Test public void testAddThread() throws Exception { addThreads(); - try (UndoableTransaction tid = b.startTransaction()) { + try (Transaction tx = b.startTransaction()) { // TODO: Let this work by expanding the life instead threadManager.createThread("Threads[1]", 1); fail(); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/model/time/schedule/TraceScheduleTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/model/time/schedule/TraceScheduleTest.java index a50d7f52f0..15b0c5edd8 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/model/time/schedule/TraceScheduleTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/model/time/schedule/TraceScheduleTest.java @@ -22,6 +22,7 @@ import java.util.List; import org.junit.Before; import org.junit.Test; +import db.Transaction; import ghidra.app.plugin.processors.sleigh.SleighLanguage; import ghidra.program.model.lang.LanguageID; import ghidra.program.model.lang.LanguageNotFoundException; @@ -29,7 +30,6 @@ import ghidra.test.AbstractGhidraHeadlessIntegrationTest; import ghidra.test.ToyProgramBuilder; import ghidra.trace.database.ToyDBTraceBuilder; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest { @@ -269,7 +269,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest { TraceSchedule time = TraceSchedule.parse("1:4;t0-3;t1-2.1"); try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", ToyProgramBuilder._TOY64_BE)) { TraceThread t2; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getThreadManager().createThread("Threads[0]", 0); tb.trace.getThreadManager().createThread("Threads[1]", 0); t2 = tb.trace.getThreadManager().createThread("Threads[2]", 0); @@ -298,7 +298,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest { TraceSchedule time = TraceSchedule.parse("1:4;t0-s3;t1-2.s1"); try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", ToyProgramBuilder._TOY64_BE)) { TraceThread t2; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getThreadManager().createThread("Threads[0]", 0); tb.trace.getThreadManager().createThread("Threads[1]", 0); t2 = tb.trace.getThreadManager().createThread("Threads[2]", 0); @@ -327,7 +327,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest { TraceSchedule time = TraceSchedule.parse("1:{r0=0x1234};4"); try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) { TraceThread t2; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getThreadManager().createThread("Threads[0]", 0); tb.trace.getThreadManager().createThread("Threads[1]", 0); t2 = tb.trace.getThreadManager().createThread("Threads[2]", 0); @@ -350,7 +350,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest { TestMachine machine = new TestMachine(); TraceSchedule time = TraceSchedule.parse("1:4;t0-3;t1-2.1"); try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) { - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getThreadManager().createThread("Threads[0]", 0); tb.trace.getThreadManager().createThread("Threads[1]", 0); tb.trace.getThreadManager().createThread("Threads[2]", 0); @@ -366,7 +366,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest { TraceSchedule time = TraceSchedule.parse("1:4;t0-3;t5-2.1"); try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) { TraceThread t2; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getThreadManager().createThread("Threads[0]", 0); tb.trace.getThreadManager().createThread("Threads[1]", 0); t2 = tb.trace.getThreadManager().createThread("Threads[2]", 0); @@ -382,7 +382,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest { TraceSchedule time = TraceSchedule.parse("1:4;t0-3;t1-2.1"); try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) { TraceThread t2; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getThreadManager().createThread("Threads[0]", 0); tb.trace.getThreadManager().createThread("Threads[1]", 0); t2 = tb.trace.getThreadManager().createThread("Threads[2]", 0); @@ -405,7 +405,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest { TraceSchedule time = TraceSchedule.parse("1:4;t0-3;t1-2.1"); try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) { TraceThread t2; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getThreadManager().createThread("Threads[0]", 0); tb.trace.getThreadManager().createThread("Threads[1]", 0); t2 = tb.trace.getThreadManager().createThread("Threads[2]", 0); @@ -426,7 +426,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest { TraceSchedule time = TraceSchedule.parse("1:4;t0-3;t1-2.1"); try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) { TraceThread t2; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.trace.getThreadManager().createThread("Threads[0]", 0); tb.trace.getThreadManager().createThread("Threads[1]", 0); t2 = tb.trace.getThreadManager().createThread("Threads[2]", 0); @@ -441,7 +441,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest { // TODO: Should parse require coalescing? Can't without passing a language... try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) { TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { thread = tb.trace.getThreadManager().createThread("Threads[0]", 0); } TraceSchedule time = TraceSchedule.parse("0"); diff --git a/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreFactoryTest.java b/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreFactoryTest.java index 17aafec642..e4c9c19808 100644 --- a/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreFactoryTest.java +++ b/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreFactoryTest.java @@ -22,8 +22,7 @@ import java.io.IOException; import org.junit.Ignore; import org.junit.Test; -import db.DBHandle; -import db.DBRecord; +import db.*; import ghidra.util.UniversalIdGenerator; import ghidra.util.database.annot.*; import ghidra.util.exception.VersionException; @@ -671,7 +670,7 @@ public class DBCachedObjectStoreFactoryTest { DBHandle handle = new DBHandle(); MyDomainObject myDO = new MyDomainObject(handle, "Testing", this); DBCachedObjectStoreFactory factory = new DBCachedObjectStoreFactory(myDO); - try (UndoableTransaction trans = UndoableTransaction.start(myDO, "Create Tables")) { + try (Transaction tx = myDO.openTransaction("Create Tables")) { factory.getOrCreateCachedStore(MyObject.TABLE_NAME, MyObject.class, MyObject::new, false); factory.getOrCreateCachedStore(MyExtObject.TABLE_NAME, MyExtObject.class, @@ -715,7 +714,7 @@ public class DBCachedObjectStoreFactoryTest { DBHandle handle = new DBHandle(); MyDomainObject myDO = new MyDomainObject(handle, "Testing", this); DBCachedObjectStoreFactory factory = new DBCachedObjectStoreFactory(myDO); - try (UndoableTransaction trans = UndoableTransaction.start(myDO, "Create Tables")) { + try (Transaction tx = myDO.openTransaction("Create Tables")) { factory.getOrCreateCachedStore("MyTable", MyFromAbstract.class, MyFromAbstract::new, false); } @@ -734,7 +733,7 @@ public class DBCachedObjectStoreFactoryTest { MyDomainObject myDO = new MyDomainObject(handle, "Testing", this); DBCachedObjectStoreFactory factory = new DBCachedObjectStoreFactory(myDO); DBCachedObjectStore store; - try (UndoableTransaction trans = UndoableTransaction.start(myDO, "Create Tables")) { + try (Transaction tx = myDO.openTransaction("Create Tables")) { store = factory.getOrCreateCachedStore(MyKitchenSink.TABLE_NAME, MyKitchenSink.class, MyKitchenSink::new, false); @@ -779,7 +778,7 @@ public class DBCachedObjectStoreFactoryTest { DBHandle handle = new DBHandle(); MyDomainObject myDO = new MyDomainObject(handle, "Testing", this); DBCachedObjectStoreFactory factory = new DBCachedObjectStoreFactory(myDO); - try (UndoableTransaction trans = UndoableTransaction.start(myDO, "Create Tables")) { + try (Transaction tx = myDO.openTransaction("Create Tables")) { factory.getOrCreateCachedStore(MyUsesMyEnumTooBig.TABLE_NAME, MyUsesMyEnumTooBig.class, MyUsesMyEnumTooBig::new, false); fail(); diff --git a/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreTest.java b/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreTest.java index 2e710e8330..0a38130d59 100644 --- a/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreTest.java +++ b/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreTest.java @@ -70,7 +70,7 @@ public class DBCachedObjectStoreTest { super(new DBHandle(), DBOpenMode.CREATE, new ConsoleTaskMonitor(), name, timeInterval, bufSize, consumer); this.storeFactory = new DBCachedObjectStoreFactory(this); - try (UndoableTransaction tid = UndoableTransaction.start(dbh, this)) { + try (Transaction tx = dbh.openTransaction(this)) { this.store = storeFactory.getOrCreateCachedStore(OBJECTS_TABLE_NAME, MyObject.class, MyObject::new, false); } @@ -81,7 +81,7 @@ public class DBCachedObjectStoreTest { throws VersionException, IOException { super(handle, openMode, monitor, null, timeInterval, bufSize, consumer); this.storeFactory = new DBCachedObjectStoreFactory(this); - try (UndoableTransaction tid = UndoableTransaction.start(handle, this)) { + try (Transaction tx = dbh.openTransaction(this)) { this.store = storeFactory.getOrCreateCachedStore(OBJECTS_TABLE_NAME, MyObject.class, MyObject::new, false); } @@ -142,12 +142,12 @@ public class DBCachedObjectStoreTest { DBCachedObjectStoreEntrySet entrySet; DBCachedObjectStoreEntrySet rEntrySet; - protected UndoableTransaction trans() { - return UndoableTransaction.start(myDomainObject, "Test"); + protected Transaction trans() { + return myDomainObject.openTransaction("Test"); } protected void populateStore(long... keys) { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { for (long k : keys) { store.create(k); } @@ -200,7 +200,7 @@ public class DBCachedObjectStoreTest { @Test public void testCreate() throws IOException { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { assertFalse(store.isCached(0)); MyObject obj = store.create(); assertEquals(0, obj.getKey()); @@ -213,7 +213,7 @@ public class DBCachedObjectStoreTest { @Test public void testCreateWithKey() throws IOException { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { assertFalse(store.isCached(0)); MyObject obj = store.create(0x80); assertEquals(0x80, obj.getKey()); @@ -226,7 +226,7 @@ public class DBCachedObjectStoreTest { @Test public void testContains() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj = store.create(); assertTrue(store.contains(obj)); } @@ -235,7 +235,7 @@ public class DBCachedObjectStoreTest { @Test public void testGetRecordCount() { assertEquals(0, store.getRecordCount()); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj = store.create(); assertTrue(store.contains(obj)); } @@ -245,7 +245,7 @@ public class DBCachedObjectStoreTest { @Test public void testGetMaxKey() { assertNull(store.getMaxKey()); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj = store.create(); assertTrue(store.contains(obj)); } @@ -254,7 +254,7 @@ public class DBCachedObjectStoreTest { @Test public void testContainsKey() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { assertFalse(store.containsKey(0)); @SuppressWarnings("unused") MyObject obj = store.create(); @@ -264,7 +264,7 @@ public class DBCachedObjectStoreTest { @Test public void testSave() throws IOException { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj = store.create(); obj.setF1(0x801); obj.setF2(0x802); @@ -278,7 +278,7 @@ public class DBCachedObjectStoreTest { @Test public void testGetObjectAt() throws IOException, VersionException { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { Table table = myDomainObject.storeFactory.getOrCreateTable(OBJECTS_TABLE_NAME, MyObject.class, false); assertEquals(0, table.getRecordCount()); @@ -295,7 +295,7 @@ public class DBCachedObjectStoreTest { @Test public void testSaveAndLoad() throws IOException, VersionException, CancelledException { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { Table table = myDomainObject.storeFactory.getOrCreateTable(OBJECTS_TABLE_NAME, MyObject.class, false); assertEquals(0, table.getRecordCount()); @@ -326,7 +326,7 @@ public class DBCachedObjectStoreTest { @Test public void testDelete() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { assertNull(store.deleteKey(0)); MyObject obj = store.create(); assertTrue(store.isCached(0)); @@ -339,7 +339,7 @@ public class DBCachedObjectStoreTest { @Test public void testDeleteKey() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { assertNull(store.deleteKey(0)); MyObject obj = store.create(); assertTrue(store.isCached(0)); @@ -352,7 +352,7 @@ public class DBCachedObjectStoreTest { @Test public void testDeleteAll() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { assertEquals(0, store.getRecordCount()); MyObject obj = store.create(); assertEquals(1, store.getRecordCount()); @@ -368,7 +368,7 @@ public class DBCachedObjectStoreTest { public void testAsMapSize() { assertTrue(map.isEmpty()); assertEquals(0, map.size()); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { store.create(); } assertFalse(map.isEmpty()); @@ -381,7 +381,7 @@ public class DBCachedObjectStoreTest { assertFalse(map.containsKey(null)); assertFalse(map.containsKey("Wrong type")); assertFalse(map.containsKey(0L)); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { store.create(); } assertTrue(map.containsKey(0L)); @@ -390,7 +390,7 @@ public class DBCachedObjectStoreTest { @SuppressWarnings("unlikely-arg-type") @Test public void testAsMapContainsValue() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { assertFalse(map.containsValue(null)); assertFalse(map.containsValue("Wrong type")); MyObject obj1 = store.create(0); @@ -405,7 +405,7 @@ public class DBCachedObjectStoreTest { @SuppressWarnings("unlikely-arg-type") @Test public void testAsMapGet() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { assertNull(map.get(0L)); assertNull(map.get("Wrong type")); MyObject obj = store.create(0); @@ -416,7 +416,7 @@ public class DBCachedObjectStoreTest { @SuppressWarnings("unlikely-arg-type") @Test public void testAsMapRemove() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { assertNull(map.remove(null)); assertNull(map.remove(0L)); assertNull(map.remove("Wrong type")); @@ -429,7 +429,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsMapClear() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { store.create(); assertEquals(1, map.size()); map.clear(); @@ -575,7 +575,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsMapSubRemove() { DBCachedObjectStoreSubMap tailMap = map.tailMap(0L); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject objN3 = store.create(-3); MyObject objP3 = store.create(3); @@ -595,7 +595,7 @@ public class DBCachedObjectStoreTest { public void testAsMapSubClear() { populateStore(-3, -1, 1, 3); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { map.subMap(0L, 0L).clear(); // NOP assertEquals(4, store.getRecordCount()); map.tailMap(0L, true).clear(); @@ -1001,7 +1001,7 @@ public class DBCachedObjectStoreTest { public void testAsKeySetSize() { assertTrue(keySet.isEmpty()); assertEquals(0, keySet.size()); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { store.create(); } assertFalse(keySet.isEmpty()); @@ -1011,7 +1011,7 @@ public class DBCachedObjectStoreTest { @SuppressWarnings("unlikely-arg-type") @Test public void testAsKeySetContains() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj = store.create(0); assertFalse(keySet.contains(null)); assertFalse(keySet.contains("Wrong type")); @@ -1065,7 +1065,7 @@ public class DBCachedObjectStoreTest { @SuppressWarnings("unlikely-arg-type") @Test public void testAsKeySetRemove() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj = store.create(0); assertEquals(1, store.getRecordCount()); @@ -1081,7 +1081,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsKeySetContainsAll() { assertTrue(keySet.containsAll(List.of())); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj = store.create(0); store.create(1); assertFalse(keySet.containsAll(List.of(0L, 1L, "Wrong type"))); @@ -1095,7 +1095,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsKeySetRemoveAll() { assertFalse(keySet.removeAll(List.of())); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj0 = store.create(0); MyObject obj1 = store.create(1); assertFalse(keySet.removeAll(List.of())); @@ -1109,7 +1109,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsKeySetRetainAll() { assertFalse(keySet.retainAll(List.of())); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj0 = store.create(0); MyObject obj1 = store.create(1); assertFalse(keySet.retainAll(List.of(0L, 1L))); @@ -1122,7 +1122,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsKeySetClear() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { store.create(); store.create(); assertEquals(2, store.getRecordCount()); @@ -1317,7 +1317,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsKeySetSubRemove() { DBCachedObjectStoreKeySubSet tailSet = keySet.tailSet(0L); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject objN3 = store.create(-3); MyObject objP3 = store.create(3); @@ -1349,7 +1349,7 @@ public class DBCachedObjectStoreTest { DBCachedObjectStoreKeySubSet tailSet = keySet.tailSet(0L, true); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { assertFalse(keySet.subSet(0L, 0L).retainAll(List.of())); assertFalse(tailSet.retainAll(List.of("Wrong type", 3L, 1L))); assertTrue(tailSet.retainAll(List.of("Wrong type", 1L))); @@ -1369,7 +1369,7 @@ public class DBCachedObjectStoreTest { DBCachedObjectStoreKeySubSet tailSet = keySet.tailSet(0L, true); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { assertFalse(tailSet.removeAll(List.of("Wrong type", -3L, -1L))); assertTrue(tailSet.removeAll(List.of("Wrong type", 3L))); assertFalse(tailSet.removeAll(List.of("Wrong type", 3L))); @@ -1386,7 +1386,7 @@ public class DBCachedObjectStoreTest { public void testAsKeySetSubClear() { populateStore(-3, -1, 1, 3); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { keySet.subSet(0L, 0L).clear(); // NOP assertEquals(4, store.getRecordCount()); keySet.tailSet(0L, true).clear(); @@ -1519,7 +1519,7 @@ public class DBCachedObjectStoreTest { public void testAsValuesSize() { assertTrue(values.isEmpty()); assertEquals(0, values.size()); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { store.create(); } assertFalse(values.isEmpty()); @@ -1529,7 +1529,7 @@ public class DBCachedObjectStoreTest { @SuppressWarnings("unlikely-arg-type") @Test public void testAsValuesContains() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj = store.create(); assertFalse(values.contains(null)); assertFalse(values.contains("Wrong type")); @@ -1609,7 +1609,7 @@ public class DBCachedObjectStoreTest { @SuppressWarnings("unlikely-arg-type") @Test public void testAsValuesRemove() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj = store.create(); assertEquals(1, store.getRecordCount()); @@ -1625,7 +1625,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsValuesContainsAll() { assertTrue(values.containsAll(List.of())); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj1 = store.create(); MyObject obj2 = store.create(); assertFalse(values.containsAll(List.of(obj1, obj2, "Wrong type"))); @@ -1639,7 +1639,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsValuesRemoveAll() { assertFalse(values.removeAll(List.of())); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj1 = store.create(); MyObject obj2 = store.create(); assertFalse(values.removeAll(List.of())); @@ -1653,7 +1653,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsValuesRetainAll() { assertFalse(values.retainAll(List.of())); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj1 = store.create(); MyObject obj2 = store.create(); assertFalse(values.retainAll(List.of(obj1, obj2))); @@ -1666,7 +1666,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsValuesClear() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { store.create(); store.create(); assertEquals(2, store.getRecordCount()); @@ -1777,7 +1777,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsValuesSubRemove() { DBCachedObjectStoreValueSubCollection tailValues = map.tailMap(0L).values(); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject objN3 = store.create(-3); MyObject objP3 = store.create(3); @@ -1815,7 +1815,7 @@ public class DBCachedObjectStoreTest { MyObject objN1 = store.getObjectAt(-1); MyObject objP3 = store.getObjectAt(3); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { assertFalse(tailValues.removeAll(List.of("Wrong type", objN3, objN1))); assertTrue(tailValues.removeAll(List.of("Wrong type", objP3))); assertFalse(tailValues.removeAll(List.of("Wrong type", objP3))); @@ -1837,7 +1837,7 @@ public class DBCachedObjectStoreTest { MyObject objP1 = store.getObjectAt(1); MyObject objP3 = store.getObjectAt(3); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { assertFalse(map.subMap(0L, 0L).values().retainAll(List.of())); assertFalse(tailValues.retainAll(List.of("Wrong type", objP3, objP1))); assertTrue(tailValues.retainAll(List.of("Wrong type", objP1))); @@ -1855,7 +1855,7 @@ public class DBCachedObjectStoreTest { public void testAsValuesSubClear() { populateStore(-3, -1, 1, 3); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { map.subMap(0L, 0L).values().clear(); // NOP assertEquals(4, store.getRecordCount()); map.tailMap(0L, true).values().clear(); @@ -1878,7 +1878,7 @@ public class DBCachedObjectStoreTest { public void testAsEntrySetSize() { assertTrue(entrySet.isEmpty()); assertEquals(0, entrySet.size()); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { store.create(); } assertFalse(entrySet.isEmpty()); @@ -1888,7 +1888,7 @@ public class DBCachedObjectStoreTest { @SuppressWarnings("unlikely-arg-type") @Test public void testAsEntrySetContains() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj0 = store.create(0); MyObject obj1 = store.create(1); assertFalse(entrySet.contains(null)); @@ -1972,7 +1972,7 @@ public class DBCachedObjectStoreTest { @SuppressWarnings("unlikely-arg-type") @Test public void testAsEntrySetRemove() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj0 = store.create(0); MyObject obj1 = store.create(1); assertEquals(2, store.getRecordCount()); @@ -1993,7 +1993,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsEntrySetContainsAll() { assertTrue(values.containsAll(List.of())); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { Entry ent0 = ent(store.create(0)); Entry ent1 = ent(store.create(1)); assertFalse(entrySet.containsAll(List.of(ent0, ent1, "Wrong type"))); @@ -2007,7 +2007,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsEntrySetRemoveAll() { assertFalse(entrySet.removeAll(List.of())); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { store.create(0); Entry ent1 = ent(store.create(1)); assertFalse(entrySet.removeAll(List.of())); @@ -2021,7 +2021,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsEntrySetRetainAll() { assertFalse(entrySet.retainAll(List.of())); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { Entry ent0 = ent(store.create(0)); Entry ent1 = ent(store.create(1)); assertFalse(entrySet.retainAll(List.of(ent0, ent1))); @@ -2034,7 +2034,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsEntrySetClear() { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { store.create(); store.create(); assertEquals(2, store.getRecordCount()); @@ -2327,7 +2327,7 @@ public class DBCachedObjectStoreTest { @Test public void testAsEntrySetSubRemove() { Set> tailSet = entrySet.tailSet(ent(0)); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject objN3 = store.create(-3); MyObject objP3 = store.create(3); @@ -2370,7 +2370,7 @@ public class DBCachedObjectStoreTest { Entry entP1 = ent(store.getObjectAt(1)); Entry entP3 = ent(store.getObjectAt(3)); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { assertFalse(entrySet.subSet(ent(0), ent(0)).retainAll(List.of())); assertFalse(tailSet.retainAll(List.of("Wrong type", entP3, entP1))); assertTrue(tailSet.retainAll(List.of("Wrong type", entP1))); @@ -2394,7 +2394,7 @@ public class DBCachedObjectStoreTest { Entry entN1 = ent(store.getObjectAt(-1)); Entry entP3 = ent(store.getObjectAt(3)); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { assertFalse(tailSet.removeAll(List.of("Wrong type", entN3, entN1))); assertTrue(tailSet.removeAll(List.of("Wrong type", entP3))); assertFalse(tailSet.removeAll(List.of("Wrong type", entP3))); @@ -2411,7 +2411,7 @@ public class DBCachedObjectStoreTest { public void testAsEntrySetSubClear() { populateStore(-3, -1, 1, 3); - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { entrySet.subSet(ent(0), ent(0)).clear(); // NOP assertEquals(4, store.getRecordCount()); entrySet.tailSet(ent(0), true).clear(); @@ -2617,7 +2617,7 @@ public class DBCachedObjectStoreTest { } protected DBCachedObjectIndex populateAndGetIndex() throws IOException { - try (UndoableTransaction tid = trans()) { + try (Transaction tid = trans()) { MyObject obj0 = store.create(0); obj0.setF2(10); obj0.doUpdated(); @@ -2718,8 +2718,7 @@ public class DBCachedObjectStoreTest { final MyObject altObj1; MyDomainObject altDomainObject = new MyDomainObject("Alternative Dummy", 500, 1000, this); - try (UndoableTransaction tid = - UndoableTransaction.start(altDomainObject, "Create Obj2")) { + try (Transaction tid = altDomainObject.openTransaction("Create Obj2")) { altObj1 = altDomainObject.store.create(1); } diff --git a/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/spatial/RStarTreeMapTest.java b/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/spatial/RStarTreeMapTest.java index e38175c4ae..3f5f5d8d08 100644 --- a/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/spatial/RStarTreeMapTest.java +++ b/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/spatial/RStarTreeMapTest.java @@ -38,8 +38,7 @@ import org.junit.*; import com.google.common.collect.Iterators; -import db.DBHandle; -import db.DBRecord; +import db.*; import generic.theme.GThemeDefaults.Colors.Palette; import ghidra.util.ColorUtils; import ghidra.util.LockHold; @@ -637,7 +636,7 @@ public class RStarTreeMapTest { super(new DBHandle(), DBOpenMode.CREATE, new ConsoleTaskMonitor(), "Testing", 500, 1000, consumer); storeFactory = new DBCachedObjectStoreFactory(this); - try (UndoableTransaction tid = UndoableTransaction.start(this, "CreateMaps")) { + try (Transaction tx = openTransaction("CreateMaps")) { tree = new IntRStarTree(storeFactory, DBIntRectStringDataRecord.TABLE_NAME, true, MAX_CHILDREN); map = tree.asSpatialMap(); @@ -859,7 +858,7 @@ public class RStarTreeMapTest { List> entries = generateRandom(rect(0, 100, 0, 100), 10, 10, 125); obj.tree.checkIntegrity(); - try (UndoableTransaction tid = UndoableTransaction.start(obj, "AddRandom")) { + try (Transaction tx = obj.openTransaction("AddRandom")) { for (Entry ent : entries) { obj.map.put(ent.getKey(), ent.getValue()); obj.tree.checkIntegrity(); @@ -875,7 +874,7 @@ public class RStarTreeMapTest { // NOTE: This "thrashing" test covers nearly all the R*-Tree insertion logic. List> entries = generateRandom(rect(0, 100, 0, 100), 10, 10, 1000); Consumer>> inserter = list -> { - try (UndoableTransaction tid = UndoableTransaction.start(obj, "AddRandom")) { + try (Transaction tx = obj.openTransaction("AddRandom")) { for (Entry ent : list) { obj.map.put(ent.getKey(), ent.getValue()); // Note, underlying tree is not synchronized, but map is @@ -903,7 +902,7 @@ public class RStarTreeMapTest { @Test public void testIntegrityWith2000VerticallyStackedRects() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(obj, "AddVertical")) { + try (Transaction tx = obj.openTransaction("AddVertical")) { for (int i = 0; i < 2000; i++) { obj.map.put(rect(0, 10, i, i + 1), "Ent" + i); // Note, underlying tree is not synchronized, but map is @@ -916,7 +915,7 @@ public class RStarTreeMapTest { @Test public void testSaveAndLoad() throws IOException, CancelledException, VersionException { - try (UndoableTransaction tid = UndoableTransaction.start(obj, "AddRecord")) { + try (Transaction tx = obj.openTransaction("AddRecord")) { obj.map.put(rect(1, 5, 6, 10), "Some value"); } @@ -958,7 +957,7 @@ public class RStarTreeMapTest { // NOTE: This test is made also to cover the visitation logic. assertTrue(obj.map.isEmpty()); - try (UndoableTransaction tid = UndoableTransaction.start(obj, "AddPoints")) { + try (Transaction tx = obj.openTransaction("AddPoints")) { for (Entry ent : generatePoints(rect(1, 12, 1, 12))) { obj.map.put(ent.getKey(), ent.getValue()); } @@ -977,7 +976,7 @@ public class RStarTreeMapTest { @Test public void testFirst() { - try (UndoableTransaction tid = UndoableTransaction.start(obj, "AddPoints")) { + try (Transaction tx = obj.openTransaction("AddPoints")) { for (Entry ent : generatePoints(rect(1, 12, 1, 12))) { obj.map.put(ent.getKey(), ent.getValue()); } @@ -1015,7 +1014,7 @@ public class RStarTreeMapTest { @Test public void testIterator() { List> points = generatePoints(rect(1, 12, 1, 12)); - try (UndoableTransaction tid = UndoableTransaction.start(obj, "AddPoints")) { + try (Transaction tx = obj.openTransaction("AddPoints")) { for (Entry ent : points) { obj.map.put(ent.getKey(), ent.getValue()); } @@ -1045,7 +1044,7 @@ public class RStarTreeMapTest { @Test public void testOrderedIterator() { List> points = generatePoints(rect(1, 12, 1, 12)); - try (UndoableTransaction tid = UndoableTransaction.start(obj, "AddPoints")) { + try (Transaction tx = obj.openTransaction("AddPoints")) { for (Entry ent : points) { obj.map.put(ent.getKey(), ent.getValue()); } @@ -1073,13 +1072,13 @@ public class RStarTreeMapTest { public void testRemove() { // TODO: Add a "minimal query including" abstract method to reduce search for removed item List> points = generatePoints(rect(1, 12, 1, 12)); - try (UndoableTransaction tid = UndoableTransaction.start(obj, "AddPoints")) { + try (Transaction tx = obj.openTransaction("AddPoints")) { for (Entry ent : points) { obj.map.put(ent.getKey(), ent.getValue()); } } - try (UndoableTransaction tid = UndoableTransaction.start(obj, "RemovePoints")) { + try (Transaction tx = obj.openTransaction("RemovePoints")) { assertFalse(obj.map.reduce(IntRectQuery.enclosed(rect(6, 6, 6, 6))).isEmpty()); obj.map.remove(rect(6, 6, 6, 6), "NotHere"); assertFalse(obj.map.reduce(IntRectQuery.enclosed(rect(6, 6, 6, 6))).isEmpty()); @@ -1099,13 +1098,13 @@ public class RStarTreeMapTest { @Test public void testClear() { List> points = generatePoints(rect(1, 12, 1, 12)); - try (UndoableTransaction tid = UndoableTransaction.start(obj, "AddPoints")) { + try (Transaction tx = obj.openTransaction("AddPoints")) { for (Entry ent : points) { obj.map.put(ent.getKey(), ent.getValue()); } } - try (UndoableTransaction tid = UndoableTransaction.start(obj, "RemovePoints")) { + try (Transaction tx = obj.openTransaction("RemovePoints")) { obj.map.reduce(IntRectQuery.enclosed(rect(6, 6, 6, 6))).clear(); obj.tree.checkIntegrity(); assertEquals(143, obj.map.size()); @@ -1135,7 +1134,7 @@ public class RStarTreeMapTest { @Test public void testValuesToArray() { List> points = generatePoints(rect(1, 12, 1, 12)); - try (UndoableTransaction tid = UndoableTransaction.start(obj, "AddPoints")) { + try (Transaction tx = obj.openTransaction("AddPoints")) { for (Entry ent : points) { obj.map.put(ent.getKey(), ent.getValue()); } diff --git a/Ghidra/Debug/TaintAnalysis/src/test/java/ghidra/pcode/emu/taint/full/TaintDebuggerPcodeEmulatorTest.java b/Ghidra/Debug/TaintAnalysis/src/test/java/ghidra/pcode/emu/taint/full/TaintDebuggerPcodeEmulatorTest.java index 5382488da2..2138061a17 100644 --- a/Ghidra/Debug/TaintAnalysis/src/test/java/ghidra/pcode/emu/taint/full/TaintDebuggerPcodeEmulatorTest.java +++ b/Ghidra/Debug/TaintAnalysis/src/test/java/ghidra/pcode/emu/taint/full/TaintDebuggerPcodeEmulatorTest.java @@ -22,6 +22,7 @@ import java.util.Set; import org.junit.Before; import org.junit.Test; +import db.Transaction; import ghidra.app.plugin.assembler.Assembler; import ghidra.app.plugin.assembler.Assemblers; import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest; @@ -41,7 +42,6 @@ import ghidra.trace.model.property.TracePropertyMap; import ghidra.trace.model.property.TracePropertyMapSpace; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.schedule.TraceSchedule; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; public class TaintDebuggerPcodeEmulatorTest extends AbstractGhidraHeadedDebuggerGUITest { @@ -69,7 +69,7 @@ public class TaintDebuggerPcodeEmulatorTest extends AbstractGhidraHeadedDebugger createAndOpenTrace(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { tb.getOrAddThread("Threads[0]", 0); } @@ -97,7 +97,7 @@ public class TaintDebuggerPcodeEmulatorTest extends AbstractGhidraHeadedDebugger AddressSpace rs = tb.language.getAddressFactory().getRegisterSpace(); TraceThread thread; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { mappingService.addMapping( new DefaultTraceLocation(tb.trace, null, Lifespan.nowOn(0), tb.addr(0x55550000)), new ProgramLocation(program, tb.addr(0x00400000)), 0x1000, false); @@ -109,7 +109,7 @@ public class TaintDebuggerPcodeEmulatorTest extends AbstractGhidraHeadedDebugger mappingService.getOpenMappedLocation( new DefaultTraceLocation(tb.trace, null, Lifespan.at(0), tb.addr(0x55550000))))); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Assemble")) { + try (Transaction tx = program.openTransaction("Assemble")) { program.getMemory() .createInitializedBlock(".text", tb.addr(0x00400000), 0x1000, (byte) 0, TaskMonitor.DUMMY, false); diff --git a/Ghidra/Debug/TaintAnalysis/src/test/java/ghidra/pcode/emu/taint/plain/TaintPcodeEmulatorTest.java b/Ghidra/Debug/TaintAnalysis/src/test/java/ghidra/pcode/emu/taint/plain/TaintPcodeEmulatorTest.java index 8df3ac6663..8b143752ef 100644 --- a/Ghidra/Debug/TaintAnalysis/src/test/java/ghidra/pcode/emu/taint/plain/TaintPcodeEmulatorTest.java +++ b/Ghidra/Debug/TaintAnalysis/src/test/java/ghidra/pcode/emu/taint/plain/TaintPcodeEmulatorTest.java @@ -22,6 +22,7 @@ import java.io.IOException; import org.apache.commons.lang3.tuple.Pair; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.assembler.*; import ghidra.pcode.emu.PcodeThread; import ghidra.pcode.emu.linux.AbstractEmuLinuxSyscallUseropLibrary; @@ -30,8 +31,8 @@ import ghidra.pcode.emu.linux.EmuLinuxAmd64SyscallUseropLibraryTest.Syscall; import ghidra.pcode.emu.sys.EmuProcessExitedException; import ghidra.pcode.emu.taint.lib.TaintEmuUnixFileSystem; import ghidra.pcode.emu.taint.lib.TaintFileReadsLinuxAmd64SyscallLibrary; -import ghidra.pcode.exec.PcodeUseropLibrary; import ghidra.pcode.exec.PcodeExecutorStatePiece.Reason; +import ghidra.pcode.exec.PcodeUseropLibrary; import ghidra.pcode.utils.Utils; import ghidra.program.model.address.Address; import ghidra.program.model.address.AddressSpace; @@ -42,7 +43,6 @@ import ghidra.program.model.mem.MemoryBlock; import ghidra.taint.model.TaintSet; import ghidra.taint.model.TaintVec; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; public class TaintPcodeEmulatorTest extends AbstractGhidraHeadlessIntegrationTest { @@ -79,7 +79,7 @@ public class TaintPcodeEmulatorTest extends AbstractGhidraHeadlessIntegrationTes start = space.getAddress(0x00400000); size = 0x1000; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { block = program.getMemory() .createInitializedBlock(".text", start, size, (byte) 0, TaskMonitor.DUMMY, false); @@ -155,7 +155,7 @@ public class TaintPcodeEmulatorTest extends AbstractGhidraHeadlessIntegrationTes @Test public void testTaintFileReads() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { asm.assemble(start, "MOV RAX," + Syscall.OPEN.number, "LEA RDI,[0x00400880]", diff --git a/Ghidra/Debug/TaintAnalysis/src/test/java/ghidra/pcode/emu/taint/trace/TaintTracePcodeEmulatorTest.java b/Ghidra/Debug/TaintAnalysis/src/test/java/ghidra/pcode/emu/taint/trace/TaintTracePcodeEmulatorTest.java index ecf0890827..2c6ab9547f 100644 --- a/Ghidra/Debug/TaintAnalysis/src/test/java/ghidra/pcode/emu/taint/trace/TaintTracePcodeEmulatorTest.java +++ b/Ghidra/Debug/TaintAnalysis/src/test/java/ghidra/pcode/emu/taint/trace/TaintTracePcodeEmulatorTest.java @@ -15,8 +15,7 @@ */ package ghidra.pcode.emu.taint.trace; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; +import static org.junit.Assert.*; import java.math.BigInteger; import java.nio.ByteBuffer; @@ -26,6 +25,7 @@ import java.util.stream.Collectors; import org.apache.commons.lang3.tuple.Pair; import org.junit.Test; +import db.Transaction; import ghidra.app.plugin.assembler.*; import ghidra.dbg.target.schema.SchemaContext; import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; @@ -49,7 +49,6 @@ import ghidra.trace.model.property.TracePropertyMapSpace; import ghidra.trace.model.target.TraceObject.ConflictResolution; import ghidra.trace.model.target.TraceObjectKeyPath; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.UndoableTransaction; public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest { @@ -78,7 +77,7 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("Test", "x86:LE:64:default")) { TraceThread thread = initTrace(tb, "", List.of()); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TracePropertyMap taintMap = tb.trace.getAddressPropertyManager() .getOrCreatePropertyMap("Taint", String.class); taintMap.set(Lifespan.nowOn(0), tb.range(0x00400000, 0x00400003), "test_0"); @@ -106,7 +105,7 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest Register regRAX = tb.language.getRegister("RAX"); Register regEBX = tb.language.getRegister("EBX"); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { TracePropertyMap taintMap = tb.trace.getAddressPropertyManager() .getOrCreatePropertyMap("Taint", String.class); TracePropertyMapSpace mapSpace = @@ -144,7 +143,7 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest .setVar(tb.addr(0x00400000), 8, true, Pair.of(tb.arr(0, 0, 0, 0, 0, 0, 0, 0), taintVal)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 0); } TracePropertyMap taintMap = @@ -170,7 +169,7 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest } emuThread.getState().setVar(tb.reg("EAX"), Pair.of(tb.arr(0, 0, 0, 0), taintVal)); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 0); } TracePropertyMap taintMap = @@ -204,11 +203,11 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest TaintVec.copies(TaintSet.parse("test_0"), 8))); emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 0); } emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 2, 0); } @@ -239,12 +238,12 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest .setVar(tb.reg("RAX"), Pair.of( tb.arr(1, 2, 3, 4, 5, 6, 7, 8), TaintVec.copies(TaintSet.parse("test_0"), 8))); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 0, 0); } emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 0); } @@ -273,12 +272,12 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest .setVar(tb.reg("RAX"), Pair.of( tb.arr(1, 2, 3, 4, 5, 6, 7, 8), TaintVec.copies(TaintSet.parse("test_0"), 8))); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 0, 0); } emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(tb.host, 1, 0); } @@ -299,7 +298,7 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest AddressSpace ram = tb.language.getAddressFactory().getDefaultAddressSpace(); TraceThread thread; TraceGuestPlatform x64; - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { SchemaContext ctx = XmlSchemaContext.deserialize(DBTraceObjectManagerTest.XML_CTX); DBTraceObjectManager objects = tb.trace.getObjectManager(); objects.createRootObject(ctx.getSchema(new SchemaName("Session"))); @@ -332,11 +331,11 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest TaintVec.copies(TaintSet.parse("test_0"), 8))); emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(x64, 1, 0); } emuThread.stepInstruction(); - try (UndoableTransaction tid = tb.startTransaction()) { + try (Transaction tx = tb.startTransaction()) { emu.writeDown(x64, 2, 0); } diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/DWARFAnalyzer.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/DWARFAnalyzer.java index 8b99e059a4..aa9777a9c6 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/DWARFAnalyzer.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/DWARFAnalyzer.java @@ -168,7 +168,7 @@ public class DWARFAnalyzer extends AbstractAnalyzer { public boolean added(Program program, AddressSetView set, TaskMonitor monitor, MessageLog log) throws CancelledException { - long txId = program.getCurrentTransaction().getID(); + long txId = program.getCurrentTransactionInfo().getID(); if (txId == lastTxId) { // Only run once per analysis session - as denoted by being in the same transaction return true; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/assembler/PatchDataAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/assembler/PatchDataAction.java index 926057a9a5..40b026d0c0 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/assembler/PatchDataAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/assembler/PatchDataAction.java @@ -21,13 +21,13 @@ import java.awt.event.KeyListener; import javax.swing.*; +import db.Transaction; import docking.action.KeyBindingData; import docking.action.MenuData; import docking.widgets.fieldpanel.FieldPanel; import docking.widgets.fieldpanel.support.FieldLocation; import generic.theme.GThemeDefaults.Colors; import ghidra.framework.plugintool.Plugin; -import ghidra.program.database.util.ProgramTransaction; import ghidra.program.model.address.*; import ghidra.program.model.data.DataType; import ghidra.program.model.data.DataTypeEncodeException; @@ -133,8 +133,8 @@ public class PatchDataAction extends AbstractPatchAction { tool.setStatusInfo(e.getMessage(), true); return; } - try (ProgramTransaction trans = - ProgramTransaction.open(program, "Patch Data @" + address + ": " + input.getText())) { + try (Transaction tx = + program.openTransaction("Patch Data @" + address + ": " + input.getText())) { int oldLength = data.getLength(); if (encoded.length != oldLength) { program.getListing().clearCodeUnits(address, rng.getMaxAddress(), false); @@ -143,7 +143,6 @@ public class PatchDataAction extends AbstractPatchAction { if (encoded.length != oldLength) { program.getListing().createData(address, dt, encoded.length); } - trans.commit(); hide(); } catch (MemoryAccessException e) { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/assembler/PatchInstructionAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/assembler/PatchInstructionAction.java index 48184fbc21..0a8f57607d 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/assembler/PatchInstructionAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/assembler/PatchInstructionAction.java @@ -27,6 +27,7 @@ import javax.swing.KeyStroke; import org.apache.commons.collections4.map.DefaultedMap; import org.apache.commons.collections4.map.LazyMap; +import db.Transaction; import docking.action.KeyBindingData; import docking.action.MenuData; import docking.widgets.autocomplete.*; @@ -37,7 +38,6 @@ import ghidra.app.plugin.assembler.Assembler; import ghidra.app.plugin.assembler.Assemblers; import ghidra.app.plugin.core.assembler.AssemblyDualTextField.*; import ghidra.framework.plugintool.Plugin; -import ghidra.program.database.util.ProgramTransaction; import ghidra.program.model.address.Address; import ghidra.program.model.lang.Language; import ghidra.program.model.listing.*; @@ -312,10 +312,9 @@ public class PatchInstructionAction extends AbstractPatchAction { public void accept(AssemblyInstruction ins) { Program program = getProgram(); Address address = getAddress(); - try (ProgramTransaction trans = - ProgramTransaction.open(program, "Assemble @" + address + ": " + input.getText())) { + try (Transaction tx = + program.openTransaction("Assemble @" + address + ": " + input.getText())) { applyPatch(ins.getData()); - trans.commit(); hide(); } catch (MemoryAccessException e) { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/archive/DataTypeManagerHandler.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/archive/DataTypeManagerHandler.java index 244808a79f..4bb5abd0ff 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/archive/DataTypeManagerHandler.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/archive/DataTypeManagerHandler.java @@ -1335,7 +1335,7 @@ public class DataTypeManagerHandler { StringBuilder buf = new StringBuilder(); buf.append("The " + CONTENT_NAME + " is currently being modified by \n"); buf.append("the following actions:\n "); - Transaction t = undoableDomainObject.getCurrentTransaction(); + TransactionInfo t = undoableDomainObject.getCurrentTransactionInfo(); List list = t.getOpenSubTransactions(); Iterator it = list.iterator(); while (it.hasNext()) { @@ -1369,7 +1369,7 @@ public class DataTypeManagerHandler { StringBuffer buf = new StringBuffer(); buf.append("The " + CONTENT_NAME + " is currently being modified by the following actions/tasks:\n \n"); - Transaction t = undoableDomainObject.getCurrentTransaction(); + TransactionInfo t = undoableDomainObject.getCurrentTransactionInfo(); List list = t.getOpenSubTransactions(); Iterator it = list.iterator(); while (it.hasNext()) { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/misc/MyProgramChangesDisplayPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/misc/MyProgramChangesDisplayPlugin.java index 4e3a9f303a..cde6c58b4c 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/misc/MyProgramChangesDisplayPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/misc/MyProgramChangesDisplayPlugin.java @@ -373,7 +373,7 @@ public class MyProgramChangesDisplayPlugin extends ProgramPlugin implements Doma private class ProgramTransactionListener implements TransactionListener { @Override - public void transactionStarted(DomainObjectAdapterDB domainObj, Transaction tx) { + public void transactionStarted(DomainObjectAdapterDB domainObj, TransactionInfo tx) { // ignore } diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/AbstractUndoRedoAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/AbstractUndoRedoAction.java index e3fd6b3cc6..7017969007 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/AbstractUndoRedoAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/AbstractUndoRedoAction.java @@ -27,7 +27,7 @@ import ghidra.app.context.ProgramActionContext; import ghidra.app.services.GoToService; import ghidra.app.services.NavigationHistoryService; import ghidra.framework.data.DomainObjectAdapterDB; -import ghidra.framework.model.Transaction; +import ghidra.framework.model.TransactionInfo; import ghidra.framework.model.TransactionListener; import ghidra.framework.plugintool.PluginTool; import ghidra.program.model.listing.Program; @@ -161,7 +161,7 @@ public abstract class AbstractUndoRedoAction extends DockingAction { private class ContextProgramTransactionListener implements TransactionListener { @Override - public void transactionStarted(DomainObjectAdapterDB domainObj, Transaction tx) { + public void transactionStarted(DomainObjectAdapterDB domainObj, TransactionInfo tx) { // don't care } diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/MultiProgramManager.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/MultiProgramManager.java index 717227e8bb..efbcb20098 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/MultiProgramManager.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/MultiProgramManager.java @@ -456,7 +456,7 @@ class MultiProgramManager implements DomainObjectListener, TransactionListener { } @Override - public void transactionStarted(DomainObjectAdapterDB domainObj, Transaction tx) { + public void transactionStarted(DomainObjectAdapterDB domainObj, TransactionInfo tx) { // don't care } diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramSaveManager.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramSaveManager.java index ab3dd9c489..8895ec949c 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramSaveManager.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramSaveManager.java @@ -379,7 +379,7 @@ class ProgramSaveManager { StringBuilder buf = new StringBuilder(); buf.append( "The Program is currently being modified by the following actions/tasks:\n "); - Transaction t = program.getCurrentTransaction(); + TransactionInfo t = program.getCurrentTransactionInfo(); List list = t.getOpenSubTransactions(); Iterator it = list.iterator(); while (it.hasNext()) { @@ -413,7 +413,7 @@ class ProgramSaveManager { StringBuffer buf = new StringBuffer(); buf.append( "The Program is currently being modified by the following actions/tasks:\n "); - Transaction t = program.getCurrentTransaction(); + TransactionInfo t = program.getCurrentTransactionInfo(); List list = t.getOpenSubTransactions(); Iterator it = list.iterator(); while (it.hasNext()) { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/TransactionMonitor.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/TransactionMonitor.java index 91fcd6eb40..f8b6fea2db 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/TransactionMonitor.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/TransactionMonitor.java @@ -24,7 +24,7 @@ import javax.swing.*; import generic.theme.GIcon; import ghidra.framework.data.DomainObjectAdapterDB; -import ghidra.framework.model.Transaction; +import ghidra.framework.model.TransactionInfo; import ghidra.framework.model.TransactionListener; import ghidra.program.database.ProgramDB; import ghidra.program.model.listing.Program; @@ -36,7 +36,7 @@ class TransactionMonitor extends JComponent implements TransactionListener { private static Dimension prefSize; ProgramDB program; - Transaction lastTx; + TransactionInfo lastTx; TransactionMonitor() { super(); @@ -61,7 +61,7 @@ class TransactionMonitor extends JComponent implements TransactionListener { } @Override - public void transactionStarted(DomainObjectAdapterDB domainObj, Transaction tx) { + public void transactionStarted(DomainObjectAdapterDB domainObj, TransactionInfo tx) { lastTx = tx; repaint(); } diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchtext/ListingDisplaySearcher.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchtext/ListingDisplaySearcher.java index 8e1aa42ef6..5fd6335e87 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchtext/ListingDisplaySearcher.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchtext/ListingDisplaySearcher.java @@ -230,7 +230,7 @@ class ListingDisplaySearcher implements Searcher { tool.setStatusInfo("Search failed: try search when tool is not " + "executing commands that may change the program"); } - else if (!program.isClosed() && program.getCurrentTransaction() != null) { + else if (!program.isClosed() && program.getCurrentTransactionInfo() != null) { tool.setStatusInfo("Search failed: try search when program is not being changed"); } else if (!program.isClosed() && !(e instanceof DomainObjectException)) { diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/merge/AbstractMergeTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/merge/AbstractMergeTest.java index 857c0c262a..813fad27bf 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/merge/AbstractMergeTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/merge/AbstractMergeTest.java @@ -29,7 +29,7 @@ import org.junit.*; import docking.DockingWindowManager; import generic.util.WindowUtilities; -import ghidra.framework.model.Transaction; +import ghidra.framework.model.TransactionInfo; import ghidra.framework.plugintool.PluginTool; import ghidra.program.database.MergeTestFacilitator; import ghidra.program.model.listing.Program; @@ -185,7 +185,7 @@ public abstract class AbstractMergeTest extends AbstractGhidraHeadedIntegrationT return; } - Transaction tx = p.getCurrentTransaction(); + TransactionInfo tx = p.getCurrentTransactionInfo(); if (tx == null) { return; } diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/framework/data/PairedTransactionTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/framework/data/PairedTransactionTest.java index befd5f83a9..a1173d088b 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/framework/data/PairedTransactionTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/framework/data/PairedTransactionTest.java @@ -89,7 +89,7 @@ public class PairedTransactionTest extends AbstractGuiTest { class MyListener implements TransactionListener { private List events = new ArrayList<>(); - private Transaction lastTransaction; + private TransactionInfo lastTransaction; private DomainObjectAdapterDB obj; MyListener(DomainObjectAdapterDB obj) { @@ -105,7 +105,7 @@ public class PairedTransactionTest extends AbstractGuiTest { @Override public synchronized void transactionStarted(DomainObjectAdapterDB domainObj, - Transaction tx) { + TransactionInfo tx) { assertEquals(obj, domainObj); events.add(START); lastTransaction = tx; @@ -139,7 +139,7 @@ public class PairedTransactionTest extends AbstractGuiTest { } } - Transaction getLastTransaction() { + TransactionInfo getLastTransaction() { waitForPostedSwingRunnables(); synchronized (this) { return lastTransaction; @@ -151,8 +151,8 @@ public class PairedTransactionTest extends AbstractGuiTest { @Test public void testAddSynchronizedDomainObject() throws IOException { - assertNull(obj1.getCurrentTransaction()); - assertNull(obj2.getCurrentTransaction()); + assertNull(obj1.getCurrentTransactionInfo()); + assertNull(obj2.getCurrentTransactionInfo()); assertEquals(1, obj1.getUndoStackDepth()); assertEquals(1, obj2.getUndoStackDepth()); @@ -162,7 +162,7 @@ public class PairedTransactionTest extends AbstractGuiTest { assertFalse(obj1.canRedo()); assertFalse(obj2.canRedo()); - Transaction tx = obj1Listener.getLastTransaction(); + TransactionInfo tx = obj1Listener.getLastTransaction(); obj1Listener.getEvents(); assertNotNull(tx); @@ -208,7 +208,7 @@ public class PairedTransactionTest extends AbstractGuiTest { int txId1 = obj1.startTransaction("Test1"); try { - assertNotNull(obj2.getCurrentTransaction()); + assertNotNull(obj2.getCurrentTransactionInfo()); propertyList1.setString("A1.B1", "TestB1"); @@ -247,7 +247,7 @@ public class PairedTransactionTest extends AbstractGuiTest { assertEquals("NULL", propertyList1.getString("A1.B1", "NULL")); assertEquals("NULL", propertyList2.getString("A2.B2", "NULL")); - assertNull(obj1.getCurrentTransaction()); + assertNull(obj1.getCurrentTransactionInfo()); assertEquals(0, obj1.getUndoStackDepth()); assertEquals(0, obj2.getUndoStackDepth()); @@ -267,7 +267,7 @@ public class PairedTransactionTest extends AbstractGuiTest { txId1 = obj1.startTransaction("Test1"); try { - assertNotNull(obj2.getCurrentTransaction()); + assertNotNull(obj2.getCurrentTransactionInfo()); propertyList1.setString("A1.B1", "TestB1"); @@ -305,7 +305,7 @@ public class PairedTransactionTest extends AbstractGuiTest { assertEquals("TestB1", propertyList1.getString("A1.B1", "NULL")); assertEquals("TestB2", propertyList2.getString("A2.B2", "NULL")); - assertNull(obj1.getCurrentTransaction()); + assertNull(obj1.getCurrentTransactionInfo()); assertEquals(1, obj1.getUndoStackDepth()); assertEquals(1, obj2.getUndoStackDepth()); @@ -389,7 +389,7 @@ public class PairedTransactionTest extends AbstractGuiTest { txId1 = obj1.startTransaction("Test1"); try { - assertNull(obj2.getCurrentTransaction()); + assertNull(obj2.getCurrentTransactionInfo()); propertyList1.setString("A1.C1", "TestC1"); @@ -427,7 +427,7 @@ public class PairedTransactionTest extends AbstractGuiTest { assertEquals("NULL", propertyList1.getString("A1.C1", "NULL")); assertEquals("TestC2", propertyList2.getString("A2.C2", "NULL")); - assertNull(obj1.getCurrentTransaction()); + assertNull(obj1.getCurrentTransactionInfo()); assertEquals(0, obj1.getUndoStackDepth()); assertEquals(1, obj2.getUndoStackDepth()); diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/program/database/data/SettingsTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/program/database/data/SettingsTest.java index af43b9faba..ef2cb9de2a 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/program/database/data/SettingsTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/program/database/data/SettingsTest.java @@ -81,7 +81,7 @@ public class SettingsTest extends AbstractGhidraHeadedIntegrationTest { @After public void tearDown() throws Exception { - if (program.getCurrentTransaction() != null) { + if (program.getCurrentTransactionInfo() != null) { program.endTransaction(transactionID, true); } program.release(this); diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/program/database/properties/DBPropertyMapManagerTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/program/database/properties/DBPropertyMapManagerTest.java index cc5acd0476..84df98f56e 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/program/database/properties/DBPropertyMapManagerTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/program/database/properties/DBPropertyMapManagerTest.java @@ -81,7 +81,7 @@ public class DBPropertyMapManagerTest extends AbstractGhidraHeadedIntegrationTes @After public void tearDown() throws Exception { if (program != null) { - if (program.getCurrentTransaction() != null) { + if (program.getCurrentTransactionInfo() != null) { program.endTransaction(transactionID, true); } program.release(this); diff --git a/Ghidra/Features/Base/src/test/java/ghidra/app/plugin/core/assembler/AssemblerPluginTest.java b/Ghidra/Features/Base/src/test/java/ghidra/app/plugin/core/assembler/AssemblerPluginTest.java index 6f5e22fe6a..3c372ea9b9 100644 --- a/Ghidra/Features/Base/src/test/java/ghidra/app/plugin/core/assembler/AssemblerPluginTest.java +++ b/Ghidra/Features/Base/src/test/java/ghidra/app/plugin/core/assembler/AssemblerPluginTest.java @@ -19,6 +19,7 @@ import static org.junit.Assert.*; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.assembler.Assembler; import ghidra.app.plugin.assembler.Assemblers; import ghidra.app.plugin.core.codebrowser.CodeBrowserPlugin; @@ -27,7 +28,6 @@ import ghidra.app.plugin.core.progmgr.ProgramManagerPlugin; import ghidra.docking.settings.FormatSettingsDefinition; import ghidra.framework.plugintool.PluginTool; import ghidra.program.database.ProgramDB; -import ghidra.program.database.util.ProgramTransaction; import ghidra.program.model.address.Address; import ghidra.program.model.address.AddressSpace; import ghidra.program.model.data.ShortDataType; @@ -72,10 +72,9 @@ public class AssemblerPluginTest extends AbstractGhidraHeadedIntegrationTest { helper = new AssemblerPluginTestHelper(assemblerPlugin, codeViewer, program); - try (ProgramTransaction trans = ProgramTransaction.open(program, "Setup")) { + try (Transaction tx = program.openTransaction("Setup")) { memory.createInitializedBlock(".text", space.getAddress(0x00400000), 0x1000, (byte) 0, TaskMonitor.DUMMY, false); - trans.commit(); } env.showTool(); @@ -98,9 +97,8 @@ public class AssemblerPluginTest extends AbstractGhidraHeadedIntegrationTest { public void testActionPatchInstructionExisting() throws Exception { Address address = space.getAddress(0x00400000); Assembler asm = Assemblers.getAssembler(program); - try (ProgramTransaction trans = ProgramTransaction.open(program, "Assemble pre-existing")) { + try (Transaction tx = program.openTransaction("Assemble pre-existing")) { asm.assemble(address, "imm r0,#0x3d2"); - trans.commit(); } Instruction ins = helper.patchInstructionAt(address, "imm r0,#0x3d2", "imm r0, #123"); @@ -113,9 +111,8 @@ public class AssemblerPluginTest extends AbstractGhidraHeadedIntegrationTest { @Test public void testActionPatchDataShortHexValid() throws Exception { Address address = space.getAddress(0x00400000); - try (ProgramTransaction trans = ProgramTransaction.open(program, "Place short")) { + try (Transaction tx = program.openTransaction("Place short")) { listing.createData(address, ShortDataType.dataType); - trans.commit(); } Data data = helper.patchDataAt(address, "0h", "1234h"); @@ -125,10 +122,9 @@ public class AssemblerPluginTest extends AbstractGhidraHeadedIntegrationTest { @Test public void testActionPatchDataShortDecValid() throws Exception { Address address = space.getAddress(0x00400000); - try (ProgramTransaction trans = ProgramTransaction.open(program, "Place short")) { + try (Transaction tx = program.openTransaction("Place short")) { Data data = listing.createData(address, ShortDataType.dataType); FormatSettingsDefinition.DEF.setChoice(data, FormatSettingsDefinition.DECIMAL); - trans.commit(); } Data data = helper.patchDataAt(address, "0", "1234"); @@ -138,10 +134,9 @@ public class AssemblerPluginTest extends AbstractGhidraHeadedIntegrationTest { @Test public void testActionPatchDataUTF8StringSameLength() throws Exception { Address address = space.getAddress(0x00400000); - try (ProgramTransaction trans = ProgramTransaction.open(program, "Place string")) { + try (Transaction tx = program.openTransaction("Place string")) { memory.setBytes(address, "Hello, World!\0".getBytes("utf-8")); listing.createData(address, TerminatedStringDataType.dataType); - trans.commit(); } Data data = helper.patchDataAt(address, "\"Hello, World!\"", @@ -152,10 +147,9 @@ public class AssemblerPluginTest extends AbstractGhidraHeadedIntegrationTest { @Test public void testActionPatchDataUTF8StringShorter() throws Exception { Address address = space.getAddress(0x00400000); - try (ProgramTransaction trans = ProgramTransaction.open(program, "Place string")) { + try (Transaction tx = program.openTransaction("Place string")) { memory.setBytes(address, "Hello, World!\0".getBytes("utf-8")); listing.createData(address, TerminatedStringDataType.dataType); - trans.commit(); } Data data = @@ -167,10 +161,9 @@ public class AssemblerPluginTest extends AbstractGhidraHeadedIntegrationTest { @Test public void testActionPatchDataUTF8StringLonger() throws Exception { Address address = space.getAddress(0x00400000); - try (ProgramTransaction trans = ProgramTransaction.open(program, "Place string")) { + try (Transaction tx = program.openTransaction("Place string")) { memory.setBytes(address, "Hello, World!\0".getBytes("utf-8")); listing.createData(address, TerminatedStringDataType.dataType); - trans.commit(); } Data data = helper.patchDataAt(address, "\"Hello, World!\"", "\"Hello to you, too!\""); diff --git a/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbAnalyzer.java b/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbAnalyzer.java index 43cc1e36b4..4f973139e6 100644 --- a/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbAnalyzer.java +++ b/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbAnalyzer.java @@ -59,7 +59,7 @@ public class PdbAnalyzer extends AbstractAnalyzer { public boolean added(Program program, AddressSetView set, TaskMonitor monitor, MessageLog log) { // Only run once per transaction - avoid message duplication - long txId = program.getCurrentTransaction().getID(); + long txId = program.getCurrentTransactionInfo().getID(); if (txId == lastTransactionId) { return false; } diff --git a/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbUniversalAnalyzer.java b/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbUniversalAnalyzer.java index eefa95407e..c255bdfc95 100644 --- a/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbUniversalAnalyzer.java +++ b/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbUniversalAnalyzer.java @@ -116,7 +116,7 @@ public class PdbUniversalAnalyzer extends AbstractAnalyzer { throws CancelledException { // Only run once per transaction - avoid message duplication - long txId = program.getCurrentTransaction().getID(); + long txId = program.getCurrentTransactionInfo().getID(); if (txId == lastTransactionId) { return false; } diff --git a/Ghidra/Features/ProgramDiff/src/main/java/ghidra/app/plugin/core/diff/ProgramDiffPlugin.java b/Ghidra/Features/ProgramDiff/src/main/java/ghidra/app/plugin/core/diff/ProgramDiffPlugin.java index 13702a3c6c..77144e063d 100644 --- a/Ghidra/Features/ProgramDiff/src/main/java/ghidra/app/plugin/core/diff/ProgramDiffPlugin.java +++ b/Ghidra/Features/ProgramDiff/src/main/java/ghidra/app/plugin/core/diff/ProgramDiffPlugin.java @@ -809,7 +809,7 @@ public class ProgramDiffPlugin extends ProgramPlugin return; } - if (primaryProgram.getCurrentTransaction() != null) { + if (primaryProgram.getCurrentTransactionInfo() != null) { String msg = "Cannot apply differences while another task is modifying \"" + primaryProgram.getName() + "\"." + "\nTry again when the currently executing task has completed."; diff --git a/Ghidra/Features/SystemEmulation/ghidra_scripts/DebuggerEmuExampleScript.java b/Ghidra/Features/SystemEmulation/ghidra_scripts/DebuggerEmuExampleScript.java index e9e4466a08..e00f8c2299 100644 --- a/Ghidra/Features/SystemEmulation/ghidra_scripts/DebuggerEmuExampleScript.java +++ b/Ghidra/Features/SystemEmulation/ghidra_scripts/DebuggerEmuExampleScript.java @@ -25,6 +25,7 @@ import java.nio.charset.Charset; +import db.Transaction; import ghidra.app.plugin.assembler.Assembler; import ghidra.app.plugin.assembler.Assemblers; import ghidra.app.plugin.core.debug.service.emulation.BytesDebuggerPcodeEmulator; @@ -52,7 +53,6 @@ import ghidra.trace.model.guest.TracePlatform; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.TraceSnapshot; import ghidra.trace.model.time.TraceTimeManager; -import ghidra.util.database.UndoableTransaction; public class DebuggerEmuExampleScript extends GhidraScript { private final static Charset UTF8 = Charset.forName("utf8"); @@ -83,7 +83,7 @@ public class DebuggerEmuExampleScript extends GhidraScript { .getProjectData() .getRootFolder() .createFile("emu_example", program, monitor); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Init")) { + try (Transaction tx = program.openTransaction("Init")) { AddressSpace space = program.getAddressFactory().getDefaultAddressSpace(); entry = space.getAddress(0x00400000); Address dataEntry = space.getAddress(0x00600000); @@ -168,7 +168,7 @@ public class DebuggerEmuExampleScript extends GhidraScript { */ TraceTimeManager time = trace.getTimeManager(); TraceSnapshot snapshot = time.getSnapshot(0, true); - try (UndoableTransaction tid = UndoableTransaction.start(trace, "Emulate")) { + try (Transaction tx = trace.openTransaction("Emulate")) { for (int i = 0; i < 10; i++) { println("Executing: " + thread.getCounter()); thread.stepInstruction(); diff --git a/Ghidra/Features/SystemEmulation/ghidra_scripts/StandAloneSyscallEmuExampleScript.java b/Ghidra/Features/SystemEmulation/ghidra_scripts/StandAloneSyscallEmuExampleScript.java index ce6f45568e..ad03ea3fba 100644 --- a/Ghidra/Features/SystemEmulation/ghidra_scripts/StandAloneSyscallEmuExampleScript.java +++ b/Ghidra/Features/SystemEmulation/ghidra_scripts/StandAloneSyscallEmuExampleScript.java @@ -23,6 +23,7 @@ import java.nio.charset.Charset; +import db.Transaction; import ghidra.app.plugin.assembler.Assembler; import ghidra.app.plugin.assembler.Assemblers; import ghidra.app.plugin.processors.sleigh.SleighLanguage; @@ -43,7 +44,6 @@ import ghidra.program.model.listing.Program; import ghidra.program.model.mem.Memory; import ghidra.program.model.mem.MemoryBlock; import ghidra.program.model.symbol.SourceType; -import ghidra.util.database.UndoableTransaction; public class StandAloneSyscallEmuExampleScript extends GhidraScript { private final static Charset UTF8 = Charset.forName("utf8"); @@ -70,7 +70,7 @@ public class StandAloneSyscallEmuExampleScript extends GhidraScript { program = new ProgramDB("syscall_example", language, language.getCompilerSpecByID(new CompilerSpecID("gcc")), this); - try (UndoableTransaction tid = UndoableTransaction.start(program, "Init")) { + try (Transaction tx = program.openTransaction("Init")) { AddressSpace space = program.getAddressFactory().getDefaultAddressSpace(); entry = space.getAddress(0x00400000); Address dataEntry = space.getAddress(0x00600000); diff --git a/Ghidra/Features/SystemEmulation/src/main/java/ghidra/pcode/struct/DefaultVar.java b/Ghidra/Features/SystemEmulation/src/main/java/ghidra/pcode/struct/DefaultVar.java index 54c020d460..4eea8953ad 100644 --- a/Ghidra/Features/SystemEmulation/src/main/java/ghidra/pcode/struct/DefaultVar.java +++ b/Ghidra/Features/SystemEmulation/src/main/java/ghidra/pcode/struct/DefaultVar.java @@ -15,13 +15,13 @@ */ package ghidra.pcode.struct; +import db.Transaction; import ghidra.app.plugin.processors.sleigh.SleighException; import ghidra.pcode.struct.StructuredSleigh.Var; import ghidra.pcodeCPort.slghsymbol.SleighSymbol; import ghidra.program.model.data.DataType; import ghidra.program.model.data.DataTypeConflictHandler; import ghidra.program.model.lang.PcodeParser; -import ghidra.util.database.UndoableTransaction; class DefaultVar implements LValInternal, Var { /** @@ -83,7 +83,7 @@ class DefaultVar implements LValInternal, Var { check.check(ctx.parser, name); this.ctx = ctx; this.name = name; - try (UndoableTransaction tid = UndoableTransaction.start(ctx.dtm, "Resolve type")) { + try (Transaction tx = ctx.dtm.openTransaction("Resolve type")) { this.type = ctx.dtm.resolve(type, DataTypeConflictHandler.DEFAULT_HANDLER); } } diff --git a/Ghidra/Features/SystemEmulation/src/main/java/ghidra/pcode/struct/Expr.java b/Ghidra/Features/SystemEmulation/src/main/java/ghidra/pcode/struct/Expr.java index 0bca8e83dd..bed657d116 100644 --- a/Ghidra/Features/SystemEmulation/src/main/java/ghidra/pcode/struct/Expr.java +++ b/Ghidra/Features/SystemEmulation/src/main/java/ghidra/pcode/struct/Expr.java @@ -15,9 +15,9 @@ */ package ghidra.pcode.struct; +import db.Transaction; import ghidra.program.model.data.DataType; import ghidra.program.model.data.DataTypeConflictHandler; -import ghidra.util.database.UndoableTransaction; public abstract class Expr implements RValInternal { protected final StructuredSleigh ctx; @@ -26,7 +26,7 @@ public abstract class Expr implements RValInternal { protected Expr(StructuredSleigh ctx, DataType type) { this.ctx = ctx; - try (UndoableTransaction tid = UndoableTransaction.start(ctx.dtm, "Resolve type")) { + try (Transaction tx = ctx.dtm.openTransaction("Resolve type")) { this.type = ctx.dtm.resolve(type, DataTypeConflictHandler.DEFAULT_HANDLER); } } diff --git a/Ghidra/Features/SystemEmulation/src/test/java/ghidra/pcode/emu/linux/EmuLinuxAmd64SyscallUseropLibraryTest.java b/Ghidra/Features/SystemEmulation/src/test/java/ghidra/pcode/emu/linux/EmuLinuxAmd64SyscallUseropLibraryTest.java index 3527fc889b..40de1f901e 100644 --- a/Ghidra/Features/SystemEmulation/src/test/java/ghidra/pcode/emu/linux/EmuLinuxAmd64SyscallUseropLibraryTest.java +++ b/Ghidra/Features/SystemEmulation/src/test/java/ghidra/pcode/emu/linux/EmuLinuxAmd64SyscallUseropLibraryTest.java @@ -25,6 +25,7 @@ import java.util.List; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.assembler.Assembler; import ghidra.app.plugin.assembler.Assemblers; import ghidra.pcode.emu.PcodeEmulator; @@ -43,7 +44,6 @@ import ghidra.program.model.lang.Register; import ghidra.program.model.listing.Program; import ghidra.program.model.mem.MemoryBlock; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; public class EmuLinuxAmd64SyscallUseropLibraryTest extends AbstractGhidraHeadlessIntegrationTest { @@ -125,7 +125,7 @@ public class EmuLinuxAmd64SyscallUseropLibraryTest extends AbstractGhidraHeadles start = space.getAddress(0x00400000); size = 0x1000; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { block = program.getMemory() .createInitializedBlock(".text", start, size, (byte) 0, TaskMonitor.DUMMY, false); @@ -187,7 +187,7 @@ public class EmuLinuxAmd64SyscallUseropLibraryTest extends AbstractGhidraHeadles @Test public void testWriteStdout() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { asm.assemble(start, "MOV RAX," + Syscall.WRITE.number, "MOV RDI," + EmuUnixFileDescriptor.FD_STDOUT, @@ -219,7 +219,7 @@ public class EmuLinuxAmd64SyscallUseropLibraryTest extends AbstractGhidraHeadles @Test public void testReadStdin() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { asm.assemble(start, "MOV RAX," + Syscall.READ.number, "MOV RDI," + EmuUnixFileDescriptor.FD_STDIN, @@ -251,7 +251,7 @@ public class EmuLinuxAmd64SyscallUseropLibraryTest extends AbstractGhidraHeadles @Test public void testWritevStdout() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { Address data = space.getAddress(0x00400800); ByteBuffer buf = ByteBuffer.allocate(64).order(ByteOrder.LITTLE_ENDIAN); @@ -306,7 +306,7 @@ public class EmuLinuxAmd64SyscallUseropLibraryTest extends AbstractGhidraHeadles public void testReadvStdin() throws Exception { Address strHello; Address strWorld; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { Address data = space.getAddress(0x00400800); ByteBuffer buf = ByteBuffer.allocate(64).order(ByteOrder.LITTLE_ENDIAN); @@ -362,7 +362,7 @@ public class EmuLinuxAmd64SyscallUseropLibraryTest extends AbstractGhidraHeadles @Test public void testOpenWriteClose() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { asm.assemble(start, "MOV RAX," + Syscall.OPEN.number, "LEA RDI,[0x00400880]", @@ -400,7 +400,7 @@ public class EmuLinuxAmd64SyscallUseropLibraryTest extends AbstractGhidraHeadles @Test public void testOpenReadClose() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { asm.assemble(start, "MOV RAX," + Syscall.OPEN.number, "LEA RDI,[0x00400880]", diff --git a/Ghidra/Features/SystemEmulation/src/test/java/ghidra/pcode/emu/linux/EmuLinuxX86SyscallUseropLibraryTest.java b/Ghidra/Features/SystemEmulation/src/test/java/ghidra/pcode/emu/linux/EmuLinuxX86SyscallUseropLibraryTest.java index 2254db366e..8defdc7a58 100644 --- a/Ghidra/Features/SystemEmulation/src/test/java/ghidra/pcode/emu/linux/EmuLinuxX86SyscallUseropLibraryTest.java +++ b/Ghidra/Features/SystemEmulation/src/test/java/ghidra/pcode/emu/linux/EmuLinuxX86SyscallUseropLibraryTest.java @@ -25,6 +25,7 @@ import java.util.List; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.assembler.Assembler; import ghidra.app.plugin.assembler.Assemblers; import ghidra.app.plugin.processors.sleigh.SleighLanguage; @@ -43,7 +44,6 @@ import ghidra.program.model.lang.Register; import ghidra.program.model.listing.Program; import ghidra.program.model.mem.MemoryBlock; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; public class EmuLinuxX86SyscallUseropLibraryTest extends AbstractGhidraHeadlessIntegrationTest { @@ -125,7 +125,7 @@ public class EmuLinuxX86SyscallUseropLibraryTest extends AbstractGhidraHeadlessI start = space.getAddress(0x00400000); size = 0x1000; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { block = program.getMemory() .createInitializedBlock(".text", start, size, (byte) 0, TaskMonitor.DUMMY, false); @@ -187,7 +187,7 @@ public class EmuLinuxX86SyscallUseropLibraryTest extends AbstractGhidraHeadlessI @Test public void testWriteStdout() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { asm.assemble(start, "MOV EAX," + Syscall.WRITE.number, "MOV EBX," + EmuUnixFileDescriptor.FD_STDOUT, @@ -219,7 +219,7 @@ public class EmuLinuxX86SyscallUseropLibraryTest extends AbstractGhidraHeadlessI @Test public void testReadStdin() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { asm.assemble(start, "MOV EAX," + Syscall.READ.number, "MOV EBX," + EmuUnixFileDescriptor.FD_STDIN, @@ -251,7 +251,7 @@ public class EmuLinuxX86SyscallUseropLibraryTest extends AbstractGhidraHeadlessI @Test public void testWritevStdout() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { Address data = space.getAddress(0x00400800); ByteBuffer buf = ByteBuffer.allocate(64).order(ByteOrder.LITTLE_ENDIAN); @@ -306,7 +306,7 @@ public class EmuLinuxX86SyscallUseropLibraryTest extends AbstractGhidraHeadlessI public void testReadvStdin() throws Exception { Address strHello; Address strWorld; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { Address data = space.getAddress(0x00400800); ByteBuffer buf = ByteBuffer.allocate(64).order(ByteOrder.LITTLE_ENDIAN); @@ -362,7 +362,7 @@ public class EmuLinuxX86SyscallUseropLibraryTest extends AbstractGhidraHeadlessI @Test public void testOpenWriteClose() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { asm.assemble(start, "MOV EAX," + Syscall.OPEN.number, "LEA EBX,[0x00400880]", @@ -400,7 +400,7 @@ public class EmuLinuxX86SyscallUseropLibraryTest extends AbstractGhidraHeadlessI @Test public void testOpenReadClose() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { asm.assemble(start, "MOV EAX," + Syscall.OPEN.number, "LEA EBX,[0x00400880]", diff --git a/Ghidra/Features/SystemEmulation/src/test/java/ghidra/pcode/emu/sys/EmuAmd64SyscallUseropLibraryTest.java b/Ghidra/Features/SystemEmulation/src/test/java/ghidra/pcode/emu/sys/EmuAmd64SyscallUseropLibraryTest.java index ae81d002d8..6f898d085a 100644 --- a/Ghidra/Features/SystemEmulation/src/test/java/ghidra/pcode/emu/sys/EmuAmd64SyscallUseropLibraryTest.java +++ b/Ghidra/Features/SystemEmulation/src/test/java/ghidra/pcode/emu/sys/EmuAmd64SyscallUseropLibraryTest.java @@ -15,12 +15,12 @@ */ package ghidra.pcode.emu.sys; -import static ghidra.pcode.emu.sys.EmuSyscallLibrary.SYSCALL_SPACE_NAME; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; +import static ghidra.pcode.emu.sys.EmuSyscallLibrary.*; +import static org.junit.Assert.*; import org.junit.*; +import db.Transaction; import ghidra.app.plugin.assembler.Assembler; import ghidra.app.plugin.assembler.Assemblers; import ghidra.app.plugin.processors.sleigh.SleighLanguage; @@ -38,7 +38,6 @@ import ghidra.program.model.listing.Program; import ghidra.program.model.mem.MemoryBlock; import ghidra.program.model.symbol.SourceType; import ghidra.test.AbstractGhidraHeadlessIntegrationTest; -import ghidra.util.database.UndoableTransaction; import ghidra.util.task.TaskMonitor; public class EmuAmd64SyscallUseropLibraryTest extends AbstractGhidraHeadlessIntegrationTest { @@ -130,7 +129,7 @@ public class EmuAmd64SyscallUseropLibraryTest extends AbstractGhidraHeadlessInte start = space.getAddress(0x00400000); size = 0x1000; - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { block = program.getMemory() .createInitializedBlock(".text", start, size, (byte) 0, TaskMonitor.DUMMY, false); @@ -179,7 +178,7 @@ public class EmuAmd64SyscallUseropLibraryTest extends AbstractGhidraHeadlessInte @Test public void testSyscallWithStdcallConvention() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { asm.assemble(start, "MOV RAX,0", "MOV RCX,0xbeef", @@ -198,7 +197,7 @@ public class EmuAmd64SyscallUseropLibraryTest extends AbstractGhidraHeadlessInte @Test public void testSyscallWithSyscallConvention() throws Exception { - try (UndoableTransaction tid = UndoableTransaction.start(program, "Initialize")) { + try (Transaction tx = program.openTransaction("Initialize")) { asm.assemble(start, "MOV RAX,1", "MOV RCX,0xdead", diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/api/db/VTSessionDB.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/api/db/VTSessionDB.java index 3dc956ef27..110a103a92 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/api/db/VTSessionDB.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/api/db/VTSessionDB.java @@ -28,6 +28,7 @@ import ghidra.feature.vt.api.impl.*; import ghidra.feature.vt.api.main.*; import ghidra.framework.data.DomainObjectAdapterDB; import ghidra.framework.model.*; +import ghidra.framework.model.TransactionInfo.Status; import ghidra.framework.options.Options; import ghidra.framework.store.LockException; import ghidra.program.database.DBObjectCache; @@ -695,9 +696,9 @@ public class VTSessionDB extends DomainObjectAdapterDB implements VTSession, VTC @Override public void endTransaction(int transactionID, boolean commit) { - Transaction transaction = getCurrentTransaction(); + TransactionInfo transaction = getCurrentTransactionInfo(); super.endTransaction(transactionID, commit); - if (changeSetsModified && transaction.getStatus() == Transaction.COMMITTED) { + if (changeSetsModified && transaction.getStatus() == Status.COMMITTED) { changeSetsModified = false; } } diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/api/util/EmptyVTSession.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/api/util/EmptyVTSession.java index 459ea23cb6..d28979dfc1 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/api/util/EmptyVTSession.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/api/util/EmptyVTSession.java @@ -15,6 +15,11 @@ */ package ghidra.feature.vt.api.util; +import java.io.File; +import java.io.IOException; +import java.util.*; + +import db.Transaction; import ghidra.feature.vt.api.main.*; import ghidra.framework.model.*; import ghidra.framework.options.Options; @@ -24,10 +29,6 @@ import ghidra.util.exception.AssertException; import ghidra.util.exception.CancelledException; import ghidra.util.task.TaskMonitor; -import java.io.File; -import java.io.IOException; -import java.util.*; - public class EmptyVTSession implements VTSession { @Override @@ -159,7 +160,7 @@ public class EmptyVTSession implements VTSession { } @Override - public Transaction getCurrentTransaction() { + public TransactionInfo getCurrentTransactionInfo() { return null; } @@ -178,6 +179,11 @@ public class EmptyVTSession implements VTSession { // do nothing } + @Override + public Transaction openTransaction(String description) throws IllegalStateException { + throw new UnsupportedOperationException(); + } + @Override public int startTransaction(String description) { return 0; diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/editors/TagEditorDialog.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/editors/TagEditorDialog.java index 343e3b9027..a4831171c1 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/editors/TagEditorDialog.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/editors/TagEditorDialog.java @@ -20,7 +20,7 @@ import ghidra.feature.vt.api.db.VTSessionDB; import ghidra.feature.vt.api.main.VTMatchTag; import ghidra.feature.vt.api.main.VTSession; import ghidra.feature.vt.gui.editors.TagEditorDialog.TagState.Action; -import ghidra.framework.model.Transaction; +import ghidra.framework.model.TransactionInfo; import ghidra.program.model.listing.Program; import ghidra.util.Msg; import ghidra.util.exception.CancelledException; @@ -348,7 +348,7 @@ public class TagEditorDialog extends DialogComponentProvider { private boolean hasTransactionsOpen(VTSessionDB sessionDB) { Program program = sessionDB.getDestinationProgram(); - Transaction transaction = program.getCurrentTransaction(); + TransactionInfo transaction = program.getCurrentTransactionInfo(); if (transaction != null) { Msg.showWarn(this, null, "Unable to Set Match Tag", "The program \"" + program.getName() + "\"already has a transaction open: " + @@ -356,7 +356,7 @@ public class TagEditorDialog extends DialogComponentProvider { return true; } - Transaction matchSetTransaction = sessionDB.getCurrentTransaction(); + TransactionInfo matchSetTransaction = sessionDB.getCurrentTransactionInfo(); if (matchSetTransaction != null) { Msg.showWarn(this, null, "Unable to Set Match Tag", "Transaction already open for the Match Set Manager "); diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTControllerImpl.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTControllerImpl.java index e8bcdbd358..c1dd149fe9 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTControllerImpl.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTControllerImpl.java @@ -493,7 +493,7 @@ public class VTControllerImpl } private boolean hasTransactionsOpen(Program program, VtTask task) { - Transaction transaction = program.getCurrentTransaction(); + TransactionInfo transaction = program.getCurrentTransactionInfo(); if (transaction != null) { Msg.showWarn(this, null, "Unable to " + task.getTaskTitle(), "The program \"" + program.getName() + "\"already has a transaction open: " + @@ -501,7 +501,7 @@ public class VTControllerImpl return true; } - Transaction matchSetTransaction = session.getCurrentTransaction(); + TransactionInfo matchSetTransaction = session.getCurrentTransactionInfo(); if (matchSetTransaction != null) { Msg.showWarn(this, null, "Unable to " + task.getTaskTitle(), "Transaction already open for the Match Set Manager "); @@ -576,7 +576,7 @@ public class VTControllerImpl } @Override - public void transactionStarted(DomainObjectAdapterDB domainObj, Transaction tx) { + public void transactionStarted(DomainObjectAdapterDB domainObj, TransactionInfo tx) { // don't care } diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/task/SetMatchTagTask.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/task/SetMatchTagTask.java index 2847785154..e43c8ee817 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/task/SetMatchTagTask.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/task/SetMatchTagTask.java @@ -17,7 +17,7 @@ package ghidra.feature.vt.gui.task; import ghidra.feature.vt.api.db.VTSessionDB; import ghidra.feature.vt.api.main.*; -import ghidra.framework.model.Transaction; +import ghidra.framework.model.TransactionInfo; import ghidra.program.model.listing.Program; import ghidra.util.Msg; import ghidra.util.exception.CancelledException; @@ -72,7 +72,7 @@ public class SetMatchTagTask extends Task { private boolean hasTransactionsOpen() { Program program = sessionDB.getDestinationProgram(); - Transaction transaction = program.getCurrentTransaction(); + TransactionInfo transaction = program.getCurrentTransactionInfo(); if (transaction != null) { Msg.showWarn(this, null, "Unable to Set Match Tag", "The program \"" + program.getName() + "\"already has a transaction open: " + @@ -80,7 +80,7 @@ public class SetMatchTagTask extends Task { return true; } - Transaction matchSetTransaction = sessionDB.getCurrentTransaction(); + TransactionInfo matchSetTransaction = sessionDB.getCurrentTransactionInfo(); if (matchSetTransaction != null) { Msg.showWarn(this, null, "Unable to Set Match Tag", "Transaction already open for the Match Set Manager "); diff --git a/Ghidra/Framework/DB/src/main/java/db/DBHandle.java b/Ghidra/Framework/DB/src/main/java/db/DBHandle.java index 76cec15f1a..c3d9299e4e 100644 --- a/Ghidra/Framework/DB/src/main/java/db/DBHandle.java +++ b/Ghidra/Framework/DB/src/main/java/db/DBHandle.java @@ -21,6 +21,7 @@ import java.util.Hashtable; import java.util.Iterator; import db.buffers.*; +import db.util.ErrorHandler; import ghidra.util.Msg; import ghidra.util.UniversalIdGenerator; import ghidra.util.datastruct.WeakDataStructureFactory; @@ -423,6 +424,40 @@ public class DBHandle { return txStarted; } + /** + * Open new transaction. This should generally be done with a try-with-resources block: + *
+	 * try (Transaction tx = dbHandle.openTransaction(dbErrorHandler)) {
+	 * 	// ... Do something
+	 * }
+	 * 
+ * + * @param errorHandler handler resposible for handling an IOException which may result during + * transaction processing. In general, a {@link RuntimeException} should be thrown by the + * handler to ensure continued processing is properly signaled/interupted. + * @return transaction object + * @throws IllegalStateException if transaction is already active or this {@link DBHandle} has + * already been closed. + */ + public Transaction openTransaction(ErrorHandler errorHandler) + throws IllegalStateException { + return new Transaction() { + + long txId = startTransaction(); + + @Override + protected boolean endTransaction(boolean commit) { + try { + return DBHandle.this.endTransaction(txId, commit); + } + catch (IOException e) { + errorHandler.dbError(e); + } + return false; + } + }; + } + /** * Start a new transaction * @return transaction ID diff --git a/Ghidra/Framework/DB/src/main/java/db/Transaction.java b/Ghidra/Framework/DB/src/main/java/db/Transaction.java new file mode 100644 index 0000000000..892e84f542 --- /dev/null +++ b/Ghidra/Framework/DB/src/main/java/db/Transaction.java @@ -0,0 +1,119 @@ +/* ### + * IP: GHIDRA + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package db; + +/** + * Provides syntax for opening a database transaction using a try-with-resources block + * + *

+ * For example, using {@link DBHandle#startTransaction()} directly: + * + *

+ * int txid = dbHandle.startTransaction();
+ * try {
+ * 	// ... Do something
+ * }
+ * finally {
+ * 	program.endTransaction(txid, true);
+ * }
+ * 
+ * + *

+ * Can be expressed using an an {@link Transaction} instead: + * + *

+ * try (Transaction tx = dbHandle.openTransaction(dbErrorHandler)) {
+ * 	// ... Do something
+ * }
+ * 
+ */ +public abstract class Transaction implements AutoCloseable { + + private boolean commit = true; + private boolean open = true; + + protected Transaction() { + } + + /** + * End this transaction if currently active. + * @param commit true if changes shuold be commited, false if all changes in this transaction + * shuold be discarded (i.e., rollback). If this is a "sub-transaction" and commit is false, + * the larger transaction will rollback upon completion. + * @return true if changes have been commited or false if nothing to commit or commit parameter + * was specified as false. + */ + abstract protected boolean endTransaction(@SuppressWarnings("hiding") boolean commit); + + /** + * Determine if this is a sub-transaction to a larger transaction. If true is returned the + * larger transaction will not complete until all sub-transactions have ended. The larger + * transaction will rollback upon completion if any of the sub-transactions do not commit. + * @return true if this is a sub-transaction, else false. + */ + public boolean isSubTransaction() { + return false; + } + + /** + * Mark transaction for rollback/non-commit upon closing. A subsequent invocation of + * {@link #commitOnClose()} will alter this state prior to closing. + */ + public void abortOnClose() { + commit = false; + } + + /** + * Mark transaction for commit upon closing. This state is assumed by default. A subsequent + * invocation of {@link #abortOnClose()} will alter this state prior to closing. + */ + public void commitOnClose() { + commit = true; + } + + /** + * Mark transaction for rollback/non-commit and end transaction if active. + */ + public void abort() { + if (open) { + open = false; + endTransaction(false); + } + } + + /** + * Mark transaction for commit and end transaction if active. + */ + public void commit() { + if (open) { + open = false; + endTransaction(true); + } + } + + /** + * End this transaction if active using the current commit state. + * See {@link #commitOnClose()}, {@link #abortOnClose()}. + */ + @Override + public void close() { + if (open) { + open = false; + endTransaction(commit); + } + } + +} diff --git a/Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/exec/AbstractBytesPcodeExecutorStatePiece.java b/Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/exec/AbstractBytesPcodeExecutorStatePiece.java index 398af7b215..275c3eb502 100644 --- a/Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/exec/AbstractBytesPcodeExecutorStatePiece.java +++ b/Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/exec/AbstractBytesPcodeExecutorStatePiece.java @@ -38,7 +38,7 @@ public abstract class AbstractBytesPcodeExecutorStatePiece source; diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/AbstractTransactionManager.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/AbstractTransactionManager.java index 8dfced35ff..48cdfce8a4 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/AbstractTransactionManager.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/AbstractTransactionManager.java @@ -53,7 +53,7 @@ abstract class AbstractTransactionManager { checkLockingTask(); synchronized (this) { - if (getCurrentTransaction() != null && !transactionTerminated) { + if (getCurrentTransactionInfo() != null && !transactionTerminated) { return false; } if (lockCount == 0) { @@ -85,7 +85,7 @@ abstract class AbstractTransactionManager { return null; } checkDomainObject(domainObj); - if (lockCount != 0 || getCurrentTransaction() != null || lockingTaskMonitor != null) { + if (lockCount != 0 || getCurrentTransactionInfo() != null || lockingTaskMonitor != null) { return null; } ++lockCount; // prevent prepareToSave @@ -192,14 +192,15 @@ abstract class AbstractTransactionManager { } final int startTransaction(DomainObjectAdapterDB object, String description, - AbortedTransactionListener listener, boolean notify) { + AbortedTransactionListener listener, boolean notify) + throws TerminatedTransactionException { checkLockingTask(); synchronized (this) { checkDomainObject(object); - if (getCurrentTransaction() != null && transactionTerminated) { + if (getCurrentTransactionInfo() != null && transactionTerminated) { throw new TerminatedTransactionException(); } @@ -210,8 +211,8 @@ abstract class AbstractTransactionManager { abstract int startTransaction(DomainObjectAdapterDB object, String description, AbortedTransactionListener listener, boolean force, boolean notify); - abstract Transaction endTransaction(DomainObjectAdapterDB object, int transactionID, - boolean commit, boolean notify); + abstract TransactionInfo endTransaction(DomainObjectAdapterDB object, int transactionID, + boolean commit, boolean notify) throws IllegalStateException; /** * Returns the undo stack depth. @@ -229,14 +230,14 @@ abstract class AbstractTransactionManager { abstract String getUndoName(); - abstract Transaction getCurrentTransaction(); + abstract TransactionInfo getCurrentTransactionInfo(); final void redo() throws IOException { checkLockingTask(); synchronized (this) { - if (getCurrentTransaction() != null) { + if (getCurrentTransactionInfo() != null) { throw new IllegalStateException("Can not redo while transaction is open"); } verifyNoLock(); @@ -251,9 +252,9 @@ abstract class AbstractTransactionManager { checkLockingTask(); synchronized (this) { - if (getCurrentTransaction() != null) { + if (getCurrentTransactionInfo() != null) { throw new IllegalStateException("Can not undo while transaction is open: " + - getCurrentTransaction().getDescription()); + getCurrentTransactionInfo().getDescription()); } verifyNoLock(); doUndo(true); diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectAdapterDB.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectAdapterDB.java index 46395fa101..0352134439 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectAdapterDB.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectAdapterDB.java @@ -20,8 +20,7 @@ import java.io.IOException; import java.util.*; import java.util.function.Function; -import db.DBConstants; -import db.DBHandle; +import db.*; import db.util.ErrorHandler; import ghidra.framework.model.*; import ghidra.framework.options.Options; @@ -32,7 +31,6 @@ import ghidra.util.Msg; import ghidra.util.ReadOnlyException; import ghidra.util.exception.CancelledException; import ghidra.util.task.TaskMonitor; -import ghidra.util.task.TaskMonitorAdapter; /** * Database version of the DomainObjectAdapter; this version adds the @@ -273,7 +271,7 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter @Override public boolean canLock() { - return transactionMgr.getCurrentTransaction() == null && !closed; + return transactionMgr.getCurrentTransactionInfo() == null && !closed; } @Override @@ -329,18 +327,40 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter } @Override - public int startTransaction(String description) { + public Transaction openTransaction(String description) + throws TerminatedTransactionException, IllegalStateException { + return new Transaction() { + + int txId = startTransaction(description); + + @Override + protected boolean endTransaction(boolean commit) { + DomainObjectAdapterDB.this.endTransaction(txId, commit); + return commit; + } + + @Override + public boolean isSubTransaction() { + return true; + } + }; + } + + @Override + public int startTransaction(String description) throws TerminatedTransactionException { return startTransaction(description, null); } @Override - public int startTransaction(String description, AbortedTransactionListener listener) { + public int startTransaction(String description, AbortedTransactionListener listener) + throws TerminatedTransactionException { return startTransaction(description, listener, tryForeverExceptionHandler); } // open for testing int startTransaction(String description, AbortedTransactionListener listener, - Function exceptionHandler) { + Function exceptionHandler) + throws TerminatedTransactionException { while (true) { try { @@ -355,7 +375,7 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter } @Override - public void endTransaction(int transactionID, boolean commit) { + public void endTransaction(int transactionID, boolean commit) throws IllegalStateException { transactionMgr.endTransaction(this, transactionID, commit, true); } @@ -408,8 +428,8 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter } @Override - public Transaction getCurrentTransaction() { - return transactionMgr.getCurrentTransaction(); + public TransactionInfo getCurrentTransactionInfo() { + return transactionMgr.getCurrentTransactionInfo(); } @Override diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectDBTransaction.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectDBTransaction.java index 123d93c4be..7333d8ca47 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectDBTransaction.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectDBTransaction.java @@ -28,14 +28,14 @@ import ghidra.util.datastruct.WeakSet; * DomainObjectDBTransaction represents an atomic undoable operation performed * on a single domain object. */ -class DomainObjectDBTransaction implements Transaction { +class DomainObjectDBTransaction implements TransactionInfo { private static int nextBaseId = 1234; private ArrayList list; private HashMap toolStates; private int activeEntries = 0; - private int status = NOT_DONE; + private Status status = Status.NOT_DONE; private boolean hasDBTransaction = false; private final long id; private WeakSet abortedTransactionListeners = @@ -106,7 +106,7 @@ class DomainObjectDBTransaction implements Transaction { * database transaction/checkpoint. */ void setHasCommittedDBTransaction() { - if (getStatus() != COMMITTED) { + if (getStatus() != Status.COMMITTED) { throw new IllegalStateException("transaction was not committed"); } hasDBTransaction = true; @@ -147,23 +147,23 @@ class DomainObjectDBTransaction implements Transaction { catch (IndexOutOfBoundsException e) { throw new IllegalStateException("Transaction not found"); } - if (entry.status != NOT_DONE) { + if (entry.status != Status.NOT_DONE) { throw new IllegalStateException("Attempted to end Transaction " + "more that once: " + entry.description); } - entry.status = commit ? COMMITTED : ABORTED; + entry.status = commit ? Status.COMMITTED : Status.ABORTED; if (!commit) { - status = ABORTED; + status = Status.ABORTED; } - if (--activeEntries == 0 && status == NOT_DONE) { - status = COMMITTED; + if (--activeEntries == 0 && status == Status.NOT_DONE) { + status = Status.COMMITTED; } } @Override - public int getStatus() { - if (status == ABORTED && activeEntries > 0) { - return NOT_DONE_BUT_ABORTED; + public Status getStatus() { + if (status == Status.ABORTED && activeEntries > 0) { + return Status.NOT_DONE_BUT_ABORTED; } return status; } @@ -224,7 +224,7 @@ class DomainObjectDBTransaction implements Transaction { Iterator iter = list.iterator(); while (iter.hasNext()) { TransactionEntry entry = iter.next(); - if (entry.status == NOT_DONE) { + if (entry.status == Status.NOT_DONE) { subTxList.add(entry.description); } } @@ -233,11 +233,11 @@ class DomainObjectDBTransaction implements Transaction { private static class TransactionEntry { String description; - int status; + Status status; TransactionEntry(String description) { this.description = description; - status = NOT_DONE; + status = Status.NOT_DONE; } } @@ -256,7 +256,7 @@ class DomainObjectDBTransaction implements Transaction { } void abort() { - status = ABORTED; + status = Status.ABORTED; for (AbortedTransactionListener listener : abortedTransactionListeners) { listener.transactionAborted(id); } diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectTransactionManager.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectTransactionManager.java index 760317179f..2f7ceac99f 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectTransactionManager.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectTransactionManager.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.util.LinkedList; import ghidra.framework.model.*; +import ghidra.framework.model.TransactionInfo.Status; import ghidra.util.Msg; import ghidra.util.SystemUtilities; import ghidra.util.datastruct.WeakDataStructureFactory; @@ -138,8 +139,8 @@ class DomainObjectTransactionManager extends AbstractTransactionManager { } @Override - synchronized Transaction endTransaction(DomainObjectAdapterDB object, int transactionID, - boolean commit, boolean notify) { + synchronized TransactionInfo endTransaction(DomainObjectAdapterDB object, int transactionID, + boolean commit, boolean notify) throws IllegalStateException { if (object != domainObj) { throw new IllegalArgumentException("invalid domain object"); } @@ -149,8 +150,8 @@ class DomainObjectTransactionManager extends AbstractTransactionManager { DomainObjectDBTransaction returnedTransaction = transaction; try { transaction.endEntry(transactionID, commit && !transactionTerminated); - int status = transaction.getStatus(); - if (status == Transaction.COMMITTED) { + Status status = transaction.getStatus(); + if (status == Status.COMMITTED) { object.flushWriteCache(); boolean committed = domainObj.dbh.endTransaction(transaction.getID(), true); if (committed) { @@ -171,7 +172,7 @@ class DomainObjectTransactionManager extends AbstractTransactionManager { } transaction = null; } - else if (status == Transaction.ABORTED) { + else if (status == Status.ABORTED) { object.invalidateWriteCache(); if (!transactionTerminated) { domainObj.dbh.endTransaction(transaction.getID(), false); @@ -225,7 +226,7 @@ class DomainObjectTransactionManager extends AbstractTransactionManager { @Override synchronized String getRedoName() { if (transaction == null && redoList.size() > 0) { - Transaction t = redoList.getLast(); + TransactionInfo t = redoList.getLast(); return t.getDescription(); } return ""; @@ -234,14 +235,14 @@ class DomainObjectTransactionManager extends AbstractTransactionManager { @Override synchronized String getUndoName() { if (transaction == null && undoList.size() > 0) { - Transaction t = undoList.getLast(); + TransactionInfo t = undoList.getLast(); return t.getDescription(); } return ""; } @Override - Transaction getCurrentTransaction() { + TransactionInfo getCurrentTransactionInfo() { return transaction; } @@ -318,7 +319,7 @@ class DomainObjectTransactionManager extends AbstractTransactionManager { transactionListeners.remove(listener); } - void notifyStartTransaction(Transaction tx) { + void notifyStartTransaction(TransactionInfo tx) { SystemUtilities.runSwingLater(() -> { for (TransactionListener listener : transactionListeners) { listener.transactionStarted(domainObj, tx); diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/SynchronizedTransaction.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/SynchronizedTransaction.java index 3e58f2508e..41905533cd 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/SynchronizedTransaction.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/SynchronizedTransaction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,17 +15,17 @@ */ package ghidra.framework.data; -import ghidra.framework.model.AbortedTransactionListener; -import ghidra.framework.model.Transaction; - import java.io.IOException; import java.util.ArrayList; +import ghidra.framework.model.AbortedTransactionListener; +import ghidra.framework.model.TransactionInfo; + /** * SynchronizedTransaction represents an atomic undoable operation performed * on a synchronized set of domain objects. */ -class SynchronizedTransaction implements Transaction { +class SynchronizedTransaction implements TransactionInfo { private DomainObjectTransactionManager[] managers; private int[] holdTransactionIds; @@ -34,7 +33,7 @@ class SynchronizedTransaction implements Transaction { private String[] descriptions; private int[] activeCounts; - private int status = NOT_DONE; + private Status status = Status.NOT_DONE; private final long id; SynchronizedTransaction(DomainObjectTransactionManager[] managers) { @@ -81,13 +80,13 @@ class SynchronizedTransaction implements Transaction { @Override public ArrayList getOpenSubTransactions() { ArrayList list = new ArrayList(); - int status = getStatus(); - if (status == ABORTED || status == COMMITTED) { + Status status = getStatus(); + if (status == Status.ABORTED || status == Status.COMMITTED) { return list; } for (int i = 0; i < managers.length; i++) { String name = getDomainObjectName(managers[i]); - for (String str : managers[i].getCurrentTransaction().getOpenSubTransactions()) { + for (String str : managers[i].getCurrentTransactionInfo().getOpenSubTransactions()) { list.add(name + ": " + str); } } @@ -104,9 +103,9 @@ class SynchronizedTransaction implements Transaction { } @Override - public int getStatus() { - if (status == ABORTED && isActive()) { - return NOT_DONE_BUT_ABORTED; + public Status getStatus() { + if (status == Status.ABORTED && isActive()) { + return Status.NOT_DONE_BUT_ABORTED; } return status; } @@ -126,11 +125,11 @@ class SynchronizedTransaction implements Transaction { int index = findDomainObject(domainObj); managers[index].endTransaction(domainObj, transactionID, commit, false); if (!commit) { - status = ABORTED; + status = Status.ABORTED; } --activeCounts[index]; - if (!isActive() && status == NOT_DONE) { - status = COMMITTED; + if (!isActive() && status == Status.NOT_DONE) { + status = Status.COMMITTED; } } @@ -153,7 +152,7 @@ class SynchronizedTransaction implements Transaction { boolean endAll(boolean commit) { boolean hasChange = false; for (int i = 0; i < managers.length; i++) { - Transaction transaction = managers[i].endTransaction(managers[i].getDomainObject(), + TransactionInfo transaction = managers[i].endTransaction(managers[i].getDomainObject(), holdTransactionIds[i], commit, false); if (commit && transaction.hasCommittedDBTransaction()) { hasChanges[i] = true; diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/SynchronizedTransactionManager.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/SynchronizedTransactionManager.java index 2b8896b91b..fba782f83f 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/SynchronizedTransactionManager.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/SynchronizedTransactionManager.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.util.LinkedList; import ghidra.framework.model.*; +import ghidra.framework.model.TransactionInfo.Status; import ghidra.framework.store.LockException; import ghidra.util.Msg; @@ -59,8 +60,8 @@ class SynchronizedTransactionManager extends AbstractTransactionManager { if (!(mgr instanceof DomainObjectTransactionManager)) { throw new IllegalArgumentException("domain object has invalid transaction manager"); } - if (isLocked() || mgr.isLocked() || getCurrentTransaction() != null || - mgr.getCurrentTransaction() != null) { + if (isLocked() || mgr.isLocked() || getCurrentTransactionInfo() != null || + mgr.getCurrentTransactionInfo() != null) { throw new LockException("domain object(s) are busy/locked"); } if (!mgr.lock("Transaction manager join")) { @@ -86,9 +87,9 @@ class SynchronizedTransactionManager extends AbstractTransactionManager { } synchronized void removeDomainObject(DomainObjectAdapterDB domainObj) throws LockException { - if (getCurrentTransaction() != null) { + if (getCurrentTransactionInfo() != null) { throw new LockException( - "domain object has open transaction: " + getCurrentTransaction().getDescription()); + "domain object has open transaction: " + getCurrentTransactionInfo().getDescription()); } if (isLocked()) { throw new LockException("domain object is locked!"); @@ -177,15 +178,15 @@ class SynchronizedTransactionManager extends AbstractTransactionManager { } @Override - synchronized Transaction endTransaction(DomainObjectAdapterDB object, int transactionID, + synchronized TransactionInfo endTransaction(DomainObjectAdapterDB object, int transactionID, boolean commit, boolean notify) { if (transaction == null) { throw new IllegalStateException("No transaction is open"); } - Transaction returnedTransaction = transaction; + TransactionInfo returnedTransaction = transaction; transaction.endEntry(object, transactionID, commit && !transactionTerminated); - int status = transaction.getStatus(); - if (status == Transaction.COMMITTED) { + Status status = transaction.getStatus(); + if (status == Status.COMMITTED) { boolean committed = transaction.endAll(true); if (committed) { redoList.clear(); @@ -199,7 +200,7 @@ class SynchronizedTransactionManager extends AbstractTransactionManager { notifyEndTransaction(); } } - else if (status == Transaction.ABORTED) { + else if (status == Status.ABORTED) { if (!transactionTerminated) { transaction.endAll(false); } @@ -249,7 +250,7 @@ class SynchronizedTransactionManager extends AbstractTransactionManager { @Override synchronized String getRedoName() { if (redoList.size() > 0) { - Transaction t = redoList.getLast(); + TransactionInfo t = redoList.getLast(); return t.getDescription(); } return ""; @@ -258,14 +259,14 @@ class SynchronizedTransactionManager extends AbstractTransactionManager { @Override synchronized String getUndoName() { if (undoList.size() > 0) { - Transaction t = undoList.getLast(); + TransactionInfo t = undoList.getLast(); return t.getDescription(); } return ""; } @Override - Transaction getCurrentTransaction() { + TransactionInfo getCurrentTransactionInfo() { return transaction; } diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FileActionManager.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FileActionManager.java index 0bfc016c29..8b2f82f033 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FileActionManager.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FileActionManager.java @@ -370,7 +370,7 @@ class FileActionManager { buf.append("The File " + files.get(lastIndex).getPathname() + " is currently being modified by the\n"); buf.append("the following actions:\n \n"); - Transaction t = udo.getCurrentTransaction(); + TransactionInfo t = udo.getCurrentTransactionInfo(); List list = t.getOpenSubTransactions(); Iterator it = list.iterator(); while (it.hasNext()) { diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/model/Transaction.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/model/TransactionInfo.java similarity index 71% rename from Ghidra/Framework/Project/src/main/java/ghidra/framework/model/Transaction.java rename to Ghidra/Framework/Project/src/main/java/ghidra/framework/model/TransactionInfo.java index 05d6776f7d..d2d5188716 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/model/Transaction.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/model/TransactionInfo.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,12 +17,11 @@ package ghidra.framework.model; import java.util.ArrayList; -public interface Transaction { +public interface TransactionInfo { - public static final int NOT_DONE = 0; - public static final int COMMITTED = 1; - public static final int ABORTED = 2; - public static final int NOT_DONE_BUT_ABORTED = 3; + public enum Status { + NOT_DONE, COMMITTED, ABORTED, NOT_DONE_BUT_ABORTED; + } public long getID(); @@ -40,11 +38,16 @@ public interface Transaction { */ public ArrayList getOpenSubTransactions(); - public int getStatus(); + /** + * Get the status of the corresponding transaction. + * @return status + */ + public Status getStatus(); /** - * Returns true if this fully committed transaction has a corresponding - * database transaction/checkpoint. + * Determine if the corresponding transaction, and all of its sub-transactions, has been + * comitted to the underlying database. + * @return true if the corresponding transaction has been comitted, else false. */ public boolean hasCommittedDBTransaction(); diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/model/TransactionListener.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/model/TransactionListener.java index bcbd85a029..dce4868dc0 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/model/TransactionListener.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/model/TransactionListener.java @@ -26,7 +26,7 @@ public interface TransactionListener { * @param domainObj the domain object where the transaction was started * @param tx the transaction that was started */ - void transactionStarted(DomainObjectAdapterDB domainObj, Transaction tx); + void transactionStarted(DomainObjectAdapterDB domainObj, TransactionInfo tx); /** * Invoked when a transaction is ended. diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/model/UndoableDomainObject.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/model/UndoableDomainObject.java index b7cc38b520..c9fae71db0 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/model/UndoableDomainObject.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/model/UndoableDomainObject.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,9 +15,9 @@ */ package ghidra.framework.model; -import ghidra.framework.store.LockException; - import db.TerminatedTransactionException; +import db.Transaction; +import ghidra.framework.store.LockException; /** * UndoableDomainObject extends a domain object to provide transaction @@ -35,6 +34,20 @@ import db.TerminatedTransactionException; */ public interface UndoableDomainObject extends DomainObject, Undoable { + /** + * Open new transaction. This should generally be done with a try-with-resources block: + *
+	 * try (Transaction tx = dobj.openTransaction(description)) {
+	 * 	// ... Do something
+	 * }
+	 * 
+ * + * @param description a short description of the changes to be made. + * @return transaction object + * @throws IllegalStateException if this {@link DomainObject} has already been closed. + */ + public Transaction openTransaction(String description) throws IllegalStateException; + /** * Start a new transaction in order to make changes to this domain object. * All changes must be made in the context of a transaction. @@ -71,10 +84,10 @@ public interface UndoableDomainObject extends DomainObject, Undoable { public void endTransaction(int transactionID, boolean commit); /** - * Returns the current transaction - * @return the current transaction + * Returns the current transaction info + * @return the current transaction info */ - public Transaction getCurrentTransaction(); + public TransactionInfo getCurrentTransactionInfo(); /** * Returns true if the last transaction was terminated externally from the action that diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramUserDataDB.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramUserDataDB.java index af1083569b..df8b766252 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramUserDataDB.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramUserDataDB.java @@ -647,6 +647,11 @@ class ProgramUserDataDB extends DomainObjectAdapterDB implements ProgramUserData return true; } + @Override + public Transaction openTransaction() { + return openTransaction("Property Change"); + } + @Override public int startTransaction() { return startTransaction("Property Change"); diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/ProgramDataTypeManager.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/ProgramDataTypeManager.java index fbfddf7562..2db4e3c414 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/ProgramDataTypeManager.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/ProgramDataTypeManager.java @@ -19,8 +19,7 @@ import java.io.IOException; import java.util.Iterator; import java.util.LinkedList; -import db.DBConstants; -import db.DBHandle; +import db.*; import db.util.ErrorHandler; import ghidra.framework.model.DomainFile; import ghidra.framework.options.Options; @@ -243,6 +242,11 @@ public class ProgramDataTypeManager extends ProgramBasedDataTypeManagerDB return program.isChangeable(); } + @Override + public Transaction openTransaction(String description) throws IllegalStateException { + return program.openTransaction(description); + } + @Override public int startTransaction(String description) { return program.startTransaction(description); diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/ProjectDataTypeManager.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/ProjectDataTypeManager.java index dbdc61f819..41b4f5b6fd 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/ProjectDataTypeManager.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/ProjectDataTypeManager.java @@ -19,8 +19,7 @@ import java.io.IOException; import java.util.Iterator; import java.util.LinkedList; -import db.DBConstants; -import db.DBHandle; +import db.*; import db.util.ErrorHandler; import ghidra.framework.model.DomainFile; import ghidra.program.database.DataTypeArchiveDB; @@ -187,6 +186,11 @@ public class ProjectDataTypeManager extends DataTypeManagerDB // TODO } + @Override + public Transaction openTransaction(String description) throws IllegalStateException { + return dataTypeArchive.openTransaction(description); + } + @Override public int startTransaction(String description) { return dataTypeArchive.startTransaction(description); diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/util/ProgramTransaction.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/util/ProgramTransaction.java deleted file mode 100644 index 4a4ad41de9..0000000000 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/util/ProgramTransaction.java +++ /dev/null @@ -1,87 +0,0 @@ -/* ### - * IP: GHIDRA - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package ghidra.program.database.util; - -import ghidra.program.model.listing.Program; - -/** - * A convenience context for transaction IDs on a Ghidra program database - * - *

- * This is meant to be used as an idiom in a try-with-resources block: - * - *

- * try (ProgramTransaction t = ProgramTransaction.open(program, "Demo")) {
- *     program.getMemory().....
- *     t.commit();
- * }
- * 
- * - *

- * This idiom is very useful if there is complex logic in your transaction, it's very easy to forget - * to close the transaction, especially if an error occurs, leaving the database in an open - * transaction indefinitely. The try-with-resources block will ensure that the transaction is closed - * in all circumstances. Note, however, that in order for the transaction to be committed, you must - * call {@link #commit()}. - * - *

- * Any exceptions within the block will cause {@code t.commit()} to be skipped, thus aborting the - * transaction. - */ -public class ProgramTransaction implements AutoCloseable { - protected Program program; - protected int tid; - protected boolean commit = false; - - /** - * Start a transaction on the given program with the given description - * - * @param program the program to modify - * @param description a description of the transaction - */ - public static ProgramTransaction open(Program program, String description) { - int tid = program.startTransaction(description); - return new ProgramTransaction(program, tid); - } - - private ProgramTransaction(Program program, int tid) { - this.program = program; - this.tid = tid; - } - - /** - * Finish the transaction - * - *

- * If this is called before {@link #commit()}, then the transaction is aborted. This is called - * automatically at the close of a try-with-resources block. - */ - @Override - public void close() { - program.endTransaction(tid, commit); - } - - /** - * Finish the transaction, and commit - * - *

- * This MUST be called in order to commit the transaction. The transaction is not committed - * until the close of the try-with-resources block. - */ - public void commit() { - commit = true; - } -} diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/DataTypeManager.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/DataTypeManager.java index de5f472d80..8fc90407c0 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/DataTypeManager.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/DataTypeManager.java @@ -17,6 +17,7 @@ package ghidra.program.model.data; import java.util.*; +import db.Transaction; import ghidra.util.InvalidNameException; import ghidra.util.UniversalID; import ghidra.util.exception.CancelledException; @@ -317,6 +318,26 @@ public interface DataTypeManager { */ public void setName(String name) throws InvalidNameException; + /** + * Returns true if this DataTypeManager can be modified. + * @return true if this DataTypeMangaer can be modified. + */ + public boolean isUpdatable(); + + /** + * Open new transaction. This should generally be done with a try-with-resources block: + *

+	 * try (Transaction tx = dtm.openTransaction(description)) {
+	 * 	// ... Do something
+	 * }
+	 * 
+ * + * @param description a short description of the changes to be made. + * @return transaction object + * @throws IllegalStateException if this {@link DataTypeManager} has already been closed. + */ + public Transaction openTransaction(String description) throws IllegalStateException; + /** * Starts a transaction for making changes in this data type manager. * @param description a short description of the changes to be made. @@ -324,12 +345,6 @@ public interface DataTypeManager { */ public int startTransaction(String description); - /** - * Returns true if this DataTypeManager can be modified. - * @return true if this DataTypeMangaer can be modified. - */ - public boolean isUpdatable(); - /** * Ends the current transaction * @param transactionID id of the transaction to end diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/StandAloneDataTypeManager.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/StandAloneDataTypeManager.java index d15cc35f5c..9ee458c209 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/StandAloneDataTypeManager.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/StandAloneDataTypeManager.java @@ -18,6 +18,7 @@ package ghidra.program.model.data; import java.io.IOException; import java.util.LinkedList; +import db.Transaction; import db.DBConstants; import generic.jar.ResourceFile; import ghidra.program.database.data.DataTypeManagerDB; @@ -32,6 +33,7 @@ public class StandAloneDataTypeManager extends DataTypeManagerDB { protected String name; private int transactionCount; private Long transaction; + private boolean commitTransaction; /** * Constructor for new temporary data-type manager using the default DataOrganization. @@ -87,14 +89,33 @@ public class StandAloneDataTypeManager extends DataTypeManagerDB { return super.getDataOrganization(); } + @Override + public Transaction openTransaction(String description) throws IllegalStateException { + return new Transaction() { + + private int txId = startTransaction(description); + + @Override + protected boolean endTransaction(boolean commit) { + StandAloneDataTypeManager.this.endTransaction(txId, commit); + return commitTransaction; + } + + @Override + public boolean isSubTransaction() { + return true; + } + }; + } + @Override public synchronized int startTransaction(String description) { if (transaction == null) { transaction = dbHandle.startTransaction(); + commitTransaction = true; } transactionCount++; return transaction.intValue(); - } @Override @@ -110,9 +131,12 @@ public class StandAloneDataTypeManager extends DataTypeManagerDB { if (transaction.intValue() != transactionID) { throw new IllegalArgumentException("Transaction id does not match current transaction"); } + if (!commit) { + commitTransaction = false; + } if (--transactionCount == 0) { try { - dbHandle.endTransaction(transaction.longValue(), commit); + dbHandle.endTransaction(transaction.longValue(), commitTransaction); transaction = null; } catch (IOException e) { diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/listing/ProgramUserData.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/listing/ProgramUserData.java index 07aa302270..920296ef29 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/listing/ProgramUserData.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/listing/ProgramUserData.java @@ -18,6 +18,7 @@ package ghidra.program.model.listing; import java.util.List; import java.util.Set; +import db.Transaction; import ghidra.framework.model.UserData; import ghidra.framework.options.Options; import ghidra.program.model.util.*; @@ -26,6 +27,19 @@ import ghidra.util.exception.PropertyTypeMismatchException; public interface ProgramUserData extends UserData { + /** + * Open new transaction. This should generally be done with a try-with-resources block: + *
+	 * try (Transaction tx = pud.openTransaction(description)) {
+	 * 	// ... Do something
+	 * }
+	 * 
+ * + * @return transaction object + * @throws IllegalStateException if this {@link ProgramUserData} has already been closed. + */ + public Transaction openTransaction(); + /** * Start a transaction prior to changing any properties * @return transaction ID needed for endTransaction diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/mem/MemBufferAdapter.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/mem/MemBufferMixin.java similarity index 97% rename from Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/mem/MemBufferAdapter.java rename to Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/mem/MemBufferMixin.java index 99150d530c..55da1b639f 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/mem/MemBufferAdapter.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/mem/MemBufferMixin.java @@ -21,7 +21,7 @@ import java.nio.ByteOrder; import org.apache.commons.lang3.ArrayUtils; -public interface MemBufferAdapter extends MemBuffer { +public interface MemBufferMixin extends MemBuffer { int getBytes(ByteBuffer buffer, int addressOffset); @Override diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/util/database/UndoableTransaction.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/util/database/UndoableTransaction.java deleted file mode 100644 index 92bd08a97e..0000000000 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/util/database/UndoableTransaction.java +++ /dev/null @@ -1,311 +0,0 @@ -/* ### - * IP: GHIDRA - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package ghidra.util.database; - -import java.io.IOException; - -import javax.help.UnsupportedOperationException; - -import db.DBHandle; -import db.NoTransactionException; -import db.util.ErrorHandler; -import ghidra.framework.model.AbortedTransactionListener; -import ghidra.framework.model.UndoableDomainObject; -import ghidra.program.model.data.DataTypeManager; -import ghidra.program.model.listing.ProgramUserData; -import ghidra.util.Msg; - -/** - * Provides syntax for opening a database transaction using a try-with-resources block - * - *

- * For example, using {@link UndoableDomainObject#startTransaction(String)} directly: - * - *

- * int txid = program.startTransaction("Do a thing");
- * try {
- * 	// ... Do that thing
- * }
- * finally {
- * 	program.endTransaction(txid, true);
- * }
- * 
- * - *

- * Can be expressed using an undoable transaction instead: - * - *

- * try (UndoableTransaction txid = UndoableTransaction.start(program, "Do a thing")) {
- * 	// ... Do that thing
- * }
- * 
- */ -public interface UndoableTransaction extends AutoCloseable { - /** - * Open a transaction directly on a database handle - * - * @param handle the handle - * @param errHandler a handler for database errors, usually the domain object - * @return the transaction handle - */ - public static UndoableTransaction start(DBHandle handle, ErrorHandler errHandler) { - long tid = handle.startTransaction(); - return new DBHandleUndoableTransaction(handle, tid, errHandler); - } - - /** - * Open a transaction on a domain object - * - * @param domainObject the domain object - * @param description a description of the change - * @return the transaction handle - */ - public static UndoableTransaction start(UndoableDomainObject domainObject, String description) { - int tid = domainObject.startTransaction(description); - return new DomainObjectUndoableTransaction(domainObject, tid); - } - - /** - * Open a transaction on a domain object - * - *

- * Even if this transaction is committed, if a sub-transaction is aborted, this transaction - * could become aborted, too. The listener can be used to detect this situation. - * - * @param domainObject the domain object - * @param description a description of the change - * @param listener a listener for aborted transactions - * @return the transaction handle - */ - public static UndoableTransaction start(UndoableDomainObject domainObject, String description, - AbortedTransactionListener listener) { - int tid = domainObject.startTransaction(description, listener); - return new DomainObjectUndoableTransaction(domainObject, tid); - } - - /** - * Open a transaction on a data type manager - * - * @param dataTypeManager the data type manager - * @param description a description of the change - * @return the transaction handle - */ - public static UndoableTransaction start(DataTypeManager dataTypeManager, String description) { - int tid = dataTypeManager.startTransaction(description); - return new DataTypeManagerUndoableTransaction(dataTypeManager, tid); - } - - /** - * Open a transaction on program user data - * - * @param userData the user data - * @return the transaction handle - */ - public static UndoableTransaction start(ProgramUserData userData) { - int tid = userData.startTransaction(); - return new ProgramUserDataUndoableTransaction(userData, tid); - } - - abstract class AbstractUndoableTransaction implements UndoableTransaction { - - private boolean commit = true; - private boolean open = true; - - protected AbstractUndoableTransaction() { - } - - abstract void endTransaction(@SuppressWarnings("hiding") boolean commit); - - @Override - public void abortOnClose() { - commit = false; - } - - @Override - public void commitOnClose() { - commit = true; - } - - @Override - public void abort() { - if (open) { - open = false; - endTransaction(false); - } - } - - @Override - public void commit() { - if (open) { - open = false; - endTransaction(true); - } - } - - @Override - public void close() { - if (open) { - open = false; - endTransaction(commit); - } - } - } - - abstract class AbstractLongUndoableTransaction extends AbstractUndoableTransaction { - final long transactionID; - - public AbstractLongUndoableTransaction(long transactionID) { - super(); - this.transactionID = transactionID; - } - } - - abstract class AbstractIntUndoableTransaction extends AbstractUndoableTransaction { - final int transactionID; - - public AbstractIntUndoableTransaction(int transactionID) { - super(); - this.transactionID = transactionID; - } - } - - class DBHandleUndoableTransaction extends AbstractLongUndoableTransaction { - private final DBHandle handle; - private final ErrorHandler errHandler; - - public DBHandleUndoableTransaction(DBHandle handle, long transactionID, - ErrorHandler errHandler) { - super(transactionID); - this.handle = handle; - this.errHandler = errHandler; - } - - @Override - void endTransaction(boolean commit) { - if (!commit) { - Msg.debug(this, "Aborting transaction"); - } - try { - handle.endTransaction(transactionID, commit); - } - catch (IOException e) { - errHandler.dbError(e); - } - } - } - - class DomainObjectUndoableTransaction extends AbstractIntUndoableTransaction { - private final UndoableDomainObject domainObject; - - private DomainObjectUndoableTransaction(UndoableDomainObject domainObject, int tid) { - super(tid); - this.domainObject = domainObject; - } - - @Override - void endTransaction(boolean commit) { - if (!commit) { - Msg.debug(this, "Aborting transaction"); - } - domainObject.endTransaction(transactionID, commit); - } - } - - class DataTypeManagerUndoableTransaction extends AbstractIntUndoableTransaction { - private final DataTypeManager dataTypeManager; - - private DataTypeManagerUndoableTransaction(DataTypeManager dataTypeManager, int tid) { - super(tid); - this.dataTypeManager = dataTypeManager; - } - - @Override - void endTransaction(boolean commit) { - dataTypeManager.endTransaction(transactionID, commit); - } - } - - class ProgramUserDataUndoableTransaction extends AbstractIntUndoableTransaction { - private final ProgramUserData userData; - - private ProgramUserDataUndoableTransaction(ProgramUserData userData, int tid) { - super(tid); - this.userData = userData; - } - - @Override - public void abortOnClose() { - throw new UnsupportedOperationException(); - } - - @Override - public void abort() { - throw new UnsupportedOperationException(); - } - - @Override - void endTransaction(boolean commit) { - userData.endTransaction(transactionID); - } - } - - /** - * Set this transaction to commit when closed - * - *

- * This is the default behavior. If an error occurs, or when the end of the try block is - * reached, the transaction will be committed. The user is expected to undo unwanted - * transactions, including those committed with an error. It could be the results are still - * mostly correct. Additionally, aborting a transaction can roll back other concurrent - * transactions. - */ - void commitOnClose(); - - /** - * Set this transaction to abort by when closed - * - *

- * Ordinarily, if an error occurs, the transaction is committed as is. The user is expected to - * undo unwanted transactions. Calling this method will cause the transaction to be aborted - * instead. WARNING: Aborting this transaction may abort other concurrent transactions. - * Use with extreme care. NOTE: Use of this method requires that the transaction be - * explicitly committed using {@link #commit()}. When this transaction is closed, if it hasn't - * been committed, it will be aborted. - */ - void abortOnClose(); - - /** - * Commit the transaction and close it immediately - * - *

- * Note that attempting to make changes after this call will likely result in a - * {@link NoTransactionException}. - */ - void commit(); - - /** - * Abort the transaction and close it immediately - * - *

- * Note that attempting to make changes after this call will likely result in a - * {@link NoTransactionException}. WARNING: Aborting this transaction may abort other - * concurrent transactions. Use with extreme care. - */ - void abort(); - - @Override - void close(); -} diff --git a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/plugin/assembler/sleigh/PublicAPITest.java b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/plugin/assembler/sleigh/PublicAPITest.java index af71b91c57..4b983ebd29 100644 --- a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/plugin/assembler/sleigh/PublicAPITest.java +++ b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/plugin/assembler/sleigh/PublicAPITest.java @@ -22,10 +22,10 @@ import java.util.List; import org.junit.*; +import db.Transaction; import generic.test.AbstractGenericTest; import ghidra.app.plugin.assembler.*; import ghidra.program.database.ProgramDB; -import ghidra.program.database.util.ProgramTransaction; import ghidra.program.model.address.Address; import ghidra.program.model.address.AddressOverflowException; import ghidra.program.model.lang.*; @@ -77,7 +77,7 @@ public class PublicAPITest extends AbstractGenericTest { program = new ProgramDB("test", toy, toy.getDefaultCompilerSpec(), this); InstructionIterator it; - try (ProgramTransaction tid = ProgramTransaction.open(program, "Test")) { + try (Transaction tx = program.openTransaction("Test")) { program.getMemory() .createInitializedBlock(".text", addr(0x00400000), 0x1000, (byte) 0, TaskMonitor.DUMMY, false); @@ -86,8 +86,6 @@ public class PublicAPITest extends AbstractGenericTest { it = asm.assemble(addr(0x00400000), "brds 0x00400004", "add r0, #6"); - - tid.commit(); } List result = new ArrayList<>(); diff --git a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/StubProgram.java b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/StubProgram.java index ba86858c81..23fcf14b04 100644 --- a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/StubProgram.java +++ b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/StubProgram.java @@ -19,6 +19,7 @@ import java.io.File; import java.io.IOException; import java.util.*; +import db.Transaction; import ghidra.framework.model.*; import ghidra.framework.options.Options; import ghidra.framework.store.LockException; @@ -46,6 +47,11 @@ public class StubProgram implements Program { throw new UnsupportedOperationException(); } + @Override + public Transaction openTransaction(String description) throws IllegalStateException { + throw new UnsupportedOperationException(); + } + @Override public int startTransaction(String description, AbortedTransactionListener listener) { throw new UnsupportedOperationException(); @@ -57,7 +63,7 @@ public class StubProgram implements Program { } @Override - public Transaction getCurrentTransaction() { + public TransactionInfo getCurrentTransactionInfo() { throw new UnsupportedOperationException(); } diff --git a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/data/TestDoubleDataTypeManager.java b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/data/TestDoubleDataTypeManager.java index 93b977a761..643944123a 100644 --- a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/data/TestDoubleDataTypeManager.java +++ b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/data/TestDoubleDataTypeManager.java @@ -17,6 +17,7 @@ package ghidra.program.model.data; import java.util.*; +import db.Transaction; import ghidra.util.*; import ghidra.util.exception.CancelledException; import ghidra.util.task.TaskMonitor; @@ -191,6 +192,11 @@ public class TestDoubleDataTypeManager implements DataTypeManager { throw new UnsupportedOperationException(); } + @Override + public Transaction openTransaction(String description) throws IllegalStateException { + throw new UnsupportedOperationException(); + } + @Override public int startTransaction(String description) { throw new UnsupportedOperationException(); diff --git a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/data/TestDummyDataTypeManager.java b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/data/TestDummyDataTypeManager.java index 142c21800c..d07ddef22e 100644 --- a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/data/TestDummyDataTypeManager.java +++ b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/data/TestDummyDataTypeManager.java @@ -17,6 +17,7 @@ package ghidra.program.model.data; import java.util.*; +import db.Transaction; import ghidra.util.InvalidNameException; import ghidra.util.UniversalID; import ghidra.util.exception.CancelledException; @@ -215,6 +216,11 @@ public class TestDummyDataTypeManager implements DataTypeManager { } + @Override + public Transaction openTransaction(String description) throws IllegalStateException { + throw new UnsupportedOperationException(); + } + @Override public int startTransaction(String description) { // stub