Author: rwesten
Date: Mon Dec 16 15:47:49 2013
New Revision: 1551239

URL: http://svn.apache.org/r1551239
Log:
STANBOL-1237, STANBOL-1234: fixed some remaining bugs: ClerezzaModelWriter now 
registers also the N-TRIPLE format; SesameModelWriter now uses the types 
registered with RDFFormat, better debug level logging for the ModelWriterTracker

Modified:
    
stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/web/writer/ModelWriterTracker.java
    
stanbol/trunk/entityhub/web/clerezza/src/main/java/org/apache/stanbol/entityhub/web/writer/clerezza/ClerezzaModelWriter.java
    
stanbol/trunk/entityhub/web/sesame/src/main/java/org/apache/stanbol/entityhub/web/writer/sesame/SesameModelWriter.java

Modified: 
stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/web/writer/ModelWriterTracker.java
URL: 
http://svn.apache.org/viewvc/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/web/writer/ModelWriterTracker.java?rev=1551239&r1=1551238&r2=1551239&view=diff
==============================================================================
--- 
stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/web/writer/ModelWriterTracker.java
 (original)
+++ 
stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/web/writer/ModelWriterTracker.java
 Mon Dec 16 15:47:49 2013
@@ -24,8 +24,12 @@ import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 import org.osgi.util.tracker.ServiceTracker;
 import org.osgi.util.tracker.ServiceTrackerCustomizer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class ModelWriterTracker extends ServiceTracker {
+    
+    private final Logger log = LoggerFactory.getLogger(getClass());
 
     /**
      * Holds the config
@@ -105,6 +109,9 @@ public class ModelWriterTracker extends 
     private void addModelWriter(Class<? extends Representation> nativeType, 
             MediaType mediaType, ServiceReference reference) {
         //we want to have all ModelWriters under the null key
+        log.debug(" > add ModelWriter format: {}, bundle: {}, nativeType: {}",
+            new Object[]{mediaType, reference.getBundle(),
+                nativeType != null ? nativeType.getName() : "none"});
         Map<MediaType,List<ServiceReference>> typeWriters = writers.get(null);
         addTypeWriter(typeWriters, mediaType, reference);
         if(nativeType != null){ //register also as native type writers
@@ -141,6 +148,9 @@ public class ModelWriterTracker extends 
      */
     private void removeModelWriter(Class<? extends Representation> nativeType, 
             MediaType mediaType, ServiceReference reference) {
+        log.debug(" > remove ModelWriter format: {}, service: {}, nativeType: 
{}",
+            new Object[]{mediaType, reference,
+                nativeType != null ? nativeType.getClass().getName() : 
"none"});
         Map<MediaType,List<ServiceReference>> typeWriters = writers.get(null);
         removeTypeWriter(typeWriters, mediaType, reference);
         if(nativeType != null){
@@ -175,6 +185,9 @@ public class ModelWriterTracker extends 
      */
     private void updateModelWriter(Class<? extends Representation> nativeType, 
             MediaType mediaType, ServiceReference reference) {
+        log.debug(" > update ModelWriter format: {}, service: {}, nativeType: 
{}",
+            new Object[]{mediaType, reference,
+                nativeType != null ? nativeType.getClass().getName() : 
"none"});
         Map<MediaType,List<ServiceReference>> typeWriters = writers.get(null);
         updateTypeWriter(typeWriters, mediaType, reference);
         if(nativeType != null){

Modified: 
stanbol/trunk/entityhub/web/clerezza/src/main/java/org/apache/stanbol/entityhub/web/writer/clerezza/ClerezzaModelWriter.java
URL: 
http://svn.apache.org/viewvc/stanbol/trunk/entityhub/web/clerezza/src/main/java/org/apache/stanbol/entityhub/web/writer/clerezza/ClerezzaModelWriter.java?rev=1551239&r1=1551238&r2=1551239&view=diff
==============================================================================
--- 
stanbol/trunk/entityhub/web/clerezza/src/main/java/org/apache/stanbol/entityhub/web/writer/clerezza/ClerezzaModelWriter.java
 (original)
+++ 
stanbol/trunk/entityhub/web/clerezza/src/main/java/org/apache/stanbol/entityhub/web/writer/clerezza/ClerezzaModelWriter.java
 Mon Dec 16 15:47:49 2013
@@ -73,11 +73,13 @@ public class ClerezzaModelWriter impleme
      * {@link MediaType} instance for {@link SupportedFormat#X_TURTLE}
      */
     public static final MediaType X_TURTLE_TYPE = 
MediaType.valueOf(SupportedFormat.X_TURTLE);
+    
+    public static final MediaType N_TRIPLE_TYPE = 
MediaType.valueOf(SupportedFormat.N_TRIPLE);
     /**
      * Read-only list of the supported RDF formats
      */
     public static final List<MediaType> SUPPORTED_RDF_TYPES = 
Collections.unmodifiableList(
-        Arrays.asList(TURTLE_TYPE, JSONLD_TYPE, N3_TYPE, RDF_JSON_TYPE, 
RDF_XML_TYPE, X_TURTLE_TYPE));
+        Arrays.asList(TURTLE_TYPE, JSONLD_TYPE, N3_TYPE, N_TRIPLE_TYPE, 
RDF_JSON_TYPE, RDF_XML_TYPE, X_TURTLE_TYPE));
 
     //some Concepts and Relations we use to represent Entities
     private final static UriRef FOAF_DOCUMENT = new 
UriRef(NamespaceEnum.foaf+"Document");

Modified: 
stanbol/trunk/entityhub/web/sesame/src/main/java/org/apache/stanbol/entityhub/web/writer/sesame/SesameModelWriter.java
URL: 
http://svn.apache.org/viewvc/stanbol/trunk/entityhub/web/sesame/src/main/java/org/apache/stanbol/entityhub/web/writer/sesame/SesameModelWriter.java?rev=1551239&r1=1551238&r2=1551239&view=diff
==============================================================================
--- 
stanbol/trunk/entityhub/web/sesame/src/main/java/org/apache/stanbol/entityhub/web/writer/sesame/SesameModelWriter.java
 (original)
+++ 
stanbol/trunk/entityhub/web/sesame/src/main/java/org/apache/stanbol/entityhub/web/writer/sesame/SesameModelWriter.java
 Mon Dec 16 15:47:49 2013
@@ -2,14 +2,19 @@ package org.apache.stanbol.entityhub.web
 
 import java.io.IOException;
 import java.io.OutputStream;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
+import java.util.LinkedHashSet;
 import java.util.List;
 
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.MediaType;
 
+import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
@@ -36,6 +41,7 @@ import org.openrdf.model.impl.ValueFacto
 import org.openrdf.rio.RDFFormat;
 import org.openrdf.rio.RDFHandlerException;
 import org.openrdf.rio.Rio;
+import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -43,19 +49,8 @@ import org.slf4j.LoggerFactory;
 @Service
 public class SesameModelWriter implements ModelWriter {
     
-    private final Logger log = 
LoggerFactory.getLogger(SesameModelWriter.class);
+    private static final Logger log = 
LoggerFactory.getLogger(SesameModelWriter.class);
     
-    public static final MediaType TURTLE = MediaType.valueOf("text/turtle");
-    public static final MediaType JSONLD = 
MediaType.valueOf("application/ld+json");
-    public static final MediaType N3 = MediaType.valueOf("text/rdf+n3");
-    public static final MediaType N_TRIPLE = MediaType.valueOf("text/rdf+nt");
-    public static final MediaType RDF_JSON = 
MediaType.valueOf("application/rdf+json");
-    public static final MediaType RDF_XML = 
MediaType.valueOf("application/rdf+xml");
-    public static final MediaType X_TURTLE = 
MediaType.valueOf("application/x-turtle");
-
-    public static final List<MediaType> SUPPORTED_RDF_TYPES = 
Collections.unmodifiableList(
-        Arrays.asList(TURTLE, JSONLD, N3, N_TRIPLE, RDF_JSON, RDF_XML, 
X_TURTLE));
-
     private final static RdfValueFactory valueFactory = 
RdfValueFactory.getInstance();
     private final static ValueFactory sesameFactory = 
ValueFactoryImpl.getInstance();
 
@@ -82,6 +77,37 @@ public class SesameModelWriter implement
     @Reference(cardinality=ReferenceCardinality.OPTIONAL_UNARY)
     NamespacePrefixService nsPrefixService;
     
+    /**
+     * The list with the supported {@link MediaType}s as provided by the
+     * Sesame {@link RDFFormat} class
+     */
+    private List<MediaType> supportedRrfFormats;
+
+    
+    @Activate
+    protected void activate(ComponentContext ctx){
+        //parse the supported RDF formats
+        Collection<String> mts = new LinkedHashSet<String>();
+        for(RDFFormat format : RDFFormat.values()){
+            mts.addAll(format.getMIMETypes());
+        }
+        List<MediaType> formats = new ArrayList<MediaType>(mts.size());
+        for(String format : mts){
+            try {
+                formats.add(MediaType.valueOf(format));
+            } catch (IllegalArgumentException e){
+                log.error("Unable to parse MediaType for Sesame RDF format '"
+                        + format + "'!",e);
+            }
+        }
+        supportedRrfFormats = Collections.unmodifiableList(formats);
+    }
+    
+    @Deactivate
+    protected void deactivate(ComponentContext ctx){
+        supportedRrfFormats = null;
+    }
+    
     @Override
     public Class<? extends Representation> getNativeType() {
         return RdfRepresentation.class;
@@ -89,12 +115,12 @@ public class SesameModelWriter implement
 
     @Override
     public List<MediaType> supportedMediaTypes() {
-        return SUPPORTED_RDF_TYPES;
+        return supportedRrfFormats;
     }
 
     @Override
     public MediaType getBestMediaType(MediaType mediaType) {
-        for(MediaType supported : SUPPORTED_RDF_TYPES){
+        for(MediaType supported : supportedRrfFormats){
             if(supported.isCompatible(mediaType)){
                 return supported;
             }


Reply via email to