diff --git a/Ghidra/Framework/Generic/src/main/java/generic/application/GenericApplicationLayout.java b/Ghidra/Framework/Generic/src/main/java/generic/application/GenericApplicationLayout.java index 0928d0bc40..bc147bd8fd 100644 --- a/Ghidra/Framework/Generic/src/main/java/generic/application/GenericApplicationLayout.java +++ b/Ghidra/Framework/Generic/src/main/java/generic/application/GenericApplicationLayout.java @@ -87,7 +87,7 @@ public class GenericApplicationLayout extends ApplicationLayout { * @param applicationProperties The properties object that will be read system properties. * @throws IOException if there was a problem getting a user directory. */ - public GenericApplicationLayout(Collection applicationRootDirs, + public GenericApplicationLayout(SequencedCollection applicationRootDirs, ApplicationProperties applicationProperties) throws IOException { this.applicationProperties = Objects.requireNonNull(applicationProperties); @@ -179,9 +179,9 @@ public class GenericApplicationLayout extends ApplicationLayout { * first entry will be the primary root in both cases. * @return root directories */ - public static Collection getDefaultApplicationRootDirs() { + public static SequencedCollection getDefaultApplicationRootDirs() { - Set results = new HashSet<>(); + List results = new ArrayList<>(); String additionalRootsProperty = System.getProperty(ADDITIONAL_APPLICATION_ROOT_DIRS); if (!StringUtils.isBlank(additionalRootsProperty)) { String[] paths = additionalRootsProperty.split(File.pathSeparator); diff --git a/Ghidra/Framework/Utility/src/main/java/ghidra/GhidraApplicationLayout.java b/Ghidra/Framework/Utility/src/main/java/ghidra/GhidraApplicationLayout.java index ba8b907602..802cc4b186 100644 --- a/Ghidra/Framework/Utility/src/main/java/ghidra/GhidraApplicationLayout.java +++ b/Ghidra/Framework/Utility/src/main/java/ghidra/GhidraApplicationLayout.java @@ -113,9 +113,9 @@ public class GhidraApplicationLayout extends ApplicationLayout { /** * Finds the application root directories for this application layout. * - * @return A collection of the application root directories for this layout. + * @return A {@link SequencedCollection} of the application root directories for this layout. */ - protected Collection findGhidraApplicationRootDirs() { + protected SequencedCollection findGhidraApplicationRootDirs() { return ApplicationUtilities.findDefaultApplicationRootDirs(); } diff --git a/Ghidra/Framework/Utility/src/main/java/ghidra/GhidraJarApplicationLayout.java b/Ghidra/Framework/Utility/src/main/java/ghidra/GhidraJarApplicationLayout.java index 3b13e0f43a..8a51f75e2e 100644 --- a/Ghidra/Framework/Utility/src/main/java/ghidra/GhidraJarApplicationLayout.java +++ b/Ghidra/Framework/Utility/src/main/java/ghidra/GhidraJarApplicationLayout.java @@ -4,9 +4,9 @@ * 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. @@ -48,17 +48,14 @@ public class GhidraJarApplicationLayout extends GhidraApplicationLayout { } @Override - protected Collection findGhidraApplicationRootDirs() { - List dirs = new ArrayList<>(); + protected SequencedCollection findGhidraApplicationRootDirs() { String appPropPath = "/_Root/Ghidra/" + ApplicationProperties.PROPERTY_FILE; URL appPropUrl = getClass().getResource(appPropPath); if (appPropUrl == null) { throw new IllegalStateException( "The Ghidra Jar must have an application.properties file at " + appPropPath); } - ResourceFile rootDir = fromUrl(appPropUrl).getParentFile(); - dirs.add(rootDir); - return dirs; + return List.of(fromUrl(appPropUrl).getParentFile()); } @Override diff --git a/Ghidra/Framework/Utility/src/main/java/utility/application/ApplicationLayout.java b/Ghidra/Framework/Utility/src/main/java/utility/application/ApplicationLayout.java index 17bf88b362..a7fd7b0653 100644 --- a/Ghidra/Framework/Utility/src/main/java/utility/application/ApplicationLayout.java +++ b/Ghidra/Framework/Utility/src/main/java/utility/application/ApplicationLayout.java @@ -4,9 +4,9 @@ * 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. @@ -33,7 +33,7 @@ import ghidra.framework.GModule; public abstract class ApplicationLayout { protected ApplicationProperties applicationProperties; - protected Collection applicationRootDirs; + protected SequencedCollection applicationRootDirs; protected ResourceFile applicationInstallationDir; protected Map modules; protected File userTempDir; @@ -55,9 +55,9 @@ public abstract class ApplicationLayout { /** * Gets the application root directories from the application layout. * - * @return A collection of application root directories (or null if not set). + * @return A {@link SequencedCollection} of application root directories (or null if not set). */ - public final Collection getApplicationRootDirs() { + public final SequencedCollection getApplicationRootDirs() { return applicationRootDirs; } diff --git a/Ghidra/Framework/Utility/src/main/java/utility/application/ApplicationUtilities.java b/Ghidra/Framework/Utility/src/main/java/utility/application/ApplicationUtilities.java index 635c64b483..ec447a3734 100644 --- a/Ghidra/Framework/Utility/src/main/java/utility/application/ApplicationUtilities.java +++ b/Ghidra/Framework/Utility/src/main/java/utility/application/ApplicationUtilities.java @@ -4,9 +4,9 @@ * 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. @@ -16,8 +16,7 @@ package utility.application; import java.io.*; -import java.util.ArrayList; -import java.util.Collection; +import java.util.*; import generic.jar.ResourceFile; import ghidra.framework.*; @@ -50,8 +49,8 @@ public class ApplicationUtilities { * * @return A collection of discovered application root directories (could be empty). */ - public static Collection findDefaultApplicationRootDirs() { - Collection applicationRootDirs = new ArrayList<>(); + public static SequencedCollection findDefaultApplicationRootDirs() { + List applicationRootDirs = new ArrayList<>(); ResourceFile applicationRootDir = findPrimaryApplicationRootDir(); if (applicationRootDir != null) { applicationRootDirs.add(applicationRootDir); @@ -121,11 +120,11 @@ public class ApplicationUtilities { * * @param primaryApplicationRootDir The primary application root directory that may contain the * repository config file one directory up. - * @return A collection of defined application repository root directories. + * @return A {@link SequencedCollection} of defined application repository root directories. */ - private static Collection findApplicationRootDirsFromRepoConfig( + private static SequencedCollection findApplicationRootDirsFromRepoConfig( ResourceFile primaryApplicationRootDir) { - Collection repoApplicationRootDirs = new ArrayList<>(); + List repoApplicationRootDirs = new ArrayList<>(); ResourceFile repoConfigFile = new ResourceFile(primaryApplicationRootDir.getParentFile(), "ghidra.repos.config"); if (repoConfigFile.isFile()) {