You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by gs...@apache.org on 2008/05/29 11:55:27 UTC
svn commit: r661275 - in /ant/ivy/core/trunk: CHANGES.txt
src/java/org/apache/ivy/plugins/report/XmlReportWriter.java
test/java/org/apache/ivy/plugins/report/XmlReportWriterTest.java
test/repositories/1/special-encoding-root-ivy.xml
Author: gscokart
Date: Thu May 29 02:55:26 2008
New Revision: 661275
URL: http://svn.apache.org/viewvc?rev=661275&view=rev
Log:
Fix the encoding used in XML reports (IVY-816)
Added:
ant/ivy/core/trunk/test/repositories/1/special-encoding-root-ivy.xml (with props)
Modified:
ant/ivy/core/trunk/CHANGES.txt
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportWriter.java
ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/XmlReportWriterTest.java
Modified: ant/ivy/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=661275&r1=661274&r2=661275&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Thu May 29 02:55:26 2008
@@ -123,6 +123,7 @@
- FIX: Classpath issues with vfs ftp while being used as a bundle (IVY-785)
- FIX: Relative include in a settings must be evaluated relatively to the settings file (IVY-372)
- FIX: The Bundle-Version is 0.0.0 in the build artifacts (IVY-802)
+- FIX: Fix the encoding used in XML reports (IVY-816)
- DOCUMENTATION: Broken link in documentation in Ivy files section, info element page (IVY-788)
- DOCUMENTATION: Add new cache information to resolver doc (IVY-772) (thanks to Carlton Brown)
Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportWriter.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportWriter.java?rev=661275&r1=661274&r2=661275&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportWriter.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportWriter.java Thu May 29 02:55:26 2008
@@ -17,8 +17,11 @@
*/
package org.apache.ivy.plugins.report;
+import java.io.BufferedWriter;
import java.io.OutputStream;
+import java.io.OutputStreamWriter;
import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
@@ -46,6 +49,8 @@
* XmlReportWriter allows to write ResolveReport in an xml format.
*/
public class XmlReportWriter {
+
+ static final String REPORT_ENCODING = "ISO-8859-1";
public void output(ConfigurationResolveReport report, OutputStream stream) {
output(report, new String[] {report.getConfiguration()}, stream);
@@ -53,9 +58,16 @@
public void output(
ConfigurationResolveReport report, String[] confs, OutputStream stream) {
- PrintWriter out = new PrintWriter(stream);
+ OutputStreamWriter encodedOutStream;
+ try {
+ encodedOutStream = new OutputStreamWriter(stream , REPORT_ENCODING);
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(REPORT_ENCODING + " is not known on your jvm" , e);
+ }
+ PrintWriter out = new PrintWriter(new BufferedWriter(encodedOutStream));
ModuleRevisionId mrid = report.getModuleDescriptor().getModuleRevisionId();
- out.println("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
+ //out.println("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
+ out.println("<?xml version=\"1.0\" encoding=\"" + REPORT_ENCODING + "\"?>");
out.println("<?xml-stylesheet type=\"text/xsl\" href=\"ivy-report.xsl\"?>");
out.println("<ivy-report version=\"1.0\">");
out.println("\t<info");
Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/XmlReportWriterTest.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/XmlReportWriterTest.java?rev=661275&r1=661274&r2=661275&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/XmlReportWriterTest.java (original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/XmlReportWriterTest.java Thu May 29 02:55:26 2008
@@ -17,6 +17,7 @@
*/
package org.apache.ivy.plugins.report;
+import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -27,6 +28,8 @@
import org.apache.ivy.core.report.ResolveReport;
import org.apache.ivy.core.resolve.ResolveOptions;
import org.apache.ivy.util.CacheCleaner;
+import org.apache.ivy.util.XMLHelper;
+import org.xml.sax.helpers.DefaultHandler;
public class XmlReportWriterTest extends TestCase {
private Ivy _ivy;
@@ -54,7 +57,7 @@
public void testWriteOrigin() throws Exception {
ResolveReport report = _ivy.resolve(new File(
- "test/repositories/1/org1/mod1.1/ivys/ivy-1.0.xml").toURL(),
+ "test/repositories/1/special-encoding-root-ivy.xml").toURL(),
getResolveOptions(new String[] {"default"}));
assertNotNull(report);
@@ -62,17 +65,24 @@
XmlReportWriter writer = new XmlReportWriter();
writer.output(report.getConfigurationReport("default"), buffer);
buffer.flush();
- String xml = buffer.toString();
+ String xml = buffer.toString(XmlReportWriter.REPORT_ENCODING);
String expectedLocation = "location=\""
+ new File("test/repositories/1/org1/mod1.2/jars/mod1.2-2.0.jar").getAbsolutePath()
+ "\"";
String expectedIsLocal = "is-local=\"true\"";
+ String expectedOrg = "organisation=\"spécial\"";
assertTrue("XML doesn't contain artifact location attribute",
xml.indexOf(expectedLocation) != -1);
assertTrue("XML doesn't contain artifact is-local attribute",
xml.indexOf(expectedIsLocal) != -1);
+ assertTrue("XML doesn't contain the organisation",
+ xml.indexOf(expectedOrg) != -1);
+
+ //check that the XML is valid
+ XMLHelper.parse(new ByteArrayInputStream(buffer.toByteArray()), null,
+ new DefaultHandler(), null);
}
public void testEscapeXml() throws Exception {
Added: ant/ivy/core/trunk/test/repositories/1/special-encoding-root-ivy.xml
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/1/special-encoding-root-ivy.xml?rev=661275&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/repositories/1/special-encoding-root-ivy.xml (added)
+++ ant/ivy/core/trunk/test/repositories/1/special-encoding-root-ivy.xml Thu May 29 02:55:26 2008
@@ -0,0 +1,32 @@
+<?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="spécial"
+ module="accünt"
+ revision="1.0"
+ status="integration"
+ publication="20041101110000"
+ >
+ <description>éà </description>
+ </info>
+ <dependencies>
+ <dependency org="org1" name="mod1.2" rev="2.0"/>
+ </dependencies>
+</ivy-module>
Propchange: ant/ivy/core/trunk/test/repositories/1/special-encoding-root-ivy.xml
------------------------------------------------------------------------------
svn:eol-style = native