Skip to content

Commit 90e469b

Browse files
committed
Fix NPE when copying error message data to the response
1 parent 60ab138 commit 90e469b

File tree

1 file changed

+25
-10
lines changed

1 file changed

+25
-10
lines changed

share-oauth/src/main/java/org/sharextras/webscripts/connector/HttpOAuth2Connector.java

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -341,22 +341,37 @@ private void copyResponseContent(Response resp, FakeHttpServletResponse source,
341341
{
342342
byte[] bytes = source.getContentAsByteArray();
343343
source.flushBuffer();
344-
if (logger.isDebugEnabled())
344+
if (resp != null)
345345
{
346-
logger.debug("Setting status " + resp.getStatus().getCode());
347-
logger.debug("Setting encoding " + source.getCharacterEncoding());
346+
if (logger.isDebugEnabled())
347+
{
348+
logger.debug("Setting status " + resp.getStatus().getCode());
349+
logger.debug("Setting encoding " + source.getCharacterEncoding());
350+
}
351+
dest.setStatus(resp.getStatus().getCode());
352+
// Copy headers over
353+
for (Map.Entry<String, String> header : resp.getStatus().getHeaders().entrySet())
354+
{
355+
dest.setHeader(header.getKey(), header.getValue());
356+
if (logger.isDebugEnabled())
357+
{
358+
logger.debug("Add header " + header.getKey() + ": " + header.getValue());
359+
}
360+
}
348361
}
349-
dest.setStatus(resp.getStatus().getCode());
350-
dest.setCharacterEncoding(source.getCharacterEncoding());
351-
// Copy headers over
352-
for (Map.Entry<String, String> header : resp.getStatus().getHeaders().entrySet())
362+
else // Error info is on the fake response
353363
{
354-
dest.setHeader(header.getKey(), header.getValue());
355-
if (logger.isDebugEnabled())
364+
dest.setStatus(source.getStatus());
365+
for (Object hdr : source.getHeaderNames())
356366
{
357-
logger.debug("Add header " + header.getKey() + ": " + header.getValue());
367+
dest.setHeader((String) hdr, (String) source.getHeader((String) hdr));
368+
if (logger.isDebugEnabled())
369+
{
370+
logger.debug("Add header " + (String) hdr + ": " + (String) source.getHeader((String) hdr));
371+
}
358372
}
359373
}
374+
dest.setCharacterEncoding(source.getCharacterEncoding());
360375
if (logger.isDebugEnabled())
361376
{
362377
logger.debug("Add bytes " + bytes.length);

0 commit comments

Comments
 (0)