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>


Reply via email to