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