Author: xavier Date: Wed Sep 3 01:19:46 2008 New Revision: 691538 URL: http://svn.apache.org/viewvc?rev=691538&view=rev Log: IMPROVEMENT: write home page, description and license info in XmlModuleDescriptorWriter. This is useful to be sure we don't lose information parsed in poms, license information being especially useful (related to IVY-892)
Added: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-info.xml (with props) ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-write-info.xml (with props) Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorWriter.java ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorWriterTest.java ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-write-full.xml Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorWriter.java URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorWriter.java?rev=691538&r1=691537&r2=691538&view=diff ============================================================================== --- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorWriter.java (original) +++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorWriter.java Wed Sep 3 01:19:46 2008 @@ -37,6 +37,7 @@ import org.apache.ivy.core.module.descriptor.DependencyDescriptorMediator; import org.apache.ivy.core.module.descriptor.ExcludeRule; import org.apache.ivy.core.module.descriptor.IncludeRule; +import org.apache.ivy.core.module.descriptor.License; import org.apache.ivy.core.module.descriptor.ModuleDescriptor; import org.apache.ivy.core.module.descriptor.OverrideDependencyDescriptorMediator; import org.apache.ivy.plugins.matcher.MapMatcher; @@ -439,8 +440,33 @@ printExtraAttributes(md, out, "\t\t"); out.println(); } - if (md.getExtraInfo().size() > 0) { + if (requireInnerInfoElement(md)) { out.println("\t>"); + License[] licenses = md.getLicenses(); + for (int i = 0; i < licenses.length; i++) { + License license = licenses[i]; + out.print("\t\t<license "); + if (license.getName() != null) { + out.print("name=\"" + license.getName() + "\" "); + } + if (license.getUrl() != null) { + out.print("url=\"" + license.getUrl() + "\" "); + } + out.println("/>"); + } + if (md.getHomePage() != null || md.getDescription() != null) { + out.print("\t\t<description"); + if (md.getHomePage() != null) { + out.print(" homepage=\"" + md.getHomePage() + "\""); + } + if (md.getDescription() != null && md.getDescription().trim().length() > 0) { + out.println(">"); + out.println("\t\t" + md.getDescription()); + out.println("\t\t</description>"); + } else { + out.println(" />"); + } + } for (Iterator it = md.getExtraInfo().entrySet().iterator(); it.hasNext();) { Map.Entry extraDescr = (Map.Entry) it.next(); if (extraDescr.getValue() == null @@ -462,6 +488,13 @@ } + private static boolean requireInnerInfoElement(ModuleDescriptor md) { + return md.getExtraInfo().size() > 0 + || md.getHomePage() != null + || (md.getDescription() != null && md.getDescription().trim().length() > 0) + || md.getLicenses().length > 0; + } + private static String getConfs(ModuleDescriptor md, Artifact artifact) { StringBuffer ret = new StringBuffer(); Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorWriterTest.java URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorWriterTest.java?rev=691538&r1=691537&r2=691538&view=diff ============================================================================== --- ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorWriterTest.java (original) +++ ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorWriterTest.java Wed Sep 3 01:19:46 2008 @@ -62,6 +62,23 @@ assertEquals(expected, wrote); } + public void testInfo() throws Exception { + DefaultModuleDescriptor md = (DefaultModuleDescriptor) XmlModuleDescriptorParser + .getInstance().parseDescriptor(new IvySettings(), + XmlModuleDescriptorWriterTest.class.getResource("test-info.xml"), true); + md.setResolvedPublicationDate(new GregorianCalendar(2005, 4, 1, 11, 0, 0).getTime()); + md.setResolvedModuleRevisionId(new ModuleRevisionId(md.getModuleRevisionId().getModuleId(), + "NONE")); + XmlModuleDescriptorWriter.write(md, LICENSE, _dest); + + assertTrue(_dest.exists()); + String wrote = FileUtil.readEntirely(new BufferedReader(new FileReader(_dest))).replaceAll( + "\r\n", "\n").replace('\r', '\n'); + String expected = readEntirely("test-write-info.xml").replaceAll("\r\n", "\n").replace( + '\r', '\n'); + assertEquals(expected, wrote); + } + public void testDependencies() throws Exception { ModuleDescriptor md = XmlModuleDescriptorParser.getInstance().parseDescriptor( new IvySettings(), Added: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-info.xml URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-info.xml?rev=691538&view=auto ============================================================================== --- ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-info.xml (added) +++ ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-info.xml Wed Sep 3 01:19:46 2008 @@ -0,0 +1,27 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<ivy-module version="1.0"> + <info organisation="myorg" + module="mymodule"> + <license name="Apache Sofware License" url="http://www.apache.org/licenses/LICENSE-2.0.txt" /> + <description homepage="http://myorg.com/mymodule"> + My module description. + </description> + </info> +</ivy-module> Propchange: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-info.xml ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-write-full.xml URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-write-full.xml?rev=691538&r1=691537&r2=691538&view=diff ============================================================================== --- ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-write-full.xml (original) +++ ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-write-full.xml Wed Sep 3 01:19:46 2008 @@ -25,6 +25,11 @@ publication="20041101110000" e:attr1="value1" > + <license name="MyLicense" url="http://www.my.org/mymodule/mylicense.html" /> + <description homepage="http://www.my.org/mymodule/"> + This module is <b>great</b> !<br/> + You can use it especially with myconf1 and myconf2, and myconf4 is not too bad too. + </description> <e:someExtra>56576</e:someExtra> </info> <configurations> Added: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-write-info.xml URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-write-info.xml?rev=691538&view=auto ============================================================================== --- ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-write-info.xml (added) +++ ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-write-info.xml Wed Sep 3 01:19:46 2008 @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<ivy-module version="1.0"> + <info organisation="myorg" + module="mymodule" + revision="NONE" + status="integration" + publication="20050501110000" + > + <license name="Apache Sofware License" url="http://www.apache.org/licenses/LICENSE-2.0.txt" /> + <description homepage="http://myorg.com/mymodule"> + My module description. + </description> + </info> + <configurations> + <conf name="default" visibility="public"/> + </configurations> + <publications> + <artifact name="mymodule" type="jar" ext="jar" conf="default"/> + </publications> +</ivy-module> Propchange: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-write-info.xml ------------------------------------------------------------------------------ svn:mime-type = text/plain