Author: ningjiang
Date: Fri Jul 22 03:50:16 2011
New Revision: 1149449
URL: http://svn.apache.org/viewvc?rev=1149449&view=rev
Log:
Merge branch 'CAMEL-4110' into trunk
Added:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/BlueprintSupport.java
- copied, changed from r1149088,
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerDefinitionParser.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientBlueprintBean.java
(with props)
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerBlueprintBean.java
(with props)
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsBlueprintEndpoint.java
(with props)
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/AbstractBeanDefinitionParser.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/CxfNamespaceHandler.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/EndpointDefinitionParser.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientDefinitionParser.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerDefinitionParser.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsSpringEndpoint.java
camel/trunk/tests/camel-itest-osgi/pom.xml
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/AbstractIntegrationTest.java
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/AbstractBeanDefinitionParser.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/AbstractBeanDefinitionParser.java?rev=1149449&r1=1149448&r2=1149449&view=diff
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/AbstractBeanDefinitionParser.java
(original)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/AbstractBeanDefinitionParser.java
Fri Jul 22 03:50:16 2011
@@ -17,8 +17,45 @@
package org.apache.camel.component.cxf.blueprint;
+import java.util.StringTokenizer;
+
+import org.w3c.dom.Element;
+
+import org.apache.aries.blueprint.ParserContext;
+import org.apache.aries.blueprint.mutable.MutableBeanMetadata;
+import org.apache.camel.component.cxf.CxfBlueprintEndpoint;
+import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.configuration.blueprint.AbstractBPBeanDefinitionParser;
public class AbstractBeanDefinitionParser extends
AbstractBPBeanDefinitionParser {
+ public static String getIdOrName(Element elem) {
+ String id = elem.getAttribute("id");
+
+ if (null == id || "".equals(id)) {
+ String names = elem.getAttribute("name");
+ if (null != names) {
+ StringTokenizer st = new StringTokenizer(names, ",");
+ if (st.countTokens() > 0) {
+ id = st.nextToken();
+ }
+ }
+ }
+ return id;
+ }
+
+ public MutableBeanMetadata createBeanMetadata(Element element,
ParserContext context, Class runtimeClass) {
+ MutableBeanMetadata answer =
context.createMetadata(MutableBeanMetadata.class);
+ answer.setRuntimeClass(runtimeClass);
+ answer.addProperty("blueprintContainer", createRef(context,
"blueprintContainer"));
+ answer.addProperty("bundleContext", createRef(context,
"blueprintBundleContext"));
+
+ if (!StringUtils.isEmpty(getIdOrName(element))) {
+ answer.setId(getIdOrName(element));
+ } else {
+ // TODO we may need to throw exception for it
+ answer.setId("camel.cxf.endpoint." + runtimeClass.getSimpleName()
+ "." + context.generateId());
+ }
+ return answer;
+ }
}
Copied:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/BlueprintSupport.java
(from r1149088,
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerDefinitionParser.java)
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/BlueprintSupport.java?p2=camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/BlueprintSupport.java&p1=camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerDefinitionParser.java&r1=1149088&r2=1149449&rev=1149449&view=diff
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerDefinitionParser.java
(original)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/BlueprintSupport.java
Fri Jul 22 03:50:16 2011
@@ -14,9 +14,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.camel.component.cxf.blueprint;
-public class RsServerDefinitionParser {
+import org.osgi.framework.BundleContext;
+import org.osgi.service.blueprint.container.BlueprintContainer;
+
+public interface BlueprintSupport {
+
+ void setBlueprintContainer(BlueprintContainer blueprintContainer);
+
+ BlueprintContainer getBlueprintContainer();
+
+ BundleContext getBundleContext();
+
+ void setBundleContext(BundleContext bundleContext);
}
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/CxfNamespaceHandler.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/CxfNamespaceHandler.java?rev=1149449&r1=1149448&r2=1149449&view=diff
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/CxfNamespaceHandler.java
(original)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/CxfNamespaceHandler.java
Fri Jul 22 03:50:16 2011
@@ -57,6 +57,14 @@ public class CxfNamespaceHandler impleme
LOG.debug("parsing the cxfEndpoint element");
answer = new EndpointDefinitionParser().parse(element, context);
}
+ if ("rsClient".equals(s)) {
+ LOG.debug("parsing the rsClient element");
+ answer = new RsClientDefinitionParser().parse(element, context);
+ }
+ if ("rsServer".equals(s)) {
+ LOG.debug("parsing the rsServer element");
+ answer = new RsServerDefinitionParser().parse(element, context);
+ }
return answer;
}
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/EndpointDefinitionParser.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/EndpointDefinitionParser.java?rev=1149449&r1=1149448&r2=1149449&view=diff
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/EndpointDefinitionParser.java
(original)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/EndpointDefinitionParser.java
Fri Jul 22 03:50:16 2011
@@ -17,9 +17,8 @@
package org.apache.camel.component.cxf.blueprint;
-import java.util.StringTokenizer;
-import java.util.concurrent.Callable;
import javax.xml.namespace.QName;
+
import org.w3c.dom.Attr;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
@@ -33,35 +32,12 @@ import org.apache.cxf.helpers.DOMUtils;
import org.osgi.framework.BundleContext;
import org.osgi.service.blueprint.reflect.Metadata;
-public class EndpointDefinitionParser extends AbstractBPBeanDefinitionParser {
-
- public static String getIdOrName(Element elem) {
- String id = elem.getAttribute("id");
-
- if (null == id || "".equals(id)) {
- String names = elem.getAttribute("name");
- if (null != names) {
- StringTokenizer st = new StringTokenizer(names, ",");
- if (st.countTokens() > 0) {
- id = st.nextToken();
- }
- }
- }
- return id;
- }
+public class EndpointDefinitionParser extends AbstractBeanDefinitionParser {
+
public Metadata parse(Element element, ParserContext context) {
- MutableBeanMetadata endpointConfig =
context.createMetadata(MutableBeanMetadata.class);
- endpointConfig.setRuntimeClass(CxfBlueprintEndpoint.class);
- endpointConfig.addProperty("blueprintContainer", createRef(context,
"blueprintContainer"));
- endpointConfig.addProperty("bundleContext", createRef(context,
"blueprintBundleContext"));
-
- if (!StringUtils.isEmpty(getIdOrName(element))) {
- endpointConfig.setId(getIdOrName(element));
- } else {
- endpointConfig.setId("camel.cxf.endpoint." + context.generateId());
- }
-
+ MutableBeanMetadata endpointConfig = createBeanMetadata(element,
context, CxfBlueprintEndpoint.class);
+
NamedNodeMap atts = element.getAttributes();
String bus = null;
@@ -119,17 +95,5 @@ public class EndpointDefinitionParser ex
return endpointConfig;
}
-
- public static class PassThroughCallable<T> implements Callable<T> {
-
- private T value;
-
- public PassThroughCallable(T value) {
- this.value = value;
- }
-
- public T call() throws Exception {
- return value;
- }
- }
+
}
Added:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientBlueprintBean.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientBlueprintBean.java?rev=1149449&view=auto
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientBlueprintBean.java
(added)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientBlueprintBean.java
Fri Jul 22 03:50:16 2011
@@ -0,0 +1,52 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.cxf.blueprint;
+
+import org.apache.camel.RuntimeCamelException;
+import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.blueprint.container.BlueprintContainer;
+
+public class RsClientBlueprintBean extends JAXRSClientFactoryBean implements
BlueprintSupport, Cloneable {
+ private BlueprintContainer blueprintContainer;
+ private BundleContext bundleContext;
+
+ public BlueprintContainer getBlueprintContainer() {
+ return blueprintContainer;
+ }
+
+ public void setBlueprintContainer(BlueprintContainer blueprintContainer) {
+ this.blueprintContainer = blueprintContainer;
+ }
+
+ public BundleContext getBundleContext() {
+ return bundleContext;
+ }
+
+ public void setBundleContext(BundleContext bundleContext) {
+ this.bundleContext = bundleContext;
+ }
+
+ public RsClientBlueprintBean copy() {
+ try {
+ return (RsClientBlueprintBean) clone();
+ } catch (CloneNotSupportedException e) {
+ throw new RuntimeCamelException(e);
+ }
+ }
+
+}
Propchange:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientBlueprintBean.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientBlueprintBean.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientDefinitionParser.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientDefinitionParser.java?rev=1149449&r1=1149448&r2=1149449&view=diff
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientDefinitionParser.java
(original)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsClientDefinitionParser.java
Fri Jul 22 03:50:16 2011
@@ -17,47 +17,87 @@
package org.apache.camel.component.cxf.blueprint;
+import java.util.List;
import java.util.StringTokenizer;
+import javax.xml.namespace.QName;
+
+import org.w3c.dom.Attr;
import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
import org.apache.aries.blueprint.ParserContext;
import org.apache.aries.blueprint.mutable.MutableBeanMetadata;
+import org.apache.aries.blueprint.mutable.MutablePassThroughMetadata;
+import org.apache.aries.blueprint.mutable.MutableValueMetadata;
import org.apache.camel.component.cxf.CxfBlueprintEndpoint;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.configuration.blueprint.AbstractBPBeanDefinitionParser;
+import org.apache.cxf.helpers.DOMUtils;
+import org.apache.cxf.jaxrs.model.UserResource;
+import org.apache.cxf.jaxrs.utils.ResourceUtils;
+import org.osgi.framework.BundleContext;
import org.osgi.service.blueprint.reflect.Metadata;
-public class RsClientDefinitionParser extends AbstractBPBeanDefinitionParser {
+public class RsClientDefinitionParser extends AbstractBeanDefinitionParser {
public Metadata parse(Element element, ParserContext context) {
- MutableBeanMetadata endpointConfig =
context.createMetadata(MutableBeanMetadata.class);
- endpointConfig.setRuntimeClass(CxfBlueprintEndpoint.class);
- endpointConfig.addProperty("blueprintContainer", createRef(context,
"blueprintContainer"));
- endpointConfig.addProperty("bundleContext", createRef(context,
"blueprintBundleContext"));
-
- if (!StringUtils.isEmpty(getIdOrName(element))) {
- endpointConfig.setId(getIdOrName(element));
- } else {
- endpointConfig.setId("camel.cxf.endpoint." + context.generateId());
- }
-
- return null;
- }
-
- public static String getIdOrName(Element elem) {
- String id = elem.getAttribute("id");
+ MutableBeanMetadata beanMetadata = createBeanMetadata(element,
context, RsClientBlueprintBean.class);
+ NamedNodeMap atts = element.getAttributes();
- if (null == id || "".equals(id)) {
- String names = elem.getAttribute("name");
- if (null != names) {
- StringTokenizer st = new StringTokenizer(names, ",");
- if (st.countTokens() > 0) {
- id = st.nextToken();
+ String bus = null;
+ for (int i = 0; i < atts.getLength(); i++) {
+ Attr node = (Attr) atts.item(i);
+ String val = node.getValue();
+ String pre = node.getPrefix();
+ String name = node.getLocalName();
+ if ("bus".equals(name)) {
+ bus = val;
+ } else if (isAttribute(pre, name)) {
+ if ("depends-on".equals(name)) {
+ beanMetadata.addDependsOn(val);
+ } else if (!"name".equals(name)) {
+ beanMetadata.addProperty(name,
AbstractBPBeanDefinitionParser.createValue(context, val));
}
}
}
- return id;
+
+ Element elem = DOMUtils.getFirstElement(element);
+ while (elem != null) {
+ String name = elem.getLocalName();
+ if ("properties".equals(name) || "headers".equals(name)) {
+ Metadata map = parseMapData(context, beanMetadata, elem);
+ beanMetadata.addProperty(name, map);
+ } else if ("binding".equals(name)) {
+ setFirstChildAsProperty(element, context, beanMetadata,
"bindingConfig");
+ } else if ("inInterceptors".equals(name) ||
"inFaultInterceptors".equals(name) || "outInterceptors".equals(name)
+ || "outFaultInterceptors".equals(name) ||
"features".equals(name) || "schemaLocations".equals(name) ||
"handlers".equals(name)) {
+ Metadata list = parseListData(context, beanMetadata, elem);
+ beanMetadata.addProperty(name, list);
+ } else if ("features".equals(name) || "providers".equals(name)
+ || "schemaLocations".equals(name) || "modelBeans".equals(name)
+ || "serviceBeans".equals(name)) {
+ Metadata list = parseListData(context, beanMetadata, elem);
+ beanMetadata.addProperty(name, list);
+ } else if ("model".equals(name)) {
+ List<UserResource> resources =
ResourceUtils.getResourcesFromElement(elem);
+ MutablePassThroughMetadata value =
context.createMetadata(MutablePassThroughMetadata.class);
+ value.setObject(resources);
+ beanMetadata.addProperty(name, value);
+ } else {
+ setFirstChildAsProperty(element, context, beanMetadata, name);
+ }
+ }
+
+ if (StringUtils.isEmpty(bus)) {
+ bus = "cxf";
+ }
+ //Will create a bus if needed...
+
+ beanMetadata.addProperty("bus", getBusRef(context, bus));
+ return beanMetadata;
}
+
+
}
Added:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerBlueprintBean.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerBlueprintBean.java?rev=1149449&view=auto
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerBlueprintBean.java
(added)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerBlueprintBean.java
Fri Jul 22 03:50:16 2011
@@ -0,0 +1,53 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.cxf.blueprint;
+
+import org.apache.camel.RuntimeCamelException;
+import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.blueprint.container.BlueprintContainer;
+
+public class RsServerBlueprintBean extends JAXRSServerFactoryBean implements
BlueprintSupport, Cloneable {
+
+ private BlueprintContainer blueprintContainer;
+ private BundleContext bundleContext;
+
+ public BlueprintContainer getBlueprintContainer() {
+ return blueprintContainer;
+ }
+
+ public void setBlueprintContainer(BlueprintContainer blueprintContainer) {
+ this.blueprintContainer = blueprintContainer;
+ }
+
+ public BundleContext getBundleContext() {
+ return bundleContext;
+ }
+
+ public void setBundleContext(BundleContext bundleContext) {
+ this.bundleContext = bundleContext;
+ }
+
+ public RsServerBlueprintBean copy() {
+ try {
+ return (RsServerBlueprintBean) clone();
+ } catch (CloneNotSupportedException e) {
+ throw new RuntimeCamelException(e);
+ }
+ }
+
+}
Propchange:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerBlueprintBean.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerBlueprintBean.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerDefinitionParser.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerDefinitionParser.java?rev=1149449&r1=1149448&r2=1149449&view=diff
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerDefinitionParser.java
(original)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/blueprint/RsServerDefinitionParser.java
Fri Jul 22 03:50:16 2011
@@ -17,6 +17,81 @@
package org.apache.camel.component.cxf.blueprint;
-public class RsServerDefinitionParser {
+import java.util.List;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+
+import org.apache.aries.blueprint.ParserContext;
+import org.apache.aries.blueprint.mutable.MutableBeanMetadata;
+import org.apache.aries.blueprint.mutable.MutablePassThroughMetadata;
+import org.apache.camel.component.cxf.CxfBlueprintEndpoint;
+import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.configuration.blueprint.AbstractBPBeanDefinitionParser;
+import org.apache.cxf.helpers.DOMUtils;
+import org.apache.cxf.jaxrs.model.UserResource;
+import org.apache.cxf.jaxrs.utils.ResourceUtils;
+import org.osgi.service.blueprint.reflect.Metadata;
+
+public class RsServerDefinitionParser extends AbstractBeanDefinitionParser {
+
+ public Metadata parse(Element element, ParserContext context) {
+ MutableBeanMetadata beanMetadata = createBeanMetadata(element,
context, RsServerBlueprintBean.class);
+ NamedNodeMap atts = element.getAttributes();
+
+ String bus = null;
+ for (int i = 0; i < atts.getLength(); i++) {
+ Attr node = (Attr) atts.item(i);
+ String val = node.getValue();
+ String pre = node.getPrefix();
+ String name = node.getLocalName();
+ if ("bus".equals(name)) {
+ bus = val;
+ } else if (isAttribute(pre, name)) {
+ if ("depends-on".equals(name)) {
+ beanMetadata.addDependsOn(val);
+ } else if (!"name".equals(name)) {
+ beanMetadata.addProperty(name,
AbstractBPBeanDefinitionParser.createValue(context, val));
+ }
+ }
+ }
+
+ Element elem = DOMUtils.getFirstElement(element);
+ while (elem != null) {
+ String name = elem.getLocalName();
+ if ("properties".equals(name)
+ || "extensionMappings".equals(name)
+ || "languageMappings".equals(name)) {
+ Metadata map = parseMapData(context, beanMetadata, elem);
+ beanMetadata.addProperty(name, map);
+ } else if ("binding".equals(name)) {
+ setFirstChildAsProperty(element, context, beanMetadata,
"bindingConfig");
+ } else if ("inInterceptors".equals(name) ||
"inFaultInterceptors".equals(name) || "outInterceptors".equals(name)
+ || "outFaultInterceptors".equals(name) ||
"features".equals(name) || "schemaLocations".equals(name) ||
"handlers".equals(name)) {
+ Metadata list = parseListData(context, beanMetadata, elem);
+ beanMetadata.addProperty(name, list);
+ } else if ("features".equals(name) || "providers".equals(name)
+ || "schemaLocations".equals(name) ||
"modelBeans".equals(name)) {
+ Metadata list = parseListData(context, beanMetadata, elem);
+ beanMetadata.addProperty(name, list);
+ } else if ("model".equals(name)) {
+ List<UserResource> resources =
ResourceUtils.getResourcesFromElement(elem);
+ MutablePassThroughMetadata value =
context.createMetadata(MutablePassThroughMetadata.class);
+ value.setObject(resources);
+ beanMetadata.addProperty(name, value);
+ } else {
+ setFirstChildAsProperty(element, context, beanMetadata, name);
+ }
+ }
+
+ if (StringUtils.isEmpty(bus)) {
+ bus = "cxf";
+ }
+ //Will create a bus if needed...
+
+ beanMetadata.addProperty("bus", getBusRef(context, bus));
+ return beanMetadata;
+ }
}
Added:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsBlueprintEndpoint.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsBlueprintEndpoint.java?rev=1149449&view=auto
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsBlueprintEndpoint.java
(added)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsBlueprintEndpoint.java
Fri Jul 22 03:50:16 2011
@@ -0,0 +1,81 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.cxf.jaxrs;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.blueprint.BlueprintCamelContext;
+import org.apache.camel.component.cxf.blueprint.BlueprintSupport;
+import org.apache.camel.component.cxf.blueprint.RsClientBlueprintBean;
+import org.apache.camel.component.cxf.blueprint.RsServerBlueprintBean;
+import org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean;
+import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
+import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.blueprint.container.BlueprintContainer;
+
+public class CxfRsBlueprintEndpoint extends CxfRsEndpoint {
+ private AbstractJAXRSFactoryBean bean;
+ private BlueprintContainer blueprintContainer;
+ private BundleContext bundleContext;
+ private BlueprintCamelContext blueprintCamelContext;
+
+ public CxfRsBlueprintEndpoint(CamelContext camelContext,
AbstractJAXRSFactoryBean bean) {
+ super(bean.getAddress(), camelContext);
+ this.bean = bean;
+ BlueprintSupport support = (BlueprintSupport)bean;
+ setBlueprintContainer(support.getBlueprintContainer());
+ setBundleContext(support.getBundleContext());
+ }
+
+ public BlueprintContainer getBlueprintContainer() {
+ return blueprintContainer;
+ }
+
+ public void setBlueprintContainer(BlueprintContainer blueprintContainer) {
+ this.blueprintContainer = blueprintContainer;
+ }
+
+ public BundleContext getBundleContext() {
+ return bundleContext;
+ }
+
+ public void setBundleContext(BundleContext bundleContext) {
+ this.bundleContext = bundleContext;
+ }
+
+ public BlueprintCamelContext getBlueprintCamelContext() {
+ return blueprintCamelContext;
+ }
+
+ public void setBlueprintCamelContext(BlueprintCamelContext
blueprintCamelContext) {
+ this.blueprintCamelContext = blueprintCamelContext;
+ }
+
+ @Override
+ protected JAXRSServerFactoryBean newJAXRSServerFactoryBean() {
+ checkBeanType(bean, JAXRSServerFactoryBean.class);
+ return ((RsServerBlueprintBean)bean).copy();
+ }
+
+ @Override
+ protected JAXRSClientFactoryBean newJAXRSClientFactoryBean() {
+ checkBeanType(bean, JAXRSClientFactoryBean.class);
+ return ((RsClientBlueprintBean)bean).copy();
+ }
+
+
+}
Propchange:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsBlueprintEndpoint.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsBlueprintEndpoint.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java?rev=1149449&r1=1149448&r2=1149449&view=diff
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java
(original)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java
Fri Jul 22 03:50:16 2011
@@ -21,6 +21,7 @@ import java.util.Map;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
+import org.apache.camel.component.cxf.blueprint.BlueprintSupport;
import org.apache.camel.component.cxf.common.message.CxfConstants;
import org.apache.camel.impl.HeaderFilterStrategyComponent;
import org.apache.camel.util.CamelContextHelper;
@@ -52,9 +53,11 @@ public class CxfRsComponent extends Head
AbstractJAXRSFactoryBean bean =
CamelContextHelper.mandatoryLookup(getCamelContext(), beanId,
AbstractJAXRSFactoryBean.class);
-
- answer = new CxfRsSpringEndpoint(this.getCamelContext(), bean);
-
+ if (bean instanceof BlueprintSupport) {
+ answer = new CxfRsBlueprintEndpoint(this.getCamelContext(),
bean);
+ } else {
+ answer = new CxfRsSpringEndpoint(this.getCamelContext(), bean);
+ }
// Apply Spring bean properties (including # notation referenced
bean). Note that the
// Spring bean properties values can be overridden by property
defined in URI query.
// The super class (DefaultComponent) will invoke "setProperties"
after this method
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java?rev=1149449&r1=1149448&r2=1149449&view=diff
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
(original)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
Fri Jul 22 03:50:16 2011
@@ -26,8 +26,6 @@ import org.apache.camel.Component;
import org.apache.camel.Consumer;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
-import org.apache.camel.component.cxf.spring.SpringJAXRSClientFactoryBean;
-import org.apache.camel.component.cxf.spring.SpringJAXRSServerFactoryBean;
import org.apache.camel.impl.DefaultEndpoint;
import org.apache.camel.spi.HeaderFilterStrategy;
import org.apache.camel.spi.HeaderFilterStrategyAware;
@@ -131,35 +129,56 @@ public class CxfRsEndpoint extends Defau
return binding;
}
+
+ protected void checkBeanType(Object object, Class<?> clazz) {
+ if (!clazz.isAssignableFrom(object.getClass())) {
+ throw new IllegalArgumentException("The configure bean is not the
instance of " + clazz.getName());
+ }
+ }
protected void setupJAXRSServerFactoryBean(JAXRSServerFactoryBean sfb) {
// address
- sfb.setAddress(getAddress());
- sfb.setResourceClasses(CastUtils.cast(getResourceClasses(),
Class.class));
+ if (getAddress() != null) {
+ sfb.setAddress(getAddress());
+ }
+ if (getResourceClasses()!= null) {
+ sfb.setResourceClasses(CastUtils.cast(getResourceClasses(),
Class.class));
+ }
sfb.setStart(false);
}
protected void setupJAXRSClientFactoryBean(JAXRSClientFactoryBean cfb,
String address) {
// address
- cfb.setAddress(address);
+ if (address != null) {
+ cfb.setAddress(address);
+ }
if (getResourceClasses() != null) {
cfb.setResourceClass(getResourceClasses().get(0));
}
cfb.setThreadSafe(true);
}
+
+ protected JAXRSServerFactoryBean newJAXRSServerFactoryBean() {
+ return new JAXRSServerFactoryBean();
+ }
+
+ protected JAXRSClientFactoryBean newJAXRSClientFactoryBean() {
+ return new JAXRSClientFactoryBean();
+ }
public JAXRSServerFactoryBean createJAXRSServerFactoryBean() {
- JAXRSServerFactoryBean answer = new SpringJAXRSServerFactoryBean();
+ JAXRSServerFactoryBean answer = newJAXRSServerFactoryBean();
setupJAXRSServerFactoryBean(answer);
return answer;
}
+
public JAXRSClientFactoryBean createJAXRSClientFactoryBean() {
return createJAXRSClientFactoryBean(getAddress());
}
public JAXRSClientFactoryBean createJAXRSClientFactoryBean(String address)
{
- JAXRSClientFactoryBean answer = new SpringJAXRSClientFactoryBean();
+ JAXRSClientFactoryBean answer = newJAXRSClientFactoryBean();
setupJAXRSClientFactoryBean(answer, address);
return answer;
}
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsSpringEndpoint.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsSpringEndpoint.java?rev=1149449&r1=1149448&r2=1149449&view=diff
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsSpringEndpoint.java
(original)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsSpringEndpoint.java
Fri Jul 22 03:50:16 2011
@@ -18,6 +18,8 @@
package org.apache.camel.component.cxf.jaxrs;
import org.apache.camel.CamelContext;
+import org.apache.camel.component.cxf.spring.SpringJAXRSClientFactoryBean;
+import org.apache.camel.component.cxf.spring.SpringJAXRSServerFactoryBean;
import org.apache.camel.spring.SpringCamelContext;
import org.apache.cxf.configuration.spring.ConfigurerImpl;
import org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean;
@@ -26,9 +28,6 @@ import org.apache.cxf.jaxrs.client.JAXRS
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
-/**
- *
- */
public class CxfRsSpringEndpoint extends CxfRsEndpoint implements BeanIdAware {
private AbstractJAXRSFactoryBean bean;
private ApplicationContext applicationContext;
@@ -61,28 +60,34 @@ public class CxfRsSpringEndpoint extends
configurer.configureBean(beanId, beanInstance);
}
- void checkBeanType(Class<?> clazz) {
- if (!clazz.isAssignableFrom(bean.getClass())) {
- throw new IllegalArgumentException("The configure bean is not the
instance of " + clazz.getName());
- }
- }
+
@Override
protected void setupJAXRSServerFactoryBean(JAXRSServerFactoryBean sfb) {
- checkBeanType(JAXRSServerFactoryBean.class);
+ checkBeanType(bean, JAXRSServerFactoryBean.class);
configure(sfb);
}
@Override
protected void setupJAXRSClientFactoryBean(JAXRSClientFactoryBean cfb,
String address) {
- checkBeanType(JAXRSClientFactoryBean.class);
+ checkBeanType(bean, JAXRSClientFactoryBean.class);
configure(cfb);
cfb.setAddress(address);
// Need to enable the option of ThreadSafe
cfb.setThreadSafe(true);
}
+ @Override
+ protected JAXRSServerFactoryBean newJAXRSServerFactoryBean() {
+ return new SpringJAXRSServerFactoryBean();
+ }
+
+ @Override
+ protected JAXRSClientFactoryBean newJAXRSClientFactoryBean() {
+ return new SpringJAXRSClientFactoryBean();
+ }
+
public String getBeanId() {
return beanId;
}
Modified: camel/trunk/tests/camel-itest-osgi/pom.xml
URL:
http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/pom.xml?rev=1149449&r1=1149448&r2=1149449&view=diff
==============================================================================
--- camel/trunk/tests/camel-itest-osgi/pom.xml (original)
+++ camel/trunk/tests/camel-itest-osgi/pom.xml Fri Jul 22 03:50:16 2011
@@ -236,6 +236,12 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>${httpclient4-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-persistence-jdbc</artifactId>
<scope>test</scope>
@@ -283,22 +289,10 @@
<!-- cxf -->
<dependency>
<groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-core</artifactId>
- <version>${cxf-version}</version>
- </dependency>
- <!-- used by the real web service -->
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-frontend-jaxws</artifactId>
- <version>${cxf-version}</version>
- </dependency>
- <!-- regular http transport -->
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-transports-http</artifactId>
+ <artifactId>cxf-bundle</artifactId>
<version>${cxf-version}</version>
+ <scope>test</scope>
</dependency>
-
<dependency>
<groupId>org.apache.ftpserver</groupId>
<artifactId>ftpserver-core</artifactId>
Modified:
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/AbstractIntegrationTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/AbstractIntegrationTest.java?rev=1149449&r1=1149448&r2=1149449&view=diff
==============================================================================
---
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/AbstractIntegrationTest.java
(original)
+++
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/blueprint/AbstractIntegrationTest.java
Fri Jul 22 03:50:16 2011
@@ -43,13 +43,6 @@ public abstract class AbstractIntegratio
@Inject
protected BundleContext bundleContext;
- @Before
- public void setUp() throws Exception {
-
log.info("********************************************************************************");
- log.info("Testing: " + getTestMethodName() + "(" +
getClass().getName() + ")");
-
log.info("********************************************************************************");
- }
-
protected <T> T getOsgiService(Class<T> type, long timeout) {
return getOsgiService(type, null, timeout);
}
Modified:
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java?rev=1149449&r1=1149448&r2=1149449&view=diff
==============================================================================
---
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java
(original)
+++
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/cxf/CxfProxyExampleTest.java
Fri Jul 22 03:50:16 2011
@@ -30,12 +30,9 @@ import org.ops4j.pax.exam.junit.Configur
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
import
org.springframework.osgi.context.support.OsgiBundleXmlApplicationContext;
-import static org.ops4j.pax.exam.CoreOptions.equinox;
-import static org.ops4j.pax.exam.CoreOptions.felix;
import static org.ops4j.pax.exam.CoreOptions.provision;
import static org.ops4j.pax.exam.OptionUtils.combine;
import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.scanFeatures;
-import static
org.ops4j.pax.exam.container.def.PaxRunnerOptions.workingDirectory;
import static org.ops4j.pax.swissbox.tinybundles.core.TinyBundles.newBundle;
import static org.ops4j.pax.swissbox.tinybundles.core.TinyBundles.withBnd;