You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2013/06/12 22:02:59 UTC

git commit: added a filter for ldcache that allows ignoring resources via CDI injection of other filters

Updated Branches:
  refs/heads/develop ba7b8fe7b -> c9287d5fa


added a filter for ldcache that allows ignoring resources via CDI injection of other filters


Project: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/commit/c9287d5f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/tree/c9287d5f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/diff/c9287d5f

Branch: refs/heads/develop
Commit: c9287d5facefef503c3a03855b84d90de5d380ac
Parents: ba7b8fe
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Wed Jun 12 22:02:51 2013 +0200
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Wed Jun 12 22:02:51 2013 +0200

----------------------------------------------------------------------
 .../model/filter/LDCacheIgnoreFilter.java       | 15 +++++++++++++++
 .../services/ldcache/LDCacheSailProvider.java   | 20 +++++++++++++++++++-
 2 files changed, 34 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/c9287d5f/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/model/filter/LDCacheIgnoreFilter.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/model/filter/LDCacheIgnoreFilter.java b/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/model/filter/LDCacheIgnoreFilter.java
new file mode 100644
index 0000000..045017e
--- /dev/null
+++ b/platform/marmotta-ldcache/src/main/java/org/apache/marmotta/platform/ldcache/model/filter/LDCacheIgnoreFilter.java
@@ -0,0 +1,15 @@
+package org.apache.marmotta.platform.ldcache.model.filter;
+
+import org.apache.marmotta.commons.sesame.filter.resource.ResourceFilter;
+
+/**
+ * This filter can be used to define as CDI services additional filters that allow to ignore resources when
+ * caching. The advantage of this approach over "blacklisting" is that filters defined in this way do not even
+ * create a cache entry, they ignore the resource early on.
+ *
+ * The filter should return true in case the resource should be ignored.
+ *
+ * @author Sebastian Schaffert (sschaffert@apache.org)
+ */
+public interface LDCacheIgnoreFilter extends ResourceFilter {
+}

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/c9287d5f/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 af76385..28de597 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
@@ -17,6 +17,11 @@
  */
 package org.apache.marmotta.platform.ldcache.services.ldcache;
 
+import com.google.common.collect.Lists;
+import org.apache.marmotta.commons.sesame.filter.OneOfFilter;
+import org.apache.marmotta.commons.sesame.filter.SesameFilter;
+import org.apache.marmotta.commons.sesame.filter.resource.ResourceFilter;
+import org.apache.marmotta.commons.sesame.filter.statement.StatementFilter;
 import org.apache.marmotta.platform.core.model.filter.MarmottaLocalFilter;
 import org.apache.marmotta.platform.ldcache.api.endpoint.LinkedDataEndpointService;
 import org.apache.marmotta.platform.core.api.config.ConfigurationService;
@@ -31,6 +36,7 @@ import org.apache.marmotta.ldcache.services.LDCache;
 import org.apache.marmotta.ldclient.api.endpoint.Endpoint;
 import org.apache.marmotta.ldclient.api.ldclient.LDClientService;
 import org.apache.marmotta.ldclient.model.ClientConfiguration;
+import org.apache.marmotta.platform.ldcache.model.filter.LDCacheIgnoreFilter;
 import org.openrdf.model.Resource;
 import org.openrdf.sail.NotifyingSail;
 import org.openrdf.sail.helpers.NotifyingSailWrapper;
@@ -39,8 +45,12 @@ import org.slf4j.Logger;
 import javax.annotation.PostConstruct;
 import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.event.Observes;
+import javax.enterprise.inject.Instance;
 import javax.inject.Inject;
+import javax.inject.Named;
+import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -69,6 +79,8 @@ public class LDCacheSailProvider implements NotifyingSailProvider {
     @Inject
     private HttpClientService         httpClientService;
 
+    @Inject
+    private Instance<LDCacheIgnoreFilter> ignoreFilters;
 
     private Set<Endpoint> volatileEndpoints;
 
@@ -155,8 +167,14 @@ public class LDCacheSailProvider implements NotifyingSailProvider {
      */
     @Override
     public NotifyingSailWrapper createSail(NotifyingSail parent) {
+        Set<SesameFilter<Resource>> filters = new HashSet<SesameFilter<Resource>>();
+        filters.add(MarmottaLocalFilter.getInstance());
+        filters.addAll(Lists.newArrayList(ignoreFilters));
+
+        SesameFilter<Resource> cacheFilters = new OneOfFilter<Resource>(filters);
+
         String cache_context = configurationService.getCacheContext();
-        sail = new KiWiLinkedDataSail(parent, new NotFilter<Resource>(MarmottaLocalFilter.getInstance()), cache_context, ldclientConfig);
+        sail = new KiWiLinkedDataSail(parent, new NotFilter<Resource>(cacheFilters), cache_context, ldclientConfig);
         return sail;
     }