You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by "Maarten Coene (JIRA)" <ji...@apache.org> on 2014/03/26 23:00:23 UTC
[jira] [Updated] (IVY-1457) XmlModuleDescriptorWritter doesn't
support fully extra infos elements
[ https://issues.apache.org/jira/browse/IVY-1457?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Maarten Coene updated IVY-1457:
-------------------------------
Fix Version/s: (was: 2.4.0)
2.4.0-RC1
> 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
> Fix For: 2.4.0-RC1
>
>
> 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.2#6252)