Folks,

A little bit later than expected (!) I've managed to get Drools running within Google App Engine.

A list of the changes that I made to the Drools Core and Drools Util code are below. A lot of these changes are NullPointer checks when reading properties from a file (i.e. things that you might want in the codebase anyway).

Notes on the sample I used to try this out are at
http://code.google.com/p/red-piranha/wiki/ModifyDroolsRunInGoogleAppEngine
The sample (for the moment) is running a pre-built KnowledgeBase within GAE (i.e. no rule compilation, nor any of the advanced features).

What is the best way of submitting the actual code changes for review and possible inclusion as part of the Drools source code?

Thanks

Paul

Drools Core

 AbstractRuleBase.java // line 265 surrounded by try / catch 
     
this.config = (RuleBaseConfiguration) droolsStream.readObject();
 RuleBaseConfiguration.java // - line 985 surround by try / catch
         
this.classLoader = ClassLoaderUtil.getClassLoader
 RuleBaseConfiguration.java // line 395  surround by try / catch
     
this.chainedProperties = new ChainedProperties( "rulebase.conf",
 RuleBaseConfiguration.java // line 457 surround by try / catch, default Conflict Resolver
          setConflictResolver
( determineConflictResolver( this.chainedProperties.getProperty( "drools.conflictResolver",

Drools Util

 ChainedProperties.java // line 98 - exception check around ClassLoader.getSystemClassLoader();
 ChainedProperties.java // line 125 - exception check around ClassLoader.getSystemClassLoader();
 ChainedProperties.java // line 160 
       
- null check for properties /key and return default
 ChainedProperties.java // line 240 - surround by try / catch for securityaccessexception
   
if ( file != null && file.exists() ) {
 ChainedProperties.java // line 270 - surround by try / catch for securityaccessexception
   
if ( file != null && file.exists() ) {
 ClassFieldInspector.java // line 166 - 
         
return "/" + clazz.getCanonicalName() + ".class";
 ClassLoaderUtil.java // line 25 - surround by try / catch for securityaccessexception
     
ClassLoader systemClassLoader =