From a30acc72cf5beeb1f164881ed0a4f993a1cd6c51 Mon Sep 17 00:00:00 2001 From: Aron Roberts Date: Mon, 19 Mar 2012 12:47:47 -0700 Subject: [PATCH] CSPACE-3911: Workaround - at best - for problem where ampersand character entities are turned into 'bare' ampersands during import, this time during the multipart/form-data import path (see CSPACE-4866). --- .../services/imports/ImportsResource.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/services/imports/service/src/main/java/org/collectionspace/services/imports/ImportsResource.java b/services/imports/service/src/main/java/org/collectionspace/services/imports/ImportsResource.java index 3ca85110d..dae22ab42 100644 --- a/services/imports/service/src/main/java/org/collectionspace/services/imports/ImportsResource.java +++ b/services/imports/service/src/main/java/org/collectionspace/services/imports/ImportsResource.java @@ -52,6 +52,8 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; + +import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -296,7 +298,13 @@ public class ImportsResource extends ResourceBase { String mediaType = part.getMediaType().toString(); System.out.println("Media type is:" + mediaType); if (mediaType.equalsIgnoreCase(MediaType.APPLICATION_XML) || mediaType.equalsIgnoreCase(MediaType.TEXT_XML)){ - InputSource inputSource = new InputSource(part.getBody(InputStream.class, null)); + // FIXME For an alternate approach, potentially preferable, see: + // http://stackoverflow.com/questions/4586222/right-way-of-formatting-an-input-stream + String str = encodeAmpersands(part.getBodyAsString()); + byte[] buf = str.getBytes("UTF8"); + InputStream stream = new ByteArrayInputStream(str.getBytes("UTF8")); + InputSource inputSource = new InputSource(stream); + // InputSource inputSource = new InputSource(part.getBody(InputStream.class, null)); String result = createFromInputSource(inputSource); resultBuf.append(result); continue; -- 2.47.3