[jboss-svn-commits] JBL Code SVN: r26135 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: rule and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Apr 18 19:29:46 EDT 2009


Author: mark.proctor at jboss.com
Date: 2009-04-18 19:29:46 -0400 (Sat, 18 Apr 2009)
New Revision: 26135

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/CompositeClassLoader.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectRuntimeData.java
Log:
-fixed regression for dynamic functions

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2009-04-18 19:56:05 UTC (rev 26134)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2009-04-18 23:29:46 UTC (rev 26135)
@@ -474,6 +474,14 @@
                 // now iterate again, this time onBeforeExecute will handle any wiring or cloader re-creating that needs to be done as part of the merge
                 for (Package newPkg : newPkgs) {
                     Package pkg = this.pkgs.get(newPkg.getName());
+                    
+                    // this needs to go here, as functions will set a java dialect to dirty
+                    if (newPkg.getFunctions() != null) {
+                        for (Map.Entry<String, Function> entry : newPkg.getFunctions().entrySet()) {
+                            pkg.addFunction(entry.getValue());
+                        }
+                    }
+                    
                     pkg.getDialectRuntimeRegistry().onBeforeExecute();
                     // with the classloader recreated for all byte[] classes, we should now merge and wire any new accessors
                     pkg.getClassFieldAccessorStore().merge(newPkg.getClassFieldAccessorStore());
@@ -482,12 +490,6 @@
                 for (Package newPkg : newPkgs) {
                     Package pkg = this.pkgs.get(newPkg.getName());
 
-                    if (newPkg.getFunctions() != null) {
-                        for (Map.Entry<String, Function> entry : newPkg.getFunctions().entrySet()) {
-                            pkg.addFunction(entry.getValue());
-                        }
-                    }
-
                     // we have to do this before the merging, as it does some classloader resolving
                     TypeDeclaration lastType = null;
                     try {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/CompositeClassLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/CompositeClassLoader.java	2009-04-18 19:56:05 UTC (rev 26134)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/CompositeClassLoader.java	2009-04-18 23:29:46 UTC (rev 26135)
@@ -58,7 +58,9 @@
         
         // still not found so search the parent ClassLoader
         if ( this.hasParent && cls == null ) {
-            cls = getParent().loadClass( name );
+            cls = Class.forName( name,
+                           true,
+                           getParent() );
         }        
 
         if ( resolve ) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectRuntimeData.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectRuntimeData.java	2009-04-18 19:56:05 UTC (rev 26134)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectRuntimeData.java	2009-04-18 23:29:46 UTC (rev 26135)
@@ -293,8 +293,10 @@
                                             InstantiationException,
                                             IllegalAccessException {
         final Object invoker = getInvokers().get( className );
-        wire( className,
-              invoker );
+        if ( invoker != null ) {
+            wire( className,        
+                  invoker );
+        }
     }
 
     public void wire(final String className,




More information about the jboss-svn-commits mailing list