With a "pure" JUnit test case, if i use that serverside code snippet that you
proposed:
InputStream source =
multiPart.getBodyParts().get(1).getEntityAs(InputStream.class);
I get an exception:
java.lang.IllegalStateException: The providers property has not been set,
which is done automatically when a MultiPart entity is received
at com.sun.jersey.multipart.BodyPart.getEntityAs(BodyPart.java:261)
at
server.communication.webservice.project.RevisionResource.addRevision(RevisionResource.java:113)
at
server.communication.webservice.project.RevisionResourceTest.testPOST(RevisionResourceTest.java:160)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at
org.junit.internal.runners.OldTestClassRunner.run(OldTestClassRunner.java:76)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
when I use the old code snippet
// get the second part which is the binary content
BodyPartEntity bpe = (BodyPartEntity)
multiPart.getBodyParts().get(1).getEntity();
InputStream source = null;
try {
source = bpe.getInputStream();
}
JUnit test case passes correctly.
Here's my JUnit code:
VersionContentDto dto = new VersionContentDto();
dto.setName("name");
byte[] byteArray = "test text that does stuph".getBytes();
ByteArrayInputStream bi = new ByteArrayInputStream(byteArray);
BodyPartEntity bpe = new BodyPartEntity(bi);
BodyPart dtoPart = new BodyPart(dto,
MediaType.APPLICATION_XML_TYPE);
BodyPart bytesPart = new BodyPart(bpe,
MediaType.APPLICATION_OCTET_STREAM_TYPE);
// Call Service
// Construct a MultiPart with two body parts
MultiPart multiPartInput = new
MultiPart().bodyPart(dtoPart).bodyPart(bytesPart);
Response r = resource.addRevision(multiPartInput);
The previous (12:55pm) client side code snippet was from my integration
(uses runtime server connection) test class.
--
View this message in context: http://n2.nabble.com/Multipart-1.0.3-not-finding-message-body-reader-tp2668407p2675399.html
Sent from the Jersey mailing list archive at Nabble.com.