From 79c4174d0b4be96062c55fe37125a11f85fefe98 Mon Sep 17 00:00:00 2001 From: Jason Dahlke Date: Sat, 10 Feb 2024 19:15:28 +0000 Subject: [PATCH] change to use ClassNameInventory file naming convention --- ... => emissary.admin.ClassNameInventory.cfg} | 0 .../java/emissary/admin/PlaceStarter.java | 6 +- src/main/java/emissary/config/ConfigUtil.java | 44 ++++++------ .../java/emissary/config/ConfigUtilTest.java | 70 +++++++++---------- 4 files changed, 60 insertions(+), 60 deletions(-) rename src/main/config/{emissary.admin.MasterClassNames.cfg => emissary.admin.ClassNameInventory.cfg} (100%) diff --git a/src/main/config/emissary.admin.MasterClassNames.cfg b/src/main/config/emissary.admin.ClassNameInventory.cfg similarity index 100% rename from src/main/config/emissary.admin.MasterClassNames.cfg rename to src/main/config/emissary.admin.ClassNameInventory.cfg diff --git a/src/main/java/emissary/admin/PlaceStarter.java b/src/main/java/emissary/admin/PlaceStarter.java index 303b0d1909..f174bf765f 100755 --- a/src/main/java/emissary/admin/PlaceStarter.java +++ b/src/main/java/emissary/admin/PlaceStarter.java @@ -34,9 +34,9 @@ public class PlaceStarter { static { try { - classConf = ConfigUtil.getMasterClassNames(); + classConf = ConfigUtil.getClassNameInventory(); } catch (IOException | EmissaryException iox) { - logger.error("Missing MasterClassNames.cfg: all places will become " + defaultClassName + logger.error("Missing ClassNameInventory.cfg: all places will become " + defaultClassName + " which is probably not what you want. Config is now " + System.getProperty(ConfigUtil.CONFIG_DIR_PROPERTY), iox); System.exit(1); } @@ -185,7 +185,7 @@ public static String getClassString(final String theLocation) { } final List classStringList = classConf.findEntries(thePlaceName); if (classStringList.isEmpty()) { - logger.error("Need a CLASS config entry for {} check entry in emissary.admin.MasterClassNames.cfg, using default " + logger.error("Need a CLASS config entry for {} check entry in emissary.admin.ClassNameInventory.cfg, using default " + "{} which is probably not what you want.", thePlaceName, defaultClassName); return defaultClassName; } diff --git a/src/main/java/emissary/config/ConfigUtil.java b/src/main/java/emissary/config/ConfigUtil.java index 3a86f8c87e..1ea74d49b8 100755 --- a/src/main/java/emissary/config/ConfigUtil.java +++ b/src/main/java/emissary/config/ConfigUtil.java @@ -41,8 +41,8 @@ public class ConfigUtil { /** Constant string for files that end with {@value} */ public static final String JS_FILE_ENDING = ResourceReader.JS_SUFFIX; - /** Constant string for master files name prefix */ - public static final String MASTER_FILE_PREFIX = "emissary.admin.MasterClassNames"; + /** Constant string for inventory files name prefix */ + public static final String INVENTORY_FILE_PREFIX = "emissary.admin.ClassNameInventory"; /** * This property specifies the config override directory. When present, we look here first for config info. If not @@ -532,39 +532,39 @@ public static InputStream getConfigData(final String f) throws IOException { } /** - * Gets all MasterClassNames from configured file. + * Gets all ClassNameInventory from configured file. *

* For a single entry in 'emissary.config.dir' or comma separated list of config directories, every file that starts - * with 'emissary.admin.MasterClassNames' will be combined into a Configurator. This means files like - * 'emissary.admin.MasterClassNames.cfg', 'emissary.admin.MasterClassNames-module1.cfg' and - * 'emissary.admin.MasterClassNames-whatever.cfg' will be used. The concept of flavoring no longer applies to the - * MasterClassNames. + * with 'emissary.admin.ClassNameInventory' will be combined into a Configurator. This means files like + * 'emissary.admin.ClassNameInventory.cfg', 'emissary.admin.ClassNameInventory-module1.cfg' and + * 'emissary.admin.ClassNameInventory-whatever.cfg' will be used. The concept of flavoring no longer applies to the + * ClassNameInventory. * - * @return Configurator with all emissary.admin.MasterClassNames + * @return Configurator with all emissary.admin.ClassNameInventory * @throws IOException If there is some I/O problem. * @throws EmissaryException If no config files are found. */ - public static Configurator getMasterClassNames() throws IOException, EmissaryException { - final List masterClassNames = new ArrayList<>(); + public static Configurator getClassNameInventory() throws IOException, EmissaryException { + final List classNameInventory = new ArrayList<>(); for (final String dir : getConfigDirs()) { - final File[] files = new File(dir).listFiles((dir1, name) -> name.startsWith(MASTER_FILE_PREFIX) && name.endsWith(CONFIG_FILE_ENDING)); - // sort the files, to put emissary.admin.MasterClassNames.cfg before emissary.admin.MasterClassNames-blah.cfg + final File[] files = new File(dir).listFiles((dir1, name) -> name.startsWith(INVENTORY_FILE_PREFIX) && name.endsWith(CONFIG_FILE_ENDING)); + // sort the files, to put emissary.admin.ClassNameInventory.cfg before emissary.admin.ClassNameInventory-blah.cfg if (files != null) { Arrays.sort(files); - masterClassNames.addAll(Arrays.asList(files)); + classNameInventory.addAll(Arrays.asList(files)); } } // check to make sure we have at least one - if (masterClassNames.isEmpty()) { - throw new EmissaryException(String.format("No %s%s files found. No places to start.", MASTER_FILE_PREFIX, CONFIG_FILE_ENDING)); + if (classNameInventory.isEmpty()) { + throw new EmissaryException(String.format("No %s%s files found. No places to start.", INVENTORY_FILE_PREFIX, CONFIG_FILE_ENDING)); } ServiceConfigGuide scg = null; - for (final File f : masterClassNames) { + for (final File f : classNameInventory) { if (!f.exists() || !f.canRead()) { - logger.warn("Could not read MasterClassNames from {}", f.getAbsolutePath()); + logger.warn("Could not read ClassNameInventory from {}", f.getAbsolutePath()); } else { - logger.debug("Reading MasterClassNames from {}", f.getAbsolutePath()); + logger.debug("Reading ClassNameInventory from {}", f.getAbsolutePath()); } if (null != configFlavors) { final String cfgFlavor = getFlavorsFromCfgFile(f); @@ -573,14 +573,14 @@ public static Configurator getMasterClassNames() throws IOException, EmissaryExc } } if (scg == null) { // first one - scg = new ServiceConfigGuide(Files.newInputStream(f.toPath()), "MasterClassNames"); + scg = new ServiceConfigGuide(Files.newInputStream(f.toPath()), "ClassNameInventory"); } else { final Set existingKeys = scg.entryKeys(); - final Configurator scgToMerge = new ServiceConfigGuide(Files.newInputStream(f.toPath()), "MasterClassNames"); + final Configurator scgToMerge = new ServiceConfigGuide(Files.newInputStream(f.toPath()), "ClassNameInventory"); boolean noErrorsForFile = true; for (final String key : scgToMerge.entryKeys()) { if (existingKeys.contains(key)) { - logger.error("Tried to overwrite existing key from MasterClassNames:{} in {}", key, f.getAbsolutePath()); + logger.error("Tried to overwrite existing key from ClassNameInventory:{} in {}", key, f.getAbsolutePath()); noErrorsForFile = false; // System.exit(43); // this is swallowed in JettyServer in jetty 6 } @@ -614,7 +614,7 @@ static String getFlavorsFromCfgFile(final File f) { return ""; } if (parts.length > 2) { - logger.warn("Filename {} had multiple - characters, using the last to determin the flavor", filename); + logger.warn("Filename {} had multiple - characters, using the last to determine the flavor", filename); } return parts[parts.length - 1].replaceAll(".cfg", ""); } diff --git a/src/test/java/emissary/config/ConfigUtilTest.java b/src/test/java/emissary/config/ConfigUtilTest.java index 507517c75a..578667cce2 100644 --- a/src/test/java/emissary/config/ConfigUtilTest.java +++ b/src/test/java/emissary/config/ConfigUtilTest.java @@ -380,31 +380,31 @@ void testInitializeWithMultipleConfigDirs() throws EmissaryException, IOExceptio } @Test - void testMasterClassNamesOneFile() throws IOException, EmissaryException { + void testClassNameInventoryOneFile() throws IOException, EmissaryException { // read in current file // figure out number of entries emissary.config.ConfigUtil.initialize(); - final Configurator c = ConfigUtil.getMasterClassNames(); + final Configurator c = ConfigUtil.getClassNameInventory(); assertNotNull(c, "Configurator should not be null"); } @Test - void testMasterClassNamesMultipleFiles() throws IOException, EmissaryException { + void testClassNameInventoryMultipleFiles() throws IOException, EmissaryException { final String contents1 = "DevNullPlace = \"emissary.place.sample.DevNullPlace\"\n"; - createFileAndPopulate(CDIR, "emissary.admin.MasterClassNames-core.cfg", contents1); + createFileAndPopulate(CDIR, "emissary.admin.ClassNameInventory-core.cfg", contents1); final String one = "Dev2NullPlace = \"emissary.place.donotpickme.DevNullPlace\"\n"; final String two = "DirectoryPlace = \"emissary.directory.DirectoryPlace\""; - createFileAndPopulate(CDIR, "emissary.admin.MasterClassNames-modeone.cfg", one + two); + createFileAndPopulate(CDIR, "emissary.admin.ClassNameInventory-modeone.cfg", one + two); final String three = "Dev3NullPlace = \"emissary.place.iamtheone.DevNullPlace\"\n"; - createFileAndPopulate(CDIR, "emissary.admin.MasterClassNames-modetwo.cfg", three); + createFileAndPopulate(CDIR, "emissary.admin.ClassNameInventory-modetwo.cfg", three); emissary.config.ConfigUtil.initialize(); - final Configurator c = ConfigUtil.getMasterClassNames(); + final Configurator c = ConfigUtil.getClassNameInventory(); assertNotNull(c, "Configurator should not be null"); assertEquals(4, c.entryKeys().size(), "Should have 4 entries"); assertEquals("emissary.place.sample.DevNullPlace", c.findStringEntry("DevNullPlace"), "Should have set DevNullPlace"); @@ -413,7 +413,7 @@ void testMasterClassNamesMultipleFiles() throws IOException, EmissaryException { } @Test - void testNoMasterClassNamesFilesExist() throws EmissaryException, IOException { + void testNoClassNameInventoryFilesExist() throws EmissaryException, IOException { final Path noCfgsFolder = createTmpSubDir("folder_with_no_cfg_files"); @@ -421,46 +421,46 @@ void testNoMasterClassNamesFilesExist() throws EmissaryException, IOException { emissary.config.ConfigUtil.initialize(); EmissaryException thrown = assertThrows(EmissaryException.class, () -> { - final Configurator c = ConfigUtil.getMasterClassNames(); + final Configurator c = ConfigUtil.getClassNameInventory(); }); assertTrue(thrown.getMessage().contains("No places to start.")); } @Test - void testOldMasterClassNamesFileExistsButIsIgnored() throws EmissaryException, IOException { + void testOldClassNameInventoryFileExistsButIsIgnored() throws EmissaryException, IOException { - // create a config file using old/deprecated file name convention MasterClassNames.cfg + // create a config file using old/deprecated file name convention ClassNameInventory.cfg final Path oldCfgsFolder = createTmpSubDir("folder_with_old_cfg_file_name"); final String contents = "DevNullPlace = \"emissary.place.sample.DevNullPlace\"\n"; - createFileAndPopulate(oldCfgsFolder, "MasterClassNames.cfg", contents); + createFileAndPopulate(oldCfgsFolder, "ClassNameInventory.cfg", contents); System.setProperty(CONFIG_DIR_PROPERTY, String.valueOf(oldCfgsFolder.toAbsolutePath())); emissary.config.ConfigUtil.initialize(); EmissaryException thrown = assertThrows(EmissaryException.class, () -> { - final Configurator c = ConfigUtil.getMasterClassNames(); + final Configurator c = ConfigUtil.getClassNameInventory(); }); assertTrue(thrown.getMessage().contains("No places to start.")); } @Test - void testOneMasterClassNamesMultipleDirs() throws IOException, EmissaryException { + void testOneClassNameInventoryMultipleDirs() throws IOException, EmissaryException { // setup final Path cfgDir1 = createTmpSubDir("cfg1AB"); final Path cfgDir2 = createTmpSubDir("cfg2AB"); final String one = "DevNullPlace = \"emissary.place.donotpickme.DevNullPlace\"\n"; - createFileAndPopulate(cfgDir1, "emissary.admin.MasterClassNames-cfgDir1.cfg", one); + createFileAndPopulate(cfgDir1, "emissary.admin.ClassNameInventory-cfgDir1.cfg", one); final String two = "BlahBlahPlace = \"emissary.place.donotpickme.DevNullPlace\"\n"; - createFileAndPopulate(cfgDir2, "emissary.admin.MasterClassNames-cfgDir2.cfg", two); + createFileAndPopulate(cfgDir2, "emissary.admin.ClassNameInventory-cfgDir2.cfg", two); final String origConfigDirProp = System.getProperty(CONFIG_DIR_PROPERTY); System.setProperty(CONFIG_DIR_PROPERTY, cfgDir1.toAbsolutePath() + "," + cfgDir2.toAbsolutePath()); // run ConfigUtil.initialize(); - final Configurator c = ConfigUtil.getMasterClassNames(); + final Configurator c = ConfigUtil.getClassNameInventory(); // assert assertNotNull(c, "Should have a configurator"); @@ -474,20 +474,20 @@ void testOneMasterClassNamesMultipleDirs() throws IOException, EmissaryException } @Test - void testSameMasterClassNamesMultipleDirs() throws IOException, EmissaryException { + void testSameClassNameInventoryMultipleDirs() throws IOException, EmissaryException { // setup final Path cfgDir1 = createTmpSubDir("cfg1ABC"); final Path cfgDir2 = createTmpSubDir("cfg2ABC"); final String one = "DevNullPlace = \"emissary.place.first.DevNullPlace\"\n"; - createFileAndPopulate(cfgDir1, "emissary.admin.MasterClassNames-sames.cfg", one); + createFileAndPopulate(cfgDir1, "emissary.admin.ClassNameInventory-sames.cfg", one); final String two = "Dev2NullPlace = \"emissary.place.second.DevNullPlace\"\n"; - createFileAndPopulate(cfgDir2, "emissary.admin.MasterClassNames-sames.cfg", two); + createFileAndPopulate(cfgDir2, "emissary.admin.ClassNameInventory-sames.cfg", two); final String origConfigDirProp = System.getProperty(CONFIG_DIR_PROPERTY); System.setProperty(CONFIG_DIR_PROPERTY, cfgDir1.toAbsolutePath() + "," + cfgDir2.toAbsolutePath()); emissary.config.ConfigUtil.initialize(); // run - final Configurator c = ConfigUtil.getMasterClassNames(); + final Configurator c = ConfigUtil.getClassNameInventory(); // assert assertNotNull(c, "Should have a configurator"); @@ -502,27 +502,27 @@ void testSameMasterClassNamesMultipleDirs() throws IOException, EmissaryExceptio @Test - void testMultipleMasterClassNamesMultipleDirs() throws IOException, EmissaryException { + void testMultipleClassNameInventoryMultipleDirs() throws IOException, EmissaryException { // setup final Path cfgDir1 = createTmpSubDir("cfg1ABCD"); final Path cfgDir2 = createTmpSubDir("cfg2ABCD"); final Path cfgDir3 = createTmpSubDir("cfg3ABCD"); final String one = "DevNullPlace = \"emissary.place.first.DevNullPlace\"\n"; - createFileAndPopulate(cfgDir1, "emissary.admin.MasterClassNames-sames.cfg", one); + createFileAndPopulate(cfgDir1, "emissary.admin.ClassNameInventory-sames.cfg", one); final String two = "BlahBlahPlace = \"emissary.place.second.DevNullPlace\"\n"; final String three = "Dev2NullPlace = \"emissary.place.second.DevNullPlace2\"\n"; - createFileAndPopulate(cfgDir2, "emissary.admin.MasterClassNames-sames.cfg", two + three); + createFileAndPopulate(cfgDir2, "emissary.admin.ClassNameInventory-sames.cfg", two + three); final String four = "BleeBleeNullPlace = \"emissary.place.second.BleeNullPlace\"\n"; - createFileAndPopulate(cfgDir2, "emissary.admin.MasterClassNames-sames-two.cfg", four); + createFileAndPopulate(cfgDir2, "emissary.admin.ClassNameInventory-sames-two.cfg", four); final String five = "BleeCheesePlace = \"emissary.place.second.BleeCheesePlace\"\n"; - createFileAndPopulate(cfgDir3, "emissary.admin.MasterClassNames-three.cfg", five); + createFileAndPopulate(cfgDir3, "emissary.admin.ClassNameInventory-three.cfg", five); final String origConfigDirProp = System.getProperty(CONFIG_DIR_PROPERTY); System.setProperty(CONFIG_DIR_PROPERTY, cfgDir1.toAbsolutePath() + "," + cfgDir2.toAbsolutePath() + "," + cfgDir3.toAbsolutePath()); emissary.config.ConfigUtil.initialize(); // run - final Configurator c = ConfigUtil.getMasterClassNames(); + final Configurator c = ConfigUtil.getClassNameInventory(); // assert assertNotNull(c, "Should have a configurator"); @@ -538,13 +538,13 @@ void testMultipleMasterClassNamesMultipleDirs() throws IOException, EmissaryExce } @Test - void testMasterClassNamesWarnsOnFlavor() throws IOException, EmissaryException { + void testClassNameInventoryWarnsOnFlavor() throws IOException, EmissaryException { final String contents2 = "DevNullPlace = \"emissary.place.second.DevNullPlace\"\n"; - createFileAndPopulate(CDIR, "emissary.admin.MasterClassNames-NORM.cfg", contents2); + createFileAndPopulate(CDIR, "emissary.admin.ClassNameInventory-NORM.cfg", contents2); System.setProperty(ConfigUtil.CONFIG_FLAVOR_PROPERTY, "NORM"); emissary.config.ConfigUtil.initialize(); - ConfigUtil.getMasterClassNames(); + ConfigUtil.getClassNameInventory(); // Confirm logs contain flavor message assertTrue( @@ -558,7 +558,7 @@ void testMasterClassNamesWarnsOnFlavor() throws IOException, EmissaryException { @Test void testGetFlavorFromFile() { - final String flavor = ConfigUtil.getFlavorsFromCfgFile(Paths.get(CDIR.toString() + "emissary.admin.MasterClassNames-flavor1.cfg").toFile()); + final String flavor = ConfigUtil.getFlavorsFromCfgFile(Paths.get(CDIR.toString() + "emissary.admin.ClassNameInventory-flavor1.cfg").toFile()); assertEquals("flavor1", flavor, "Flavors didn't match"); } @@ -589,22 +589,22 @@ void testGetFlavorMultipleHyphens() { } @Test - void testDuplicateEntryInMasterClassNamesThrowsIOException() throws IOException, EmissaryException { + void testDuplicateEntryInClassNameInventoryThrowsIOException() throws IOException, EmissaryException { // setup final Path cfgDir1 = createTmpSubDir("cfg1ABCDE"); final Path cfgDir2 = createTmpSubDir("cfg2ABCDE"); final String one = "DevNullPlace = \"emissary.place.first.DevNullPlace\"\n"; - createFileAndPopulate(cfgDir1, "emissary.admin.MasterClassNames.cfg", one); + createFileAndPopulate(cfgDir1, "emissary.admin.ClassNameInventory.cfg", one); final String two = "BlahBlahPlace = \"emissary.place.second.DevNullPlace\"\n"; final String three = "DevNullPlace = \"emissary.place.second.DevNullPlace2\"\n"; - createFileAndPopulate(cfgDir2, "emissary.admin.MasterClassNames-hasdups.cfg", two + three); + createFileAndPopulate(cfgDir2, "emissary.admin.ClassNameInventory-hasdups.cfg", two + three); final String origConfigDirProp = System.getProperty(CONFIG_DIR_PROPERTY); System.setProperty(CONFIG_DIR_PROPERTY, cfgDir1.toAbsolutePath() + "," + cfgDir2.toAbsolutePath()); emissary.config.ConfigUtil.initialize(); // run - final Configurator c = ConfigUtil.getMasterClassNames(); + final Configurator c = ConfigUtil.getClassNameInventory(); // clean up quick so other test don't fail System.setProperty(CONFIG_DIR_PROPERTY, origConfigDirProp); emissary.config.ConfigUtil.initialize();