Updated Branches: refs/heads/develop 717792188 -> 6db1be5bb
fixed access problem in marmotta-ldcache when ldcache is disabled Project: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/commit/6db1be5b Tree: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/tree/6db1be5b Diff: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/diff/6db1be5b Branch: refs/heads/develop Commit: 6db1be5bb257e6a4095088abf21eb79d64a22ace Parents: 7177921 Author: Sebastian Schaffert <[email protected]> Authored: Thu May 16 17:09:12 2013 +0200 Committer: Sebastian Schaffert <[email protected]> Committed: Thu May 16 17:09:12 2013 +0200 ---------------------------------------------------------------------- .../model/filter/MarmottaNotCachedFilter.java | 3 + .../services/ldcache/LDCacheSailProvider.java | 18 ++- .../webservices/LinkedDataCachingWebService.java | 161 +++++++++------ 3 files changed, 111 insertions(+), 71 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/6db1be5b/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/model/filter/MarmottaNotCachedFilter.java ---------------------------------------------------------------------- diff --git a/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/model/filter/MarmottaNotCachedFilter.java b/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/model/filter/MarmottaNotCachedFilter.java index d39fa4c..072da16 100644 --- a/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/model/filter/MarmottaNotCachedFilter.java +++ b/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/model/filter/MarmottaNotCachedFilter.java @@ -61,6 +61,9 @@ public class MarmottaNotCachedFilter implements ResourceFilter { if(resource instanceof BNode) { return true; } + if(!cacheSailProvider.isEnabled()) { + return true; + } URI uri = (URI)resource; http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/6db1be5b/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/services/ldcache/LDCacheSailProvider.java ---------------------------------------------------------------------- diff --git a/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/services/ldcache/LDCacheSailProvider.java b/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/services/ldcache/LDCacheSailProvider.java index f2a08db..bf438df 100644 --- a/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/services/ldcache/LDCacheSailProvider.java +++ b/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/services/ldcache/LDCacheSailProvider.java @@ -64,7 +64,7 @@ public class LDCacheSailProvider implements NotifyingSailProvider { @Inject private SesameService sesameService; - + @Inject private HttpClientService httpClientService; @@ -96,6 +96,10 @@ public class LDCacheSailProvider implements NotifyingSailProvider { public void configurationChanged(@Observes ConfigurationChangedEvent e) { if(e.containsChangedKey(LDCACHE_ENABLED)) { sesameService.restart(); + + if(!isEnabled()) { + sail = null; + } } } @@ -149,7 +153,11 @@ public class LDCacheSailProvider implements NotifyingSailProvider { * @return */ public LDClientService getLDClient() { - return sail.getLDCache().getLDClient(); + if(sail != null) { + return sail.getLDCache().getLDClient(); + } else { + return null; + } } /** @@ -157,7 +165,11 @@ public class LDCacheSailProvider implements NotifyingSailProvider { * @return */ public LDCache getLDCache() { - return sail.getLDCache(); + if(sail != null) { + return sail.getLDCache(); + } else { + return null; + } } } http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/6db1be5b/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/webservices/LinkedDataCachingWebService.java ---------------------------------------------------------------------- diff --git a/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/webservices/LinkedDataCachingWebService.java b/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/webservices/LinkedDataCachingWebService.java index c07e797..d245612 100644 --- a/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/webservices/LinkedDataCachingWebService.java +++ b/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/webservices/LinkedDataCachingWebService.java @@ -78,116 +78,137 @@ public class LinkedDataCachingWebService { @GET @Path("/live") public Response retrieveLive(@QueryParam("uri") String uri) { + if(cacheSailProvider.isEnabled()) { + try { + ClientResponse response = cacheSailProvider.getLDClient().retrieveResource(uri); - try { - ClientResponse response = cacheSailProvider.getLDClient().retrieveResource(uri); - - RepositoryConnection con = response.getTriples().getConnection(); - con.begin(); + RepositoryConnection con = response.getTriples().getConnection(); + con.begin(); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - RDFHandler handler = new RDFXMLPrettyWriter(out); - con.export(handler); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + RDFHandler handler = new RDFXMLPrettyWriter(out); + con.export(handler); - con.commit(); - con.close(); + con.commit(); + con.close(); - return Response.ok().entity( new String(out.toByteArray(), "utf-8")).build(); - } catch (Exception e) { - log.error("exception while retrieving resource",e); - return Response.status(500).entity(e.getMessage()).build(); + return Response.ok().entity( new String(out.toByteArray(), "utf-8")).build(); + } catch (Exception e) { + log.error("exception while retrieving resource",e); + return Response.status(500).entity(e.getMessage()).build(); + } + } else { + return Response.status(Status.SERVICE_UNAVAILABLE).entity("caching is disabled").build(); } } @GET @Path("/cached") public Response retrieveCached(@QueryParam("uri") String uri) { - - URI resource = sesameService.getValueFactory().createURI(uri); + if(cacheSailProvider.isEnabled()) { + URI resource = sesameService.getValueFactory().createURI(uri); - try { - cacheSailProvider.getLDCache().refreshResource(resource, false); + try { + cacheSailProvider.getLDCache().refreshResource(resource, false); - return Response.ok().build(); - } catch (Exception e) { - log.error("exception while retrieving resource",e); - return Response.status(500).entity(e.getMessage()).build(); + return Response.ok().build(); + } catch (Exception e) { + log.error("exception while retrieving resource",e); + return Response.status(500).entity(e.getMessage()).build(); + } + } else { + return Response.status(Status.SERVICE_UNAVAILABLE).entity("caching is disabled").build(); } + } @GET @Path("/refresh") public Response refreshCached(@QueryParam("uri") String uri) { - URI resource = sesameService.getValueFactory().createURI(uri); + if(cacheSailProvider.isEnabled()) { + URI resource = sesameService.getValueFactory().createURI(uri); - try { - cacheSailProvider.getLDCache().refreshResource(resource, true); + try { + cacheSailProvider.getLDCache().refreshResource(resource, true); - return Response.ok().build(); - } catch (Exception e) { - log.error("exception while retrieving resource",e); - return Response.status(500).entity(e.getMessage()).build(); + return Response.ok().build(); + } catch (Exception e) { + log.error("exception while retrieving resource",e); + return Response.status(500).entity(e.getMessage()).build(); + } + } else { + return Response.status(Status.SERVICE_UNAVAILABLE).entity("caching is disabled").build(); } + } @POST @Path("/expire") public Response expireCache(@QueryParam("uri") String uri) { - if (uri != null) { - URI resource = sesameService.getValueFactory().createURI(uri); - cacheSailProvider.getLDCache().expire(resource); + if(cacheSailProvider.isEnabled()) { + if (uri != null) { + URI resource = sesameService.getValueFactory().createURI(uri); + cacheSailProvider.getLDCache().expire(resource); + } else { + cacheSailProvider.getLDCache().expireAll(); + } + + return Response.ok().build(); } else { - cacheSailProvider.getLDCache().expireAll(); + return Response.status(Status.SERVICE_UNAVAILABLE).entity("caching is disabled").build(); } - - return Response.ok().build(); } @POST @Path("/endpoint") public Response registerEndpoint(@QueryParam("name") String name, - @QueryParam("prefix") String prefix, - @QueryParam("endpoint") String endpointUrl, - @QueryParam("kind") String type, - @QueryParam("mimetype") String mimetype, - @QueryParam("expiry") long expiry) { - - if (type == null || !getProviderNames().contains(type.toLowerCase())) { - type = LinkedDataProvider.PROVIDER_NAME; - } + @QueryParam("prefix") String prefix, + @QueryParam("endpoint") String endpointUrl, + @QueryParam("kind") String type, + @QueryParam("mimetype") String mimetype, + @QueryParam("expiry") long expiry) { + + if(cacheSailProvider.isEnabled()) { + if (type == null || !getProviderNames().contains(type.toLowerCase())) { + type = LinkedDataProvider.PROVIDER_NAME; + } - // Check for valid Regex - if (prefix != null) { - try { - if (prefix.startsWith(Endpoint.REGEX_INDICATOR)) { - Pattern.compile(prefix.substring(Endpoint.REGEX_INDICATOR.length())); - } else { - Pattern.compile(prefix); + // Check for valid Regex + if (prefix != null) { + try { + if (prefix.startsWith(Endpoint.REGEX_INDICATOR)) { + Pattern.compile(prefix.substring(Endpoint.REGEX_INDICATOR.length())); + } else { + Pattern.compile(prefix); + } + } catch (PatternSyntaxException pse) { + return Response.status(Status.BAD_REQUEST).entity("Invalid Regex in prefix detected").build(); } - } catch (PatternSyntaxException pse) { - return Response.status(Status.BAD_REQUEST).entity("Invalid Regex in prefix detected").build(); } - } - if (endpointUrl != null) { - endpointUrl = endpointUrl.replace('<', '{').replace('>', '}'); - } else { - endpointUrl = ""; - } - if (mimetype == null) { - mimetype =""; - } - Endpoint endpoint = new Endpoint(name, type, prefix, endpointUrl, mimetype, expiry); - endpointService.addEndpoint(endpoint); + if (endpointUrl != null) { + endpointUrl = endpointUrl.replace('<', '{').replace('>', '}'); + } else { + endpointUrl = ""; + } + if (mimetype == null) { + mimetype =""; + } + Endpoint endpoint = new Endpoint(name, type, prefix, endpointUrl, mimetype, expiry); + endpointService.addEndpoint(endpoint); - cacheSailProvider.updateEndpoints(); + cacheSailProvider.updateEndpoints(); - return Response.ok().build(); + return Response.ok().build(); + } else { + return Response.status(Status.SERVICE_UNAVAILABLE).entity("caching is disabled").build(); + } + } @GET @@ -206,8 +227,12 @@ public class LinkedDataCachingWebService { @GET @Path("/provider/list") @Produces(Namespaces.MIME_TYPE_JSON) - public Set<String> listProviders() { - return getProviderNames(); + public Response listProviders() { + if(cacheSailProvider.isEnabled()) { + return Response.ok(getProviderNames()).build(); + } else { + return Response.status(Status.SERVICE_UNAVAILABLE).entity("caching is disabled").build(); + } }
