[jboss-svn-commits] JBL Code SVN: r21123 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: reteoo/builder and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jul 18 15:32:46 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-07-18 15:32:46 -0400 (Fri, 18 Jul 2008)
New Revision: 21123
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java
Log:
JBRULES-1684 Package merging is incorrect for dialects
-reverted back part of addPackage that creates or merges the new package, it's still incorrect but at least all the unit tests pass for now.
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 2008-07-18 15:10:05 UTC (rev 21122)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2008-07-18 19:32:46 UTC (rev 21123)
@@ -428,23 +428,32 @@
this.eventSupport.fireBeforePackageAdded( newPkg );
- // create new base package if it doesn't exist, as we always merge the newPkg into the existing one,
- // to isolate the base package from further possible changes to newPkg.
+// // create new base package if it doesn't exist, as we always merge the newPkg into the existing one,
+// // to isolate the base package from further possible changes to newPkg.
+// if ( pkg == null ) {
+// // create a new package, use the same parent classloader as the incoming new package
+// pkg = new Package( newPkg.getName(),
+// new MapBackedClassLoader( newPkg.getPackageScopeClassLoader().getParent() ) );
+// //newPkg.getPackageScopeClassLoader() );
+// pkgs.put( pkg.getName(),
+// pkg );
+// // add the dialect registry composite classloader (which uses the above classloader as it's parent)
+// this.packageClassLoader.addClassLoader( pkg.getDialectRuntimeRegistry().getClassLoader() );
+// }
+
if ( pkg == null ) {
- // create a new package, use the same parent classloader as the incoming new package
pkg = new Package( newPkg.getName(),
- new MapBackedClassLoader( newPkg.getPackageScopeClassLoader().getParent() ) );
- //newPkg.getPackageScopeClassLoader() );
+ newPkg.getPackageScopeClassLoader() );
pkgs.put( pkg.getName(),
pkg );
- // add the dialect registry composite classloader (which uses the above classloader as it's parent)
this.packageClassLoader.addClassLoader( pkg.getDialectRuntimeRegistry().getClassLoader() );
+ } else {
+ pkg.getPackageScopeClassLoader().getStore().putAll( newPkg.getPackageScopeClassLoader().getStore() );
+ this.packageClassLoader.addClassLoader( newPkg.getDialectRuntimeRegistry().getClassLoader() );
}
- // else {
- //
- // this.packageClassLoader.addClassLoader( newPkg.getDialectRuntimeRegistry().getClassLoader() );
- // }
+
+
// now merge the new package into the existing one
mergePackage( pkg,
newPkg );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java 2008-07-18 15:10:05 UTC (rev 21122)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java 2008-07-18 19:32:46 UTC (rev 21123)
@@ -219,31 +219,6 @@
context.setTerminalNodeMemoryEnabled( false );
context.setAlphaNodeMemoryAllowed( false );
}
-
- Class cls = ((ClassObjectType)pattern.getObjectType()).getClassType();
- try {
- Class rbCls = context.getRuleBase().getCompositePackageClassLoader().loadClass( cls.getName() );
- if ( cls != rbCls ) {
- // the class has been redefined as part of the merge, us the redefined version
- objectType = new ClassObjectType( rbCls );
-
- // @FIXME ok this is just plain nasty, but I want something to work for now.
- // we now need to serialize the alpha constraints, to force the fields readers to be regenerated (shitty classloader issues)
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- DroolsObjectOutputStream stream = new DroolsObjectOutputStream( baos );
- List list = new ArrayList( alphaConstraints.size() );
- for ( final Iterator it = alphaConstraints.iterator(); it.hasNext(); ) {
- AlphaNodeFieldConstraint constraint = (AlphaNodeFieldConstraint) it.next();
- constraint.writeExternal( stream );
- constraint = constraint.getClass().newInstance();
- constraint.readExternal( new DroolsObjectInputStream( new ByteArrayInputStream( baos.toByteArray() ), context.getRuleBase().getCompositePackageClassLoader() ) );
- list.add( constraint );
- }
- alphaConstraints = list;
- }
- } catch ( Exception e ) {
- throw new RuntimeDroolsException( "Unable to Attach ObjectTypeNode as class cannot be found '" + cls.getName() + "'", e );
- }
}
context.setObjectSource( (ObjectSource) utils.attachNode( context,
More information about the jboss-svn-commits
mailing list