Repository: jena
Updated Branches:
  refs/heads/master 1fd19edf4 -> be13685c1


Cleaning up and shortening test code for HTTP operations


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/1911547a
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/1911547a
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/1911547a

Branch: refs/heads/master
Commit: 1911547a0ad5ac132362298f28994edc88968699
Parents: b2c4e61
Author: ajs6f <aj...@virginia.edu>
Authored: Wed Jul 27 14:29:52 2016 -0400
Committer: ajs6f <aj...@virginia.edu>
Committed: Thu Oct 13 16:07:46 2016 -0400

----------------------------------------------------------------------
 .../java/org/apache/jena/riot/web/HttpOp.java   | 19 +----
 .../apache/jena/sparql/engine/http/Params.java  | 49 +++----------
 .../java/org/apache/jena/fuseki/FusekiTest.java | 13 +---
 .../java/org/apache/jena/fuseki/ServerTest.java |  5 +-
 .../apache/jena/fuseki/TestHttpOperations.java  | 28 ++-----
 .../org/apache/jena/fuseki/http/TestHttpOp.java | 77 ++++++--------------
 6 files changed, 45 insertions(+), 146 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/1911547a/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java 
b/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java
index 9f93160..3bd97c7 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java
@@ -38,7 +38,6 @@ import org.apache.http.impl.client.HttpClientBuilder ;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.impl.client.cache.CachingHttpClientBuilder;
 import org.apache.http.message.BasicNameValuePair ;
-import org.apache.http.protocol.BasicHttpContext ;
 import org.apache.http.protocol.HttpContext ;
 import org.apache.http.util.EntityUtils ;
 import org.apache.jena.atlas.io.IO ;
@@ -1026,7 +1025,6 @@ public class HttpOp {
     // ---- Perform the operation!
     private static void exec(String url, HttpUriRequest request, String 
acceptHeader, HttpResponseHandler handler, HttpClient httpClient, HttpContext 
httpContext) {
         httpClient = ensureClient(httpClient);
-        httpContext = ensureContext(httpContext);
         try {
             if (handler == null)
                 // This cleans up.
@@ -1063,10 +1061,7 @@ public class HttpOp {
     }
 
        public static String readPayload(HttpEntity entity) throws IOException {
-               if (entity == null) {
-                       return null;
-               }
-               return EntityUtils.toString(entity, 
ContentType.getOrDefault(entity).getCharset());
+        return entity == null ? null : EntityUtils.toString(entity, 
ContentType.getOrDefault(entity).getCharset());
        }
 
     /**
@@ -1091,18 +1086,6 @@ public class HttpOp {
     }
 
     /**
-     * Ensures that a context is non-null, uses a new {@link BasicHttpContext}
-     * if none is provided
-     * 
-     * @param context
-     *            HTTP Context
-     * @return Non-null HTTP Context
-     */
-    private static HttpContext ensureContext(HttpContext context) {
-        return context != null ? context : new BasicHttpContext();
-    }
-
-    /**
      * Applies the configured User-Agent string to the HTTP request
      * 
      * @param message

http://git-wip-us.apache.org/repos/asf/jena/blob/1911547a/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/Params.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/Params.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/Params.java
index ab25b9a..dce789a 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/Params.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/Params.java
@@ -18,9 +18,10 @@
 
 package org.apache.jena.sparql.engine.http;
 
+import static java.util.stream.Collectors.toList;
+
 import java.nio.charset.StandardCharsets ;
 import java.util.* ;
-
 import org.apache.http.NameValuePair ;
 import org.apache.http.client.utils.URLEncodedUtils ;
 
@@ -60,19 +61,14 @@ public class Params
     /** Add a parameter.
      * @param name  Name of the parameter
      * @param value Value - May be null to indicate none - the name still goes.
+     * @return this Params for continued operation
      */
-    
-    public void addParam(String name, String value)
+    public Params addParam(String name, String value)
     {
         Pair p = new Pair(name, value) ;
         paramList.add(p) ;
-        List<String> x = params.get(name) ;
-        if ( x == null )
-        {
-            x = new ArrayList<>() ;
-            params.put(name, x) ;
-        }
-        x.add(value) ;
+        params.computeIfAbsent(name, n -> new ArrayList<>()).add(value);
+        return this;
     }
 
     /** Valueless parameter */
@@ -98,12 +94,7 @@ public class Params
     public void remove(String name)
     {
         // Absolute record
-        for ( Iterator<Pair> iter = paramList.iterator() ; iter.hasNext() ; )
-        {
-            Pair p = iter.next() ;
-            if ( p.getName().equals(name) )
-                iter.remove() ;
-        }
+        paramList.removeIf(p -> p.getName().equals(name));
         // Map
         params.remove(name) ;
     }
@@ -119,15 +110,7 @@ public class Params
     /** Get the names of parameters - one ocurrence */ 
     public List<String> names()
     {
-        List<String> names = new ArrayList<>() ;
-        for (Pair pair : paramList)
-        {
-            String s = pair.getName() ;
-            if ( names.contains(s) )
-                continue ;
-            names.add(s) ;
-        }
-        return names ; 
+        return 
paramList.stream().map(Pair::getName).distinct().collect(toList()); 
     }
 
     /** Query string, without leading "?" */ 
@@ -145,19 +128,11 @@ public class Params
         MultiValueException(String msg) { super(msg) ; }
     }
         
-    public static class Pair implements NameValuePair
-    { 
-        String name ;
-        String value ;
-
-        Pair(String name, String value) { setName(name) ; setValue(value) ; }
+    public static class Pair extends org.apache.jena.atlas.lib.Pair<String, 
String> implements NameValuePair { 
+        public Pair(String name, String value) { super(name, value); }    
         @Override
-        public String getName()  { return name ;  }
+        public String getName()  { return getLeft() ;  }
         @Override
-        public String getValue() { return value ; }
-
-        void setName(String name)   { this.name = name ; }
-        void setValue(String value) { this.value = value ; }
-        
+        public String getValue() { return getRight() ; }     
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/1911547a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/FusekiTest.java
----------------------------------------------------------------------
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/FusekiTest.java
 
b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/FusekiTest.java
index d963296..3cd38da 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/FusekiTest.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/FusekiTest.java
@@ -26,12 +26,11 @@ import org.apache.http.StatusLine ;
 import org.apache.http.client.methods.HttpOptions ;
 import org.apache.http.client.methods.HttpUriRequest ;
 import org.apache.http.impl.client.CloseableHttpClient ;
-import org.apache.http.impl.client.HttpClientBuilder ;
+import org.apache.http.impl.client.HttpClients;
 import org.apache.http.protocol.HttpContext ;
 import org.apache.http.util.EntityUtils ;
 import org.apache.jena.atlas.web.HttpException ;
 import org.apache.jena.riot.web.HttpNames ;
-import org.apache.jena.riot.web.HttpResponseHandler ;
 import org.apache.jena.riot.web.HttpResponseLib ;
 import org.apache.jena.web.HttpSC ;
 import org.junit.Assert ;
@@ -42,7 +41,6 @@ public class FusekiTest {
     public static void assertStringList(String str, String... expected) {
         str = str.replace(" ", "") ;
         String[] x = str.split(",") ;
-        int count = 0 ;
         for ( String ex : expected ) {
             Assert.assertTrue("Got: "+str+" - Does not contain "+ex, 
containsStr(ex, x)) ;
         }
@@ -63,9 +61,7 @@ public class FusekiTest {
     /** Do an HTTP Options. */
     public static String execOptions(String url) {
         // Prepare and execute
-        HttpResponseHandler handler = HttpResponseLib.nullResponse ;
-
-        try ( CloseableHttpClient httpClient = 
HttpClientBuilder.create().build() ) {
+        try ( CloseableHttpClient httpClient = HttpClients.createDefault() ) {
             HttpUriRequest request = new HttpOptions(url) ;
             HttpResponse response = httpClient.execute(request, 
(HttpContext)null);
 
@@ -77,10 +73,9 @@ public class FusekiTest {
                 String contentPayload = "" ;
                 if ( response.getEntity() != null )
                     contentPayload = 
EntityUtils.toString(response.getEntity()) ;
-                throw new HttpException(statusLine.getStatusCode(), 
statusLine.getReasonPhrase(), contentPayload);
+                throw new HttpException(statusCode, 
statusLine.getReasonPhrase(), contentPayload);
             }
-            if (handler != null)
-                handler.handle(url, response);
+            HttpResponseLib.nullResponse.handle(url, response);
             return response.getFirstHeader(HttpNames.hAllow).getValue() ;
         } catch (IOException ex) { 
             throw new HttpException(ex);

http://git-wip-us.apache.org/repos/asf/jena/blob/1911547a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerTest.java
----------------------------------------------------------------------
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerTest.java
 
b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerTest.java
index 39591f0..d36f104 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerTest.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerTest.java
@@ -167,13 +167,10 @@ public class ServerTest {
     private static int choosePort(int... ports) {
         for (int port : ports) {
             try {
-                @SuppressWarnings("resource")
                 ServerSocket s = new ServerSocket(port) ;
                 s.close();
                 return s.getLocalPort() ; // OK to call after close.
-            } catch (IOException ex) { 
-                continue;
-            }
+            } catch (IOException ex) { }
         }
         throw new FusekiException("Failed to find a port in 
:"+Arrays.asList(ports)) ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/1911547a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOperations.java
----------------------------------------------------------------------
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOperations.java
 
b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOperations.java
index 5042576..2f5b751 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOperations.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOperations.java
@@ -21,29 +21,17 @@ package org.apache.jena.fuseki ;
 import static org.apache.jena.fuseki.ServerTest.* ;
 import static org.apache.jena.fuseki.ServerTest.serviceUpdate ;
 
-import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.atlas.web.HttpException ;
 import org.apache.jena.atlas.web.TypedInputStream ;
 import org.apache.jena.riot.WebContent ;
 import org.apache.jena.riot.web.HttpOp ;
 import org.apache.jena.sparql.engine.http.Params ;
 import org.apache.jena.sparql.util.Convert ;
-import org.junit.AfterClass ;
 import org.junit.Assert ;
-import org.junit.BeforeClass ;
 import org.junit.Test ;
 
 /** Operation by HTTP - test dispatch - lower level than TestSPARQLProtocol */
-public class TestHttpOperations extends BaseTest {
-    @BeforeClass
-    public static void beforeClass() {
-        ServerTest.allocServer() ;
-    }
-
-    @AfterClass
-    public static void afterClass() {
-        ServerTest.freeServer() ;
-    }
+public class TestHttpOperations extends AbstractFusekiTest {
     
     // XXX and directly on dataset
     
@@ -75,10 +63,8 @@ public class TestHttpOperations extends BaseTest {
 
     @Test 
     public void query_by_form_1() {
-        String qs = Convert.encWWWForm("ASK{}") ;
         String u = serviceQuery ;
-        Params params = new Params();
-        params.addParam("query", "ASK{}") ;
+        Params params = new Params().addParam("query", "ASK{}") ;
         try (TypedInputStream in = HttpOp.execHttpPostFormStream(u, params, 
"*") ) { 
             Assert.assertNotNull(in);
         }
@@ -87,8 +73,7 @@ public class TestHttpOperations extends BaseTest {
     @Test(expected=HttpException.class) 
     public void query_by_form_2() {
         String u = serviceQuery ;
-        Params params = new Params();
-        params.addParam("foobar", "ASK{}") ;    // Wrong.
+        Params params = new Params().addParam("foobar", "ASK{}") ;    // Wrong.
         try (TypedInputStream in = HttpOp.execHttpPostFormStream(u, params, 
"*") ) { 
             Assert.assertNotNull(in);
         }
@@ -113,8 +98,7 @@ public class TestHttpOperations extends BaseTest {
     @Test
     public void update_by_form_1() {
         String u = serviceUpdate ;
-        Params params = new Params();
-        params.addParam("update", "INSERT DATA{}") ;
+        Params params = new Params().addParam("update", "INSERT DATA{}") ;
         try (TypedInputStream in = HttpOp.execHttpPostFormStream(u, params, 
"*") ) { 
             Assert.assertNotNull(in);
         }
@@ -123,8 +107,7 @@ public class TestHttpOperations extends BaseTest {
     @Test(expected=HttpException.class)
     public void update_by_form_2() {
         String u = serviceUpdate ;
-        Params params = new Params();
-        params.addParam("query", "INSERT DATA{}") ;  // Wrong paramater
+        Params params = new Params().addParam("query", "INSERT DATA{}") ;  // 
Wrong paramater
         try (TypedInputStream in = HttpOp.execHttpPostFormStream(u, params, 
"*") ) { 
             Assert.assertNotNull(in);
         }
@@ -134,7 +117,6 @@ public class TestHttpOperations extends BaseTest {
     
     @Test 
     public void ds_query_by_get_1() {
-        String qs = Convert.encWWWForm("ASK{}") ;
         String u = urlDataset ;
         try (TypedInputStream in = HttpOp.execHttpGet(u)) {
             Assert.assertNotNull(in);

http://git-wip-us.apache.org/repos/asf/jena/blob/1911547a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java
----------------------------------------------------------------------
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java
 
b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java
index 488c517..062f9ef 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java
@@ -18,11 +18,12 @@
 
 package org.apache.jena.fuseki.http;
 
+import static org.apache.jena.fuseki.FusekiTest.exec404;
+import static org.apache.jena.fuseki.FusekiTest.execWithHttpException;
+
 import org.apache.jena.atlas.lib.IRILib ;
-import org.apache.jena.atlas.web.HttpException ;
 import org.apache.jena.atlas.web.TypedInputStream ;
 import org.apache.jena.fuseki.AbstractFusekiTest ;
-import org.apache.jena.fuseki.FusekiTest ;
 import org.apache.jena.fuseki.ServerTest ;
 import org.apache.jena.riot.WebContent ;
 import org.apache.jena.riot.web.HttpOp ;
@@ -46,18 +47,16 @@ public class TestHttpOp extends AbstractFusekiTest {
     // Basic operations
     
     @Test public void httpGet_01() {
-        try ( TypedInputStream in = HttpOp.execHttpGet(pingURL) ) {}
+        assertNotNull(HttpOp.execHttpGetString(pingURL));
     }
     
     @Test
     public void httpGet_02() {
-        FusekiTest.exec404(() -> {
-            try (TypedInputStream in = HttpOp.execHttpGet(ServerTest.urlRoot + 
"does-not-exist")) {}
-        });
+        exec404(() -> HttpOp.execHttpGet(ServerTest.urlRoot + 
"does-not-exist"));
     }
 
     @Test public void httpGet_03() {
-        String x = HttpOp.execHttpGetString(pingURL) ;
+        assertNotNull(HttpOp.execHttpGetString(pingURL));
     }   
     
     @Test public void httpGet_04() {
@@ -66,76 +65,49 @@ public class TestHttpOp extends AbstractFusekiTest {
     }
     
     @Test public void httpGet_05() {
-        try ( TypedInputStream in = HttpOp.execHttpGet(simpleQuery) ) {}
+        assertNotNull(HttpOp.execHttpGetString(simpleQuery));
     }
     
     // SPARQL Query
     
     @Test public void queryGet_01() {
-        try ( TypedInputStream in = HttpOp.execHttpGet(simpleQuery) ) {}
+        assertNotNull(HttpOp.execHttpGetString(simpleQuery));
     }
 
-    @Test(expected=HttpException.class)
     public void queryGet_02() {
         // No query.
-        try ( TypedInputStream in = HttpOp.execHttpGet(queryURL+"?query=") ) {}
-        catch (HttpException ex) {
-            assertEquals(ex.getResponseCode(), HttpSC.BAD_REQUEST_400) ;
-            throw ex ; 
-        }
+        execWithHttpException(HttpSC.BAD_REQUEST_400, () -> 
HttpOp.execHttpGetString(queryURL + "?query="));
     }
 
-    @Test(expected=HttpException.class)
     public void httpPost_01() {
-        try {
-            HttpOp.execHttpPost(queryURL, "ASK{}", "text/plain") ;
-        } catch (HttpException ex) {
-            assertEquals(ex.getResponseCode(), 
HttpSC.UNSUPPORTED_MEDIA_TYPE_415) ;
-            throw ex ;
-        }
+        execWithHttpException(HttpSC.UNSUPPORTED_MEDIA_TYPE_415,
+                () -> HttpOp.execHttpPost(queryURL, "ASK{}", "text/plain"));
     }
     
-    @Test(expected=HttpException.class)
     public void httpPost_02() {
-        try {
-            HttpOp.execHttpPost(queryURL, "ASK{}", 
WebContent.contentTypeSPARQLQuery) ;
-        } catch (HttpException ex) {
-            assertEquals(ex.getResponseCode(), 
HttpSC.UNSUPPORTED_MEDIA_TYPE_415) ;
-            throw ex ;
-        }
+        execWithHttpException(HttpSC.UNSUPPORTED_MEDIA_TYPE_415,
+                () -> HttpOp.execHttpPost(queryURL, "ASK{}", 
WebContent.contentTypeSPARQLQuery));
     }
     
-    @Test(expected=HttpException.class)
     public void httpPost_03() {
-        try {
-            HttpOp.execHttpPost(queryURL, "ASK{}", 
WebContent.contentTypeOctets) ;
-        } catch (HttpException ex) {
-            assertEquals(ex.getResponseCode(), 
HttpSC.UNSUPPORTED_MEDIA_TYPE_415) ;
-            throw ex ;
-        }
+        execWithHttpException(HttpSC.UNSUPPORTED_MEDIA_TYPE_415,
+                () -> HttpOp.execHttpPost(queryURL, "ASK{}", 
WebContent.contentTypeOctets));
     }
         
     @Test public void httpPost_04() {
-        Params params = new Params() ;
-        params.addParam("query", "ASK{}") ;
+        Params params = new Params().addParam("query", "ASK{}") ;
         try ( TypedInputStream in = HttpOp.execHttpPostFormStream(queryURL, 
params, WebContent.contentTypeResultsJSON) ) {}
     }
     
-    @Test(expected=HttpException.class)
     public void httpPost_05() {
-        Params params = new Params() ;
-        params.addParam("query", "ASK{}") ;
+        Params params = new Params().addParam("query", "ASK{}") ;
         // Query to Update
-        try ( TypedInputStream in = HttpOp.execHttpPostFormStream(updateURL, 
params, WebContent.contentTypeResultsJSON) ) { }
-        catch (HttpException ex) {
-            assertEquals(ex.getResponseCode(), HttpSC.BAD_REQUEST_400) ;
-            throw ex ;
-        }
+        execWithHttpException(HttpSC.BAD_REQUEST_400,
+                () -> HttpOp.execHttpPostFormStream(updateURL, params, 
WebContent.contentTypeResultsJSON));
     }
     
     @Test public void httpPost_06() {
-        Params params = new Params() ;
-        params.addParam("request", "CLEAR ALL") ;
+        Params params = new Params().addParam("request", "CLEAR ALL") ;
         HttpOp.execHttpPostForm(updateURL, params) ;
     }
     
@@ -190,18 +162,13 @@ public class TestHttpOp extends AbstractFusekiTest {
         String s3 = HttpOp.execHttpGetString(defaultGraphURL, 
WebContent.contentTypeNTriples) ;
         assertTrue(s3.isEmpty()) ;
         
-        FusekiTest.exec404(()->HttpOp.execHttpDelete(namedGraphURL)) ;
+        exec404(()->HttpOp.execHttpDelete(namedGraphURL)) ;
     }
 
     // Extended GSP - no ?default, no ?graph acts on the datasets as a whole.  
    
     @Test public void gsp_10() {
-        try {
-            HttpOp.execHttpDelete(gspServiceURL) ;
-            fail("Expected 405") ;
-        } catch (HttpException ex) {
-            assertEquals(ex.getResponseCode(), HttpSC.METHOD_NOT_ALLOWED_405) ;
-        }
+        execWithHttpException(HttpSC.METHOD_NOT_ALLOWED_405, () -> 
HttpOp.execHttpDelete(gspServiceURL));
     }
         
     @Test public void gsp_11() {

Reply via email to