diff --git a/spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java b/spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java index cb2eeeb815e..bbf775452ef 100644 --- a/spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java +++ b/spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java @@ -784,6 +784,9 @@ public class Jaxb2Marshaller implements MimeMarshaller, MimeUnmarshaller, Generi else if (streamSource.getReader() != null) { inputSource = new InputSource(streamSource.getReader()); } + else { + inputSource = new InputSource(streamSource.getSystemId()); + } } try { diff --git a/spring-oxm/src/test/java/org/springframework/oxm/jaxb/Jaxb2UnmarshallerTests.java b/spring-oxm/src/test/java/org/springframework/oxm/jaxb/Jaxb2UnmarshallerTests.java index 04842a73666..a802392a397 100644 --- a/spring-oxm/src/test/java/org/springframework/oxm/jaxb/Jaxb2UnmarshallerTests.java +++ b/spring-oxm/src/test/java/org/springframework/oxm/jaxb/Jaxb2UnmarshallerTests.java @@ -16,8 +16,9 @@ package org.springframework.oxm.jaxb; +import java.io.File; +import java.io.IOException; import java.io.StringReader; - import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.xml.bind.JAXBElement; @@ -26,7 +27,11 @@ import javax.xml.stream.XMLStreamReader; import javax.xml.transform.Source; import javax.xml.transform.stream.StreamSource; +import static org.junit.Assert.*; import org.junit.Test; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.mock; + import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.oxm.AbstractUnmarshallerTests; @@ -36,9 +41,6 @@ import org.springframework.oxm.jaxb.test.Flights; import org.springframework.oxm.mime.MimeContainer; import org.springframework.util.xml.StaxUtils; -import static org.junit.Assert.*; -import static org.mockito.BDDMockito.*; - /** * @author Arjen Poutsma * @author Biju Kunjummen @@ -134,4 +136,13 @@ public class Jaxb2UnmarshallerTests extends AbstractUnmarshallerTests { "test", airplane.getValue().getName()); } + @Test + public void unmarshalFile() throws IOException { + Resource resource = new ClassPathResource("jaxb2.xml", getClass()); + File file = resource.getFile(); + + Flights f = (Flights) unmarshaller.unmarshal(new StreamSource(file)); + testFlights(f); + } + } diff --git a/spring-oxm/src/test/resources/org/springframework/oxm/jaxb/jaxb2.xml b/spring-oxm/src/test/resources/org/springframework/oxm/jaxb/jaxb2.xml new file mode 100644 index 00000000000..4428a1dc7ab --- /dev/null +++ b/spring-oxm/src/test/resources/org/springframework/oxm/jaxb/jaxb2.xml @@ -0,0 +1,5 @@ + + + 42 + + \ No newline at end of file