That sounds really nice!<br>Can you mention the features that you get working? which are left out?<br><br><br><div class="gmail_quote">On Mon, Jan 17, 2011 at 4:32 PM, Mark Proctor <span dir="ltr">&lt;<a href="mailto:mproctor@codehaus.org">mproctor@codehaus.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

  
    
  
  <div text="#000000" bgcolor="#ffffff"><div class="im">
    On 17/01/2011 19:25, Paul Browne wrote:
    <blockquote type="cite">Folks,<br>
      <br>
      A little bit later than expected (!) I&#39;ve managed to get Drools
      running within Google App Engine. <br>
    </blockquote></div>
    I thought App Engine wouldn&#39;t work with runtime generated bytecode
    and had classloader restrictions?<br>
    <br>
    Mark<div class="im"><br>
    <blockquote 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 href="http://code.google.com/p/red-piranha/wiki/ModifyDroolsRunInGoogleAppEngine" target="_blank">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></div>
    A patch against trunk attached to a jira should suffice, don&#39;t
    forget we&#39;ve moved to GIT.<br>
    <br>
    Mark<br>
    <blockquote type="cite"><div class="im">
      <br>
      Thanks<br>
      <br>
      Paul<br>
      <br>
      <p><b> Drools Core </b></p>
      <pre><span> </span><span>AbstractRuleBase</span><span>.</span><span>java </span><span>// line 265 surrounded by try / catch </span><span>

      </span><span>this</span><span>.</span><span>config </span><span>=</span><span> </span><span>(</span><span>RuleBaseConfiguration</span><span>)</span><span> droolsStream</span><span>.</span><span>readObject</span><span>();</span></pre>

      <pre><span> </span><span>RuleBaseConfiguration</span><span>.</span><span>java </span><span>// - line 985 surround by try / catch</span><span>

         </span><span>this</span><span>.</span><span>classLoader </span><span>=</span><span> </span><span>ClassLoaderUtil</span><span>.</span><span>getClassLoader</span></pre>
      <pre><span> </span><span>RuleBaseConfiguration</span><span>.</span><span>java </span><span>// line 395  surround by try / catch</span><span>

     </span><span>this</span><span>.</span><span>chainedProperties </span><span>=</span><span> </span><span>new</span><span> </span><span>ChainedProperties</span><span>(</span><span> </span><span>&quot;rulebase.conf&quot;</span><span>,</span></pre>

      <pre><span> </span><span>RuleBaseConfiguration</span><span>.</span><span>java </span><span>// line 457 surround by try / catch, default Conflict Resolver</span><span>

          setConflictResolver</span><span>(</span><span> determineConflictResolver</span><span>(</span><span> </span><span>this</span><span>.</span><span>chainedProperties</span><span>.</span><span>getProperty</span><span>(</span><span> </span><span>&quot;drools.conflictResolver&quot;</span><span>,</span><span> </span></pre>

      <p> <b> Drools Util </b></p>
      <pre><span> </span><span>ChainedProperties</span><span>.</span><span>java </span><span>// line 98 - exception check around ClassLoader.getSystemClassLoader();</span></pre>
      <pre><span> </span><span>ChainedProperties</span><span>.</span><span>java </span><span>// line 125 - exception check around ClassLoader.getSystemClassLoader();</span></pre>
      <pre><span> </span><span>ChainedProperties</span><span>.</span><span>java </span><span>// line 160 </span><span>
        </span><span>-</span><span> </span><span>null</span><span> check </span><span>for</span><span> properties </span><span>/</span><span>key </span><span>and</span><span> </span><span>return</span><span> </span><span>default</span></pre>

      <pre><span> </span><span>ChainedProperties</span><span>.</span><span>java </span><span>// line 240 - surround by try / catch for securityaccessexception</span><span>

    </span><span>if</span><span> </span><span>(</span><span> file </span><span>!=</span><span> </span><span>null</span><span> </span><span>&amp;&amp;</span><span> file</span><span>.</span><span>exists</span><span>()</span><span> </span><span>)</span><span> </span><span>{</span></pre>

      <pre><span> </span><span>ChainedProperties</span><span>.</span><span>java </span><span>// line 270 - surround by try / catch for securityaccessexception</span><span>

    </span><span>if</span><span> </span><span>(</span><span> file </span><span>!=</span><span> </span><span>null</span><span> </span><span>&amp;&amp;</span><span> file</span><span>.</span><span>exists</span><span>()</span><span> </span><span>)</span><span> </span><span>{</span></pre>

      <pre><span> </span><span>ClassFieldInspector</span><span>.</span><span>java </span><span>// line 166 - </span><span>
         </span><span>return</span><span> </span><span>&quot;/&quot;</span><span> </span><span>+</span><span> clazz</span><span>.</span><span>getCanonicalName</span><span>()</span><span> </span><span>+</span><span> </span><span>&quot;.class&quot;</span><span>;</span></pre>

      <pre><span> </span><span>ClassLoaderUtil</span><span>.</span><span>java </span><span>// line 25 - surround by try / catch for securityaccessexception</span><span>

     </span><span>ClassLoader</span><span> systemClassLoader </span><span>=</span><span> </span></pre>
      <br>
      </div><pre><fieldset></fieldset>
_______________________________________________
rules-dev mailing list
<a href="mailto:rules-dev@lists.jboss.org" target="_blank">rules-dev@lists.jboss.org</a>
<a href="https://lists.jboss.org/mailman/listinfo/rules-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-dev</a>
</pre>
    </blockquote>
    <br>
  </div>

<br>_______________________________________________<br>
rules-dev mailing list<br>
<a href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-dev</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br> - CTO @ <a href="http://www.plugtree.com">http://www.plugtree.com</a>  <br> - MyJourney @ <a href="http://salaboy.wordpress.com">http://salaboy.wordpress.com</a><br>
 - Co-Founder @ <a href="http://www.jbug.com.ar">http://www.jbug.com.ar</a><br> <br> - Salatino &quot;Salaboy&quot; Mauricio -<br>