public List<Bundle.DefEntry> getDefEntries() { return bundle.getDefEntries(); }
private void checkAndCopyUserDefs(Bundle bundle, List<Bundle> bundlesAdded) throws IOException { for (Bundle.DefEntry def : bundle.getDefEntries()) { checkUserDefConflict(bundle, def, bundlesAdded); String defFilename = def.defNamespace + "." + def.defName + ".def"; OutputStream out = new FileOutputStream(new File(defDir, defFilename)); out.write(def.contents.getBytes()); out.close(); } }
private void addAllDefsFromBundles(Map<ConfigDefinitionKey, UnparsedConfigDefinition> defs, List<Component> components) { for (Component component : components) { Bundle bundle = component.getBundle(); for (final Bundle.DefEntry def : bundle.getDefEntries()) { final ConfigDefinitionKey defKey = new ConfigDefinitionKey(def.defName, def.defNamespace); if (!defs.containsKey(defKey)) { defs.put(defKey, new UnparsedConfigDefinition() { @Override public ConfigDefinition parse() { DefParser parser = new DefParser(defKey.getName(), new StringReader(def.contents)); return ConfigDefinitionBuilder.createConfigDefinition(parser.getTree()); } @Override public String getUnparsedContent() { return def.contents; } }); } } } }
private void checkUserDefConflict(Bundle bundle, Bundle.DefEntry userDef, List<Bundle> bundlesAdded) { final String defName = userDef.defName; final String defNamespace = userDef.defNamespace; File[] builtinDefsWithSameName = defDir.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.matches(defName + ".def") || name.matches(defNamespace + "." + defName + ".def"); } }); if (builtinDefsWithSameName != null && builtinDefsWithSameName.length > 0) { String message = "a built-in config definition (" + getFilePathsCommaSeparated(builtinDefsWithSameName) + ")"; for (Bundle b : bundlesAdded) { for (Bundle.DefEntry defEntry : b.getDefEntries()) { if (defEntry.defName.equals(defName) && defEntry.defNamespace.equals(defNamespace)) { message = "the same config definition in the bundle '" + b.getFile().getName() + "'"; } } } throw new IllegalArgumentException("The config definition with name '" + defNamespace + "." + defName + "' contained in the bundle '" + bundle.getFile().getName() + "' conflicts with " + message + ". Please choose a different name."); } }