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;
}