Merge pull request #58 from sslavic/SPR-7865
* SPR-7865: Use configured encoding during JiBX unmarshalling
This commit is contained in:
		
						commit
						bb5c81e0c5
					
				| 
						 | 
					@ -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");
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 * you may not use this file except in compliance with 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 {
 | 
						protected Object unmarshalInputStream(InputStream inputStream) throws XmlMappingException, IOException {
 | 
				
			||||||
		try {
 | 
							try {
 | 
				
			||||||
			IUnmarshallingContext unmarshallingContext = createUnmarshallingContext();
 | 
								IUnmarshallingContext unmarshallingContext = createUnmarshallingContext();
 | 
				
			||||||
			return unmarshallingContext.unmarshalDocument(inputStream, null);
 | 
								return unmarshallingContext.unmarshalDocument(inputStream, encoding);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		catch (JiBXException ex) {
 | 
							catch (JiBXException ex) {
 | 
				
			||||||
			throw convertJibxException(ex, false);
 | 
								throw convertJibxException(ex, false);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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");
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 * you may not use this file except in compliance with 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 {
 | 
					public class FlightType {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected long number;
 | 
						protected String airline;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public long getNumber() {
 | 
						protected long number;
 | 
				
			||||||
        return this.number;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setNumber(long number) {
 | 
						public String getAirline() {
 | 
				
			||||||
        this.number = number;
 | 
							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;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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");
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 * you may not use this file except in compliance with the License.
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
| 
						 | 
					@ -16,13 +16,17 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.springframework.oxm.jibx;
 | 
					package org.springframework.oxm.jibx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static org.junit.Assert.assertEquals;
 | 
					import java.io.ByteArrayInputStream;
 | 
				
			||||||
import static org.junit.Assert.assertNotNull;
 | 
					 | 
				
			||||||
import org.junit.Ignore;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.xml.transform.stream.StreamSource;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.junit.Ignore;
 | 
				
			||||||
 | 
					import org.junit.Test;
 | 
				
			||||||
import org.springframework.oxm.AbstractUnmarshallerTests;
 | 
					import org.springframework.oxm.AbstractUnmarshallerTests;
 | 
				
			||||||
import org.springframework.oxm.Unmarshaller;
 | 
					import org.springframework.oxm.Unmarshaller;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.junit.Assert.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @author Arjen Poutsma
 | 
					 * @author Arjen Poutsma
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -31,6 +35,10 @@ import org.springframework.oxm.Unmarshaller;
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class JibxUnmarshallerTests extends AbstractUnmarshallerTests {
 | 
					public class JibxUnmarshallerTests extends AbstractUnmarshallerTests {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						protected static final String INPUT_STRING_WITH_SPECIAL_CHARACTERS =
 | 
				
			||||||
 | 
								"<tns:flights xmlns:tns=\"http://samples.springframework.org/flight\">" +
 | 
				
			||||||
 | 
										"<tns:flight><tns:airline>Air Liberté</tns:airline><tns:number>42</tns:number></tns:flight></tns:flights>";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	protected Unmarshaller createUnmarshaller() throws Exception {
 | 
						protected Unmarshaller createUnmarshaller() throws Exception {
 | 
				
			||||||
		JibxMarshaller unmarshaller = new JibxMarshaller();
 | 
							JibxMarshaller unmarshaller = new JibxMarshaller();
 | 
				
			||||||
| 
						 | 
					@ -60,4 +68,17 @@ public class JibxUnmarshallerTests extends AbstractUnmarshallerTests {
 | 
				
			||||||
		// JiBX does not support reading XML fragments, hence the override here
 | 
							// 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());
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,6 +8,7 @@
 | 
				
			||||||
    </mapping>
 | 
					    </mapping>
 | 
				
			||||||
    <mapping name="flight" class="org.springframework.oxm.jibx.FlightType">
 | 
					    <mapping name="flight" class="org.springframework.oxm.jibx.FlightType">
 | 
				
			||||||
        <namespace uri="http://samples.springframework.org/flight" default="elements"/>
 | 
					        <namespace uri="http://samples.springframework.org/flight" default="elements"/>
 | 
				
			||||||
 | 
					        <value name="airline" field="airline" usage="optional"/>
 | 
				
			||||||
        <value name="number" field="number" usage="required"/>
 | 
					        <value name="number" field="number" usage="required"/>
 | 
				
			||||||
    </mapping>
 | 
					    </mapping>
 | 
				
			||||||
</binding>
 | 
					</binding>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue