[
https://issues.apache.org/jira/browse/IVY-1457?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13989911#comment-13989911
]
Jean-Louis Boudart commented on IVY-1457:
-----------------------------------------
Hi, sorry for the delay a test was harder to fix than i thought.
I've just commited a fix. Ivy uses extra infos elements internally to handle
dependency management / plugins etc. So my original change has broken a few
things.
Everything should be ok now, a few methods as been marked deprecated, and ivy
uses new ones internally.
I also added a few missing tests on this side (parsing maven artifacts with
parent / dependency management and see how ivy store this in his cache).
Could you give a try with a nightly build and give us a feedback ?
> 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)