Author: reto
Date: Wed Feb  6 10:43:36 2013
New Revision: 1442896

URL: http://svn.apache.org/viewvc?rev=1442896&view=rev
Log:
STANBOL-911: Reistering jax-rs resources from the whiteboard

Modified:
    
stanbol/trunk/commons/web/base.jersey/src/main/java/org/apache/stanbol/commons/web/base/jersey/JerseyEndpoint.java

Modified: 
stanbol/trunk/commons/web/base.jersey/src/main/java/org/apache/stanbol/commons/web/base/jersey/JerseyEndpoint.java
URL: 
http://svn.apache.org/viewvc/stanbol/trunk/commons/web/base.jersey/src/main/java/org/apache/stanbol/commons/web/base/jersey/JerseyEndpoint.java?rev=1442896&r1=1442895&r2=1442896&view=diff
==============================================================================
--- 
stanbol/trunk/commons/web/base.jersey/src/main/java/org/apache/stanbol/commons/web/base/jersey/JerseyEndpoint.java
 (original)
+++ 
stanbol/trunk/commons/web/base.jersey/src/main/java/org/apache/stanbol/commons/web/base/jersey/JerseyEndpoint.java
 Wed Feb  6 10:43:36 2013
@@ -47,6 +47,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.sun.jersey.spi.container.servlet.ServletContainer;
+import java.util.Collection;
+import org.apache.felix.scr.annotations.References;
 import org.apache.stanbol.commons.web.base.DefaultApplication;
 import org.apache.stanbol.commons.web.base.LinkResource;
 import org.apache.stanbol.commons.web.base.NavigationLink;
@@ -60,7 +62,15 @@ import org.apache.stanbol.commons.web.ba
  * resources.
  */
 @Component(immediate = true, metatype = true)
-@Reference(name = "webFragment", referenceInterface = WebFragment.class, 
cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE, policy = 
ReferencePolicy.DYNAMIC)
+@References({
+    @Reference(name = "webFragment", 
+        referenceInterface = WebFragment.class, 
+        cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE, 
+        policy = ReferencePolicy.DYNAMIC),
+    @Reference(name="component", referenceInterface=Object.class, 
+        target="(javax.ws.rs=true)", 
+               cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE, 
+        policy=ReferencePolicy.DYNAMIC)})
 public class JerseyEndpoint {
 
     private final Logger log = LoggerFactory.getLogger(getClass());
@@ -94,6 +104,7 @@ public class JerseyEndpoint {
     protected Set<String> corsOrigins;
 
     protected Set<String> exposedHeaders;
+    private Set<Object> components = new HashSet<Object>();
 
     public Dictionary<String,String> getInitParams() {
         Dictionary<String,String> initParams = new Hashtable<String,String>();
@@ -181,6 +192,7 @@ public class JerseyEndpoint {
             app.contributeClasses(fragment.getJaxrsResourceClasses());
             app.contributeSingletons(fragment.getJaxrsResourceSingletons());
         }
+        app.contributeSingletons(components);
         Collections.sort(linkResources);
         Collections.sort(scriptResources);
         Collections.sort(navigationLinks);
@@ -236,7 +248,21 @@ public class JerseyEndpoint {
         webFragments.remove(webFragment);
         initJersey();
     }
+    
+    protected void bindComponent(Object component) throws IOException,
+                                                          ServletException,
+                                                          NamespaceException  {
+        components.add(component);
+        initJersey();
+    }
 
+    protected void unbindComponent(Object component) throws IOException,
+                                                          ServletException,
+                                                          NamespaceException  {
+        components.remove(component);
+        initJersey();
+    }    
+    
     public List<WebFragment> getWebFragments() {
         return webFragments;
     }


Reply via email to