You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2014/01/29 19:59:16 UTC

svn commit: r1562548 - in /cxf/trunk/rt/frontend/jaxrs/src/main: java/org/apache/cxf/jaxrs/blueprint/JAXRSServerFactoryBeanDefinitionParser.java resources/schemas/blueprint/jaxrs.xsd

Author: sergeyb
Date: Wed Jan 29 18:59:15 2014
New Revision: 1562548

URL: http://svn.apache.org/r1562548
Log:
[CXF-5528] Support for interfaces in jaxrs Blueprint endpoints, patch from Heath Kesler applied

Modified:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/blueprint/JAXRSServerFactoryBeanDefinitionParser.java
    cxf/trunk/rt/frontend/jaxrs/src/main/resources/schemas/blueprint/jaxrs.xsd

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/blueprint/JAXRSServerFactoryBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/blueprint/JAXRSServerFactoryBeanDefinitionParser.java?rev=1562548&r1=1562547&r2=1562548&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/blueprint/JAXRSServerFactoryBeanDefinitionParser.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/blueprint/JAXRSServerFactoryBeanDefinitionParser.java Wed Jan 29 18:59:15 2014
@@ -18,6 +18,7 @@
  */
 package org.apache.cxf.jaxrs.blueprint;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.Callable;
 
@@ -31,6 +32,7 @@ import org.apache.aries.blueprint.mutabl
 import org.apache.aries.blueprint.mutable.MutablePassThroughMetadata;
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.configuration.blueprint.SimpleBPBeanDefinitionParser;
+import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.model.UserResource;
 import org.apache.cxf.jaxrs.utils.ResourceUtils;
@@ -97,6 +99,15 @@ public class JAXRSServerFactoryBeanDefin
             bean.addProperty(name, this.parseListData(ctx, bean, el));
         }  else if ("serviceFactories".equals(name)) {
             bean.addProperty("resourceProviders", this.parseListData(ctx, bean, el));
+        } else if ("resourceClasses".equals(name)) {
+            List<String> resources = getResourceClassesFromElement(el);
+            MutableCollectionMetadata list = ctx.createMetadata(MutableCollectionMetadata.class);
+            list.setCollectionClass(List.class);
+            for (String res : resources) {
+                MutableBeanMetadata objectOfClass = createObjectOfClass(ctx, res);
+                list.addValue(objectOfClass);
+            }
+            bean.addProperty("serviceBeans", list);
         } else if ("model".equals(name)) {
             List<UserResource> resources = ResourceUtils.getResourcesFromElement(el);
             MutableCollectionMetadata list = ctx.createMetadata(MutableCollectionMetadata.class);
@@ -146,4 +157,17 @@ public class JAXRSServerFactoryBeanDefin
         }
     }
 
+    private static List<String> getResourceClassesFromElement(Element modelEl) {
+        List<String> resources = new ArrayList<String>();
+        List<Element> resourceEls =
+            DOMUtils.findAllElementsByTagName(modelEl, "class");
+        for (Element e : resourceEls) {
+            resources.add(getResourceClassFromElement(e));
+        }
+        return resources;
+    }
+    
+    private static String getResourceClassFromElement(Element e) {
+        return e.getAttribute("name");
+    }
 }

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/resources/schemas/blueprint/jaxrs.xsd
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/resources/schemas/blueprint/jaxrs.xsd?rev=1562548&r1=1562547&r2=1562548&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/resources/schemas/blueprint/jaxrs.xsd (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/resources/schemas/blueprint/jaxrs.xsd Wed Jan 29 18:59:15 2014
@@ -48,6 +48,7 @@
             <xsd:element name="outFaultInterceptors" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="properties" type="beans:Tmap" minOccurs="0"/>
             <xsd:element name="serviceBeans" type="xsd:anyType" minOccurs="0"/>            
+            <xsd:element name="resourceClasses" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="modelBeans" type="xsd:anyType" minOccurs="0"/>
             <xsd:element name="model" type="tns:model" minOccurs="0"/>
             <xsd:element name="providers" type="xsd:anyType" minOccurs="0"/>