public static Collection/* <Configuration> */findConfigurationExtending(String conf, Configuration[] confs) { Collection extendingConfs = new ArrayList(); for (int i = 0; i < confs.length; i++) { if (confs[i] != null && Arrays.asList(confs[i].getExtends()).contains(conf)) { extendingConfs.add(confs[i]); extendingConfs.addAll(findConfigurationExtending(confs[i].getName(), confs)); } } return extendingConfs; }
/** * Throws an exception if the module descriptor is inconsistent For the moment, only extended * configurations existence and cycles are checked */ public void check() { Stack confs = new Stack(); for (Iterator iter = configurations.values().iterator(); iter.hasNext();) { Configuration conf = (Configuration) iter.next(); String[] ext = conf.getExtends(); for (int i = 0; i < ext.length; i++) { confs.push(conf.getName()); checkConf(confs, ext[i].trim()); confs.pop(); } } }
private boolean gatherExtendingConfs(Set<String> extendingConfs, String conf, String extended) { if (extendingConfs.contains(conf)) { return true; } String[] ext = md.getConfiguration(conf).getExtends(); if (ext == null || ext.length == 0) { return false; } for (int i = 0; i < ext.length; i++) { if (extendingConfs.contains(ext[i])) { extendingConfs.add(conf); return true; } if (ext[i].equals(extended)) { extendingConfs.add(conf); return true; } if (gatherExtendingConfs(extendingConfs, ext[i], extended)) { extendingConfs.add(conf); return true; } } return false; }
private void checkConf(Stack confs, String confName) { int index = confs.indexOf(confName); if (index != -1) { StringBuffer cycle = new StringBuffer(); for (; index < confs.size(); index++) { cycle.append(confs.get(index)).append(" => "); } cycle.append(confName); throw new IllegalStateException("illegal cycle detected in configuration extension: " + cycle); } Configuration conf = getConfiguration(confName); if (conf == null) { throw new IllegalStateException("unknown configuration '" + confName + "'. It is extended by " + confs.get(confs.size() - 1)); } String[] ext = conf.getExtends(); for (int i = 0; i < ext.length; i++) { confs.push(conf.getName()); checkConf(confs, ext[i].trim()); confs.pop(); } }
private void addExtendingConfigurations(String conf, DefaultDependencyDescriptor dd, boolean useDefaultMappingToGuessRightOperande) { Set configsToAdd = new HashSet(); Configuration[] configs = md.getConfigurations(); for (int i = 0; i < configs.length; i++) { String[] ext = configs[i].getExtends(); for (int j = 0; j < ext.length; j++) { if (conf.equals(ext[j])) { String configName = configs[i].getName(); configsToAdd.add(configName); addExtendingConfigurations(configName, dd, useDefaultMappingToGuessRightOperande); } } } String[] confs = (String[]) configsToAdd.toArray(new String[configsToAdd.size()]); parseDepsConfs(confs, dd, useDefaultMappingToGuessRightOperande); }
private void addRootModuleConfigurations(IvyNodeUsage usage, String rootModuleConf, String[] dependencyConfs) { Set depConfs = usage.addAndGetConfigurations(rootModuleConf); if (md != null) { // add all given dependency configurations to the set + extended ones for (int i = 0; i < dependencyConfs.length; i++) { depConfs.add(dependencyConfs[i]); Configuration conf = md.getConfiguration(dependencyConfs[i]); if (conf != null) { String[] exts = conf.getExtends(); // recursive add of extended addRootModuleConfigurations(usage, rootModuleConf, exts); } } } else { for (int i = 0; i < dependencyConfs.length; i++) { depConfs.add(dependencyConfs[i]); } } }
public void addConfiguration(String callerConf, String[] dependencyConfs) { updateConfs(callerConf, dependencyConfs); Configuration conf = md.getConfiguration(callerConf); if (conf != null) { String[] confExtends = conf.getExtends(); if (confExtends != null) { for (int i = 0; i < confExtends.length; i++) { addConfiguration(confExtends[i], dependencyConfs); } } } }
public void discardConf(String rootModuleConf, String conf) { Set depConfs = usage.addAndGetConfigurations(rootModuleConf); if (md != null) { // remove all given dependency configurations to the set + extended ones Configuration c = md.getConfiguration(conf); if (conf != null) { String[] exts = c.getExtends(); for (int i = 0; i < exts.length; i++) { discardConf(rootModuleConf, exts[i]); // recursive remove of extended // configurations } depConfs.remove(c.getName()); } else { Message.warn("unknown configuration in " + getId() + ": " + conf); } } else { depConfs.remove(conf); } }
protected static void printConfiguration(Configuration conf, PrintWriter out) { out.print("<conf"); out.print(" name=\"" + XMLHelper.escape(conf.getName()) + "\""); out.print(" visibility=\"" + XMLHelper.escape(conf.getVisibility().toString()) + "\""); if (conf.getDescription() != null) { out.print(" description=\"" + XMLHelper.escape(conf.getDescription()) + "\""); } String[] exts = conf.getExtends(); if (exts.length > 0) { out.print(" extends=\""); for (int j = 0; j < exts.length; j++) { out.print(XMLHelper.escape(exts[j])); if (j + 1 < exts.length) { out.print(","); } } out.print("\""); } if (!conf.isTransitive()) { out.print(" transitive=\"false\""); } if (conf.getDeprecated() != null) { out.print(" deprecated=\"" + XMLHelper.escape(conf.getDeprecated()) + "\""); } printExtraAttributes(conf, out, " "); out.println("/>"); }
public Configuration(Configuration source, ModuleRevisionId sourceModule) { this(source.getAttributes(), source.getQualifiedExtraAttributes(), source.getName(), source .getVisibility(), source.getDescription(), source.getExtends(), source .isTransitive(), source.getDeprecated(), sourceModule); }
String[] extendedConfs = c.getExtends(); if (extendedConfs.length > 0) { node.updateConfsToFetch(Arrays.asList(extendedConfs));