That's really great !
Thanks !
Regards
JB
On 11/23/2015 02:57 PM, Guillaume Nodet wrote:
That's now fixed. The custom namespaces do contribute to the blueprint
container class loader.
2015-11-23 11:03 GMT+01:00 Guillaume Nodet <[email protected]>:
Good point, I haven't really tested this part specifically.
I've used the spring deployer to deploy my test xml in karaf, so afaik, it
uses a dynamicimport-package=*, so I'm not sure about the exact behaviour
yet.
In all cases, I think we should be able to solve that problem, because the
spring application context will actually create the spring beans, so we do
have control over the class loader here. It should be possible to inject a
class loader what will be able to delegate to the blueprint bundle class
loader and to the various spring namespace bundles, so that importing the
packages should not be necessary.
I'll try to create an integration test to verify that.
Guillaume
2015-11-23 10:19 GMT+01:00 Christian Schneider <[email protected]>:
I would not have thought that it is possible to combine Aries Blueprint
and spring namespaces.
All the better that it seems to work :-)
How do you solve the classloader problem? Does the blueprint approach
still have the same issues as spring dm? So does the user still
have to make sure all internals the namespace needs are imported?
Christian
On 20.11.2015 17:56, Guillaume Nodet wrote:
I've just committed a new module (and the additional required changes and
existing modules) to support Spring namespaces (default and custom) in
blueprint.
See the source code at
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-spring/src/main/java/org/apache/aries/blueprint/spring/
It's limited and not much tested for now, but it can handle things like
the
following:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bp="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:bean="http://camel.apache.org/schema/blueprint"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://camel.apache.org/schema/blueprint
http://camel.apache.org/schema/blueprint/camel-blueprint.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd">
<!-- plain blueprint bean referencing a spring bean -->
<bean id="artemis"
class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
</bean>
<!-- spring bean -->
<bean name="jmsConnectionFactory"
class="org.apache.activemq.artemis.api.jms.ActiveMQJMSClient"
factory-method="createConnectionFactory" xmlns="
http://www.springframework.org/schema/beans">
<constructor-arg value="tcp://
0.0.0.0:61616?user=karaf&password=karaf"/>
<constructor-arg value="broker"/>
</bean>
<!-- spring bean using custom namespace, referencing spring and
blueprint beans -->
<util:list id="springList" xmlns="
http://www.springframework.org/schema/beans">
<value>foo</value>
<ref bean="jmsConnectionFactory" />
<ref bean="artemis"/>
</util:list>
<!-- blueprint service referencing a spring bean -->
<service ref="springList" auto-export="all-classes"/>
</blueprint>
So you can use the default spring namespace or custom spring namespaces
and
cross-reference beans between blueprint and spring.
I haven't tried auto-wiring or any advanced usage such as AOP.
I'll try to commit a few initial integration tests beginning of next
week.
Please have a look and provide feedback and additional use cases (as
tests
?).
Cheers,
Guillaume Nodet
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
http://www.talend.com
--
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com