in src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java [741:832]
private void infoStarted(Attributes attributes) {
String module = substitute(settings, attributes.getValue("module"));
String rev = null;
String branch = null;
String status = null;
String namespace = null;
Map<String, String> extraAttributes = null;
if (options.isMerge()) {
// get attributes from merged descriptor, ignoring raw XML
ModuleDescriptor merged = options.getMergedDescriptor();
ModuleRevisionId mergedMrid = merged.getModuleRevisionId();
organisation = mergedMrid.getOrganisation();
branch = mergedMrid.getBranch();
rev = mergedMrid.getRevision();
status = merged.getStatus();
// TODO: should namespace be added to ModuleDescriptor interface, so we don't
// have to do this kind of check?
if (merged instanceof DefaultModuleDescriptor) {
Namespace ns = ((DefaultModuleDescriptor) merged).getNamespace();
if (ns != null) {
namespace = ns.getName();
}
}
if (namespace == null) {
namespace = attributes.getValue("namespace");
}
extraAttributes = merged.getQualifiedExtraAttributes();
} else {
// get attributes from raw XML, performing property substitution
organisation = substitute(settings, attributes.getValue("organisation"));
rev = substitute(settings, attributes.getValue("revision"));
branch = substitute(settings, attributes.getValue("branch"));
status = substitute(settings, attributes.getValue("status"));
namespace = substitute(settings, attributes.getValue("namespace"));
extraAttributes = new LinkedHashMap<>(attributes.getLength());
for (int i = 0; i < attributes.getLength(); i++) {
String qname = attributes.getQName(i);
if (!STD_ATTS.contains(qname)) {
extraAttributes.put(qname, substitute(settings, attributes.getValue(i)));
}
}
}
// apply override values provided in options
if (revision != null) {
rev = revision;
}
if (options.getBranch() != null) {
branch = options.getBranch();
}
if (this.status != null) {
status = this.status;
}
// if necessary translate mrid using optional namespace argument
ModuleRevisionId localMid = ModuleRevisionId.newInstance(organisation, module, branch,
rev, ExtendableItemHelper.getExtraAttributes(settings, attributes,
Arrays.asList("organisation", "module", "revision", "status",
"publication", "namespace")));
ModuleRevisionId systemMid = (ns == null) ? localMid : ns.getToSystemTransformer()
.transform(localMid);
write("<info");
if (organisation != null) {
write(" organisation=\"" + XMLHelper.escape(systemMid.getOrganisation()) + "\"");
}
write(" module=\"" + XMLHelper.escape(systemMid.getName()) + "\"");
if (branch != null) {
write(" branch=\"" + XMLHelper.escape(systemMid.getBranch()) + "\"");
}
if (systemMid.getRevision() != null) {
write(" revision=\"" + XMLHelper.escape(systemMid.getRevision()) + "\"");
}
write(" status=\"" + XMLHelper.escape(status) + "\"");
if (pubdate != null) {
write(" publication=\"" + DateUtil.format(pubdate) + "\"");
} else if (attributes.getValue("publication") != null) {
write(" publication=\"" + substitute(settings, attributes.getValue("publication"))
+ "\"");
}
if (namespace != null) {
write(" namespace=\"" + namespace + "\"");
}
for (Map.Entry<String, String> extra : extraAttributes.entrySet()) {
write(" " + extra.getKey() + "=\"" + extra.getValue() + "\"");
}
}