You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by "Jean-Louis Boudart (JIRA)" <ji...@apache.org> on 2014/01/01 13:23:53 UTC
[jira] [Created] (IVY-1457) XmlModuleDescriptorWritter doesn't
support fully extra infos elements
Jean-Louis Boudart created IVY-1457:
---------------------------------------
Summary: XmlModuleDescriptorWritter doesn't support fully extra infos elements
Key: IVY-1457
URL: https://issues.apache.org/jira/browse/IVY-1457
Project: Ivy
Issue Type: Bug
Components: Core
Affects Versions: 2.3.0
Reporter: Jean-Louis Boudart
Ivy supports a way to add your own elements into extends tag.
Exemple :
{code:xml}
<info organisation="org.apache.easyant" module="standard-java-app" revision="0.1" status="integration" >
<ea:build organisation="org.apache.easyant.buildtypes" module="build-std-java" revision="0.9">
<ea:property name="run.main.classname" value="org.apache.easyant.example.Example"/>
<ea:plugin organisation="org.apache.easyant.plugins" module="run-java" revision="0.9" />
</ea:build>
</info>
{code}
After invoking XmlModuleDescriptorWritter.write()
We get the following :
{code:xml}
<info organisation="org.apache.easyant"
module="standard-java-app"
revision="0.1"
status="integration"
publication="20131231193827"
>
<ea:property>
</ea:property>
</info>
{code}
We can notice a few things :
* <ea:plugin> element is missing
* <ea:build> element is missing
* wrong identation on ending <ea:property> (probably due to nested elements)
* attributes from <ea:property> gets wiped
Here is the code form XmlModuleDescriptorParser.endElement() method :
{code:java}
else if (state == State.EXTRA_INFO) {
getMd().addExtraInfo(qName, buffer == null ? "" : buffer.toString());
buffer = null;
state = State.INFO;
}
{code}
Unfortunatly buffer doesn't contains attributes and doesn't seems to handle nested element.
Here is the code writting extra infos elements from XmlModuleDescriptorWritter :
{code:java}
for (Iterator it = md.getExtraInfo().entrySet().iterator(); it.hasNext();) {
Map.Entry extraDescr = (Map.Entry) it.next();
if (extraDescr.getValue() == null
|| ((String) extraDescr.getValue()).length() == 0) {
continue;
}
out.print("\t\t<");
out.print(extraDescr.getKey());
out.print(">");
out.print(XMLHelper.escape((String) extraDescr.getValue()));
out.print("</");
out.print(extraDescr.getKey());
out.println(">");
}
{code}
Still no attributes support and all "contents" will be escaped.
I don't know how much this feature is used by the community but fixing this bug could break backward compatibility.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)