Author: reto
Date: Wed Jul 21 14:27:56 2010
New Revision: 966244
URL: http://svn.apache.org/viewvc?rev=966244&view=rev
Log:
CLEREZZA-218: added binding to platform
Removed:
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.platform.enrichment/nbactions.xml
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/nbactions.xml
Modified:
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.platform.enrichment/pom.xml
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.platform.enrichment/src/main/java/org/apache/clerezza/platform/rdf/enrichment/EnrichmentTcProvider.java
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/Enricher.java
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/EnrichmentTriples.java
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/CityWeatherEnricher.java
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/SiblingEnricher.java
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/pom.xml
Modified:
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.platform.enrichment/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.platform.enrichment/pom.xml?rev=966244&r1=966243&r2=966244&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.platform.enrichment/pom.xml
(original)
+++
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.platform.enrichment/pom.xml
Wed Jul 21 14:27:56 2010
@@ -23,6 +23,10 @@
</dependency>
<dependency>
<groupId>org.apache.clerezza</groupId>
+
<artifactId>org.apache.clerezza.platform.graphprovider.content</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.clerezza</groupId>
<artifactId>org.apache.clerezza.rdf.core</artifactId>
</dependency>
<dependency>
Modified:
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.platform.enrichment/src/main/java/org/apache/clerezza/platform/rdf/enrichment/EnrichmentTcProvider.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.platform.enrichment/src/main/java/org/apache/clerezza/platform/rdf/enrichment/EnrichmentTcProvider.java?rev=966244&r1=966243&r2=966244&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.platform.enrichment/src/main/java/org/apache/clerezza/platform/rdf/enrichment/EnrichmentTcProvider.java
(original)
+++
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.platform.enrichment/src/main/java/org/apache/clerezza/platform/rdf/enrichment/EnrichmentTcProvider.java
Wed Jul 21 14:27:56 2010
@@ -18,32 +18,69 @@
*/
package org.apache.clerezza.platform.rdf.enrichment;
+import java.security.Permission;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import org.apache.clerezza.platform.Constants;
+import org.apache.clerezza.platform.graphprovider.content.ContentGraphProvider;
import org.apache.clerezza.rdf.core.Graph;
import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.TripleCollection;
import org.apache.clerezza.rdf.core.UriRef;
import org.apache.clerezza.rdf.core.access.EntityAlreadyExistsException;
import org.apache.clerezza.rdf.core.access.EntityUndeletableException;
+import org.apache.clerezza.rdf.core.access.LockableMGraph;
import org.apache.clerezza.rdf.core.access.NoSuchEntityException;
+import org.apache.clerezza.rdf.core.access.TcManager;
import org.apache.clerezza.rdf.core.access.WeightedTcProvider;
+import org.apache.clerezza.rdf.core.access.security.TcPermission;
+import org.apache.clerezza.rdf.enrichment.Enricher;
+import org.apache.clerezza.rdf.enrichment.EnrichmentTriples;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.ReferencePolicy;
+import org.apache.felix.scr.annotations.References;
+import org.apache.felix.scr.annotations.Service;
/**
* Provides a read-only MGraph with the name
http://zz.localhost/enrichment.graph
* containing the enrichments provided by all available services of type
- * Enricher on the content graph
+ * Enricher on the content graph.
+ *
*
* @author reto
*/
+/* Possible performance enhancement:
+ * For performance reasons EnrichmentTcProvider gets the content-graph from
+ * TcManager and doesn't do access control check on every request, to prevent
+ * deductions about the content of the content graph by unathorized users
+ * the required permissions on the enrichment graph are set to those on the
+ * content graph.
+ */
+...@component
+...@service(WeightedTcProvider.class)
+...@references(
+ {
+ @Reference(referenceInterface = TcManager.class, name =
"tcManager"),
+ @Reference(referenceInterface=Enricher.class, name="enricher",
+
cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE,
+ policy=ReferencePolicy.DYNAMIC)
+ }
+)
public class EnrichmentTcProvider implements WeightedTcProvider {
public static final UriRef ENRICHMENT_GRAPH_URI = new
UriRef("http://zz.localhost/enrichment.graph");
public static final String SYSTEM_GRAPH_FILTER =
"(name="+ Constants.SYSTEM_GRAPH_URI_STRING +")";
+ private LockableMGraph contentGraph;
+ private Collection<Enricher> enrichers =
Collections.synchronizedCollection(new HashSet<Enricher>());
+
+ @Reference
+ ContentGraphProvider cgProvider;
@Override
public Graph getGraph(UriRef name) throws NoSuchEntityException {
@@ -107,7 +144,41 @@ public class EnrichmentTcProvider implem
}
private MGraph getEnrichmentGraph() {
- throw new UnsupportedOperationException("Not yet implemented");
+ return new EnrichmentTriples(contentGraph, enrichers);
+ }
+
+ protected void activate() {
+ cgProvider.addTemporaryAdditionGraph(ENRICHMENT_GRAPH_URI);
+ }
+ protected void deactivate() {
+ cgProvider.removeTemporaryAdditionGraph(ENRICHMENT_GRAPH_URI);
+ }
+
+ protected void bindTcManager(TcManager tcManager) {
+ contentGraph = tcManager.getMGraph(Constants.CONTENT_GRAPH_URI);
+ Collection<Permission> requiredReadPermissions =
+
tcManager.getTcAccessController().getRequiredReadPermissions(Constants.CONTENT_GRAPH_URI);
+ if (requiredReadPermissions.isEmpty()) {
+
tcManager.getTcAccessController().setRequiredReadPermissionStrings(
+ ENRICHMENT_GRAPH_URI,
Collections.singleton(
+ new
TcPermission(Constants.CONTENT_GRAPH_URI_STRING, TcPermission.READ).toString()
+ ));
+ } else {
+
tcManager.getTcAccessController().setRequiredReadPermissions(
+ ENRICHMENT_GRAPH_URI,
requiredReadPermissions);
+ }
+ }
+
+ protected void unbindTcManager(TcManager tcManager) {
+ contentGraph = null;
+ }
+
+ protected void bindEnricher(Enricher enricher) {
+ enrichers.add(enricher);
+ }
+
+ protected void unbindEnricher(Enricher enricher) {
+ enrichers.remove(enricher);
}
}
Modified:
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/Enricher.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/Enricher.java?rev=966244&r1=966243&r2=966244&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/Enricher.java
(original)
+++
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/Enricher.java
Wed Jul 21 14:27:56 2010
@@ -161,6 +161,8 @@ public abstract class Enricher {
public abstract Iterator<Triple> filter(NonLiteral subject, UriRef
predicate,
Resource object, TripleCollection base);
+ public abstract int providedTriplesCount(TripleCollection base);
+
//IDEA add way for impl to specify fields that must not be null in
filter
//queries (in which case null is replaced with all matching resources)
Modified:
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/EnrichmentTriples.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/EnrichmentTriples.java?rev=966244&r1=966243&r2=966244&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/EnrichmentTriples.java
(original)
+++
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/EnrichmentTriples.java
Wed Jul 21 14:27:56 2010
@@ -67,7 +67,11 @@ public class EnrichmentTriples extends A
@Override
public int size() {
- throw new UnsupportedOperationException("Not supported yet.");
+ int totalSize = 0;
+ for (Enricher enricher : enrichers) {
+ totalSize += enricher.providedTriplesCount(base);
+ }
+ return totalSize;
}
}
Modified:
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/CityWeatherEnricher.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/CityWeatherEnricher.java?rev=966244&r1=966243&r2=966244&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/CityWeatherEnricher.java
(original)
+++
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/CityWeatherEnricher.java
Wed Jul 21 14:27:56 2010
@@ -167,6 +167,16 @@ public class CityWeatherEnricher extends
cityWeatherMap.put(city, new WeakReference<BNode>(newNode));
return newNode;
}
+
+ @Override
+ public int providedTriplesCount(TripleCollection base) {
+ int count = 0;
+ for (Iterator<Triple> bas = base.filter(null, RDF.type,
classCity); bas.hasNext();) {
+ bas.next();
+ count++;
+ }
+ return count * 4;
+ }
}
Modified:
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/SiblingEnricher.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/SiblingEnricher.java?rev=966244&r1=966243&r2=966244&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/SiblingEnricher.java
(original)
+++
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/SiblingEnricher.java
Wed Jul 21 14:27:56 2010
@@ -18,7 +18,6 @@
*/
package org.apache.clerezza.rdf.enrichment;
-import java.util.AbstractSet;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
@@ -157,4 +156,10 @@ public class SiblingEnricher extends Enr
}
return resultSet;
}
+
+ @Override
+ public int providedTriplesCount(TripleCollection base) {
+ //raw guess
+ return (int) (base.size() * 0.01);
+ }
}
Modified:
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/pom.xml?rev=966244&r1=966243&r2=966244&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/pom.xml
(original)
+++
incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/pom.xml
Wed Jul 21 14:27:56 2010
@@ -9,7 +9,7 @@
<artifactId>org.apache.clerezza.rdf.enrichment</artifactId>
<packaging>pom</packaging>
<version>0.1-incubating-SNAPSHOT</version>
- <name>Clerezza - Dynamic Resource Enrichment Framework</name>
+ <name>Clerezza - SCB Enrichment</name>
<description>Allows to provide services that provide dynamic
description to resources.</description>
<modules>
<module>org.apache.clerezza.rdf.enrichment.core</module>