Author: maartenc Date: Mon Dec 15 14:36:54 2008 New Revision: 726864 URL: http://svn.apache.org/viewvc?rev=726864&view=rev Log: - FIX: IO problem while parsing ivy file (Resetting to invalid mark) (IVY-975) (merged from trunk) - FIX: Cannot parse maven2 poms containing an UTF-8 BOM (merged from trunk)
Added: ant/ivy/core/branches/2.0.x/test/java/org/apache/ivy/plugins/parser/m2/test-large-pom.pom - copied unchanged from r720307, ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-large-pom.pom Modified: ant/ivy/core/branches/2.0.x/ (props changed) ant/ivy/core/branches/2.0.x/CHANGES.txt ant/ivy/core/branches/2.0.x/src/java/org/apache/ivy/plugins/parser/m2/PomReader.java ant/ivy/core/branches/2.0.x/test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParserTest.java Propchange: ant/ivy/core/branches/2.0.x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Mon Dec 15 14:36:54 2008 @@ -1,2 +1,2 @@ /ant/ivy/core/branches/2.0.0-rc2:707177-709027 -/ant/ivy/core/trunk:695737,696014-696031,696442,698318-706770,709027-709034,709039-710178,711197-718421,720308-720591,721305-723065 +/ant/ivy/core/trunk:695737,696014-696031,696442,698318-706770,709027-709034,709039-710178,711197-718421,720060-720591,721305-723065 Modified: ant/ivy/core/branches/2.0.x/CHANGES.txt URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.0.x/CHANGES.txt?rev=726864&r1=726863&r2=726864&view=diff ============================================================================== --- ant/ivy/core/branches/2.0.x/CHANGES.txt (original) +++ ant/ivy/core/branches/2.0.x/CHANGES.txt Mon Dec 15 14:36:54 2008 @@ -89,6 +89,8 @@ - FIX: Log levels aren't respected in certain cases using the standalone functionality (IVY-960) (thanks to Patrick Woodworth) - FIX: NPE in LogReportOutputter (IVY-961) - FIX: NullPointerException when resolving module wihout revision in the pattern (IVY-980) +- FIX: IO problem while parsing ivy file (Resetting to invalid mark) (IVY-975) +- FIX: Cannot parse maven2 poms containing an UTF-8 BOM 2.0.0-rc2 ===================================== Modified: ant/ivy/core/branches/2.0.x/src/java/org/apache/ivy/plugins/parser/m2/PomReader.java URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.0.x/src/java/org/apache/ivy/plugins/parser/m2/PomReader.java?rev=726864&r1=726863&r2=726864&view=diff ============================================================================== --- ant/ivy/core/branches/2.0.x/src/java/org/apache/ivy/plugins/parser/m2/PomReader.java (original) +++ ant/ivy/core/branches/2.0.x/src/java/org/apache/ivy/plugins/parser/m2/PomReader.java Mon Dec 15 14:36:54 2008 @@ -17,6 +17,7 @@ */ package org.apache.ivy.plugins.parser.m2; +import java.io.BufferedInputStream; import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; @@ -514,16 +515,25 @@ private byte[] prefix = DOCTYPE.getBytes(); private AddDTDFilterInputStream(InputStream in) throws IOException { - super(in); + super(new BufferedInputStream(in)); - if (!in.markSupported()) { - throw new IllegalArgumentException("The inputstream doesn't support mark"); - } + this.in.mark(MARK); + + // TODO: we should really find a better solution for this... + // maybe we could use a FilterReader instead of a FilterInputStream? + int byte1 = this.in.read(); + int byte2 = this.in.read(); + int byte3 = this.in.read(); - in.mark(MARK); + if (byte1 == 239 && byte2 == 187 && byte3 == 191) { + // skip the UTF-8 BOM + this.in.mark(MARK); + } else { + this.in.reset(); + } int bytesToSkip = 0; - LineNumberReader reader = new LineNumberReader(new InputStreamReader(in, "UTF-8")); + LineNumberReader reader = new LineNumberReader(new InputStreamReader(this.in, "UTF-8"), 100); String firstLine = reader.readLine(); if (firstLine != null) { String trimmed = firstLine.trim(); @@ -535,9 +545,9 @@ } } - in.reset(); + this.in.reset(); for (int i = 0; i < bytesToSkip; i++) { - in.read(); + this.in.read(); } } Modified: ant/ivy/core/branches/2.0.x/test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParserTest.java URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.0.x/test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParserTest.java?rev=726864&r1=726863&r2=726864&view=diff ============================================================================== --- ant/ivy/core/branches/2.0.x/test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParserTest.java (original) +++ ant/ivy/core/branches/2.0.x/test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParserTest.java Mon Dec 15 14:36:54 2008 @@ -106,6 +106,15 @@ assertEquals("jar", artifact[0].getType()); } + public void testLargePom() throws Exception { + ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( + settings, getClass().getResource("test-large-pom.pom"), false); + assertNotNull(md); + + ModuleRevisionId mrid = ModuleRevisionId.newInstance("org.apache.myfaces", "myfaces", "6"); + assertEquals(mrid, md.getModuleRevisionId()); + } + public void testPackaging() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( settings, getClass().getResource("test-packaging.pom"), false);