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)