Updated Branches: refs/heads/develop 54670f4c9 -> 3bd9c85f1
should fix MARMOTTA-405 (SSL resources in LDClient) Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/3bd9c85f Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/3bd9c85f Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/3bd9c85f Branch: refs/heads/develop Commit: 3bd9c85f18831d4d570b5f29deeabf0674f26420 Parents: 54670f4 Author: Sebastian Schaffert <[email protected]> Authored: Fri Dec 13 15:02:59 2013 +0100 Committer: Sebastian Schaffert <[email protected]> Committed: Fri Dec 13 15:02:59 2013 +0100 ---------------------------------------------------------------------- .../ldclient/services/ldclient/LDClient.java | 38 +++++++++++--------- .../endpoint/FacebookGraphEndpoint.java | 2 +- .../test/facebook/FacebookProviderTest.java | 9 ++--- .../ldclient/test/facebook/movie.sparql | 2 +- .../endpoint/rdf/LinkedDataEndpoint.java | 2 +- .../test/rdf/TestLinkedDataProvider.java | 30 +++++++++++----- 6 files changed, 48 insertions(+), 35 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/marmotta/blob/3bd9c85f/libraries/ldclient/ldclient-core/src/main/java/org/apache/marmotta/ldclient/services/ldclient/LDClient.java ---------------------------------------------------------------------- diff --git a/libraries/ldclient/ldclient-core/src/main/java/org/apache/marmotta/ldclient/services/ldclient/LDClient.java b/libraries/ldclient/ldclient-core/src/main/java/org/apache/marmotta/ldclient/services/ldclient/LDClient.java index 13f2421..e57f10e 100644 --- a/libraries/ldclient/ldclient-core/src/main/java/org/apache/marmotta/ldclient/services/ldclient/LDClient.java +++ b/libraries/ldclient/ldclient-core/src/main/java/org/apache/marmotta/ldclient/services/ldclient/LDClient.java @@ -17,11 +17,7 @@ */ package org.apache.marmotta.ldclient.services.ldclient; -import org.apache.http.Header; -import org.apache.http.HttpRequest; -import org.apache.http.HttpResponse; -import org.apache.http.HttpStatus; -import org.apache.http.ProtocolException; +import org.apache.http.*; import org.apache.http.client.HttpClient; import org.apache.http.client.HttpRequestRetryHandler; import org.apache.http.client.methods.HttpGet; @@ -31,6 +27,7 @@ import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; +import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.DefaultRedirectStrategy; import org.apache.http.impl.conn.PoolingClientConnectionManager; @@ -48,13 +45,11 @@ import org.apache.marmotta.ldclient.model.ClientResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.net.ssl.SSLContext; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.ServiceLoader; -import java.util.Set; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.util.*; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; @@ -128,8 +123,19 @@ public final class LDClient implements LDClientService { httpParams.setIntParameter(ClientPNames.MAX_REDIRECTS,3); SchemeRegistry schemeRegistry = new SchemeRegistry(); - schemeRegistry.register( - new Scheme("http", 80, PlainSocketFactory.getSocketFactory())); + schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory())); + + try { + SSLContext sslcontext = SSLContext.getInstance("TLS"); + sslcontext.init(null, null, null); + SSLSocketFactory sf = new SSLSocketFactory(sslcontext, SSLSocketFactory.STRICT_HOSTNAME_VERIFIER); + + schemeRegistry.register(new Scheme("https", 443, sf)); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (KeyManagementException e) { + e.printStackTrace(); + } PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry); cm.setMaxTotal(20); @@ -148,11 +154,11 @@ public final class LDClient implements LDClientService { log.info("data provider: {}",provider.getName()); } } - + @Override public boolean ping(String resource) { //crappy implementation only for http - if (resource.startsWith("http://")) { + if (resource.startsWith("http://") || resource.startsWith("https://")) { try { return (200 == client.execute(new HttpHead(resource)).getStatusLine().getStatusCode()); } catch (Exception e) { @@ -406,5 +412,5 @@ public final class LDClient implements LDClientService { } } - + } http://git-wip-us.apache.org/repos/asf/marmotta/blob/3bd9c85f/libraries/ldclient/ldclient-provider-facebook/src/main/java/org/apache/marmotta/ldclient/endpoint/FacebookGraphEndpoint.java ---------------------------------------------------------------------- diff --git a/libraries/ldclient/ldclient-provider-facebook/src/main/java/org/apache/marmotta/ldclient/endpoint/FacebookGraphEndpoint.java b/libraries/ldclient/ldclient-provider-facebook/src/main/java/org/apache/marmotta/ldclient/endpoint/FacebookGraphEndpoint.java index 134d8a8..d6a64cb 100644 --- a/libraries/ldclient/ldclient-provider-facebook/src/main/java/org/apache/marmotta/ldclient/endpoint/FacebookGraphEndpoint.java +++ b/libraries/ldclient/ldclient-provider-facebook/src/main/java/org/apache/marmotta/ldclient/endpoint/FacebookGraphEndpoint.java @@ -30,7 +30,7 @@ public class FacebookGraphEndpoint extends Endpoint { public FacebookGraphEndpoint() { - super("Facebook Graph API Provider", FacebookGraphProvider.PROVIDER_NAME, "^http://([^.]+)\\.facebook\\.com/.*", null, 86400L); + super("Facebook Graph API Provider", FacebookGraphProvider.PROVIDER_NAME, "^http(s?)://([^.]+)\\.facebook\\.com/.*", null, 86400L); setPriority(PRIORITY_HIGH); addContentType(new ContentType("application", "json")); http://git-wip-us.apache.org/repos/asf/marmotta/blob/3bd9c85f/libraries/ldclient/ldclient-provider-facebook/src/test/java/org/apache/marmotta/ldclient/test/facebook/FacebookProviderTest.java ---------------------------------------------------------------------- diff --git a/libraries/ldclient/ldclient-provider-facebook/src/test/java/org/apache/marmotta/ldclient/test/facebook/FacebookProviderTest.java b/libraries/ldclient/ldclient-provider-facebook/src/test/java/org/apache/marmotta/ldclient/test/facebook/FacebookProviderTest.java index 262dd70..350c04b 100644 --- a/libraries/ldclient/ldclient-provider-facebook/src/test/java/org/apache/marmotta/ldclient/test/facebook/FacebookProviderTest.java +++ b/libraries/ldclient/ldclient-provider-facebook/src/test/java/org/apache/marmotta/ldclient/test/facebook/FacebookProviderTest.java @@ -22,12 +22,7 @@ import org.apache.marmotta.ldclient.api.ldclient.LDClientService; import org.apache.marmotta.ldclient.model.ClientResponse; import org.apache.marmotta.ldclient.services.ldclient.LDClient; import org.apache.marmotta.ldclient.test.helper.TestLDClient; -import org.junit.After; -import org.junit.Assert; -import org.junit.Assume; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; +import org.junit.*; import org.junit.rules.TestWatcher; import org.junit.runner.Description; import org.openrdf.query.BooleanQuery; @@ -79,7 +74,7 @@ public class FacebookProviderTest { @Test public void testMovie() throws Exception { - String uriMovie = "http://graph.facebook.com/160617097307237"; + String uriMovie = "https://graph.facebook.com/160617097307237"; Assume.assumeTrue(ldclient.ping(uriMovie)); http://git-wip-us.apache.org/repos/asf/marmotta/blob/3bd9c85f/libraries/ldclient/ldclient-provider-facebook/src/test/resources/org/apache/marmotta/ldclient/test/facebook/movie.sparql ---------------------------------------------------------------------- diff --git a/libraries/ldclient/ldclient-provider-facebook/src/test/resources/org/apache/marmotta/ldclient/test/facebook/movie.sparql b/libraries/ldclient/ldclient-provider-facebook/src/test/resources/org/apache/marmotta/ldclient/test/facebook/movie.sparql index 5cfc812..000e2cb 100644 --- a/libraries/ldclient/ldclient-provider-facebook/src/test/resources/org/apache/marmotta/ldclient/test/facebook/movie.sparql +++ b/libraries/ldclient/ldclient-provider-facebook/src/test/resources/org/apache/marmotta/ldclient/test/facebook/movie.sparql @@ -20,7 +20,7 @@ PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX dct: <http://purl.org/dc/terms/> PREFIX schema: <http://schema.org/> ASK { - <http://graph.facebook.com/160617097307237> dct:title "The Hobbit"@en ; + <https://graph.facebook.com/160617097307237> dct:title "The Hobbit"@en ; rdf:type schema:Movie ; schema:genre "Fantasy Adventure" . } http://git-wip-us.apache.org/repos/asf/marmotta/blob/3bd9c85f/libraries/ldclient/ldclient-provider-rdf/src/main/java/org/apache/marmotta/ldclient/endpoint/rdf/LinkedDataEndpoint.java ---------------------------------------------------------------------- diff --git a/libraries/ldclient/ldclient-provider-rdf/src/main/java/org/apache/marmotta/ldclient/endpoint/rdf/LinkedDataEndpoint.java b/libraries/ldclient/ldclient-provider-rdf/src/main/java/org/apache/marmotta/ldclient/endpoint/rdf/LinkedDataEndpoint.java index 05960a7..454c282 100644 --- a/libraries/ldclient/ldclient-provider-rdf/src/main/java/org/apache/marmotta/ldclient/endpoint/rdf/LinkedDataEndpoint.java +++ b/libraries/ldclient/ldclient-provider-rdf/src/main/java/org/apache/marmotta/ldclient/endpoint/rdf/LinkedDataEndpoint.java @@ -29,7 +29,7 @@ import org.apache.marmotta.ldclient.api.endpoint.Endpoint; public class LinkedDataEndpoint extends Endpoint { public LinkedDataEndpoint() { - super("Linked Data", "Linked Data", "http://.*", null, 86400L); + super("Linked Data", "Linked Data", "http(s?)://.*", null, 86400L); setPriority(PRIORITY_LOW); addContentType(new ContentType("application", "rdf+xml", 0.8)); addContentType(new ContentType("text", "turtle", 1.0)); http://git-wip-us.apache.org/repos/asf/marmotta/blob/3bd9c85f/libraries/ldclient/ldclient-provider-rdf/src/test/java/org/apache/marmotta/ldclient/test/rdf/TestLinkedDataProvider.java ---------------------------------------------------------------------- diff --git a/libraries/ldclient/ldclient-provider-rdf/src/test/java/org/apache/marmotta/ldclient/test/rdf/TestLinkedDataProvider.java b/libraries/ldclient/ldclient-provider-rdf/src/test/java/org/apache/marmotta/ldclient/test/rdf/TestLinkedDataProvider.java index c1bfa8a..f6fa7cf 100644 --- a/libraries/ldclient/ldclient-provider-rdf/src/test/java/org/apache/marmotta/ldclient/test/rdf/TestLinkedDataProvider.java +++ b/libraries/ldclient/ldclient-provider-rdf/src/test/java/org/apache/marmotta/ldclient/test/rdf/TestLinkedDataProvider.java @@ -17,24 +17,19 @@ */ package org.apache.marmotta.ldclient.test.rdf; -import java.io.InputStream; - import org.apache.commons.io.IOUtils; import org.apache.marmotta.ldclient.api.ldclient.LDClientService; import org.apache.marmotta.ldclient.exception.DataRetrievalException; import org.apache.marmotta.ldclient.model.ClientResponse; import org.apache.marmotta.ldclient.services.ldclient.LDClient; import org.apache.marmotta.ldclient.test.helper.TestLDClient; -import org.junit.After; -import org.junit.Assert; -import org.junit.Assume; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.*; import org.openrdf.query.BooleanQuery; import org.openrdf.query.QueryLanguage; import org.openrdf.repository.RepositoryConnection; +import java.io.InputStream; + /** * Test if the LinkedDataProvider is working properly. * @@ -48,7 +43,8 @@ public class TestLinkedDataProvider { private static final String MARMOTTA = "http://rdfohloh.wikier.org/project/marmotta"; private static final String WIKIER = "http://www.wikier.org/foaf#wikier"; private static final String EXAMPLE = "http://example.org/foo"; - + private static final String SSL = "https://example.org/foo"; + private LDClientService ldclient; @Before @@ -178,4 +174,20 @@ public class TestLinkedDataProvider { conn.close(); } + /** + * This method tests accessing a SSL resource - should throw a DataRetrievalException but otherwise work + * + * @throws Exception + * + */ + @Test(expected=DataRetrievalException.class) + public void testSSL() throws Exception { + ClientResponse response = ldclient.retrieveResource(SSL); + RepositoryConnection conn = response.getTriples().getConnection(); + conn.begin(); + Assert.assertTrue(conn.size() == 0); + conn.commit(); + conn.close(); + } + }
