From: Aron Roberts Date: Mon, 19 Mar 2012 19:47:47 +0000 (-0700) Subject: CSPACE-3911: Workaround - at best - for problem where ampersand character entities... X-Git-Url: https://git.aero2k.de/?a=commitdiff_plain;h=a30acc72cf5beeb1f164881ed0a4f993a1cd6c51;p=tmp%2Fjakarta-migration.git 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). --- 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;