You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by mi...@apache.org on 2009/12/14 13:40:50 UTC

svn commit: r890296 - /incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/

Author: mir
Date: Mon Dec 14 12:40:49 2009
New Revision: 890296

URL: http://svn.apache.org/viewvc?rev=890296&view=rev
Log:
CLEREZZA-23: defined interface MetaDataGenerator. Interface is used by discobits handler

Added:
    incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/MetaDataGenerator.java
Modified:
    incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/AbstractDiscobitsHandler.java
    incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java
    incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java

Modified: incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/AbstractDiscobitsHandler.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/AbstractDiscobitsHandler.java?rev=890296&r1=890295&r2=890296&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/AbstractDiscobitsHandler.java (original)
+++ incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/AbstractDiscobitsHandler.java Mon Dec 14 12:40:49 2009
@@ -47,6 +47,14 @@
 	 */
 	protected abstract MGraph getMGraph();
 
+	/**
+	 * A <code>Set</code> containing <code>MetaDataGenerator</code> s to be used
+	 * to add meta data to data putted by the handler.
+	 *
+	 * @return a Set containing meta data generators
+	 */
+	protected abstract Set<MetaDataGenerator> getMetaDataGenerators();
+
 	@Override
 	public void put(UriRef infoDiscoBitUri, MediaType mediaType,
 			byte[] data) {
@@ -58,11 +66,15 @@
 		infoDiscoBitNode.addProperty(DISCOBITS.infoBit, dataLiteral);
 		TypedLiteral mediaTypeLiteral = LiteralFactory.getInstance().createTypedLiteral(mediaType.toString());
 		infoDiscoBitNode.addProperty(DISCOBITS.mediaType,mediaTypeLiteral);
+		for(MetaDataGenerator generator : getMetaDataGenerators()) {
+			generator.generate(infoDiscoBitNode, data, mediaType);
+		}
 	}
 
 	@Override
 	public  void remove(NonLiteral node) {
 		MGraph mGraph = getMGraph();
+		removeMetaData(node, mGraph);
 		Iterator<Triple> properties = mGraph.filter(node, null, null);
 		//copying properties to set, as we're modifying underlying graph
 		Set<Triple> propertiesSet = new HashSet<Triple>();
@@ -121,4 +133,16 @@
 		return MediaType.valueOf(infoDiscobit.getContentType());
 	}
 
+	private void removeMetaData(NonLiteral node, MGraph mGraph) {
+		GraphNode graphNode = new GraphNode(node, mGraph);
+		Iterator<Resource> mediaTypes = graphNode.getObjects(DISCOBITS.mediaType);
+		MediaType mediaType;
+		if (mediaTypes.hasNext()) {
+			String mediaTypeStr = LiteralFactory.getInstance().createObject(String.class,
+					(TypedLiteral)mediaTypes.next());
+			mediaType = MediaType.valueOf(mediaTypeStr);
+		} else {
+			return;
+		}
+	}
 }

Modified: incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java?rev=890296&r1=890295&r2=890296&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java (original)
+++ incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java Mon Dec 14 12:40:49 2009
@@ -18,9 +18,12 @@
  */
 package org.apache.clerezza.platform.content;
 
+import java.util.Collections;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 
+import java.util.Set;
 import javax.ws.rs.GET;
 import javax.ws.rs.PUT;
 import javax.ws.rs.Produces;
@@ -33,6 +36,13 @@
 import javax.ws.rs.core.Response.Status;
 import javax.ws.rs.ext.RuntimeDelegate;
 
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Property;
+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.Service;
+import org.apache.felix.scr.annotations.Services;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.clerezza.platform.graphprovider.content.ContentGraphProvider;
@@ -51,24 +61,29 @@
  * TypeHanlder to allow HTTP GET and PUT.
  *
  * @author reto, tho
- * 
- * @scr.component
- * @scr.service interface="java.lang.Object"
- * @scr.service interface="org.apache.clerezza.platform.content.DiscobitsHandler"
- * @scr.property name="org.apache.clerezza.platform.typehandler" type="Boolean" value="true"
- * 
  */
+@Component
+@Services({
+	@Service(Object.class),
+	@Service(DiscobitsHandler.class)
+})
+@Property(name="org.apache.clerezza.platform.typehandler", boolValue=true)
+@Reference(name="metaDataGenerator",
+	policy=ReferencePolicy.DYNAMIC,
+	cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE,
+	referenceInterface=MetaDataGenerator.class
+)
 @SupportedTypes(types = { "http://www.w3.org/2000/01/rdf-schema#Resource" }, prioritize = false)
 public class DiscobitsTypeHandler extends AbstractDiscobitsHandler
 		implements DiscobitsHandler {
 
-	/**
-	 * @scr.reference
-	 */
+	@Reference
 	private ContentGraphProvider cgProvider;
 	
 	private static final Logger logger = LoggerFactory.getLogger(DiscobitsTypeHandler.class);
 
+	private Set<MetaDataGenerator> metaDataGenerators =
+			Collections.synchronizedSet(new HashSet<MetaDataGenerator>());
 
 	/**
 	 * TypeHandle method for rdf types "TitledContext", "InfoDiscoBit",
@@ -122,9 +137,21 @@
 		return Response.status(Status.CREATED).build();
 	}
 
+	protected void bindMetaDataGenerator(MetaDataGenerator generator) {
+		metaDataGenerators.add(generator);
+	}
+
+	protected void unbindMetaDataGenerator(MetaDataGenerator generator) {
+		metaDataGenerators.remove(generator);
+	}
+
 	@Override
 	protected MGraph getMGraph() {
 		return cgProvider.getContentGraph();
 	}
 
+	@Override
+	protected Set<MetaDataGenerator> getMetaDataGenerators() {
+		return metaDataGenerators;
+	}
 }

Added: incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/MetaDataGenerator.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/MetaDataGenerator.java?rev=890296&view=auto
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/MetaDataGenerator.java (added)
+++ incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/MetaDataGenerator.java Mon Dec 14 12:40:49 2009
@@ -0,0 +1,44 @@
+/*
+ *  Copyright (c) 2009 trialox.org (trialox AG, Switzerland).
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.clerezza.platform.content;
+
+import javax.ws.rs.core.MediaType;
+import org.apache.clerezza.rdf.utils.GraphNode;
+
+/**
+ * An implementation of <code>MetaDataGenerator</code> generates meta data
+ * about specified data depending on its media type.
+ *
+ * @author mir
+ */
+public interface MetaDataGenerator {
+
+	/**
+	 * Generates meta data about the specified bytes depending its mediaType.
+	 * The meta data will be added to the specified graph node.
+	 * @param node The graph node to which the meta data will be added
+	 * @param data The data from which the meta data is generated
+	 * @param mediaType The media type of the data
+	 */
+	public void generate(GraphNode node, byte[] data, MediaType mediaType);
+
+	/**
+	 * Removes the meta data of the specified graph node.
+	 * @param node The graph node whose meta data should be removed.
+	 */
+	public void remove(GraphNode node, MediaType mediaType);
+}

Modified: incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java?rev=890296&r1=890295&r2=890296&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java (original)
+++ incubator/clerezza/issues/CLEREZZA-23/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java Mon Dec 14 12:40:49 2009
@@ -18,6 +18,7 @@
  */
 package org.apache.clerezza.platform.content;
 
+import java.util.Set;
 import org.apache.clerezza.rdf.core.MGraph;
 
 /**
@@ -37,4 +38,9 @@
 		return mGraph;
 	}
 
+	@Override
+	protected Set<MetaDataGenerator> getMetaDataGenerators() {
+		return null;
+	}
+
 }