You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by re...@apache.org on 2013/06/26 22:23:00 UTC

svn commit: r1497076 [1/2] - in /stanbol/branches/commons-ng: ./ entityhub/ entityhub/jersey/ entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/fragment/ entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/ entit...

Author: reto
Date: Wed Jun 26 20:23:00 2013
New Revision: 1497076

URL: http://svn.apache.org/r1497076
Log:
STANBOL-1094: Migrated entityhub.jersey to work in new environment

Modified:
    stanbol/branches/commons-ng/entityhub/jersey/pom.xml
    stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/fragment/EntityhubWebFragment.java
    stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/FieldQueryReader.java
    stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/RepresentationReader.java
    stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource.java
    stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource.java
    stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource.java
    stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/reconcile/BaseGoogleRefineReconcileResource.java
    stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/reconcile/EntityhubReconcileResource.java
    stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/reconcile/ReferencedSiteReconcileResource.java
    stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/reconcile/SiteManagerReconcileResource.java
    stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/utils/LDPathHelper.java
    stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/QueryResultListWriter.java
    stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/RepresentationWriter.java
    stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/SignWriter.java
    stanbol/branches/commons-ng/entityhub/pom.xml
    stanbol/branches/commons-ng/entityhub/site/linkeddata/pom.xml
    stanbol/branches/commons-ng/launchers/bundlelists/entityhub/pom.xml
    stanbol/branches/commons-ng/launchers/bundlelists/entityhub/src/main/bundles/list.xml
    stanbol/branches/commons-ng/launchers/bundlelists/pom.xml
    stanbol/branches/commons-ng/launchers/mini/pom.xml
    stanbol/branches/commons-ng/launchers/stable/pom.xml
    stanbol/branches/commons-ng/pom.xml

Modified: stanbol/branches/commons-ng/entityhub/jersey/pom.xml
URL: http://svn.apache.org/viewvc/stanbol/branches/commons-ng/entityhub/jersey/pom.xml?rev=1497076&r1=1497075&r2=1497076&view=diff
==============================================================================
--- stanbol/branches/commons-ng/entityhub/jersey/pom.xml (original)
+++ stanbol/branches/commons-ng/entityhub/jersey/pom.xml Wed Jun 26 20:23:00 2013
@@ -16,7 +16,7 @@
   <parent>
     <groupId>org.apache.stanbol</groupId>
     <artifactId>apache-stanbol-entityhub</artifactId>
-    <version>0.12.0-SNAPSHOT</version>
+    <version>1.0.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
@@ -58,8 +58,6 @@
               org.apache.stanbol.entityhub.jersey.*
             </Export-Package -->
             <Import-Package>
-              javax.ws.rs.*; version="[0,2)",
-              org.apache.stanbol.commons.web.base; provide:=true,
               *
             </Import-Package>
             <Private-Package>
@@ -87,7 +85,7 @@
     <dependency>
       <groupId>org.apache.stanbol</groupId>
       <artifactId>org.apache.stanbol.commons.web.base</artifactId>
-      <version>0.12.0-SNAPSHOT</version>
+      <version>1.0.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.stanbol</groupId>
@@ -103,7 +101,7 @@
     <dependency>
       <groupId>org.apache.stanbol</groupId>
       <artifactId>org.apache.stanbol.commons.web.viewable</artifactId>
-      <version>0.11.0</version>      
+      <version>1.0.0-SNAPSHOT</version>      
     </dependency>
 
     <!-- dependencies on other Entityhub modules -->
@@ -189,16 +187,6 @@
       <artifactId>junit</artifactId>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>com.sun.jersey</groupId>
-      <artifactId>jersey-core</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.sun.jersey</groupId>
-      <artifactId>jersey-server</artifactId>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
 
 </project>

Modified: stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/fragment/EntityhubWebFragment.java
URL: http://svn.apache.org/viewvc/stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/fragment/EntityhubWebFragment.java?rev=1497076&r1=1497075&r2=1497076&view=diff
==============================================================================
--- stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/fragment/EntityhubWebFragment.java (original)
+++ stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/fragment/EntityhubWebFragment.java Wed Jun 26 20:23:00 2013
@@ -30,22 +30,11 @@ import org.apache.stanbol.commons.web.ba
 import org.apache.stanbol.commons.web.base.NavigationLink;
 import org.apache.stanbol.commons.web.base.ScriptResource;
 import org.apache.stanbol.commons.web.base.WebFragment;
-import org.apache.stanbol.entityhub.jersey.parsers.FieldQueryReader;
-import org.apache.stanbol.entityhub.jersey.parsers.RepresentationReader;
-import org.apache.stanbol.entityhub.jersey.resource.EntityhubRootResource;
-import org.apache.stanbol.entityhub.jersey.resource.ReferencedSiteRootResource;
-import org.apache.stanbol.entityhub.jersey.resource.SiteManagerRootResource;
-import org.apache.stanbol.entityhub.jersey.resource.reconcile.EntityhubReconcileResource;
-import org.apache.stanbol.entityhub.jersey.resource.reconcile.ReferencedSiteReconcileResource;
-import org.apache.stanbol.entityhub.jersey.resource.reconcile.SiteManagerReconcileResource;
 import org.apache.stanbol.entityhub.jersey.writers.JettisonWriter;
-import org.apache.stanbol.entityhub.jersey.writers.QueryResultListWriter;
-import org.apache.stanbol.entityhub.jersey.writers.RepresentationWriter;
-import org.apache.stanbol.entityhub.jersey.writers.SignWriter;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.component.ComponentContext;
 
-@Component(immediate = true, metatype = true)
+@Component(immediate = true)
 @Service
 public class EntityhubWebFragment implements WebFragment {
     
@@ -71,22 +60,19 @@ public class EntityhubWebFragment implem
     public Set<Class<?>> getJaxrsResourceClasses() {
         Set<Class<?>> classes = new HashSet<Class<?>>();
         // resources
-        classes.add(EntityhubRootResource.class);
+        //classes.add(EntityhubRootResource.class);
         //classes.add(EntityMappingResource.class);
-        classes.add(ReferencedSiteRootResource.class);
-        classes.add(SiteManagerRootResource.class);
+        //classes.add(ReferencedSiteRootResource.class);
+        //classes.add(SiteManagerRootResource.class);
         //Google Refine Reconciliation API support
-        classes.add(ReferencedSiteReconcileResource.class);
-        classes.add(EntityhubReconcileResource.class);
-        classes.add(SiteManagerReconcileResource.class);
+        //classes.add(SiteManagerReconcileResource.class);
         //classes.add(SymbolResource.class);
         // message body readers and writers
-        classes.add(FieldQueryReader.class);
-        classes.add(QueryResultListWriter.class);
-        classes.add(SignWriter.class);
-        classes.add(RepresentationWriter.class);
-        classes.add(FieldQueryReader.class);
-        classes.add(RepresentationReader.class);
+        //classes.add(FieldQueryReader.class);
+        //classes.add(SignWriter.class);
+        //classes.add(RepresentationWriter.class);
+        //classes.add(FieldQueryReader.class);
+        //classes.add(RepresentationReader.class);
         //TODO: somehow writing of Json has not worked because of
         //      A message body writer for Java class org.codehaus.jettison.json.JSONArray,
         //     and Java type class org.codehaus.jettison.json.JSONArray, and MIME media

Modified: stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/FieldQueryReader.java
URL: http://svn.apache.org/viewvc/stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/FieldQueryReader.java?rev=1497076&r1=1497075&r2=1497076&view=diff
==============================================================================
--- stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/FieldQueryReader.java (original)
+++ stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/FieldQueryReader.java Wed Jun 26 20:23:00 2013
@@ -39,9 +39,12 @@ import javax.ws.rs.ext.MessageBodyReader
 import javax.ws.rs.ext.Provider;
 
 import org.apache.commons.io.IOUtils;
+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.Service;
 import org.apache.stanbol.commons.namespaceprefix.NamespaceMappingUtils;
 import org.apache.stanbol.commons.namespaceprefix.NamespacePrefixService;
-import org.apache.stanbol.commons.web.base.ContextHelper;
 import org.apache.stanbol.entityhub.core.mapping.ValueConverterFactory;
 import org.apache.stanbol.entityhub.core.model.InMemoryValueFactory;
 import org.apache.stanbol.entityhub.core.query.FieldQueryImpl;
@@ -63,6 +66,9 @@ import org.codehaus.jettison.json.JSONOb
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@Component
+@Service(Object.class)
+@Property(name="javax.ws.rs", boolValue=true)
 @Provider
 public class FieldQueryReader implements MessageBodyReader<FieldQuery> {
     private static final Logger log = LoggerFactory.getLogger(FieldQueryReader.class);
@@ -70,14 +76,11 @@ public class FieldQueryReader implements
     private static final ValueFactory valueFactory = InMemoryValueFactory.getInstance();
     private static final ValueConverterFactory converterFactory = ValueConverterFactory.getDefaultInstance();
     
-    private ServletContext context;
-    
-    public FieldQueryReader(@Context ServletContext context) {
-        this.context = context;
-    }
+    @Reference
+    NamespacePrefixService namespacePrefixService;
     
     private NamespacePrefixService getNsPrefixService(){
-        return ContextHelper.getServiceFromContext(NamespacePrefixService.class, context);
+        return namespacePrefixService;
     }
     
     @Override

Modified: stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/RepresentationReader.java
URL: http://svn.apache.org/viewvc/stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/RepresentationReader.java?rev=1497076&r1=1497075&r2=1497076&view=diff
==============================================================================
--- stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/RepresentationReader.java (original)
+++ stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/RepresentationReader.java Wed Jun 26 20:23:00 2013
@@ -48,8 +48,11 @@ import org.apache.clerezza.rdf.core.UriR
 import org.apache.clerezza.rdf.core.serializedform.Parser;
 import org.apache.clerezza.rdf.core.serializedform.SupportedFormat;
 import org.apache.clerezza.rdf.core.serializedform.UnsupportedParsingFormatException;
+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.Service;
 import org.apache.stanbol.commons.indexedgraph.IndexedMGraph;
-import org.apache.stanbol.commons.web.base.ContextHelper;
 import org.apache.stanbol.entityhub.jersey.utils.JerseyUtils;
 import org.apache.stanbol.entityhub.jersey.utils.MessageBodyReaderUtils;
 import org.apache.stanbol.entityhub.jersey.utils.MessageBodyReaderUtils.RequestData;
@@ -68,6 +71,9 @@ import org.slf4j.LoggerFactory;
  * @author Rupert Westenthaler
  *
  */
+@Component
+@Service(Object.class)
+@Property(name="javax.ws.rs", boolValue=true)
 @Provider
 @Consumes({ //First the data types directly supported for parsing representations
             MediaType.APPLICATION_JSON, SupportedFormat.N3, SupportedFormat.N_TRIPLE,
@@ -79,8 +85,7 @@ import org.slf4j.LoggerFactory;
 public class RepresentationReader implements MessageBodyReader<Map<String,Representation>> {
     
     private static final Logger log = LoggerFactory.getLogger(RepresentationReader.class);
-    @Context
-    protected ServletContext servletContext;
+
 
     public static final Set<String> supportedMediaTypes;
     private static final MediaType DEFAULT_ACCEPTED_MEDIA_TYPE = MediaType.TEXT_PLAIN_TYPE;
@@ -97,6 +102,9 @@ public class RepresentationReader implem
         supportedMediaTypes = Collections.unmodifiableSet(types);
     }
     
+    @Reference
+    private Parser parser;
+    
     @Override
     public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
         String mediaTypeWithoutParameter = 
@@ -240,7 +248,6 @@ public class RepresentationReader implem
             RdfValueFactory valueFactory = RdfValueFactory.getInstance();
             Map<String,Representation> representations = new HashMap<String,Representation>();
             Set<NonLiteral> processed = new HashSet<NonLiteral>();
-            Parser parser = ContextHelper.getServiceFromContext(Parser.class, servletContext);
             MGraph graph = new IndexedMGraph();
             try {
                 parser.parse(graph,content.getEntityStream(), content.getMediaType().toString());

Modified: stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource.java
URL: http://svn.apache.org/viewvc/stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource.java?rev=1497076&r1=1497075&r2=1497076&view=diff
==============================================================================
--- stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource.java (original)
+++ stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource.java Wed Jun 26 20:23:00 2013
@@ -34,8 +34,6 @@ import static org.apache.clerezza.rdf.co
 import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.RDF_XML;
 import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.TURTLE;
 import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.X_TURTLE;
-import static org.apache.stanbol.commons.web.base.CorsHelper.addCORSOrigin;
-import static org.apache.stanbol.commons.web.base.CorsHelper.enableCORS;
 import static org.apache.stanbol.commons.web.base.utils.MediaTypeUtil.getAcceptableMediaType;
 import static org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.getLDPathParseExceptionMessage;
 import static org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.handleLDPathRequest;
@@ -77,8 +75,7 @@ import javax.ws.rs.core.Response.Status;
 import org.apache.stanbol.commons.indexedgraph.IndexedMGraph;
 import org.apache.stanbol.commons.namespaceprefix.NamespaceMappingUtils;
 import org.apache.stanbol.commons.namespaceprefix.NamespacePrefixService;
-import org.apache.stanbol.commons.viewable.Viewable;
-import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.viewable.Viewable;
 import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
 import org.apache.stanbol.entityhub.core.query.QueryResultListImpl;
 import org.apache.stanbol.entityhub.jersey.utils.JerseyUtils;
@@ -100,8 +97,14 @@ import org.slf4j.LoggerFactory;
 
 import at.newmedialab.ldpath.exception.LDPathParseException;
 import at.newmedialab.ldpath.model.programs.Program;
-
-
+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.Service;
+
+@Component
+@Service(Object.class)
+@Property(name="javax.ws.rs", boolValue=true)
 @Path("/entityhub")
 public class EntityhubRootResource extends BaseStanbolResource {
     
@@ -124,23 +127,21 @@ public class EntityhubRootResource exten
      * The default number of maximal results of searched sites.
      */
     private static final int DEFAULT_FIND_RESULT_LIMIT = 5;
+    
+    @Reference
     private NamespacePrefixService nsPrefixService;
+    
+    @Reference
     private Entityhub entityhub;
 
-    // bind the job manager by looking it up from the servlet request context
-    public EntityhubRootResource(@Context ServletContext servletContext) {
+    public EntityhubRootResource() {
         super();
-        entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
-        if(entityhub == null){
-            throw new WebApplicationException(Response.status(Status.NOT_FOUND)
-                .entity("The Entityhub Service is currently not active!").build());
-        }
-        nsPrefixService = ContextHelper.getServiceFromContext(NamespacePrefixService.class, servletContext);
     }
+    
     @OPTIONS
     public Response handleCorsPreflight(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers);
+        //enableCORS(servletContext, res, headers);
         return res.build();
     }
     @GET
@@ -148,7 +149,7 @@ public class EntityhubRootResource exten
     public Response get(@Context HttpHeaders headers) {
         ResponseBuilder rb = Response.ok(new Viewable("index", this));
         rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-        addCORSOrigin(servletContext, rb, headers);
+        //addCORSOrigin(servletContext, rb, headers);
         return rb.build();
     }
 
@@ -166,14 +167,14 @@ public class EntityhubRootResource exten
             //return HTML docu
             ResponseBuilder rb = Response.ok(new Viewable("entity", this));
             rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-            addCORSOrigin(servletContext, rb, headers);
+            //addCORSOrigin(servletContext, rb, headers);
             return rb.build();
         }
         if (symbolId == null || symbolId.isEmpty()) {
             // TODO: how to parse an error message
             throw new WebApplicationException(BAD_REQUEST);
         }
-        Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
+        //Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
         Entity entity;
         try {
             entity = entityhub.getEntity(symbolId);
@@ -185,7 +186,7 @@ public class EntityhubRootResource exten
         } else {
             ResponseBuilder rb = Response.ok(entity);
             rb.header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8");
-            addCORSOrigin(servletContext, rb, headers);
+            //addCORSOrigin(servletContext, rb, headers);
             return rb.build();
         }
     }
@@ -207,7 +208,7 @@ public class EntityhubRootResource exten
             //return docu
             ResponseBuilder rb = Response.ok(new Viewable("lookup", this));
             rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-            addCORSOrigin(servletContext, rb, headers);
+            //addCORSOrigin(servletContext, rb, headers);
             return rb.build();
         } else {
             if (reference == null || reference.isEmpty()) {
@@ -226,7 +227,7 @@ public class EntityhubRootResource exten
             } else {
                 ResponseBuilder rb = Response.ok(entity);
                 rb.header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8");
-                addCORSOrigin(servletContext, rb, headers);
+                //addCORSOrigin(servletContext, rb, headers);
                 return rb.build();
             }
         }
@@ -236,7 +237,7 @@ public class EntityhubRootResource exten
     public Response handleCorsPreflightEntity(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
         //we need also PUT and DELETE because /entity has full CRUD
-        enableCORS(servletContext, res, headers,GET,POST,PUT,DELETE,OPTIONS);
+        //enableCORS(servletContext, res, headers,GET,POST,PUT,DELETE,OPTIONS);
         return res.build();
     }
 
@@ -282,7 +283,7 @@ public class EntityhubRootResource exten
                     "not provide the id of the Entity to delete (parameter 'id').")
                     .header(HttpHeaders.ACCEPT, accepted).build();
         }
-        Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
+        //Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
         Entity entity;
         ResponseBuilder rb;
         try {
@@ -306,7 +307,7 @@ public class EntityhubRootResource exten
             rb = Response.status(Status.INTERNAL_SERVER_ERROR).entity(e.getMessage())
             .header(HttpHeaders.ACCEPT, accepted);
         }
-        addCORSOrigin(servletContext, rb, headers);
+        //addCORSOrigin(servletContext, rb, headers);
         return rb.build();
     }
     /**
@@ -327,7 +328,7 @@ public class EntityhubRootResource exten
                                           boolean create, 
                                           boolean update,
                                           HttpHeaders headers){
-        Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
+        //Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
         MediaType accepted = getAcceptableMediaType(headers,
             JerseyUtils.ENTITY_SUPPORTED_MEDIA_TYPES, 
             MediaType.APPLICATION_JSON_TYPE);
@@ -408,7 +409,7 @@ public class EntityhubRootResource exten
         if(updated.isEmpty()){
             // No (valid) data parsed
             ResponseBuilder rb = Response.status(Status.NOT_MODIFIED);
-            addCORSOrigin(servletContext, rb, headers);
+            //addCORSOrigin(servletContext, rb, headers);
             return rb.build();
         } else {
             Entity entity = updated.values().iterator().next();
@@ -416,14 +417,14 @@ public class EntityhubRootResource exten
                 ResponseBuilder rb = Response.created(uriInfo.getAbsolutePathBuilder()
                     .queryParam("id", "{entityId}")
                     .build(entity.getId()));
-                addCORSOrigin(servletContext, rb, headers);
+                //addCORSOrigin(servletContext, rb, headers);
                 return rb.build();
             } else {
                 //return Response.noContent().build();
                 //As alternative return the modified entity
                 ResponseBuilder rb =  Response.ok(entity);
                 rb.header(HttpHeaders.CONTENT_TYPE, accepted+"; charset=utf-8");
-                addCORSOrigin(servletContext, rb, headers);
+                //addCORSOrigin(servletContext, rb, headers);
                 return rb.build();
             }
 //            if (updated.size() == 1){
@@ -442,7 +443,7 @@ public class EntityhubRootResource exten
     @Path("/find")
     public Response handleCorsPreflightFind(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers);
+        //enableCORS(servletContext, res, headers);
         return res.build();
     }
     
@@ -486,7 +487,7 @@ public class EntityhubRootResource exten
                 //return HTML docu
                 ResponseBuilder rb = Response.ok(new Viewable("find", this));
                 rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-                addCORSOrigin(servletContext, rb, headers);
+                //addCORSOrigin(servletContext, rb, headers);
                 return rb.build();
             } else {
                 return Response.status(Status.BAD_REQUEST)
@@ -537,7 +538,7 @@ public class EntityhubRootResource exten
     @Path("/query")
     public Response handleCorsPreflightQuery(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers);
+        //enableCORS(servletContext, res, headers);
         return res.build();
     }
     
@@ -546,7 +547,7 @@ public class EntityhubRootResource exten
     public Response getQueryDocumentation(@Context HttpHeaders headers){
         ResponseBuilder rb = Response.ok(new Viewable("query", this));
         rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-        addCORSOrigin(servletContext, rb, headers);
+        //addCORSOrigin(servletContext, rb, headers);
         return rb.build();
     }
     /**
@@ -583,7 +584,7 @@ public class EntityhubRootResource exten
      * @return the response (results of error)
      */
     private Response executeQuery(FieldQuery query, HttpHeaders headers, MediaType acceptedMediaType) throws WebApplicationException {
-        Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
+        //Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
         if(query instanceof LDPathSelect && ((LDPathSelect)query).getLDPathSelect() != null){
             //use the LDPath variant to process this query
             return executeLDPathQuery(entityhub,query, ((LDPathSelect)query).getLDPathSelect(),
@@ -602,7 +603,7 @@ public class EntityhubRootResource exten
             }
             ResponseBuilder rb = Response.ok(result);
             rb.header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8");
-            addCORSOrigin(servletContext, rb, headers);
+            //addCORSOrigin(servletContext, rb, headers);
             return rb.build();
         }
     }
@@ -658,7 +659,7 @@ public class EntityhubRootResource exten
         result = new QueryResultListImpl<Representation>(query, transformedResults, Representation.class);
         ResponseBuilder rb = Response.ok(result);
         rb.header(HttpHeaders.CONTENT_TYPE, mediaType+"; charset=utf-8");
-        addCORSOrigin(servletContext, rb, headers);
+        //addCORSOrigin(servletContext, rb, headers);
         return rb.build();
     }    
     /*--------------------------------------------------------------------------
@@ -669,7 +670,7 @@ public class EntityhubRootResource exten
     @Path("/mapping")
     public Response handleCorsPreflightMapping(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers,GET,OPTIONS);
+        //enableCORS(servletContext, res, headers,GET,OPTIONS);
         return res.build();
     }
     
@@ -690,13 +691,13 @@ public class EntityhubRootResource exten
             if(TEXT_HTML_TYPE.isCompatible(acceptedMediaType)){
               ResponseBuilder rb = Response.ok(new Viewable("mapping", this));
               rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-              addCORSOrigin(servletContext, rb, headers);
+              //addCORSOrigin(servletContext, rb, headers);
             } else {
                 return Response.status(Status.BAD_REQUEST).entity("The mapping id (URI) is missing.\n").header(
                     HttpHeaders.ACCEPT, acceptedMediaType).build();
             }
         }
-        Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
+        //Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
         Entity mapping;
         try {
             mapping = entityhub.getMappingById(reference);
@@ -710,7 +711,7 @@ public class EntityhubRootResource exten
         } else {
             ResponseBuilder rb = Response.ok(mapping);
             rb.header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8");
-            addCORSOrigin(servletContext, rb, headers);
+            //addCORSOrigin(servletContext, rb, headers);
             return rb.build();
         }
     }
@@ -719,7 +720,7 @@ public class EntityhubRootResource exten
     @Path("/mapping/entity")
     public Response handleCorsPreflightMappingEntity(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers,GET,OPTIONS);
+        //enableCORS(servletContext, res, headers,GET,OPTIONS);
         return res.build();
     }
 
@@ -741,14 +742,14 @@ public class EntityhubRootResource exten
             if(TEXT_HTML_TYPE.isCompatible(acceptedMediaType)){
                 ResponseBuilder rb = Response.ok(new Viewable("mapping_entity", this));
                 rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-                addCORSOrigin(servletContext, rb, headers);
+                //addCORSOrigin(servletContext, rb, headers);
             } else {
                 return Response.status(Status.BAD_REQUEST).entity("No entity given. Missing parameter id.\n")
                     .header(HttpHeaders.ACCEPT, acceptedMediaType).build();
             }
         }
         
-        Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
+        //Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
         Entity mapping;
         try {
             mapping = entityhub.getMappingBySource(entity);
@@ -761,7 +762,7 @@ public class EntityhubRootResource exten
         } else {
             ResponseBuilder rb = Response.ok(mapping);
             rb.header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8");
-            addCORSOrigin(servletContext, rb, headers);
+            //addCORSOrigin(servletContext, rb, headers);
             return rb.build();
         }
     }
@@ -770,7 +771,7 @@ public class EntityhubRootResource exten
     @Path("/mapping/symbol")
     public Response handleCorsPreflightMappingSymbol(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers,GET,OPTIONS);
+        //enableCORS(servletContext, res, headers,GET,OPTIONS);
         return res.build();
     }
     
@@ -792,14 +793,14 @@ public class EntityhubRootResource exten
             if(TEXT_HTML_TYPE.isCompatible(acceptedMediaType)){
                 ResponseBuilder rb = Response.ok(new Viewable("mapping_symbol", this));
                 rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-                addCORSOrigin(servletContext, rb, headers);
+                //addCORSOrigin(servletContext, rb, headers);
                 return rb.build();
             } else {
                 return Response.status(Status.BAD_REQUEST).entity("No symbol given. Missing parameter id.\n")
                     .header(HttpHeaders.ACCEPT, acceptedMediaType).build();
             }
         }
-        Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
+        //Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
         Collection<Entity> mappings;
         try {
             mappings = entityhub.getMappingsByTarget(symbol);
@@ -816,7 +817,7 @@ public class EntityhubRootResource exten
                     mappings, Entity.class);
             ResponseBuilder rb = Response.ok(mappingResultList);
             rb.header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8");
-            addCORSOrigin(servletContext, rb, headers);
+            //addCORSOrigin(servletContext, rb, headers);
             return rb.build();
         }
     }
@@ -827,7 +828,7 @@ public class EntityhubRootResource exten
     @Path("/ldpath")
     public Response handleCorsPreflightLDPath(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers,OPTIONS,GET,POST);
+        //enableCORS(servletContext, res, headers,OPTIONS,GET,POST);
         return res.build();
     }
     @GET
@@ -844,9 +845,9 @@ public class EntityhubRootResource exten
              @FormParam(value = "context")Set<String> contexts,
              @FormParam(value = "ldpath")String ldpath,
              @Context HttpHeaders headers){
-        Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
+        //Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
         return handleLDPathRequest(this,new YardBackend(entityhub.getYard()), 
-            ldpath, contexts, headers, servletContext);
+            ldpath, contexts, headers);
     }
 
 }

Modified: stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource.java
URL: http://svn.apache.org/viewvc/stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource.java?rev=1497076&r1=1497075&r2=1497076&view=diff
==============================================================================
--- stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource.java (original)
+++ stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource.java Wed Jun 26 20:23:00 2013
@@ -16,11 +16,6 @@
  */
 package org.apache.stanbol.entityhub.jersey.resource;
 
-import static javax.ws.rs.HttpMethod.DELETE;
-import static javax.ws.rs.HttpMethod.GET;
-import static javax.ws.rs.HttpMethod.OPTIONS;
-import static javax.ws.rs.HttpMethod.POST;
-import static javax.ws.rs.HttpMethod.PUT;
 import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
 import static javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE;
 import static javax.ws.rs.core.MediaType.TEXT_HTML;
@@ -30,8 +25,6 @@ import static org.apache.clerezza.rdf.co
 import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.RDF_XML;
 import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.TURTLE;
 import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.X_TURTLE;
-import static org.apache.stanbol.commons.web.base.CorsHelper.addCORSOrigin;
-import static org.apache.stanbol.commons.web.base.CorsHelper.enableCORS;
 import static org.apache.stanbol.commons.web.base.utils.MediaTypeUtil.getAcceptableMediaType;
 import static org.apache.stanbol.entityhub.jersey.utils.JerseyUtils.ENTITY_SUPPORTED_MEDIA_TYPES;
 import static org.apache.stanbol.entityhub.jersey.utils.JerseyUtils.REPRESENTATION_SUPPORTED_MEDIA_TYPES;
@@ -53,7 +46,6 @@ import java.util.Map.Entry;
 import java.util.Set;
 import java.util.TreeSet;
 
-import javax.servlet.ServletContext;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
 import javax.ws.rs.DefaultValue;
@@ -81,8 +73,7 @@ import org.apache.clerezza.rdf.ontologie
 import org.apache.stanbol.commons.indexedgraph.IndexedMGraph;
 import org.apache.stanbol.commons.namespaceprefix.NamespaceMappingUtils;
 import org.apache.stanbol.commons.namespaceprefix.NamespacePrefixService;
-import org.apache.stanbol.commons.viewable.Viewable;
-import org.apache.stanbol.commons.web.base.ContextHelper;
+import org.apache.stanbol.commons.web.viewable.Viewable;
 import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
 import org.apache.stanbol.entityhub.core.query.QueryResultListImpl;
 import org.apache.stanbol.entityhub.jersey.parsers.FieldQueryReader;
@@ -112,12 +103,19 @@ import org.slf4j.LoggerFactory;
 
 import at.newmedialab.ldpath.exception.LDPathParseException;
 import at.newmedialab.ldpath.model.programs.Program;
+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.Service;
 
 /**
  * Resource to provide a REST API for the {@link SiteManager}
  * <p/>
  * TODO: add description
  */
+@Component
+@Service(Object.class)
+@Property(name="javax.ws.rs", boolValue=true)
 @Path("/entityhub/site/{site}")
 public class ReferencedSiteRootResource extends BaseStanbolResource {
     
@@ -156,21 +154,16 @@ public class ReferencedSiteRootResource 
      */
     private static final int DEFAULT_FIND_RESULT_LIMIT = 5;
     
-    private Site site;
+    //private Site site;
 
+    @Reference
     private NamespacePrefixService nsPrefixService;
     
-    public ReferencedSiteRootResource(@PathParam(value = "site") String siteId,
-                                      @Context ServletContext servletContext) {
-        super();
-        log.debug("<init> with site {}", siteId);
-        SiteManager referencedSiteManager = ContextHelper.getServiceFromContext(
-            SiteManager.class, servletContext);
-        if (siteId == null || siteId.isEmpty()) {
-            log.error("Missing path parameter site={}", siteId);
-            throw new WebApplicationException(Response.Status.NOT_FOUND);
-        }
-        site = referencedSiteManager.getSite(siteId);
+    @Reference
+    private SiteManager referencedSiteManager;
+    
+    private Site getSite(String siteId) {
+        Site site = referencedSiteManager.getSite(siteId);
         if (site == null) {
             log.error("Site {} not found (no referenced site with that ID is present within the Entityhub",
                 siteId);
@@ -179,22 +172,17 @@ public class ReferencedSiteRootResource 
         if(site instanceof ManagedSite){
             log.debug("   ... init ManagedSite");
         }
-        nsPrefixService = ContextHelper.getServiceFromContext(NamespacePrefixService.class, servletContext);
+        return site;
     }
 
-    @OPTIONS
-    public Response handleCorsPreflight(@Context HttpHeaders headers){
-        ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers);
-        return res.build();
-    }
     
     @GET
     @Produces(value=MediaType.TEXT_HTML)
-    public Response getHtmlInfo(@Context HttpHeaders headers){
+    public Response getHtmlInfo(@PathParam(value = "site") String siteId, 
+            @Context HttpHeaders headers){
         ResponseBuilder rb = Response.ok(new Viewable("index", this));
         rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-        addCORSOrigin(servletContext, rb, headers);
+        //addCORSOrigin(servletContext, rb, headers);
         return rb.build();
     }
     /**
@@ -205,19 +193,22 @@ public class ReferencedSiteRootResource 
      */
     @GET
     @Produces({APPLICATION_JSON,RDF_XML,N3,TURTLE,X_TURTLE,RDF_JSON,N_TRIPLE})
-    public Response getInfo(@Context HttpHeaders headers,
+    public Response getInfo(@PathParam(value = "site") String siteId,
+                            @Context HttpHeaders headers,
                             @Context UriInfo uriInfo) {
         MediaType acceptedMediaType = getAcceptableMediaType(headers, REPRESENTATION_SUPPORTED_MEDIA_TYPES,MediaType.APPLICATION_JSON_TYPE);
-        ResponseBuilder rb =  Response.ok(site2Representation(uriInfo.getAbsolutePath().toString()));
+        ResponseBuilder rb =  Response.ok(site2Representation(getSite(siteId), uriInfo.getAbsolutePath().toString()));
         rb.header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8");
-        addCORSOrigin(servletContext, rb, headers);
+        //addCORSOrigin(servletContext, rb, headers);
         return rb.build();
     }
     @GET
     @Path(value=ReferencedSiteRootResource.LICENSE_PATH+"/{name}")
-    public Response getLicenseInfo(@Context HttpHeaders headers,
+    public Response getLicenseInfo(@PathParam(value = "site") String siteId,
+                                   @Context HttpHeaders headers,
                                    @Context UriInfo uriInfo,
                                    @PathParam(value = "name") String name) {
+        Site site = getSite(siteId);
         MediaType acceptedMediaType = getAcceptableMediaType(headers, MediaType.APPLICATION_JSON_TYPE);
         if(name == null || name.isEmpty()){
             //return all
@@ -237,7 +228,7 @@ public class ReferencedSiteRootResource 
                             ResponseBuilder rb = Response.ok(
                                 license2Representation(uriInfo.getAbsolutePath().toString(),license));
                             rb.header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8");
-                            addCORSOrigin(servletContext, rb, headers);
+                            //addCORSOrigin(servletContext, rb, headers);
                             return rb.build();
                         }
                     }
@@ -252,12 +243,14 @@ public class ReferencedSiteRootResource 
     }
     @OPTIONS
     @Path("/entity")
-    public Response handleCorsPreflightEntity(@Context HttpHeaders headers){
+    public Response handleCorsPreflightEntity(@PathParam(value = "site") String siteId,
+            @Context HttpHeaders headers){
+        Site site = getSite(siteId);
         ResponseBuilder res = Response.ok();
         if(site instanceof ManagedSite){
-            enableCORS(servletContext, res, headers, OPTIONS,GET,POST,PUT,DELETE);
+            //enableCORS(servletContext, res, headers, OPTIONS,GET,POST,PUT,DELETE);
         } else {
-            enableCORS(servletContext, res, headers,OPTIONS,GET);
+            //enableCORS(servletContext, res, headers,OPTIONS,GET);
         }
         return res.build();
     }
@@ -273,7 +266,9 @@ public class ReferencedSiteRootResource 
      */
     @GET
     @Path("/entity")
-    public Response getEntityById(@QueryParam(value = "id") String id, @Context HttpHeaders headers) {
+    public Response getEntityById(@PathParam(value = "site") String siteId,
+            @QueryParam(value = "id") String id, @Context HttpHeaders headers) {
+        Site site = getSite(siteId);
         log.debug("site/{}/entity Request",site.getId());
         log.debug("  > id       : " + id);
         log.debug("  > accept   : " + headers.getAcceptableMediaTypes());
@@ -286,7 +281,7 @@ public class ReferencedSiteRootResource 
             if(MediaType.TEXT_HTML_TYPE.isCompatible(acceptedMediaType)){
                 ResponseBuilder rb = Response.ok(new Viewable("entity", this));
                 rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-                addCORSOrigin(servletContext, rb, headers);
+               // addCORSOrigin(servletContext, rb, headers);
                 return rb.build();
             } else {
                 return Response.status(Status.BAD_REQUEST)
@@ -306,7 +301,7 @@ public class ReferencedSiteRootResource 
         if (entity != null) {
             ResponseBuilder rb =  Response.ok(entity);
             rb.header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8");
-            addCORSOrigin(servletContext, rb, headers);
+            //addCORSOrigin(servletContext, rb, headers);
             return rb.build();
         } else {
             // TODO: How to parse an ErrorMessage?
@@ -321,7 +316,8 @@ public class ReferencedSiteRootResource 
     @POST
     @Path("entity/")
     @Consumes(MediaType.WILDCARD)
-    public Response createEntity(@QueryParam(value = "id") String id,
+    public Response createEntity(@PathParam(value = "site") String siteId,
+                                 @QueryParam(value = "id") String id,
                                  @QueryParam(value = "update") boolean allowUpdate,
                                  Map<String,Representation> parsed,
                                  @Context HttpHeaders headers){
@@ -330,13 +326,14 @@ public class ReferencedSiteRootResource 
         log.info("Headers: "+headers.getRequestHeaders());
         log.info("Entity: "+id);
         log.info("Representations : {} parsed",parsed.size());
-        return updateOrCreateEntity(id, parsed, HttpMethod.POST, true,allowUpdate,headers);
+        return updateOrCreateEntity(getSite(siteId), id, parsed, HttpMethod.POST, true,allowUpdate,headers);
     }
 
     @PUT
     @Path("entity/")
     @Consumes(MediaType.WILDCARD)
-    public Response updateEntity(@QueryParam(value = "id") String id, 
+    public Response updateEntity(@PathParam(value = "site") String siteId, 
+                                 @QueryParam(value = "id") String id, 
                                  @QueryParam(value = "create") @DefaultValue("true") boolean allowCreate,
                                  Map<String,Representation> parsed,
                                  @Context HttpHeaders headers){
@@ -345,10 +342,10 @@ public class ReferencedSiteRootResource 
         log.info("Headers: "+headers.getRequestHeaders());
         log.info("Entity: "+id);
         log.info("Representations : {} parsed", parsed.size());
-        return updateOrCreateEntity(id, parsed, HttpMethod.PUT, allowCreate, true, headers);
+        return updateOrCreateEntity(getSite(siteId), id, parsed, HttpMethod.PUT, allowCreate, true, headers);
     }
     
-    private Response updateOrCreateEntity(String id,
+    private Response updateOrCreateEntity(Site site, String id,
                                           Map<String,Representation> parsed,
                                           String requestMethod,
                                           boolean create,
@@ -366,7 +363,7 @@ public class ReferencedSiteRootResource 
                 String.format("The Site '%s' is not managed and does not support "
                     +"create/update nor delete operations",site.getId()))
             .header(HttpHeaders.ACCEPT, accepted);
-            addCORSOrigin(servletContext, builder, headers);
+            //addCORSOrigin(servletContext, builder, headers);
             return builder.build();
         }
         //(1) if an id is parsed we need to ignore all other representations
@@ -377,7 +374,7 @@ public class ReferencedSiteRootResource 
                 .entity(String.format("Parsed RDF data do not contain any "
                     + "Information about the parsed id '%s'",id))
                     .header(HttpHeaders.ACCEPT, accepted);
-                addCORSOrigin(servletContext, builder, headers);
+                //addCORSOrigin(servletContext, builder, headers);
                 return builder.build();
             } else {
                 parsed = Collections.singletonMap(id, r);
@@ -401,7 +398,7 @@ public class ReferencedSiteRootResource 
                             "Entity within the Entityhub (Message: %s)",
                             entry.getKey(),e.getMessage()))
                             .header(HttpHeaders.ACCEPT, accepted);
-                    addCORSOrigin(servletContext, builder, headers);
+                    //addCORSOrigin(servletContext, builder, headers);
                     return builder.build();
                 }
                 if((exists && !update) || (!exists && !create)){
@@ -414,7 +411,7 @@ public class ReferencedSiteRootResource 
                         exists ? "does already" : "does not exists",
                         exists ? "update" : "create"))
                         .header(HttpHeaders.ACCEPT, accepted);
-                    addCORSOrigin(servletContext, builder, headers);
+                    //addCORSOrigin(servletContext, builder, headers);
                     return builder.build();
 
                 }
@@ -433,7 +430,7 @@ public class ReferencedSiteRootResource 
                 + managedSite.getId() +" because of an error (Message: "
                 + e.getMessage()+")")
             .header(HttpHeaders.ACCEPT, accepted);
-            addCORSOrigin(servletContext, builder, headers);
+            //addCORSOrigin(servletContext, builder, headers);
             return builder.build();
         }
         ResponseBuilder builder;
@@ -447,18 +444,20 @@ public class ReferencedSiteRootResource 
         }
         log.info("   ... create/update {} entities in {}ms",
             parsed.size(),System.currentTimeMillis()-validateCompleted);
-        addCORSOrigin(servletContext, builder, headers);
+        //addCORSOrigin(servletContext, builder, headers);
         return builder.build();
     }
 
     @DELETE
     @Path("entity/")
-    public Response deleteEntity(@QueryParam(value="id") String id,
+    public Response deleteEntity(@PathParam(value = "site") String siteId,
+                                 @QueryParam(value="id") String id,
                                  @Context HttpHeaders headers){
         MediaType accepted = getAcceptableMediaType(headers,
             JerseyUtils.ENTITY_SUPPORTED_MEDIA_TYPES, 
             MediaType.APPLICATION_JSON_TYPE);
         ManagedSite managedSite;
+        Site site = getSite(siteId);
         if(site instanceof ManagedSite){
             managedSite = (ManagedSite)site;
         } else {
@@ -466,14 +465,14 @@ public class ReferencedSiteRootResource 
                 String.format("The Site '%s' is not managed and does not support "
                     +"create/update nor delete operations",site.getId()))
             .header(HttpHeaders.ACCEPT, accepted);
-            addCORSOrigin(servletContext, builder, headers);
+            //addCORSOrigin(servletContext, builder, headers);
             return builder.build();
         }
         if(id == null || id.isEmpty()){
             ResponseBuilder builder =  Response.status(Status.BAD_REQUEST).entity("The Request does" +
                     "not provide the id of the Entity to delete (parameter 'id').")
                     .header(HttpHeaders.ACCEPT, accepted);
-            addCORSOrigin(servletContext, builder, headers);
+            //addCORSOrigin(servletContext, builder, headers);
             return builder.build();
         }
         ResponseBuilder builder;
@@ -498,20 +497,21 @@ public class ReferencedSiteRootResource 
             .entity(message + ' '+ e.getClass().getSimpleName()+": "+ e.getMessage())
             .header(HttpHeaders.ACCEPT, accepted);
         }
-        addCORSOrigin(servletContext, builder, headers);
+        //addCORSOrigin(servletContext, builder, headers);
         return builder.build();
     }    
     @OPTIONS
     @Path("/find")
     public Response handleCorsPreflightFind(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers);
+        //enableCORS(servletContext, res, headers);
         return res.build();
     }
     
     @GET
     @Path("/find")
-    public Response findEntitybyGet(@QueryParam(value = "name") String name,
+    public Response findEntitybyGet(@PathParam(value = "site") String siteId,
+                                    @QueryParam(value = "name") String name,
                                     @QueryParam(value = "field") String field,
                                     @QueryParam(value = "lang") String language,
                                     // @QueryParam(value="select") String select,
@@ -519,12 +519,13 @@ public class ReferencedSiteRootResource 
                                     @QueryParam(value = "offset") @DefaultValue(value = "0") int offset,
                                     @QueryParam(value = "ldpath") String ldpath,
                                     @Context HttpHeaders headers) {
-        return findEntity(name, field, language, limit, offset, ldpath, headers);
+        return findEntity(siteId, name, field, language, limit, offset, ldpath, headers);
     }
     
     @POST
     @Path("/find")
-    public Response findEntity(@FormParam(value = "name") String name,
+    public Response findEntity(@PathParam(value = "site") String siteId,
+                               @FormParam(value = "name") String name,
                                @FormParam(value = "field") String parsedField,
                                @FormParam(value = "lang") String language,
                                // @FormParam(value="select") String select,
@@ -532,6 +533,7 @@ public class ReferencedSiteRootResource 
                                @FormParam(value = "offset") Integer offset,
                                @FormParam(value = "ldpath") String ldpath,
                                @Context HttpHeaders headers) {
+        Site site = getSite(siteId);
         log.debug("site/{}/find Request",site.getId());
         Collection<String> supported = new HashSet<String>(JerseyUtils.QUERY_RESULT_SUPPORTED_MEDIA_TYPES);
         supported.add(TEXT_HTML);
@@ -541,7 +543,7 @@ public class ReferencedSiteRootResource 
             if(MediaType.TEXT_HTML_TYPE.isCompatible(acceptedMediaType)){
                 ResponseBuilder rb = Response.ok(new Viewable("find", this));
                 rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-                addCORSOrigin(servletContext, rb, headers);
+                //addCORSOrigin(servletContext, rb, headers);
                 return rb.build();
             } else {
                 return Response.status(Status.BAD_REQUEST)
@@ -568,7 +570,7 @@ public class ReferencedSiteRootResource 
                 }
             }
         }
-        return executeQuery(createFieldQueryForFindRequest(
+        return executeQuery(site, createFieldQueryForFindRequest(
                 name, property, language,
                 limit == null || limit < 1 ? DEFAULT_FIND_RESULT_LIMIT : limit, 
                 offset,ldpath),
@@ -579,7 +581,7 @@ public class ReferencedSiteRootResource 
     @Path("/query")
     public Response handleCorsPreflightQuery(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers);
+        //enableCORS(servletContext, res, headers);
         return res.build();
     }
     /**
@@ -596,9 +598,10 @@ public class ReferencedSiteRootResource 
     @POST
     @Path("/query")
     @Consumes( {APPLICATION_JSON})
-    public Response queryEntities(FieldQuery query,
+    public Response queryEntities(@PathParam(value = "site") String siteId,
+                                  FieldQuery query,
                                   @Context HttpHeaders headers) {
-        return executeQuery(query,headers);
+        return executeQuery(getSite(siteId), query,headers);
     }
     @GET
     @Path("/query")
@@ -606,7 +609,7 @@ public class ReferencedSiteRootResource 
     public Response getQueryDocumentation(@Context HttpHeaders headers){
         ResponseBuilder rb = Response.ok(new Viewable("query", this));
         rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-        addCORSOrigin(servletContext, rb, headers);
+        //addCORSOrigin(servletContext, rb, headers);
         return rb.build();
     }
     
@@ -619,12 +622,12 @@ public class ReferencedSiteRootResource 
      * @param headers the request headers
      * @return the response (results of error)
      */
-    private Response executeQuery(FieldQuery query, HttpHeaders headers) throws WebApplicationException {
+    private Response executeQuery(Site site, FieldQuery query, HttpHeaders headers) throws WebApplicationException {
         MediaType mediaType = getAcceptableMediaType(headers, ENTITY_SUPPORTED_MEDIA_TYPES, 
             APPLICATION_JSON_TYPE);
         if(query instanceof LDPathSelect && ((LDPathSelect)query).getLDPathSelect() != null){
             //use the LDPath variant to process this query
-            return executeLDPathQuery(query, ((LDPathSelect)query).getLDPathSelect(),
+            return executeLDPathQuery(site, query, ((LDPathSelect)query).getLDPathSelect(),
                 mediaType, headers);
         } else { //use the default query execution
             QueryResultList<Representation> result;
@@ -640,7 +643,7 @@ public class ReferencedSiteRootResource 
             }
             ResponseBuilder rb = Response.ok(result);
             rb.header(HttpHeaders.CONTENT_TYPE, mediaType+"; charset=utf-8");
-            addCORSOrigin(servletContext, rb, headers);
+            //addCORSOrigin(servletContext, rb, headers);
             return rb.build();
         }
     }
@@ -652,7 +655,7 @@ public class ReferencedSiteRootResource 
      * @param headers the http headers of the request
      * @return the response
      */
-    private Response executeLDPathQuery(FieldQuery query, String ldpathProgramString, MediaType mediaType, HttpHeaders headers) {
+    private Response executeLDPathQuery(Site site, FieldQuery query, String ldpathProgramString, MediaType mediaType, HttpHeaders headers) {
         QueryResultList<Representation> result;
         ValueFactory vf = new RdfValueFactory(new IndexedMGraph());
         SiteBackend backend = new SiteBackend(site,vf);
@@ -702,7 +705,7 @@ public class ReferencedSiteRootResource 
         result = new QueryResultListImpl<Representation>(query, transformedResults, Representation.class);
         ResponseBuilder rb = Response.ok(result);
         rb.header(HttpHeaders.CONTENT_TYPE, mediaType+"; charset=utf-8");
-        addCORSOrigin(servletContext, rb, headers);
+        //addCORSOrigin(servletContext, rb, headers);
         return rb.build();
     }
 
@@ -714,25 +717,27 @@ public class ReferencedSiteRootResource 
     @Path("/ldpath")
     public Response handleCorsPreflightLDPath(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers,OPTIONS,GET,POST);
+        //enableCORS(servletContext, res, headers,OPTIONS,GET,POST);
         return res.build();
     }
     @GET
     @Path("/ldpath")
-    public Response handleLDPathGet(
+    public Response handleLDPathGet(@PathParam(value = "site") String siteId,
             @QueryParam(value = "context")Set<String> contexts,
             @QueryParam(value = "ldpath")String ldpath,
             @Context HttpHeaders headers){
-        return handleLDPathPost(contexts, ldpath, headers);
+        return handleLDPathPost(siteId, contexts, ldpath, headers);
     }
     @POST
     @Path("/ldpath")
     public Response handleLDPathPost(
+             @PathParam(value = "site") String siteId,
              @FormParam(value = "context")Set<String> contexts,
              @FormParam(value = "ldpath")String ldpath,
              @Context HttpHeaders headers){
+        Site site = getSite(siteId);
         return handleLDPathRequest(this,new SiteBackend(site), 
-            ldpath, contexts, headers, servletContext);
+            ldpath, contexts, headers);
     }
     
     /*
@@ -743,7 +748,7 @@ public class ReferencedSiteRootResource 
      * @param context
      * @return
      */
-    private Representation site2Representation(String id){
+    private Representation site2Representation(Site site, String id){
         RdfValueFactory valueFactory = RdfValueFactory.getInstance();
         RdfRepresentation rep = valueFactory.createRepresentation(id);
         String namespace = NamespaceEnum.entityhub.getNamespace();
@@ -822,10 +827,4 @@ public class ReferencedSiteRootResource 
         return rep;
     }
     
-    public boolean isManagedSite(){
-        return site instanceof ManagedSite;
-    }
-    public Site getSite(){
-        return site;
-    }
 }

Modified: stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource.java
URL: http://svn.apache.org/viewvc/stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource.java?rev=1497076&r1=1497075&r2=1497076&view=diff
==============================================================================
--- stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource.java (original)
+++ stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource.java Wed Jun 26 20:23:00 2013
@@ -26,8 +26,6 @@ import static org.apache.clerezza.rdf.co
 import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.RDF_XML;
 import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.TURTLE;
 import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.X_TURTLE;
-import static org.apache.stanbol.commons.web.base.CorsHelper.addCORSOrigin;
-import static org.apache.stanbol.commons.web.base.CorsHelper.enableCORS;
 import static org.apache.stanbol.commons.web.base.utils.MediaTypeUtil.getAcceptableMediaType;
 import static org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.getLDPathParseExceptionMessage;
 import static org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.handleLDPathRequest;
@@ -66,7 +64,6 @@ import org.apache.stanbol.commons.indexe
 import org.apache.stanbol.commons.namespaceprefix.NamespaceMappingUtils;
 import org.apache.stanbol.commons.namespaceprefix.NamespacePrefixService;
 import org.apache.stanbol.commons.viewable.Viewable;
-import org.apache.stanbol.commons.web.base.ContextHelper;
 import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
 import org.apache.stanbol.entityhub.core.query.QueryResultListImpl;
 import org.apache.stanbol.entityhub.jersey.utils.JerseyUtils;
@@ -87,6 +84,10 @@ import org.slf4j.LoggerFactory;
 
 import at.newmedialab.ldpath.exception.LDPathParseException;
 import at.newmedialab.ldpath.model.programs.Program;
+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.Service;
 
 
 /**
@@ -94,12 +95,19 @@ import at.newmedialab.ldpath.model.progr
  * 
  * TODO: add description
  */
+@Component
+@Service(Object.class)
+@Property(name="javax.ws.rs", boolValue=true)
 @Path("/entityhub/sites")
 public class SiteManagerRootResource extends BaseStanbolResource {
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
+    @Reference
     private NamespacePrefixService nsPrefixService;
+    
+    @Reference
+    private SiteManager referencedSiteManager;
 
     public static final Set<String> RDF_MEDIA_TYPES = new TreeSet<String>(Arrays.asList(N3, N_TRIPLE,
         RDF_XML, TURTLE, X_TURTLE, RDF_JSON));
@@ -116,22 +124,18 @@ public class SiteManagerRootResource ext
     private static final int DEFAULT_FIND_RESULT_LIMIT = 5;
 
     
-    public SiteManagerRootResource(@Context ServletContext context) {
-        super();
-        nsPrefixService = ContextHelper.getServiceFromContext(NamespacePrefixService.class, context);
-    }
 
     @OPTIONS
     public Response handleCorsPreflight(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers);
+        //enableCORS(servletContext, res, headers);
         return res.build();
     }
     @OPTIONS
     @Path("/find")
     public Response handleCorsPreflightFind(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers);
+        //enableCORS(servletContext, res, headers);
         return res.build();
     }
     
@@ -139,7 +143,7 @@ public class SiteManagerRootResource ext
     @Path("/query")
     public Response handleCorsPreflightQuery(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers);
+        //enableCORS(servletContext, res, headers);
         return res.build();
     }
 
@@ -148,7 +152,7 @@ public class SiteManagerRootResource ext
     public Response getSitesPage(@Context HttpHeaders headers) {
         ResponseBuilder rb =  Response.ok(new Viewable("index", this));
         rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-        addCORSOrigin(servletContext, rb, headers);
+        //addCORSOrigin(servletContext, rb, headers);
         return rb.build();
     }
 
@@ -178,18 +182,16 @@ public class SiteManagerRootResource ext
         if(MediaType.TEXT_HTML_TYPE.isCompatible(acceptable)){
             ResponseBuilder rb =  Response.ok(new Viewable("referenced", this));
             rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-            addCORSOrigin(servletContext, rb, headers);
+            //addCORSOrigin(servletContext, rb, headers);
             return rb.build();
         } else {
-            SiteManager referencedSiteManager = ContextHelper.getServiceFromContext(
-                SiteManager.class, servletContext);
             JSONArray referencedSites = new JSONArray();
             for (String site : referencedSiteManager.getSiteIds()) {
                 referencedSites.put(String.format("%sentityhub/site/%s/", uriInfo.getBaseUri(), site));
             }
             ResponseBuilder rb =  Response.ok(referencedSites);
             rb.header(HttpHeaders.CONTENT_TYPE, acceptable+"; charset=utf-8");
-            addCORSOrigin(servletContext, rb, headers);
+            //addCORSOrigin(servletContext, rb, headers);
             return rb.build();
         }
     }
@@ -198,7 +200,7 @@ public class SiteManagerRootResource ext
     @Path("/entity")
     public Response handleCorsPreflightEntity(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers,OPTIONS,GET);
+        //enableCORS(servletContext, res, headers,OPTIONS,GET);
         return res.build();
     }
     /**
@@ -224,7 +226,7 @@ public class SiteManagerRootResource ext
             if(MediaType.TEXT_HTML_TYPE.isCompatible(acceptedMediaType)){
                 ResponseBuilder rb =  Response.ok(new Viewable("entity", this));
                 rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-                addCORSOrigin(servletContext, rb, headers);
+                //addCORSOrigin(servletContext, rb, headers);
                 return rb.build();
             } else {
                 return Response.status(Status.BAD_REQUEST)
@@ -232,13 +234,11 @@ public class SiteManagerRootResource ext
                     .header(HttpHeaders.ACCEPT, acceptedMediaType).build();
             }
         }
-        SiteManager referencedSiteManager = ContextHelper.getServiceFromContext(
-            SiteManager.class, servletContext);
         Entity sign = referencedSiteManager.getEntity(id);
         if (sign != null) {
             ResponseBuilder rb = Response.ok(sign);
             rb.header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8");
-            addCORSOrigin(servletContext, rb, headers);
+            //addCORSOrigin(servletContext, rb, headers);
             return rb.build();
         } else {
             // TODO: How to parse an ErrorMessage?
@@ -290,7 +290,7 @@ public class SiteManagerRootResource ext
             if(MediaType.TEXT_HTML_TYPE.isCompatible(acceptedMediaType)){
                 ResponseBuilder rb =  Response.ok(new Viewable("find", this));
                 rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-                addCORSOrigin(servletContext, rb, headers);
+                //addCORSOrigin(servletContext, rb, headers);
                 return rb.build();
             } else {
                 return Response.status(Status.BAD_REQUEST)
@@ -319,15 +319,14 @@ public class SiteManagerRootResource ext
         }        
         FieldQuery query = JerseyUtils.createFieldQueryForFindRequest(name, property, language,
             limit == null || limit < 1 ? DEFAULT_FIND_RESULT_LIMIT : limit, offset,ldpath);
-        return executeQuery(ContextHelper.getServiceFromContext(
-            SiteManager.class, servletContext), query, acceptedMediaType, headers);
+        return executeQuery(referencedSiteManager, query, acceptedMediaType, headers);
     }
     @GET
     @Path("/query")
     public Response getQueryDocumentation(@Context HttpHeaders headers){
         ResponseBuilder rb = Response.ok(new Viewable("query", this));
         rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");  
-        addCORSOrigin(servletContext, rb, headers);
+        //addCORSOrigin(servletContext, rb, headers);
         return rb.build();
     }
     /**
@@ -363,8 +362,7 @@ public class SiteManagerRootResource ext
                     .header(HttpHeaders.ACCEPT, acceptedMediaType).build();
             }
         } else {
-            return executeQuery(ContextHelper.getServiceFromContext(
-                SiteManager.class, servletContext), query, acceptedMediaType, headers);
+            return executeQuery(referencedSiteManager, query, acceptedMediaType, headers);
         }
     }
     /*
@@ -374,7 +372,7 @@ public class SiteManagerRootResource ext
     @Path("/ldpath")
     public Response handleCorsPreflightLDPath(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers,OPTIONS,GET,POST);
+        //enableCORS(servletContext, res, headers,OPTIONS,GET,POST);
         return res.build();
     }
     @GET
@@ -391,10 +389,8 @@ public class SiteManagerRootResource ext
              @FormParam(value = "context")Set<String> contexts,
              @FormParam(value = "ldpath")String ldpath,
              @Context HttpHeaders headers){
-        SiteManager referencedSiteManager = ContextHelper.getServiceFromContext(
-            SiteManager.class, servletContext);
         return handleLDPathRequest(this,new SiteManagerBackend(referencedSiteManager), 
-            ldpath, contexts, headers, servletContext);
+            ldpath, contexts, headers);
     }
     /**
      * Executes the query parsed by {@link #queryEntities(String, File, HttpHeaders)} or created based
@@ -417,7 +413,7 @@ public class SiteManagerRootResource ext
             QueryResultList<Representation> result = manager.find(query);
             ResponseBuilder rb = Response.ok(result);
             rb.header(HttpHeaders.CONTENT_TYPE, mediaType+"; charset=utf-8");
-            addCORSOrigin(servletContext, rb, headers);
+            //addCORSOrigin(servletContext, rb, headers);
             return rb.build();
         }
     }
@@ -472,7 +468,7 @@ public class SiteManagerRootResource ext
         result = new QueryResultListImpl<Representation>(query, transformedResults, Representation.class);
         ResponseBuilder rb = Response.ok(result);
         rb.header(HttpHeaders.CONTENT_TYPE, mediaType+"; charset=utf-8");
-        addCORSOrigin(servletContext, rb, headers);
+        //addCORSOrigin(servletContext, rb, headers);
         return rb.build();
     }
 }

Modified: stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/reconcile/BaseGoogleRefineReconcileResource.java
URL: http://svn.apache.org/viewvc/stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/reconcile/BaseGoogleRefineReconcileResource.java?rev=1497076&r1=1497075&r2=1497076&view=diff
==============================================================================
--- stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/reconcile/BaseGoogleRefineReconcileResource.java (original)
+++ stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/reconcile/BaseGoogleRefineReconcileResource.java Wed Jun 26 20:23:00 2013
@@ -17,8 +17,6 @@
 package org.apache.stanbol.entityhub.jersey.resource.reconcile;
 
 import static javax.ws.rs.core.MediaType.TEXT_HTML;
-import static org.apache.stanbol.commons.web.base.CorsHelper.addCORSOrigin;
-import static org.apache.stanbol.commons.web.base.CorsHelper.enableCORS;
 import static org.apache.stanbol.entityhub.servicesapi.model.rdf.RdfResourceEnum.resultScore;
 
 import java.util.ArrayList;
@@ -39,6 +37,7 @@ import javax.ws.rs.FormParam;
 import javax.ws.rs.GET;
 import javax.ws.rs.OPTIONS;
 import javax.ws.rs.POST;
+import javax.ws.rs.PathParam;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Context;
@@ -46,12 +45,11 @@ import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.ResponseBuilder;
+import org.apache.felix.scr.annotations.Component;
 
 import org.apache.stanbol.commons.namespaceprefix.NamespaceMappingUtils;
 import org.apache.stanbol.commons.namespaceprefix.NamespacePrefixService;
 import org.apache.stanbol.commons.viewable.Viewable;
-import org.apache.stanbol.commons.web.base.ContextHelper;
-import org.apache.stanbol.commons.web.base.CorsHelper;
 import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
 import org.apache.stanbol.commons.web.base.utils.MediaTypeUtil;
 import org.apache.stanbol.entityhub.jersey.grefine.ReconcileProperty;
@@ -88,6 +86,9 @@ import org.slf4j.LoggerFactory;
  * @author Rupert Westenthaler
  *
  */
+//TODO rather than having the siteId as path param here instances of this class 
+//should be returned as subresource
+@Component(componentAbstract = true)
 public abstract class BaseGoogleRefineReconcileResource extends BaseStanbolResource {
 
     private final Logger log = LoggerFactory.getLogger(BaseGoogleRefineReconcileResource.class);
@@ -109,38 +110,37 @@ public abstract class BaseGoogleRefineRe
         }
         
     };
-    
-    protected final NamespacePrefixService nsPrefixService;
+    @org.apache.felix.scr.annotations.Reference
+    private NamespacePrefixService nsPrefixService;
 
-    protected BaseGoogleRefineReconcileResource(ServletContext context){
-        super();
-        nsPrefixService = ContextHelper.getServiceFromContext(
-            NamespacePrefixService.class, context);
+    protected BaseGoogleRefineReconcileResource(){
     }
     
     @OPTIONS
     public final Response handleCorsPreflight(@Context HttpHeaders headers){
         ResponseBuilder res = Response.ok();
-        enableCORS(servletContext, res, headers);
+        //enableCORS(servletContext, res, headers);
         return res.build();
     }
     
     @POST
-    public final Response queryPOST(@FormParam(value="query") String query, 
+    public final Response queryPOST(@PathParam(value = "site") String siteId,
+                          @FormParam(value="query") String query, 
                           @FormParam(value="queries")String queries,
                           @FormParam(value="callback")String callback,
                           @Context HttpHeaders header) throws WebApplicationException {
-        return query(query,queries,callback,header);
+        return query(siteId, query,queries,callback,header);
     }
     @GET
-    public final Response query(@QueryParam(value="query") String query, 
+    public final Response query(@PathParam(value = "site") String siteId,
+                          @QueryParam(value="query") String query, 
                           @QueryParam(value="queries")String queries,
                           @QueryParam(value="callback")String callback,
                           @Context HttpHeaders header) throws WebApplicationException {
         if(callback != null){
             log.info("callback: {}",callback);
             try {
-                return sendMetadata(callback,header);
+                return sendMetadata(siteId,callback,header);
             } catch (JSONException e) {
                 throw new WebApplicationException(e);
             }
@@ -149,7 +149,7 @@ public abstract class BaseGoogleRefineRe
         if(query != null){
             log.debug("query: {}",query);
             try {
-                jResult = reconcile(ReconcileQuery.parseQuery(query,nsPrefixService));
+                jResult = reconcile(siteId, ReconcileQuery.parseQuery(query,nsPrefixService));
             } catch (JSONException e) {
                 throw new WebApplicationException(
                     Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
@@ -159,12 +159,12 @@ public abstract class BaseGoogleRefineRe
                 throw new WebApplicationException(
                     Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
                         String.format("Error while searching on %s (%s: %s)",
-                            getSiteName(),SiteException.class.getSimpleName(),e.getMessage())).build());
+                            getSiteName(siteId),SiteException.class.getSimpleName(),e.getMessage())).build());
             }
         } else if(queries != null){
             log.debug("multi-query: {}",queries);
             try {
-                jResult = reconcile(ReconcileQuery.parseQueries(queries,nsPrefixService));
+                jResult = reconcile(siteId, ReconcileQuery.parseQueries(queries,nsPrefixService));
             } catch (JSONException e) {
                 throw new WebApplicationException(
                     Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
@@ -174,13 +174,13 @@ public abstract class BaseGoogleRefineRe
                 throw new WebApplicationException(
                     Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
                         String.format("Error while searching on %s (%s: %s)",
-                            getSiteName(),SiteException.class.getSimpleName(),e.getMessage())).build());
+                            getSiteName(siteId),SiteException.class.getSimpleName(),e.getMessage())).build());
             }
         } else {
             if(MediaTypeUtil.isAcceptableMediaType(header,MediaType.TEXT_HTML_TYPE)){
                 ResponseBuilder rb = Response.ok(new Viewable("index", this, BaseGoogleRefineReconcileResource.class));
                 rb.header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8");
-                addCORSOrigin(servletContext, rb, header);
+                //addCORSOrigin(servletContext, rb, header);
                 return rb.build();
             }
             throw new WebApplicationException(
@@ -189,28 +189,28 @@ public abstract class BaseGoogleRefineRe
         }
         //return the results and enable Cors
         ResponseBuilder rb = Response.ok(jResult.toString()).type(MediaType.APPLICATION_JSON_TYPE);
-        CorsHelper.addCORSOrigin(servletContext, rb, header);
+        //CorsHelper.addCORSOrigin(servletContext, rb, header);
         return rb.build();
 
     }
 
 
-    private JSONObject reconcile(Map<String,ReconcileQuery> parsedQueries) throws JSONException, EntityhubException {
+    private JSONObject reconcile(@PathParam(value = "site") String siteId, Map<String,ReconcileQuery> parsedQueries) throws JSONException, EntityhubException {
         JSONObject container = new JSONObject();
         for(Entry<String,ReconcileQuery> query : parsedQueries.entrySet()){
-            container.put(query.getKey(), reconcile(query.getValue()));
+            container.put(query.getKey(), reconcile(siteId, query.getValue()));
         }
         return container;
     }
 
-    private JSONObject reconcile(ReconcileQuery rQuery) throws JSONException, EntityhubException {
-        FieldQuery query = createFieldQuery();
+    private JSONObject reconcile(String siteId, ReconcileQuery rQuery) throws JSONException, EntityhubException {
+        FieldQuery query = createFieldQuery(siteId);
         query.addSelectedFields(SELECTED_FIELDS);
         addNameConstraint(rQuery, query);
         addTypeConstraint(rQuery, query);
         addPropertyConstraints(rQuery, query);
         query.setLimit(query.getLimit());
-        QueryResultList<Representation> results = performQuery(query);
+        QueryResultList<Representation> results = performQuery(siteId, query);
         List<JSONObject> jResultList = new ArrayList<JSONObject>(results.size());
         //we need to know the highest score to normalise between [0..1]
         double maxQueryScore = -1;
@@ -260,19 +260,19 @@ public abstract class BaseGoogleRefineRe
      * @return
      * @throws SiteException
      */
-    protected abstract QueryResultList<Representation> performQuery(FieldQuery query) throws EntityhubException;
+    protected abstract QueryResultList<Representation> performQuery(String siteId, FieldQuery query) throws EntityhubException;
     
     /**
      * Getter for the name of the Site as used for logging
      * @return
      */
-    protected abstract String getSiteName();
+    protected abstract String getSiteName(String siteId);
     
     /**
      * Creates a new FieldQuery
      * @return
      */
-    protected abstract FieldQuery createFieldQuery();
+    protected abstract FieldQuery createFieldQuery(String siteId);
     
     /**
      * @param rQuery
@@ -472,16 +472,17 @@ public abstract class BaseGoogleRefineRe
      * @return
      * @throws JSONException
      */
-    protected Response sendMetadata(String callback, HttpHeaders header) throws JSONException {
+    protected Response sendMetadata(String siteId, 
+            String callback, HttpHeaders header) throws JSONException {
         //TODO: implement!!
         JSONObject jMetadata = new JSONObject();
-        jMetadata.put("name", "Stanbol Entityhub: "+getSiteName());
+        jMetadata.put("name", "Stanbol Entityhub: "+getSiteName(siteId));
         StringBuilder callbackString = new StringBuilder(callback);
         callbackString.append('(');
         callbackString.append(jMetadata.toString());
         callbackString.append(')');
         ResponseBuilder rb = Response.ok(callbackString.toString()).type(MediaType.APPLICATION_JSON_TYPE);
-        CorsHelper.addCORSOrigin(servletContext, rb, header);
+        //CorsHelper.addCORSOrigin(servletContext, rb, header);
         return rb.build();
     }
 }

Modified: stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/reconcile/EntityhubReconcileResource.java
URL: http://svn.apache.org/viewvc/stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/reconcile/EntityhubReconcileResource.java?rev=1497076&r1=1497075&r2=1497076&view=diff
==============================================================================
--- stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/reconcile/EntityhubReconcileResource.java (original)
+++ stanbol/branches/commons-ng/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/reconcile/EntityhubReconcileResource.java Wed Jun 26 20:23:00 2013
@@ -19,45 +19,45 @@ package org.apache.stanbol.entityhub.jer
 import javax.servlet.ServletContext;
 import javax.ws.rs.Path;
 import javax.ws.rs.core.Context;
+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.Service;
 
-import org.apache.stanbol.commons.web.base.ContextHelper;
 import org.apache.stanbol.entityhub.servicesapi.Entityhub;
 import org.apache.stanbol.entityhub.servicesapi.EntityhubException;
 import org.apache.stanbol.entityhub.servicesapi.model.Representation;
 import org.apache.stanbol.entityhub.servicesapi.query.FieldQuery;
 import org.apache.stanbol.entityhub.servicesapi.query.QueryResultList;
 
+@Component
+@Service(Object.class)
+@Property(name="javax.ws.rs", boolValue=true)
 @Path("/entityhub/reconcile")
 public class EntityhubReconcileResource extends BaseGoogleRefineReconcileResource {
 
     private Entityhub _entityhub;
     
-    public EntityhubReconcileResource(@Context ServletContext context) {
-        super(context);
-    }
-    private Entityhub getEntityhub(){
-        if(_entityhub == null){
-            _entityhub = ContextHelper.getServiceFromContext(Entityhub.class, servletContext);
-            if(_entityhub == null){
-                throw new IllegalArgumentException("The Entityhub service is currently not available!");
-            }
-        }
-        return _entityhub;
+    public EntityhubReconcileResource() {
+        super();
     }
     
+    @Reference
+    private Entityhub entityhub;
+    
     @Override
-    protected QueryResultList<Representation> performQuery(FieldQuery query) throws EntityhubException {
-        return getEntityhub().find(query);
+    protected QueryResultList<Representation> performQuery(String siteId, FieldQuery query) throws EntityhubException {
+        return entityhub.find(query);
     }
 
     @Override
-    protected String getSiteName() {
+    protected String getSiteName(String siteId) {
         return "Entityhub (local managed Entities)";
     }
 
     @Override
-    protected FieldQuery createFieldQuery() {
-        return getEntityhub().getQueryFactory().createFieldQuery();
+    protected FieldQuery createFieldQuery(String siteId) {
+        return entityhub.getQueryFactory().createFieldQuery();
     }
 
 }