diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/DataTypesProvider.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/DataTypesProvider.java
index 515dad44db..f267775258 100644
--- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/DataTypesProvider.java
+++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/DataTypesProvider.java
@@ -214,7 +214,6 @@ public class DataTypesProvider extends ComponentProviderAdapter {
addLocalAction(new OpenProjectArchiveAction(plugin));
addLocalAction(new CreateArchiveAction(plugin));
addLocalAction(new CreateProjectArchiveAction(plugin));
- addLocalAction(new RefreshAction(plugin));
ToggleDockingAction previewAction = getPreviewWindowAction();
addLocalAction(previewAction);
diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/actions/RefreshAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/actions/RefreshAction.java
deleted file mode 100644
index 95f12935e5..0000000000
--- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/datamgr/actions/RefreshAction.java
+++ /dev/null
@@ -1,61 +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.app.plugin.core.datamgr.actions;
-
-import docking.ActionContext;
-import docking.action.DockingAction;
-import docking.action.MenuData;
-import ghidra.app.plugin.core.datamgr.DataTypeManagerPlugin;
-import ghidra.util.classfinder.ClassSearchTask;
-import ghidra.util.task.*;
-
-/**
- * Class for action to refresh the built-in data types from the class path.
- */
-public class RefreshAction extends DockingAction implements TaskListener {
-
- private final DataTypeManagerPlugin plugin;
-
- public RefreshAction(DataTypeManagerPlugin plugin) {
- super("Refresh BuiltInTypes", plugin.getName());
- this.plugin = plugin;
-
- setMenuBarData(new MenuData(new String[] { "Refresh BuiltInTypes" }, null, "R2"));
-
- setDescription("Searches the class path to refresh the list of Ghidra BuiltIn data types.");
- setEnabled(true);
- }
-
- @Override
- public void actionPerformed(ActionContext context) {
- setEnabled(false);
-
- Task task = new ClassSearchTask();
- task.addTaskListener(this);
-
- new TaskLauncher(task, plugin.getProvider().getComponent(), 0);
- }
-
- @Override
- public void taskCompleted(Task task) {
- setEnabled(true);
- }
-
- @Override
- public void taskCancelled(Task task) {
- setEnabled(true);
- }
-}
diff --git a/Ghidra/Features/Base/src/main/java/ghidra/framework/HeadlessGhidraApplicationConfiguration.java b/Ghidra/Features/Base/src/main/java/ghidra/framework/HeadlessGhidraApplicationConfiguration.java
index 559844f5ae..7086678cb3 100644
--- a/Ghidra/Features/Base/src/main/java/ghidra/framework/HeadlessGhidraApplicationConfiguration.java
+++ b/Ghidra/Features/Base/src/main/java/ghidra/framework/HeadlessGhidraApplicationConfiguration.java
@@ -39,7 +39,7 @@ public class HeadlessGhidraApplicationConfiguration extends ApplicationConfigura
monitor.setMessage("Performing class searching...");
performClassSearching();
- // Locate cacerts if found (must be done before module initialization)
+ // Locate certs if found (must be done before module initialization)
locateCACertsFile();
monitor.setMessage("Performing module initialization...");
@@ -73,7 +73,7 @@ public class HeadlessGhidraApplicationConfiguration extends ApplicationConfigura
// The class searcher searches the classpath, and Ghidra's classpath should be complete
// for this configuration at this point.
try {
- ClassSearcher.search(false, monitor);
+ ClassSearcher.search(monitor);
}
catch (CancelledException e) {
Msg.debug(this, "Class searching unexpectedly cancelled.");
@@ -81,7 +81,7 @@ public class HeadlessGhidraApplicationConfiguration extends ApplicationConfigura
}
/**
- * Locate cacerts file within the Ghidra root directory. If found this will be used
+ * Locate certs file within the Ghidra root directory. If found this will be used
* for initializing the ApplicationTrustManager used for SSL/PKI.
*/
private void locateCACertsFile() {
diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/datamgr/DataTypeManagerPluginTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/datamgr/DataTypeManagerPluginTest.java
index 0d95ee33f2..10b5c3c543 100644
--- a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/datamgr/DataTypeManagerPluginTest.java
+++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/datamgr/DataTypeManagerPluginTest.java
@@ -63,8 +63,6 @@ import ghidra.program.database.ProgramDB;
import ghidra.program.database.data.ProgramDataTypeManager;
import ghidra.program.model.data.*;
import ghidra.test.*;
-import ghidra.util.classfinder.ClassSearchTask;
-import ghidra.util.task.Task;
import ghidra.util.task.TaskMonitor;
import util.CollectionUtils;
import utilities.util.FileUtilities;
@@ -664,38 +662,6 @@ public class DataTypeManagerPluginTest extends AbstractGhidraHeadedIntegrationTe
assertFalse(action.isSelected());
}
- @Test
- public void testRefreshBuiltins() throws Exception {
-
- try {
- doTestRefreshBuiltins();
- }
- finally {
- cleanupTestBuiltin();
- }
- }
-
- private void doTestRefreshBuiltins() throws Exception {
- GTreeNode treeRoot = tree.getModelRoot();
- GTreeNode builtInNode = treeRoot.getChild("BuiltInTypes");
-
- assertNull("Test setup Error: ghidra.app.test.TestDataType was not removed!",
- builtInNode.getChild("TestDataType"));
-
- compileJavaDataType();
-
- DockingActionIf action = getAction(plugin, "Refresh BuiltInTypes");
- assertTrue(action.isEnabledForContext(treeContext));
- DataTypeTestUtils.performAction(action, tree, false);
-
- waitForTasks();
- waitForProgram();
- waitForActionToBeEnabled(action);
-
- builtInNode = treeRoot.getChild("BuiltInTypes");
- assertNotNull(builtInNode.getChild("TestDataType"));
- }
-
@Test
public void testDataTypePreviewCopyHtmlText() throws Exception {
@@ -1207,7 +1173,7 @@ public class DataTypeManagerPluginTest extends AbstractGhidraHeadedIntegrationTe
}
/**
- * This directory is bin in eclipse; it will be a resources directory in the classpath when run
+ * This directory is bin in eclipse; it will be a resources directory in the classpath when run
* in batch mode. The directory is one specifically created by and for this test.
* @return class output directory
* @throws FileNotFoundException Could not find class output directory
@@ -1265,31 +1231,6 @@ public class DataTypeManagerPluginTest extends AbstractGhidraHeadedIntegrationTe
}
}
- private void cleanupTestBuiltin() throws Exception {
- File binDir = getClassesDirectory();
- File javaFile = new File(binDir, "TestDataType.java");
- File classFile = new File(binDir, "TestDataType.class");
- javaFile.delete();
- classFile.delete();
-
- // force built-ins to get restored
- Task task = new ClassSearchTask();
- task.run(TaskMonitor.DUMMY);
-
- DockingActionIf action = getAction(plugin, "Refresh BuiltInTypes");
- assertTrue(action.isEnabledForContext(treeContext));
- DataTypeTestUtils.performAction(action, tree, false);
-
- waitForTasks();
- waitForProgram();
- waitForActionToBeEnabled(action);
-
- GTreeNode treeRoot = tree.getModelRoot();
- GTreeNode builtInNode = treeRoot.getChild("BuiltInTypes");
- assertNull("Test setup Error: ghidra.app.test.TestDataType was not removed!",
- builtInNode.getChild("TestDataType"));
- }
-
private File getTestDataTypeFile() {
URL url = getClass().getResource("TestDataType.txt");
try {
diff --git a/Ghidra/Framework/Generic/src/main/java/ghidra/util/classfinder/ClassSearchTask.java b/Ghidra/Framework/Generic/src/main/java/ghidra/util/classfinder/ClassSearchTask.java
deleted file mode 100644
index 12fcadb34d..0000000000
--- a/Ghidra/Framework/Generic/src/main/java/ghidra/util/classfinder/ClassSearchTask.java
+++ /dev/null
@@ -1,41 +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.classfinder;
-
-import ghidra.util.exception.CancelledException;
-import ghidra.util.task.Task;
-import ghidra.util.task.TaskMonitor;
-
-/**
- * Task for searching for classes. This allows for a runtime refresh of scanned classes.
- */
-public class ClassSearchTask extends Task {
-
- public ClassSearchTask() {
- super("Refreshing List of Ghidra Class Files", true, false, true);
- }
-
- @Override
- public void run(final TaskMonitor monitor) {
-
- try {
- ClassSearcher.search(true, monitor);
- }
- catch (CancelledException e) {
- // user cancelled
- }
- }
-}
diff --git a/Ghidra/Framework/Generic/src/main/java/ghidra/util/classfinder/ClassSearcher.java b/Ghidra/Framework/Generic/src/main/java/ghidra/util/classfinder/ClassSearcher.java
index 4a10c95b36..8b00529b71 100644
--- a/Ghidra/Framework/Generic/src/main/java/ghidra/util/classfinder/ClassSearcher.java
+++ b/Ghidra/Framework/Generic/src/main/java/ghidra/util/classfinder/ClassSearcher.java
@@ -82,7 +82,7 @@ public class ClassSearcher {
}
/**
- * Get {@link ExtensionPointProperties#priority() priority-sorted} classes that implement or
+ * Get {@link ExtensionPointProperties#priority() priority-sorted} classes that implement or
* derive from the given class
*
* @param c the filter class
@@ -93,14 +93,14 @@ public class ClassSearcher {
}
/**
- * Get {@link ExtensionPointProperties#priority() priority-sorted} classes that
+ * Get {@link ExtensionPointProperties#priority() priority-sorted} classes that
* implement or derive from the given class
*
* @param c the filter class
* @param classFilter A Predicate that tests class objects (that are already of type T)
* for further filtering, null is equivalent to "return true"
- * @return {@link ExtensionPointProperties#priority() priority-sorted} list of
- * classes that implement or extend T and pass the filtering test performed by the
+ * @return {@link ExtensionPointProperties#priority() priority-sorted} list of
+ * classes that implement or extend T and pass the filtering test performed by the
* predicate
*/
@SuppressWarnings("unchecked") // we checked the type of each use so we know the casts are safe
@@ -130,14 +130,14 @@ public class ClassSearcher {
}
/**
- * Get {@link ExtensionPointProperties#priority() priority-sorted} classes
+ * Get {@link ExtensionPointProperties#priority() priority-sorted} classes
* instances that implement or derive from the given class
*
* @param c the filter class
* @param filter A Predicate that tests class objects (that are already of type T)
* for further filtering, null is equivalent to "return true"
- * @return {@link ExtensionPointProperties#priority() priority-sorted} list of
- * classes instances that implement or extend T and pass the filtering test performed by
+ * @return {@link ExtensionPointProperties#priority() priority-sorted} list of
+ * classes instances that implement or extend T and pass the filtering test performed by
* the predicate
*/
public static List getInstances(Class c, ClassFilter filter) {
@@ -210,20 +210,32 @@ public class ClassSearcher {
listenerList.remove(l);
}
+ /**
+ * This deprecated method is now simply a pass-through for {@link #search(TaskMonitor)}.
+ *
+ * @param forceRefresh ignored
+ * @param monitor the task monitor
+ * @throws CancelledException if cancelled
+ * @deprecated use {@link #search(TaskMonitor)} instead
+ */
+ @Deprecated(forRemoval = true, since = "10.1") // remove 2 releases after 10.1
+ public static void search(boolean forceRefresh, TaskMonitor monitor)
+ throws CancelledException {
+ search(monitor);
+ }
+
/**
* Searches the classpath and updates the list of available classes which
* satisfy the class filter. Classes which
* data types, and language providers. When the search completes and was
* not cancelled, the change listeners are notified.
*
- * @param forceRefresh if true the class cache is ignored and the search is performed
- * from scratch.
* @param monitor the progress monitor for the search.
* @throws CancelledException if the operation is cancelled
*/
- public static void search(boolean forceRefresh, TaskMonitor monitor) throws CancelledException {
+ public static void search(TaskMonitor monitor) throws CancelledException {
- if (hasSearched && !forceRefresh) {
+ if (hasSearched) {
log.trace("Already searched for classes: using cached results");
return;
}
diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/StandAloneApplication.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/StandAloneApplication.java
index a66fb1f0d0..ef7041b8e8 100644
--- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/StandAloneApplication.java
+++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/StandAloneApplication.java
@@ -65,7 +65,7 @@ public abstract class StandAloneApplication implements GenericStandAloneApplicat
}
/**
- * Creates a new application using the specified application name
+ * Creates a new application using the specified application name
* and version.
* @param name application name
* @param version application version
@@ -146,7 +146,7 @@ public abstract class StandAloneApplication implements GenericStandAloneApplicat
Application.initializeApplication(layout, configuration);
try {
- ClassSearcher.search(false, configuration.getTaskMonitor());
+ ClassSearcher.search(configuration.getTaskMonitor());
}
catch (CancelledException e) {
Msg.debug(this, "Class searching unexpectedly cancelled.");
diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/DataTypeArchiveTransformer.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/DataTypeArchiveTransformer.java
index ccd136ca67..d4124d4403 100644
--- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/DataTypeArchiveTransformer.java
+++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/DataTypeArchiveTransformer.java
@@ -41,11 +41,11 @@ import ghidra.util.exception.*;
import ghidra.util.task.*;
/**
- * DataTypeArchiveTransformer changes (transforms) a new archive file so that it appears to be
+ * DataTypeArchiveTransformer changes (transforms) a new archive file so that it appears to be
* an updated copy of a previously existing data type archive. This allows us to parse a new
* version of each standard GDT file we supply. This class changes the IDs on the data types
- * so they will match the previous version's IDs. This allows the new data type archive and
- * its data types to become the associated data types where the previous version data types
+ * so they will match the previous version's IDs. This allows the new data type archive and
+ * its data types to become the associated data types where the previous version data types
* were applied.
*/
public class DataTypeArchiveTransformer implements GhidraLaunchable {
@@ -158,7 +158,7 @@ public class DataTypeArchiveTransformer implements GhidraLaunchable {
monitor.checkCanceled();
DataType newDataType = allDataTypes.next();
if (isAnonymousType(newDataType)) {
- // Skip anonymous types, they are matched as components of composites or
+ // Skip anonymous types, they are matched as components of composites or
// later unmatched enums are matched in categories.
continue;
}
@@ -169,7 +169,7 @@ public class DataTypeArchiveTransformer implements GhidraLaunchable {
DataType oldDataType =
transformDataType(newDataType, oldFileArchive, newFileArchive);
- // Now process children anonymous data types for composites.
+ // Now process children anonymous data types for composites.
processAnonymous(oldDataType, newDataType, oldFileArchive, newFileArchive);
// monitor.incrementProgress(1);
@@ -202,8 +202,8 @@ public class DataTypeArchiveTransformer implements GhidraLaunchable {
private static void processUnmatchedEnums(FileDataTypeManager oldFileArchive,
FileDataTypeManager newFileArchive, TaskMonitor monitor) throws CancelledException {
- // Find all anonymous enums and if not already matched to a data type in the old
- // archive, then try to match with an anonymous enum in the same category of the
+ // Find all anonymous enums and if not already matched to a data type in the old
+ // archive, then try to match with an anonymous enum in the same category of the
// old archive.
Iterator allDataTypes = newFileArchive.getAllDataTypes();
while (allDataTypes.hasNext()) {
@@ -287,9 +287,9 @@ public class DataTypeArchiveTransformer implements GhidraLaunchable {
private static void processAnonymous(DataType oldDataType, DataType newDataType,
FileDataTypeManager oldFileArchive, FileDataTypeManager newFileArchive) {
- // If we have composites, then get any component with an anonymous data type in the
- // newDataType, and look for it by matching field name in the old composite.
- // If the composites are anonymous then look for matching components by ordinal
+ // If we have composites, then get any component with an anonymous data type in the
+ // newDataType, and look for it by matching field name in the old composite.
+ // If the composites are anonymous then look for matching components by ordinal
// if the number of components matches.
if (newDataType instanceof Composite && oldDataType instanceof Composite) {
Composite newComposite = (Composite) newDataType;
@@ -346,7 +346,7 @@ public class DataTypeArchiveTransformer implements GhidraLaunchable {
if (isAnonymousType(newCompDt) || anonymousPointerDepth > 0 ||
anonymousArrayNumElements > 0 || anonymousTypeDefDepth > 0) {
- // Found an anonymous type, anonymous pointer, or anonymous array,
+ // Found an anonymous type, anonymous pointer, or anonymous array,
// so get the matching component by field name or ordinal.
DataTypeComponent matchingComponent =
getAnonymousMatch(oldComposite, newComposite, newComponent);
@@ -388,7 +388,7 @@ public class DataTypeArchiveTransformer implements GhidraLaunchable {
// Got a match so set the ID.
transformDataType(newCompDt, newFileArchive, oldCompDt);
- // Now process children anonymous data types for anonymous composites.
+ // Now process children anonymous data types for anonymous composites.
processAnonymous(oldCompDt, newCompDt, oldFileArchive, newFileArchive);
}
}
@@ -405,7 +405,7 @@ public class DataTypeArchiveTransformer implements GhidraLaunchable {
transformDataType(newDataType, newFileArchive, oldDataType);
}
- // Now process children anonymous data types for anonymous composites.
+ // Now process children anonymous data types for anonymous composites.
processAnonymous(oldDataType, newDataType, oldFileArchive, newFileArchive);
}
@@ -753,7 +753,7 @@ public class DataTypeArchiveTransformer implements GhidraLaunchable {
public void launch(GhidraApplicationLayout layout, String[] args) {
ApplicationConfiguration appConfig = new DockingApplicationConfiguration();
Application.initializeApplication(layout, appConfig);
- // Perform Class searching so we load data type classes that may have moved or
+ // Perform Class searching so we load data type classes that may have moved or
// changed name. This is needed to map a data type's old path name to the new one.
performClassSearching(appConfig.getTaskMonitor());
@@ -874,7 +874,7 @@ public class DataTypeArchiveTransformer implements GhidraLaunchable {
// The class searcher searches the classpath, and Ghidra's classpath should be complete
// for this configuration at this point.
try {
- ClassSearcher.search(false, monitor);
+ ClassSearcher.search(monitor);
}
catch (CancelledException e) {
Msg.debug(this, "Class searching unexpectedly cancelled.");
diff --git a/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/app/script/GhidraScriptUtilTest.java b/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/app/script/GhidraScriptUtilTest.java
index c05490e0c3..dd3a125a4a 100644
--- a/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/app/script/GhidraScriptUtilTest.java
+++ b/Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/app/script/GhidraScriptUtilTest.java
@@ -29,7 +29,7 @@ public class GhidraScriptUtilTest extends AbstractGenericTest {
@Before
public void setup() throws CancelledException {
- ClassSearcher.search(false, new ConsoleTaskMonitor());
+ ClassSearcher.search(new ConsoleTaskMonitor());
}
@Test