Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)

2014-05-21 Thread Ephemeris Lappis
Hello.

Although without much conviction, I've tried the
Bundle-RequiredExecutionEnvironment: J2SE-1.7, but it doesn't change the
compilation level of the rules...

As I said in a previous answer, I don't know exactly how to do it, but I
think the solution may be in the way that Drools takes the classloader
passed by the application to have access to specific classes like the
usually imported beans used in the rules. Indeed, perhaps that instead of
using directly this classloader, for its tasks, among of them the rules
compilation, it should be possible to use some kind of enriched classloader
that carries all the Drools needed packages, and delegates application
classes resolution to the application's one.

What do you think of that ?

Regards.



--
View this message in context: 
http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029635.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)

2014-05-21 Thread Charles Moulliard
If you look to my example posted previously there are no issues. Can you
make a test using just Apache Karaf 2.3.x with Drools 6.1.0.Beta3 and tell
me what happen. Which JDK do you sue ?


On Wed, May 21, 2014 at 9:03 AM, Ephemeris Lappis 
ephemeris.lap...@gmail.com wrote:

 Hello.

 Although without much conviction, I've tried the
 Bundle-RequiredExecutionEnvironment: J2SE-1.7, but it doesn't change the
 compilation level of the rules...

 As I said in a previous answer, I don't know exactly how to do it, but I
 think the solution may be in the way that Drools takes the classloader
 passed by the application to have access to specific classes like the
 usually imported beans used in the rules. Indeed, perhaps that instead of
 using directly this classloader, for its tasks, among of them the rules
 compilation, it should be possible to use some kind of enriched classloader
 that carries all the Drools needed packages, and delegates application
 classes resolution to the application's one.

 What do you think of that ?

 Regards.



 --
 View this message in context:
 http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029635.html
 Sent from the Drools: User forum mailing list archive at Nabble.com.
 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users




-- 
Charles Moulliard
Apache Committer / Architect @RedHat
Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)

2014-05-21 Thread Ephemeris Lappis
Hello.

I could try to test on ServiceMix 5 that embeds Karaf  2.3.4, but for my
concrete project, the customer current platform uses a ServiceMix 4.5.3
which is not really possible to change today while many other modules are
already deployed.

Did you try in your environment the test project that I attached yesterday
? There is a rule in the project with an accumulate that generates java
code that is not compiled because of missing indirect dependancy despite of
the Import-Package that I've copied from your examples. Hence my idea of a
proxy classloader between Drools and its compiler and the classloader
provided by the application bundle, and avoid the dynamic import that
breaks the good practices...


2014-05-21 11:48 GMT+02:00 Charles Moulliard ch0...@gmail.com:

 If you look to my example posted previously there are no issues. Can you
 make a test using just Apache Karaf 2.3.x with Drools 6.1.0.Beta3 and tell
 me what happen. Which JDK do you sue ?


 On Wed, May 21, 2014 at 9:03 AM, Ephemeris Lappis 
 ephemeris.lap...@gmail.com wrote:

 Hello.

 Although without much conviction, I've tried the
 Bundle-RequiredExecutionEnvironment: J2SE-1.7, but it doesn't change the
 compilation level of the rules...

 As I said in a previous answer, I don't know exactly how to do it, but I
 think the solution may be in the way that Drools takes the classloader
 passed by the application to have access to specific classes like the
 usually imported beans used in the rules. Indeed, perhaps that instead of
 using directly this classloader, for its tasks, among of them the rules
 compilation, it should be possible to use some kind of enriched
 classloader
 that carries all the Drools needed packages, and delegates application
 classes resolution to the application's one.

 What do you think of that ?

 Regards.



 --
 View this message in context:
 http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029635.html
 Sent from the Drools: User forum mailing list archive at Nabble.com.
 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users




 --
 Charles Moulliard
 Apache Committer / Architect @RedHat
 Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io


 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users

___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)

2014-05-21 Thread Charles Moulliard
I can reproduce your error when I deploy the project (compiled with 1.7)
and running with JDK 1.7 on Karaf 2.2.1/Felix 3.2.2 (= SMX 4.5.3)

2014-05-21 13:30:25,020 | INFO  | l Console Thread | ClasspathKieProject
   | 211 - org.drools.compiler - 6.0.3.redhat-1 | Found kmodule:
bundle://214.4:1/META-INF/kmodule.xml
2014-05-21 13:30:25,024 | DEBUG | l Console Thread | ClasspathKieProject
   | 211 - org.drools.compiler - 6.0.3.redhat-1 | Discovered
classpath module org.drools.example:simple:1.0.0-SNAPSHOT
2014-05-21 13:30:25,024 | INFO  | l Console Thread | KieRepositoryImpl
   | 211 - org.drools.compiler - 6.0.3.redhat-1 | KieModule was
added:org.drools.osgi.compiler.OsgiKieModule@501d0b5a
2014-05-21 13:30:25,044 | ERROR | l Console Thread | AbstractKieModule
   | 211 - org.drools.compiler - 6.0.3.redhat-1 | Unable to build
KieBaseModel:sampleKBase
Rule Compilation error : [Rule name='CanDrink']
org/drools/example/drink/Rule_CanDrink1955060708.java (8:541) : ArrayList
cannot be resolved to a type
org/drools/example/drink/Rule_CanDrink1955060708.java (8:550) : Syntax
error on token , ? expected after this token

BTW you have a workaround which is to define your code like this

ListString l = new ArrayListString();

Is it because the server runs with JDK 5 in production that you cannot
change the code of the rules ?
As ServiceMix is just a packaging of Karaf + Camel + Cxf + ActiveMQ, why
don't you use directly Karaf and a more recent version of Felix (4.x) ?





On Wed, May 21, 2014 at 12:55 PM, Ephemeris Lappis 
ephemeris.lap...@gmail.com wrote:

 Hello.

 I could try to test on ServiceMix 5 that embeds Karaf  2.3.4, but for my
 concrete project, the customer current platform uses a ServiceMix 4.5.3
 which is not really possible to change today while many other modules are
 already deployed.

 Did you try in your environment the test project that I attached yesterday
 ? There is a rule in the project with an accumulate that generates java
 code that is not compiled because of missing indirect dependancy despite of
 the Import-Package that I've copied from your examples. Hence my idea of a
 proxy classloader between Drools and its compiler and the classloader
 provided by the application bundle, and avoid the dynamic import that
 breaks the good practices...


 2014-05-21 11:48 GMT+02:00 Charles Moulliard ch0...@gmail.com:

 If you look to my example posted previously there are no issues. Can you
 make a test using just Apache Karaf 2.3.x with Drools 6.1.0.Beta3 and tell
 me what happen. Which JDK do you sue ?


 On Wed, May 21, 2014 at 9:03 AM, Ephemeris Lappis 
 ephemeris.lap...@gmail.com wrote:

 Hello.

 Although without much conviction, I've tried the
 Bundle-RequiredExecutionEnvironment: J2SE-1.7, but it doesn't change
 the
 compilation level of the rules...

 As I said in a previous answer, I don't know exactly how to do it, but I
 think the solution may be in the way that Drools takes the classloader
 passed by the application to have access to specific classes like the
 usually imported beans used in the rules. Indeed, perhaps that instead of
 using directly this classloader, for its tasks, among of them the rules
 compilation, it should be possible to use some kind of enriched
 classloader
 that carries all the Drools needed packages, and delegates application
 classes resolution to the application's one.

 What do you think of that ?

 Regards.



 --
 View this message in context:
 http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029635.html
 Sent from the Drools: User forum mailing list archive at Nabble.com.
 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users




 --
 Charles Moulliard
 Apache Committer / Architect @RedHat
 Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io


 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users



 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users




-- 
Charles Moulliard
Apache Committer / Architect @RedHat
Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)

2014-05-20 Thread Charles Moulliard
Can you provide us the compilation error reported (gist link) and a test
case to allow us to reproduce your issue ?


On Mon, May 19, 2014 at 4:00 PM, Ephemeris Lappis 
ephemeris.lap...@gmail.com wrote:

 Hello.

 We have a very simple rules file that works as expected when running as a
 JUnit test in Eclipse with Maven dependencies, but fails when it is
 executing in ServiceMix with OSGi integration.

 The code is just like :

 raw
 MapString, Object dialog = new LinkedHashMap();
 KieSession kieSession = kieContainer.newKieSession(MyKSession);
 kieSession.setGlobal(dialog, dialog);
 kieSession.insert(problem);
 kieSession.fireAllRules();
 kieSession.dispose();


 The rules file :



 And the kmodule.xml :



 The compilation error is about Java 7 syntax elements (as generics or
 thousand separators in number literals for example), and seems to indicate
 that in this case the compiler is not the same, and it expects another Java
 syntax. No error is reported when the KieContainer is created from the
 KModule.xml, but the following error occurs when using it for KSession
 creation.



 This occurs both with the prepackaged feature
 (
 http://repo1.maven.org/maven2/org/drools/drools-karaf-features/6.1.0.Beta3/drools-karaf-features-6.1.0.Beta3-features.xml
 ),
 or with an adapted one. For example, the Maven dependancies classpath in
 eclipse mentions newer versions of the Eclipse's ECJ. But changing the
 version of bundles has no effect...

 What is missing in the feature to activate the correct rules compiler ?

 Thanks for your help ?

 Regards.




 --
 View this message in context:
 http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601.html
 Sent from the Drools: User forum mailing list archive at Nabble.com.
 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users




-- 
Charles Moulliard
Apache Committer / Architect @RedHat
Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)

2014-05-20 Thread Ephemeris Lappis
Hello.

Here is the first lines of the error message :


14:58:57,457 | ERROR | tp1946301910-151 | AbstractKieModule|
239 - org.drools.compiler - 6.1.0.20140429-1643 | Unable to build
KieBaseModel:MyKBase
Rule Compilation error : [Rule name='Main Rule']
my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java (8:649) 
:
Incorrect number of arguments for type HashMapK,V; it cannot be
parameterized with arguments ?
my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java (8:666) 
:
Syntax error on token , ? expected after this token


I have found the explanation and a workaround : put it all with a strict
1.5 syntax in the RHS ! In this current case, do not use  to infere the
generic type, but use the expected declared types instead.

After a rather touchy remote debug of the ServiceMix runtime to inspect what
is different from the Junit tests, I think that the problem comes from the
classloader that is associated with the Kie container. Before compilation
the language source and target level is  set with version 1.7 as expected,
but in the nameEnvironment that is passed to the JavaCompiler (indeed, ecj
compiler), the droolsClassloader is of type
org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5. As its name
seems to incidate, I'm afraid that the Karaf/Felix loader is originally
built in 1.5.

I've read some posts about the eclipse compiler that perhaps takes into
account the caller compliance to adapt its compilation language level.

Class loaders seem to be a serious problem when using Drools in complex
environment such as a OSGi one...

Please, could you confirm my analysis, and, if you have one, propose any
better solution ? I don't know, for example, if it's possible to influence
Karaf to use different levels of bundle class loaders...

Thanks a lot.

Regards.



--
View this message in context: 
http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029622.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)

2014-05-20 Thread Charles Moulliard
A test case will be required to reproduce your problem. Do you have a
pax-exam test ?


On Tue, May 20, 2014 at 1:03 PM, Ephemeris Lappis 
ephemeris.lap...@gmail.com wrote:

 Hello.

 Here is the first lines of the error message :


 14:58:57,457 | ERROR | tp1946301910-151 | AbstractKieModule
  |
 239 - org.drools.compiler - 6.1.0.20140429-1643 | Unable to build
 KieBaseModel:MyKBase
 Rule Compilation error : [Rule name='Main Rule']
 my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java
 (8:649) :
 Incorrect number of arguments for type HashMapK,V; it cannot be
 parameterized with arguments ?
 my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java
 (8:666) :
 Syntax error on token , ? expected after this token


 I have found the explanation and a workaround : put it all with a strict
 1.5 syntax in the RHS ! In this current case, do not use  to infere the
 generic type, but use the expected declared types instead.

 After a rather touchy remote debug of the ServiceMix runtime to inspect
 what
 is different from the Junit tests, I think that the problem comes from the
 classloader that is associated with the Kie container. Before compilation
 the language source and target level is  set with version 1.7 as expected,
 but in the nameEnvironment that is passed to the JavaCompiler (indeed, ecj
 compiler), the droolsClassloader is of type
 org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5. As its name
 seems to incidate, I'm afraid that the Karaf/Felix loader is originally
 built in 1.5.

 I've read some posts about the eclipse compiler that perhaps takes into
 account the caller compliance to adapt its compilation language level.

 Class loaders seem to be a serious problem when using Drools in complex
 environment such as a OSGi one...

 Please, could you confirm my analysis, and, if you have one, propose any
 better solution ? I don't know, for example, if it's possible to influence
 Karaf to use different levels of bundle class loaders...

 Thanks a lot.

 Regards.



 --
 View this message in context:
 http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029622.html
 Sent from the Drools: User forum mailing list archive at Nabble.com.
 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users




-- 
Charles Moulliard
Apache Committer / Architect @RedHat
Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)

2014-05-20 Thread Ephemeris Lappis
Hello.

I have no such kind test with Pax Exam. Should you send me a simple maven
project example using a Karaf container ?

Back to the problem, a very simple rule with something like that in the RHS
always fails when deployed in a bundle whose class loader is the felix one :

ListString l = new ArrayList();
that must be fixed with :
ListString l = new ArrayListString();

or

int n = 1_000;
that fails instead of :
int n = 1000;

FYI, I use ServiceMix 4.5.3.

Thanks again.
Regards.



2014-05-20 15:41 GMT+02:00 Charles Moulliard ch0...@gmail.com:

 A test case will be required to reproduce your problem. Do you have a
 pax-exam test ?


 On Tue, May 20, 2014 at 1:03 PM, Ephemeris Lappis 
 ephemeris.lap...@gmail.com wrote:

 Hello.

 Here is the first lines of the error message :


 14:58:57,457 | ERROR | tp1946301910-151 | AbstractKieModule
  |
 239 - org.drools.compiler - 6.1.0.20140429-1643 | Unable to build
 KieBaseModel:MyKBase
 Rule Compilation error : [Rule name='Main Rule']
 my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java
 (8:649) :
 Incorrect number of arguments for type HashMapK,V; it cannot be
 parameterized with arguments ?
 my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java
 (8:666) :
 Syntax error on token , ? expected after this token


 I have found the explanation and a workaround : put it all with a strict
 1.5 syntax in the RHS ! In this current case, do not use  to infere
 the
 generic type, but use the expected declared types instead.

 After a rather touchy remote debug of the ServiceMix runtime to inspect
 what
 is different from the Junit tests, I think that the problem comes from the
 classloader that is associated with the Kie container. Before compilation
 the language source and target level is  set with version 1.7 as expected,
 but in the nameEnvironment that is passed to the JavaCompiler (indeed, ecj
 compiler), the droolsClassloader is of type
 org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5. As its
 name
 seems to incidate, I'm afraid that the Karaf/Felix loader is originally
 built in 1.5.

 I've read some posts about the eclipse compiler that perhaps takes into
 account the caller compliance to adapt its compilation language level.

 Class loaders seem to be a serious problem when using Drools in complex
 environment such as a OSGi one...

 Please, could you confirm my analysis, and, if you have one, propose any
 better solution ? I don't know, for example, if it's possible to influence
 Karaf to use different levels of bundle class loaders...

 Thanks a lot.

 Regards.



 --
 View this message in context:
 http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029622.html
 Sent from the Drools: User forum mailing list archive at Nabble.com.
 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users




 --
 Charles Moulliard
 Apache Committer / Architect @RedHat
 Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io


 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users

___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)

2014-05-20 Thread Charles Moulliard
Is it a list that you would like to use as global param ? If this is the
case, maybe change your rule  code like that

//GET A KSESSION
StatefulKnowledgeSession ksession =
kbase.newStatefulKnowledgeSession();

//now create some test data
ksession.insert( new Cheese( stilton,
   42 ) );
ksession.insert( new Person( michael,
   stilton,
   42 ) );
final ListString list = new ArrayListString();
ksession.setGlobal( list,
  list );

ksession.fireAllRules();

System.out.println(list);

ksession.dispose();

Rule

template header
age
type
log

package org.drools.examples.templates;

global java.util.List list;

template cheesefans

rule Cheese fans_@{row.rowNumber}
when
Person(age == @{age})
Cheese(type == @{type})
then
list.add(@{log});
end
end template



On Tue, May 20, 2014 at 4:40 PM, Ephemeris Lappis 
ephemeris.lap...@gmail.com wrote:

 Hello.

 I have no such kind test with Pax Exam. Should you send me a simple maven
 project example using a Karaf container ?

 Back to the problem, a very simple rule with something like that in the
 RHS always fails when deployed in a bundle whose class loader is the felix
 one :

 ListString l = new ArrayList();
 that must be fixed with :
 ListString l = new ArrayListString();

 or

 int n = 1_000;
 that fails instead of :
 int n = 1000;

 FYI, I use ServiceMix 4.5.3.

 Thanks again.
 Regards.



 2014-05-20 15:41 GMT+02:00 Charles Moulliard ch0...@gmail.com:

 A test case will be required to reproduce your problem. Do you have a
 pax-exam test ?


 On Tue, May 20, 2014 at 1:03 PM, Ephemeris Lappis 
 ephemeris.lap...@gmail.com wrote:

 Hello.

 Here is the first lines of the error message :


 14:58:57,457 | ERROR | tp1946301910-151 | AbstractKieModule
|
 239 - org.drools.compiler - 6.1.0.20140429-1643 | Unable to build
 KieBaseModel:MyKBase
 Rule Compilation error : [Rule name='Main Rule']
 my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java
 (8:649) :
 Incorrect number of arguments for type HashMapK,V; it cannot be
 parameterized with arguments ?
 my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java
 (8:666) :
 Syntax error on token , ? expected after this token


 I have found the explanation and a workaround : put it all with a strict
 1.5 syntax in the RHS ! In this current case, do not use  to infere
 the
 generic type, but use the expected declared types instead.

 After a rather touchy remote debug of the ServiceMix runtime to inspect
 what
 is different from the Junit tests, I think that the problem comes from
 the
 classloader that is associated with the Kie container. Before compilation
 the language source and target level is  set with version 1.7 as
 expected,
 but in the nameEnvironment that is passed to the JavaCompiler (indeed,
 ecj
 compiler), the droolsClassloader is of type
 org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5. As its
 name
 seems to incidate, I'm afraid that the Karaf/Felix loader is originally
 built in 1.5.

 I've read some posts about the eclipse compiler that perhaps takes into
 account the caller compliance to adapt its compilation language level.

 Class loaders seem to be a serious problem when using Drools in complex
 environment such as a OSGi one...

 Please, could you confirm my analysis, and, if you have one, propose any
 better solution ? I don't know, for example, if it's possible to
 influence
 Karaf to use different levels of bundle class loaders...

 Thanks a lot.

 Regards.



 --
 View this message in context:
 http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029622.html
 Sent from the Drools: User forum mailing list archive at Nabble.com.
 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users




 --
 Charles Moulliard
 Apache Committer / Architect @RedHat
 Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io


 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users



 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users




-- 
Charles Moulliard
Apache Committer / Architect @RedHat
Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)

2014-05-20 Thread Ephemeris Lappis
In this case it's not a global, but a temporary variable in the rule
consequence. Indeed, the problem is not only about generics, but impacts
all the syntax elements that may have changed since Java 1.5, and make the
rules Java compiler fails when running in ServiceMix.

As I said before, the workaround is quite easy, changing all the Java code
to be compliant with the compilation level. The question is just about a
confirmation of the Felix's class loader (org/apache/felix/framework/
ModuleImpl$ModuleClassLoaderJava5) in the compiler's behavior, and a better
solution to be able to write RHS with a 'modern' syntax.

Thanks.


2014-05-20 16:56 GMT+02:00 Charles Moulliard [via Drools] 
ml-node+s46999n4029628...@n3.nabble.com:

 Is it a list that you would like to use as global param ? If this is the
 case, maybe change your rule  code like that

 //GET A KSESSION
 StatefulKnowledgeSession ksession =
 kbase.newStatefulKnowledgeSession();

 //now create some test data
 ksession.insert( new Cheese( stilton,
42 ) );
 ksession.insert( new Person( michael,
stilton,
42 ) );
 final ListString list = new ArrayListString();
 ksession.setGlobal( list,
   list );

 ksession.fireAllRules();

 System.out.println(list);

 ksession.dispose();

 Rule

 template header
 age
 type
 log

 package org.drools.examples.templates;

 global java.util.List list;

 template cheesefans

 rule Cheese fans_@{row.rowNumber}
 when
 Person(age == @{age})
 Cheese(type == @{type})
 then
 list.add(@{log});
 end
 end template



 On Tue, May 20, 2014 at 4:40 PM, Ephemeris Lappis [hidden 
 email]http://user/SendEmail.jtp?type=nodenode=4029628i=0
  wrote:

 Hello.

 I have no such kind test with Pax Exam. Should you send me a simple maven
 project example using a Karaf container ?

 Back to the problem, a very simple rule with something like that in the
 RHS always fails when deployed in a bundle whose class loader is the felix
 one :

 ListString l = new ArrayList();
 that must be fixed with :
 ListString l = new ArrayListString();

 or

 int n = 1_000;
 that fails instead of :
 int n = 1000;

 FYI, I use ServiceMix 4.5.3.

 Thanks again.
 Regards.



 2014-05-20 15:41 GMT+02:00 Charles Moulliard [hidden 
 email]http://user/SendEmail.jtp?type=nodenode=4029628i=1
 :

 A test case will be required to reproduce your problem. Do you have a
 pax-exam test ?


 On Tue, May 20, 2014 at 1:03 PM, Ephemeris Lappis [hidden 
 email]http://user/SendEmail.jtp?type=nodenode=4029628i=2
  wrote:

 Hello.

 Here is the first lines of the error message :


 14:58:57,457 | ERROR | tp1946301910-151 | AbstractKieModule
|
 239 - org.drools.compiler - 6.1.0.20140429-1643 | Unable to build
 KieBaseModel:MyKBase
 Rule Compilation error : [Rule name='Main Rule']
 my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java
 (8:649) :
 Incorrect number of arguments for type HashMapK,V; it cannot be
 parameterized with arguments ?
 my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java
 (8:666) :
 Syntax error on token , ? expected after this token


 I have found the explanation and a workaround : put it all with a strict
 1.5 syntax in the RHS ! In this current case, do not use  to infere
 the
 generic type, but use the expected declared types instead.

 After a rather touchy remote debug of the ServiceMix runtime to inspect
 what
 is different from the Junit tests, I think that the problem comes from
 the
 classloader that is associated with the Kie container. Before
 compilation
 the language source and target level is  set with version 1.7 as
 expected,
 but in the nameEnvironment that is passed to the JavaCompiler (indeed,
 ecj
 compiler), the droolsClassloader is of type
 org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5. As its
 name
 seems to incidate, I'm afraid that the Karaf/Felix loader is originally
 built in 1.5.

 I've read some posts about the eclipse compiler that perhaps takes into
 account the caller compliance to adapt its compilation language level.

 Class loaders seem to be a serious problem when using Drools in complex
 environment such as a OSGi one...

 Please, could you confirm my analysis, and, if you have one, propose any
 better solution ? I don't know, for example, if it's possible to
 influence
 Karaf to use different levels of bundle class loaders...

 Thanks a lot.

 Regards.



 --
 View this message in context:
 http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029622.html
 Sent from the Drools: User forum mailing list archive at Nabble.com.
 ___
 rules-users mailing list
 [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=3
 

Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)

2014-05-20 Thread Charles Moulliard
 list archive at Nabble.com.
 ___
 rules-users mailing list
 [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=3
 https://lists.jboss.org/mailman/listinfo/rules-users




 --
 Charles Moulliard
 Apache Committer / Architect @RedHat
 Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io


 ___
 rules-users mailing list
 [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=4
 https://lists.jboss.org/mailman/listinfo/rules-users



 ___
 rules-users mailing list
 [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=5
 https://lists.jboss.org/mailman/listinfo/rules-users




 --
 Charles Moulliard
 Apache Committer / Architect @RedHat
 Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io


 ___
 rules-users mailing list
 [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=6
 https://lists.jboss.org/mailman/listinfo/rules-users

 --
  If you reply to this email, your message will be added to the
 discussion below:

 http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029628.html
  To unsubscribe from Rules compilation error with OSGi integration
 (6.1.0.Beta3), click here.
 NAMLhttp://drools.46999.n3.nabble.com/template/NamlServlet.jtp?macro=macro_viewerid=instant_html%21nabble%3Aemail.namlbase=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespacebreadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml



 --
 View this message in context: Re: [rules-users] Rules compilation error
 with OSGi integration 
 (6.1.0.Beta3)http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029629.html

 Sent from the Drools: User forum mailing list 
 archivehttp://drools.46999.n3.nabble.com/Drools-User-forum-f47000.htmlat 
 Nabble.com.

 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users




-- 
Charles Moulliard
Apache Committer / Architect @RedHat
Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)

2014-05-20 Thread Charles Moulliard
 compiler), the droolsClassloader is of type
 org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5. As its
 name
 seems to incidate, I'm afraid that the Karaf/Felix loader is originally
 built in 1.5.

 I've read some posts about the eclipse compiler that perhaps takes into
 account the caller compliance to adapt its compilation language level.

 Class loaders seem to be a serious problem when using Drools in complex
 environment such as a OSGi one...

 Please, could you confirm my analysis, and, if you have one, propose
 any
 better solution ? I don't know, for example, if it's possible to
 influence
 Karaf to use different levels of bundle class loaders...

 Thanks a lot.

 Regards.



 --
 View this message in context:
 http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029622.html
 Sent from the Drools: User forum mailing list archive at Nabble.com.
 ___
 rules-users mailing list
 [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=3
 https://lists.jboss.org/mailman/listinfo/rules-users




 --
 Charles Moulliard
 Apache Committer / Architect @RedHat
 Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io


 ___
 rules-users mailing list
 [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=4
 https://lists.jboss.org/mailman/listinfo/rules-users



 ___
 rules-users mailing list
 [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=5
 https://lists.jboss.org/mailman/listinfo/rules-users




 --
 Charles Moulliard
 Apache Committer / Architect @RedHat
 Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io


 ___
 rules-users mailing list
 [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=6
 https://lists.jboss.org/mailman/listinfo/rules-users

 --
  If you reply to this email, your message will be added to the
 discussion below:

 http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029628.html
  To unsubscribe from Rules compilation error with OSGi integration
 (6.1.0.Beta3), click here.
 NAMLhttp://drools.46999.n3.nabble.com/template/NamlServlet.jtp?macro=macro_viewerid=instant_html%21nabble%3Aemail.namlbase=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespacebreadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml



 --
 View this message in context: Re: [rules-users] Rules compilation error
 with OSGi integration 
 (6.1.0.Beta3)http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029629.html

 Sent from the Drools: User forum mailing list 
 archivehttp://drools.46999.n3.nabble.com/Drools-User-forum-f47000.htmlat 
 Nabble.com.

 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users




-- 
Charles Moulliard
Apache Committer / Architect @RedHat
Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

[rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)

2014-05-19 Thread Ephemeris Lappis
Hello.

We have a very simple rules file that works as expected when running as a
JUnit test in Eclipse with Maven dependencies, but fails when it is
executing in ServiceMix with OSGi integration.

The code is just like :

raw
MapString, Object dialog = new LinkedHashMap();
KieSession kieSession = kieContainer.newKieSession(MyKSession);
kieSession.setGlobal(dialog, dialog);
kieSession.insert(problem);
kieSession.fireAllRules();
kieSession.dispose();


The rules file :



And the kmodule.xml :



The compilation error is about Java 7 syntax elements (as generics or
thousand separators in number literals for example), and seems to indicate
that in this case the compiler is not the same, and it expects another Java
syntax. No error is reported when the KieContainer is created from the
KModule.xml, but the following error occurs when using it for KSession
creation.



This occurs both with the prepackaged feature
(http://repo1.maven.org/maven2/org/drools/drools-karaf-features/6.1.0.Beta3/drools-karaf-features-6.1.0.Beta3-features.xml),
or with an adapted one. For example, the Maven dependancies classpath in
eclipse mentions newer versions of the Eclipse's ECJ. But changing the
version of bundles has no effect...

What is missing in the feature to activate the correct rules compiler ?

Thanks for your help ?

Regards.




--
View this message in context: 
http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users