From 34ab313848e3435ecfa9547bc28e3e23ee8f928a Mon Sep 17 00:00:00 2001 From: Aron Roberts Date: Mon, 30 Nov 2009 22:47:25 +0000 Subject: [PATCH] CSPACE-620: Added debugging statements to extractPart method in AbstractServiceTest to assist in understanding multipart schema extension output and in tracking down potential problems as they arise. --- .../client/test/AbstractServiceTest.java | 46 ++++++++++++++++--- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/services/client/src/main/java/org/collectionspace/services/client/test/AbstractServiceTest.java b/services/client/src/main/java/org/collectionspace/services/client/test/AbstractServiceTest.java index 8407fda3c..d5fc0bbf2 100644 --- a/services/client/src/main/java/org/collectionspace/services/client/test/AbstractServiceTest.java +++ b/services/client/src/main/java/org/collectionspace/services/client/test/AbstractServiceTest.java @@ -27,6 +27,7 @@ import java.io.ByteArrayInputStream; import java.io.StringWriter; import java.lang.reflect.Method; import java.util.ArrayList; +import java.util.List; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; import javax.xml.bind.JAXBContext; @@ -557,20 +558,51 @@ public abstract class AbstractServiceTest implements ServiceTest { protected Object extractPart(MultipartInput input, String label, Class clazz) throws Exception { Object obj = null; - for(InputPart part : input.getParts()){ - String partLabel = part.getHeaders().getFirst("label"); + String partLabel = ""; + List parts = input.getParts(); + if (parts.size() == 0) { + logger.warn("No parts found in multipart body."); + } + if(logger.isDebugEnabled()){ + logger.debug("Parts:"); + for(InputPart part : parts){ + partLabel = part.getHeaders().getFirst("label"); + logger.debug("part = " + partLabel); + } + } + boolean partLabelMatched = false; + for(InputPart part : parts){ + partLabel = part.getHeaders().getFirst("label"); if(label.equalsIgnoreCase(partLabel)){ - String partStr = part.getBodyAsString(); + partLabelMatched = true; if(logger.isDebugEnabled()){ - logger.debug("extracted part str=\n" + partStr); + logger.debug("found part" + partLabel); } - obj = part.getBody(clazz, null); - if(logger.isDebugEnabled()){ - logger.debug("extracted part obj=\n", obj, clazz); + String partStr = part.getBodyAsString(); + if (partStr == null || partStr.trim().isEmpty()) { + logger.warn("Part '" + label + "' in multipart body is empty."); + } else { + if (logger.isDebugEnabled()){ + logger.debug("extracted part as str=\n" + partStr); + } + obj = part.getBody(clazz, null); + if(logger.isDebugEnabled()){ + logger.debug("extracted part as obj=\n", + objectAsXmlString(obj, clazz)); + } } break; } } + if (! partLabelMatched) { + logger.warn("Could not find part '" + label + "' in multipart body."); + // In the event that getBodyAsString() or getBody(), above, do *not* + // throw an IOException, but getBody() nonetheless retrieves a null object. + // This *may* be unreachable. + } else if (obj == null) { + logger.warn("Could not extract part '" + label + + "' in multipart body as an object."); + } return obj; } -- 2.47.3