Looking at the two codebase effectively the NamespaceContextImpl of eip
declare setter and getters,
instead the drools one does not declare getters and getter.
Do i need to compile all with maven?? or is just enough to add the
setter and getters method to the
NamespaceContextImpl class???
Andrea
Guillaume Nodet ha scritto:
If the same config was working in 3.2.1, it may be caused by an upgrade of
xbean which is used to parse the spring xml configuration. I must admit
the map support in xbean is kinda difficult to understand :-(
Looking at the "same" class in servicemix-eip, it redefines the getter /
setter so that they can be found by xbean in the generation phase.
Can you try adding those back and see if it works better ?
On Tue, Mar 25, 2008 at 11:52 AM, Andrea Zoppello <[EMAIL PROTECTED]>
wrote:
Hi,
I've just downloaded the latest nightly build of servicemix 3.2.2 and it
seems
problem in evaluating expression with namespace are reappred in this
version.
When i write in the drools rule a rule with namespace prefix, this will
cause
a runtime errors saying the namespace is not bound.
What i've found is that at deployment phase the namespace context is not
populated.
This seem strange because in the xbean of drools su i've declared
namespace context
as i'm usually able to declare.
Any idea??
Here my xbean:
<?xml version="1.0"?>
<beans xmlns:sm="http://servicemix.apache.org/config/1.0"
xmlns:drools="http://servicemix.apache.org/drools/1.0"
xmlns:Es2_v_0="urn:eng:spagic:processes:Es2:v0"
xmlns:util="http://www.springframework.org/schema/util">
<drools:endpoint
service="Es2_v_0:Es2.Val2Livello_v_0"
endpoint="Es2.Val2Livello_v_0"
ruleBaseResource="classpath:val2.drl"
namespaceContext="#nsContext"
assertedObjects="#assertedObjects"
defaultTargetService="Es2_v_0:Es2.Router1_v_0">
</drools:endpoint>
<util:list id="assertedObjects">
<ref bean="dbhelper"/>
</util:list>
<bean id="dbhelper" class="org.spagic.smx.helpers.DbHelper">
</bean>
<drools:endpoint
service="Es2_v_0:Es2.Router1_v_0"
endpoint="Es2.Router1_v_0"
ruleBaseResource="classpath:Es2.Router1_v_0.drl"
namespaceContext="#nsContext">
</drools:endpoint>
<drools:endpoint
service="Es2_v_0:Es2.Router2_v_0"
endpoint="Es2.Router2_v_0"
ruleBaseResource="classpath:Es2.Router2_v_0.drl"
namespaceContext="#nsContext">
</drools:endpoint>
<drools:namespace-context id="nsContext">
<drools:namespaces>
<drools:namespace
prefix="spgtypes">urn:spagic:crm:types</drools:namespace>
<drools:namespace
prefix="restart">urn:it:eng:spagic:restart</drools:namespace>
<drools:namespace
prefix="spagic">urn:it:eng:spagic</drools:namespace>
<drools:namespace
prefix="spgser">urn:spagic:crm:services</drools:namespace>
</drools:namespaces>
</drools:namespace-context>
</beans>
Here the drools file causing the problem is:
package org.apache.servicemix.drools
import org.apache.servicemix.drools.model.Exchange;
import org.spagic.smx.helpers.DbHelper;
global org.apache.servicemix.drools.model.JbiHelper jbi;
rule "Route FaultInFlow "
when
me : Exchange( status == Exchange.ACTIVE, in : in != null )
eval( in.xpath("/spgser:in/spgtypes:TIPO_SERVIZIO = '10'") )
then
jbi.routeToDefault("<Fault> Tipo Servizio 10 </Fault>");
end