<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#ffffff">
On 17/01/2011 19:25, Paul Browne wrote:
<blockquote
cite="mid:AANLkTimAwC3nb2P0LRx40LBpUg3Jx+7dEuuyYQ7tbOTZ@mail.gmail.com"
type="cite">Folks,<br>
<br>
A little bit later than expected (!) I've managed to get Drools
running within Google App Engine. <br>
</blockquote>
I thought App Engine wouldn't work with runtime generated bytecode
and had classloader restrictions?<br>
<br>
Mark<br>
<blockquote
cite="mid:AANLkTimAwC3nb2P0LRx40LBpUg3Jx+7dEuuyYQ7tbOTZ@mail.gmail.com"
type="cite"><br>
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).<br>
<br>
Notes on the sample I used to try this out are at <br>
<a moz-do-not-send="true"
href="http://code.google.com/p/red-piranha/wiki/ModifyDroolsRunInGoogleAppEngine">http://code.google.com/p/red-piranha/wiki/ModifyDroolsRunInGoogleAppEngine</a><br>
The sample (for the moment) is running a pre-built KnowledgeBase
within GAE (i.e. no rule compilation, nor any of the advanced
features).<br>
<br>
What is the best way of submitting the actual code changes for
review and possible inclusion as part of the Drools source code? <br>
</blockquote>
A patch against trunk attached to a jira should suffice, don't
forget we've moved to GIT.<br>
<br>
Mark<br>
<blockquote
cite="mid:AANLkTimAwC3nb2P0LRx40LBpUg3Jx+7dEuuyYQ7tbOTZ@mail.gmail.com"
type="cite">
<br>
Thanks<br>
<br>
Paul<br>
<br>
<p><strong> Drools Core </strong></p>
<pre class="prettyprint"><span class="pln"> </span><span class="typ">AbstractRuleBase</span><span class="pun">.</span><span class="pln">java </span><span class="com">// line 265 surrounded by try / catch </span><span class="pln">
</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">config </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">RuleBaseConfiguration</span><span class="pun">)</span><span class="pln"> droolsStream</span><span class="pun">.</span><span class="pln">readObject</span><span class="pun">();</span></pre>
<pre class="prettyprint"><span class="pln"> </span><span class="typ">RuleBaseConfiguration</span><span class="pun">.</span><span class="pln">java </span><span class="com">// - line 985 surround by try / catch</span><span class="pln">
</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">classLoader </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ClassLoaderUtil</span><span class="pun">.</span><span class="pln">getClassLoader</span></pre>
<pre class="prettyprint"><span class="pln"> </span><span class="typ">RuleBaseConfiguration</span><span class="pun">.</span><span class="pln">java </span><span class="com">// line 395 surround by try / catch</span><span class="pln">
</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">chainedProperties </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">ChainedProperties</span><span class="pun">(</span><span class="pln"> </span><span class="str">"rulebase.conf"</span><span class="pun">,</span></pre>
<pre class="prettyprint"><span class="pln"> </span><span class="typ">RuleBaseConfiguration</span><span class="pun">.</span><span class="pln">java </span><span class="com">// line 457 surround by try / catch, default Conflict Resolver</span><span class="pln">
setConflictResolver</span><span class="pun">(</span><span class="pln"> determineConflictResolver</span><span class="pun">(</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">chainedProperties</span><span class="pun">.</span><span class="pln">getProperty</span><span class="pun">(</span><span class="pln"> </span><span class="str">"drools.conflictResolver"</span><span class="pun">,</span><span class="pln"> </span></pre>
<p> <strong> Drools Util </strong></p>
<pre class="prettyprint"><span class="pln"> </span><span class="typ">ChainedProperties</span><span class="pun">.</span><span class="pln">java </span><span class="com">// line 98 - exception check around ClassLoader.getSystemClassLoader();</span></pre>
<pre class="prettyprint"><span class="pln"> </span><span class="typ">ChainedProperties</span><span class="pun">.</span><span class="pln">java </span><span class="com">// line 125 - exception check around ClassLoader.getSystemClassLoader();</span></pre>
<pre class="prettyprint"><span class="pln"> </span><span class="typ">ChainedProperties</span><span class="pun">.</span><span class="pln">java </span><span class="com">// line 160 </span><span class="pln">
</span><span class="pun">-</span><span class="pln"> </span><span class="kwd">null</span><span class="pln"> check </span><span class="kwd">for</span><span class="pln"> properties </span><span class="pun">/</span><span class="pln">key </span><span class="kwd">and</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">default</span></pre>
<pre class="prettyprint"><span class="pln"> </span><span class="typ">ChainedProperties</span><span class="pun">.</span><span class="pln">java </span><span class="com">// line 240 - surround by try / catch for securityaccessexception</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> file </span><span class="pun">!=</span><span class="pln"> </span><span class="kwd">null</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> file</span><span class="pun">.</span><span class="pln">exists</span><span class="pun">()</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span></pre>
<pre class="prettyprint"><span class="pln"> </span><span class="typ">ChainedProperties</span><span class="pun">.</span><span class="pln">java </span><span class="com">// line 270 - surround by try / catch for securityaccessexception</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> file </span><span class="pun">!=</span><span class="pln"> </span><span class="kwd">null</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> file</span><span class="pun">.</span><span class="pln">exists</span><span class="pun">()</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span></pre>
<pre class="prettyprint"><span class="pln"> </span><span class="typ">ClassFieldInspector</span><span class="pun">.</span><span class="pln">java </span><span class="com">// line 166 - </span><span class="pln">
</span><span class="kwd">return</span><span class="pln"> </span><span class="str">"/"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> clazz</span><span class="pun">.</span><span class="pln">getCanonicalName</span><span class="pun">()</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">".class"</span><span class="pun">;</span></pre>
<pre class="prettyprint"><span class="pln"> </span><span class="typ">ClassLoaderUtil</span><span class="pun">.</span><span class="pln">java </span><span class="com">// line 25 - surround by try / catch for securityaccessexception</span><span class="pln">
</span><span class="typ">ClassLoader</span><span class="pln"> systemClassLoader </span><span class="pun">=</span><span class="pln"> </span></pre>
<br>
<pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
rules-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-dev">https://lists.jboss.org/mailman/listinfo/rules-dev</a>
</pre>
</blockquote>
<br>
</body>
</html>