<!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">&nbsp;</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">

&nbsp; &nbsp; &nbsp; </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">&nbsp;</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">

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</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">&nbsp;</span><span class="typ">RuleBaseConfiguration</span><span class="pun">.</span><span class="pln">java </span><span class="com">// line 395 &nbsp;surround by try / catch</span><span class="pln">

&nbsp; &nbsp; &nbsp;</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">&nbsp;</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">

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 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">&nbsp;</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">&nbsp;</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">&nbsp;</span><span class="typ">ChainedProperties</span><span class="pun">.</span><span class="pln">java </span><span class="com">// line 160 </span><span class="pln">
&nbsp; &nbsp; &nbsp; &nbsp; </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">&nbsp;</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">

&nbsp; &nbsp; </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">&amp;&amp;</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">&nbsp;</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">

&nbsp; &nbsp; </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">&amp;&amp;</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">&nbsp;</span><span class="typ">ClassFieldInspector</span><span class="pun">.</span><span class="pln">java </span><span class="com">// line 166 - </span><span class="pln">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</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">&nbsp;</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">

&nbsp; &nbsp; &nbsp;</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>