diff --git a/spring-oxm/src/main/java/org/springframework/oxm/jibx/JibxMarshaller.java b/spring-oxm/src/main/java/org/springframework/oxm/jibx/JibxMarshaller.java index f4e3336b4aa..a988fbd2c1e 100644 --- a/spring-oxm/src/main/java/org/springframework/oxm/jibx/JibxMarshaller.java +++ b/spring-oxm/src/main/java/org/springframework/oxm/jibx/JibxMarshaller.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2011 the original author or authors. + * Copyright 2002-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -349,7 +349,7 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe protected Object unmarshalInputStream(InputStream inputStream) throws XmlMappingException, IOException { try { IUnmarshallingContext unmarshallingContext = createUnmarshallingContext(); - return unmarshallingContext.unmarshalDocument(inputStream, null); + return unmarshallingContext.unmarshalDocument(inputStream, encoding); } catch (JiBXException ex) { throw convertJibxException(ex, false); diff --git a/spring-oxm/src/test/java/org/springframework/oxm/jibx/FlightType.java b/spring-oxm/src/test/java/org/springframework/oxm/jibx/FlightType.java index c34003aa922..c779e9382ca 100644 --- a/spring-oxm/src/test/java/org/springframework/oxm/jibx/FlightType.java +++ b/spring-oxm/src/test/java/org/springframework/oxm/jibx/FlightType.java @@ -1,5 +1,5 @@ /* - * Copyright 2006 the original author or authors. + * Copyright 2006-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,13 +18,23 @@ package org.springframework.oxm.jibx; public class FlightType { - protected long number; + protected String airline; - public long getNumber() { - return this.number; - } + protected long number; - public void setNumber(long number) { - this.number = number; - } + public String getAirline() { + return this.airline; + } + + public void setAirline(String airline) { + this.airline = airline; + } + + public long getNumber() { + return this.number; + } + + public void setNumber(long number) { + this.number = number; + } } diff --git a/spring-oxm/src/test/java/org/springframework/oxm/jibx/JibxUnmarshallerTests.java b/spring-oxm/src/test/java/org/springframework/oxm/jibx/JibxUnmarshallerTests.java index 3b19ec620c9..871af7388f1 100644 --- a/spring-oxm/src/test/java/org/springframework/oxm/jibx/JibxUnmarshallerTests.java +++ b/spring-oxm/src/test/java/org/springframework/oxm/jibx/JibxUnmarshallerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2009 the original author or authors. + * Copyright 2002-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,13 +16,17 @@ package org.springframework.oxm.jibx; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import org.junit.Ignore; +import java.io.ByteArrayInputStream; + +import javax.xml.transform.stream.StreamSource; +import org.junit.Ignore; +import org.junit.Test; import org.springframework.oxm.AbstractUnmarshallerTests; import org.springframework.oxm.Unmarshaller; +import static org.junit.Assert.*; + /** * @author Arjen Poutsma * @@ -31,6 +35,10 @@ import org.springframework.oxm.Unmarshaller; */ public class JibxUnmarshallerTests extends AbstractUnmarshallerTests { + protected static final String INPUT_STRING_WITH_SPECIAL_CHARACTERS = + "" + + "Air Liberté42"; + @Override protected Unmarshaller createUnmarshaller() throws Exception { JibxMarshaller unmarshaller = new JibxMarshaller(); @@ -60,4 +68,17 @@ public class JibxUnmarshallerTests extends AbstractUnmarshallerTests { // JiBX does not support reading XML fragments, hence the override here } + @Test + public void unmarshalStreamSourceInputStreamUsingNonDefaultEncoding() throws Exception { + String encoding = "ISO-8859-1"; + ((JibxMarshaller)unmarshaller).setEncoding(encoding); + + StreamSource source = new StreamSource(new ByteArrayInputStream(INPUT_STRING_WITH_SPECIAL_CHARACTERS.getBytes(encoding))); + Object flights = unmarshaller.unmarshal(source); + testFlights(flights); + + FlightType flight = ((Flights)flights).getFlight(0); + assertEquals("Airline is invalid", "Air Liberté", flight.getAirline()); + } + } diff --git a/spring-oxm/src/test/resources/org/springframework/oxm/jibx/binding.xml b/spring-oxm/src/test/resources/org/springframework/oxm/jibx/binding.xml index 415021ce064..2f8cc0ad924 100644 --- a/spring-oxm/src/test/resources/org/springframework/oxm/jibx/binding.xml +++ b/spring-oxm/src/test/resources/org/springframework/oxm/jibx/binding.xml @@ -8,6 +8,7 @@ +