From 783a4236a265c5c3f743b6cf14878bc0b0857d9e Mon Sep 17 00:00:00 2001 From: charsyam Date: Sun, 18 Oct 2015 01:21:08 +0900 Subject: [PATCH] TAJO-1936: Fix NPE apply review remove unused import remove invalid conf --- .../rs/resources/TestQueryResultResource.java | 13 ++++++++++++- .../tajo/ws/rs/resources/QueryResource.java | 6 ++++++ .../ws/rs/resources/QueryResultResource.java | 12 ++++++++++++ .../tajo/ws/rs/resources/SessionsResource.java | 18 ++++++++++++++++++ 4 files changed, 48 insertions(+), 1 deletion(-) diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResultResource.java b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResultResource.java index 275e2558fa..2ab1add1ca 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResultResource.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResultResource.java @@ -39,6 +39,7 @@ import org.junit.Before; import org.junit.Test; +import javax.ws.rs.BadRequestException; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Entity; @@ -58,7 +59,6 @@ import static org.junit.Assert.*; public class TestQueryResultResource extends QueryTestCaseBase { - private URI restServiceURI; private URI sessionsURI; private URI queriesURI; @@ -150,6 +150,17 @@ public void testGetQueryResult() throws Exception { assertNotNull(response.getResultset().getLink()); } + @Test(expected = BadRequestException.class) + public void testGetQueryResultWithoutSessionId() throws Exception { + String sessionId = generateNewSessionAndGetId(); + URI queryIdURI = sendNewQueryResquest(sessionId, "select * from lineitem"); + URI queryResultURI = new URI(queryIdURI + "/result"); + + GetQueryResultDataResponse response = restClient.target(queryResultURI) + .request() + .get(new GenericType<>(GetQueryResultDataResponse.class)); + } + @Test public void testGetQueryResultNotFound() throws Exception { String sessionId = generateNewSessionAndGetId(); diff --git a/tajo-core/src/main/java/org/apache/tajo/ws/rs/resources/QueryResource.java b/tajo-core/src/main/java/org/apache/tajo/ws/rs/resources/QueryResource.java index f7d1897a3b..defb342ade 100644 --- a/tajo-core/src/main/java/org/apache/tajo/ws/rs/resources/QueryResource.java +++ b/tajo-core/src/main/java/org/apache/tajo/ws/rs/resources/QueryResource.java @@ -213,6 +213,12 @@ public Response submitQuery(@HeaderParam(tajoSessionIdHeaderName) String session initializeContext(); JerseyResourceDelegateContextKey sessionIdKey = JerseyResourceDelegateContextKey.valueOf(sessionIdKeyName, String.class); + + if (sessionId == null || sessionId.isEmpty()) { + return ResourcesUtil.createBadRequestResponse(LOG, "Session id is required. Please refer the header " + + QueryResource.tajoSessionIdHeaderName); + } + context.put(sessionIdKey, sessionId); JerseyResourceDelegateContextKey submitQueryRequestKey = JerseyResourceDelegateContextKey.valueOf(submitQueryRequestKeyName, SubmitQueryRequest.class); diff --git a/tajo-core/src/main/java/org/apache/tajo/ws/rs/resources/QueryResultResource.java b/tajo-core/src/main/java/org/apache/tajo/ws/rs/resources/QueryResultResource.java index 029a9ac3a4..243806051a 100644 --- a/tajo-core/src/main/java/org/apache/tajo/ws/rs/resources/QueryResultResource.java +++ b/tajo-core/src/main/java/org/apache/tajo/ws/rs/resources/QueryResultResource.java @@ -155,6 +155,12 @@ public Response getQueryResult(@HeaderParam(QueryResource.tajoSessionIdHeaderNam initializeContext(); JerseyResourceDelegateContextKey sessionIdKey = JerseyResourceDelegateContextKey.valueOf(sessionIdKeyName, String.class); + + if (sessionId == null || sessionId.isEmpty()) { + return ResourcesUtil.createBadRequestResponse(LOG, "Session id is required. Please refer the header " + + QueryResource.tajoSessionIdHeaderName); + } + context.put(sessionIdKey, sessionId); response = JerseyResourceDelegateUtil.runJerseyResourceDelegate( @@ -256,6 +262,12 @@ public Response getQueryResultSet(@HeaderParam(QueryResource.tajoSessionIdHeader initializeContext(); JerseyResourceDelegateContextKey sessionIdKey = JerseyResourceDelegateContextKey.valueOf(sessionIdKeyName, String.class); + + if (sessionId == null || sessionId.isEmpty()) { + return ResourcesUtil.createBadRequestResponse(LOG, "Session id is required. Please refer the header " + + QueryResource.tajoSessionIdHeaderName); + } + context.put(sessionIdKey, sessionId); JerseyResourceDelegateContextKey cacheIdKey = JerseyResourceDelegateContextKey.valueOf(cacheIdKeyName, Long.class); diff --git a/tajo-core/src/main/java/org/apache/tajo/ws/rs/resources/SessionsResource.java b/tajo-core/src/main/java/org/apache/tajo/ws/rs/resources/SessionsResource.java index f679f7ad4d..b8655e90a5 100644 --- a/tajo-core/src/main/java/org/apache/tajo/ws/rs/resources/SessionsResource.java +++ b/tajo-core/src/main/java/org/apache/tajo/ws/rs/resources/SessionsResource.java @@ -177,6 +177,12 @@ public Response removeSession(@PathParam("session-id") String sessionId) { initializeContext(); JerseyResourceDelegateContextKey sessionIdKey = JerseyResourceDelegateContextKey.valueOf(sessionIdKeyName, String.class); + + if (sessionId == null || sessionId.isEmpty()) { + return ResourcesUtil.createBadRequestResponse(LOG, "Session id is required. Please refer the header " + + QueryResource.tajoSessionIdHeaderName); + } + context.put(sessionIdKey, sessionId); response = JerseyResourceDelegateUtil.runJerseyResourceDelegate( @@ -239,6 +245,12 @@ public Response getAllSessionVariables(@PathParam("session-id") String sessionId initializeContext(); JerseyResourceDelegateContextKey sessionIdKey = JerseyResourceDelegateContextKey.valueOf(sessionIdKeyName, String.class); + + if (sessionId == null || sessionId.isEmpty()) { + return ResourcesUtil.createBadRequestResponse(LOG, "Session id is required. Please refer the header " + + QueryResource.tajoSessionIdHeaderName); + } + context.put(sessionIdKey, sessionId); response = JerseyResourceDelegateUtil.runJerseyResourceDelegate( @@ -308,6 +320,12 @@ public Response updateSessionVariables(@PathParam("session-id") String sessionId initializeContext(); JerseyResourceDelegateContextKey sessionIdKey = JerseyResourceDelegateContextKey.valueOf(sessionIdKeyName, String.class); + + if (sessionId == null || sessionId.isEmpty()) { + return ResourcesUtil.createBadRequestResponse(LOG, "Session id is required. Please refer the header " + + QueryResource.tajoSessionIdHeaderName); + } + context.put(sessionIdKey, sessionId); JerseyResourceDelegateContextKey variablesMapKey = JerseyResourceDelegateContextKey.valueOf(variablesKeyName, Map.class);