You should add &#39;^&#39; and &#39;$&#39; to avoid matching with part of the type String.<br>-W<br><br><div class="gmail_quote">2010/5/10 eyal edri <span dir="ltr">&lt;<a href="mailto:eyal.edri@gmail.com">eyal.edri@gmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div dir="ltr">Thanks!<div><br></div><div>I&#39;ve found another way by using &#39;matches&#39;. though i don&#39;t know which one is preferable (performance speaking..).</div>
<div><br></div><div><div><font color="#990000">rule &quot;Filter File Types&quot;</font></div>

<div><span style="white-space: pre;"><font color="#990000">        </font></span><font color="#990000">salience 100 // priority</font></div><div><span style="white-space: pre;"><font color="#990000">        </font></span><font color="#990000">when</font></div>


<div><span style="white-space: pre;"><font color="#990000">                </font></span><font color="#990000">FileType( type matches &quot;(ico|gif|jpg|mov|wmv|jpeg|css|bmp|avi|swf|png)&quot; )</font></div>

<div><span style="white-space: pre;"><font color="#990000">        </font></span><font color="#990000">then</font></div><div><span style="white-space: pre;"><font color="#990000">                </font></span><font color="#990000">//TODO: change to actual action</font></div>


<div><span style="white-space: pre;"><font color="#990000">                </font></span><font color="#990000">System.out.println(&quot;ALLOW&quot;);</font></div><div>

<font color="#990000">end</font></div><div><br></div><br><div class="gmail_quote">2010/5/10 Esteban Aliverti <span dir="ltr">&lt;<a href="mailto:esteban.aliverti@gmail.com" target="_blank">esteban.aliverti@gmail.com</a>&gt;</span><br>


<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Maybe you can define a global List so you would not need to add it as a Fact:<div><br></div>
<div><br></div><div><div>

<div><font color="#990000"><b>package com.test.drools</b></font></div><div><font color="#990000"><b> </b></font></div>

<div><font color="#990000"><b>import com.test.drools.Facts.FileType;</b></font></div><div><font color="#990000"><b><br></b></font></div></div><div><font color="#990000"><b>global java.util.List allowedExtensions;</b></font></div>


<div>

<div><font color="#990000"><b> </b></font></div><div><font color="#990000"><b>rule &quot;Filter File Types&quot;</b></font></div><div><span style="white-space: pre;"><font color="#990000"><b>        </b></font></span></div><div>


<span style="white-space: pre;"><font color="#990000"><b>        </b></font></span><font color="#990000"><b>when</b></font><span style="color: rgb(153, 0, 0);"><b>               <span style="background-color: rgb(255, 255, 0);"> </span></b></span></div>




</div><div><span style="white-space: pre;"><font color="#990000"><b>                </b></font></span><font color="#990000"><b>FileType( type memberOf <span style="font-weight: normal;"><b>allowedExtensions</b></span> )</b></font></div>
<div>



<div><span style="white-space: pre;"><font color="#990000"><b>        </b></font></span><font color="#990000"><b>then</b></font></div><div><span style="white-space: pre;"><font color="#990000"><b>                </b></font></span><font color="#990000"><b>System.out.println(&quot;ALLOW&quot;);</b></font></div>




<div><font color="#990000"><b>end</b></font></div></div></div><div><br></div><div>You will need to set the global list before inserting any Fact: ksession.setGlobal(&quot;allowedExtensions&quot;,somePrePopulatedList);</div>


<div>

<br></div><div>Best,</div><div><br><br><div class="gmail_quote">2010/5/9 eyal edri <span dir="ltr">&lt;<a href="mailto:eyal.edri@gmail.com" target="_blank">eyal.edri@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">


<div><div></div><div>

<div dir="ltr">Hi,<div><br></div><div>sorry for the newbi question, i&#39;m just starting to find my way in Drools.</div><div><br></div><div>i want to  write a rule that filters URLs with a certain suffix (e.g. jpg, gif, css, etc...).</div>






<div><br></div><div>i read about global vars and other variables and i&#39;m not sure what to do.</div><div><br></div><div>i need to create a List with all the suffixes i want to filter, should i create it inside FileType? </div>






<div><br></div><div>can you help?</div><div><br></div><div>Eyal.</div><div>-------------------------------------------</div><div><br></div><div>here&#39;s why i had so far:</div><div><br></div><div><br></div><div>the .drl file:</div>






<div><br></div><div><div><font color="#990000"><b>package com.test.drools</b></font></div><div><font color="#990000"><b> </b></font></div><div><font color="#990000"><b>import com.test.drools.Facts.FileType;</b></font></div>






<div><font color="#990000"><b><br></b></font></div><div><font color="#990000"><b> </b></font></div><div><font color="#990000"><b>rule &quot;Filter File Types&quot;</b></font></div>

<div><span style="white-space: pre;"><font color="#990000"><b>        </b></font></span></div><div><span style="white-space: pre;"><font color="#990000"><b>        </b></font></span><font color="#990000"><b>when</b></font></div>

<div><font color="#990000"><b>               <span style="background-color: rgb(255, 255, 0);"> $fileTypes : ??? </span></b></font></div><div><span style="white-space: pre;"><font color="#990000"><b>                </b></font></span><font color="#990000"><b>FileType( type memberOf $fileTypes )</b></font></div>






<div><span style="white-space: pre;"><font color="#990000"><b>        </b></font></span><font color="#990000"><b>then</b></font></div><div><span style="white-space: pre;"><font color="#990000"><b>                </b></font></span><font color="#990000"><b>System.out.println(&quot;ALLOW&quot;);</b></font></div>






<div><font color="#990000"><b>end</b></font></div><div><br></div><div>here&#39;s FileType:</div><div><br></div><div><div><span style="font-size: x-small;">package com.commtouch.drools;</span></div>

<div><span style="font-size: x-small;"><br></span></div><div><span style="font-size: x-small;">import java.net.*;</span></div><div><span style="font-size: x-small;">import java.util.regex.Matcher;</span></div>

<div><span style="font-size: x-small;">import java.util.regex.Pattern;</span></div><div><span style="font-size: x-small;"><br></span></div><div><span style="font-size: x-small;">public class Facts {</span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">        </span></span><span style="font-size: x-small;">// return a file type of a url</span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">        </span></span><span style="font-size: x-small;">public static class FileType {</span></div>

<div><span style="font-size: x-small;"><br></span></div><div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">private String type = &quot;html&quot;;</span></div>






<div><span style="font-size: x-small;"><br></span></div><div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">public FileType (URL url) {</span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                        </span></span><span style="font-size: x-small;">// get the path from the url</span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                        </span></span><span style="font-size: x-small;">//TODO: use parser to do it?</span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                        </span></span><span style="font-size: x-small;">String path = url.getPath();</span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                        </span></span><span style="font-size: x-small;">if (path != null) {</span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                                </span></span><span style="font-size: x-small;">// define regex to extract file from path</span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                                </span></span><span style="font-size: x-small;">Pattern fileRegex = Pattern.compile(&quot;([^/]+)$&quot;);</span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                                </span></span><span style="font-size: x-small;">Matcher fileMatcher = fileRegex.matcher(path);</span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">    </span><span style="white-space: pre;"><span style="font-size: x-small;">        </span></span><span style="font-size: x-small;">// get regex capure $1 (filename)</span></div>






<div><span style="white-space: pre;"><span style="font-size: x-small;">                                </span></span><span style="font-size: x-small;">String file = null;</span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">    </span><span style="white-space: pre;"><span style="font-size: x-small;">        </span></span><span style="font-size: x-small;">while (fileMatcher.find()) </span></div>






<div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">    </span><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;"> file = fileMatcher.group(1);</span></div>






<div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">    </span><span style="white-space: pre;"><span style="font-size: x-small;">        </span></span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">    </span><span style="white-space: pre;"><span style="font-size: x-small;">        </span></span><span style="font-size: x-small;">String suffix = null;</span></div>






<div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">    </span><span style="white-space: pre;"><span style="font-size: x-small;">        </span></span><span style="font-size: x-small;">if (file != null)</span></div>






<div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">    </span><span style="white-space: pre;"><span style="font-size: x-small;">        </span></span><span style="font-size: x-small;">{</span></div>






<div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">    </span><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">//try to extract suffix from file</span></div>






<div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">    </span><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">Pattern suffixRegex = Pattern.compile(&quot;\\.([^\\.]+)$&quot;);</span></div>






<div><span style="white-space: pre;"><span style="font-size: x-small;">                                        </span></span><span style="font-size: x-small;">Matcher suffixMatcher = suffixRegex.matcher(file);</span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                                        </span></span><span style="font-size: x-small;">while (suffixMatcher.find()) </span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                        </span></span><span style="font-size: x-small;">    </span><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;"> suffix = suffixMatcher.group(1);</span></div>






<div><span style="white-space: pre;"><span style="font-size: x-small;">                                        </span></span><span style="font-size: x-small;">//verify that the suffix is a valid suffix </span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                                        </span></span><span style="font-size: x-small;">if (suffix != null &amp;&amp; (suffix.length()&gt; 1 &amp;&amp; suffix.length() &lt; 6))</span></div>


<div><span style="white-space: pre;"><span style="font-size: x-small;">                                                        </span></span><span style="font-size: x-small;">setType(suffix);</span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">    </span><span style="white-space: pre;"><span style="font-size: x-small;">        </span></span><span style="font-size: x-small;">}</span></div>






<div><span style="white-space: pre;"><span style="font-size: x-small;">                        </span></span><span style="font-size: x-small;">}</span></div><div><span style="white-space: pre;"><span style="font-size: x-small;">                        </span></span></div>






<div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">}</span></div><div><span style="font-size: x-small;"><br>

</span></div><div><span style="white-space: pre;"><span style="font-size: x-small;">        </span></span></div><div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">public void setType(String type) {</span></div>






<div><span style="white-space: pre;"><span style="font-size: x-small;">                        </span></span><span style="font-size: x-small;">this.type = type;</span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">}</span></div><div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span></div>


<div><span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">public String getType() {</span></div>

<div><span style="white-space: pre;"><span style="font-size: x-small;">                        </span></span><span style="font-size: x-small;">return type;</span></div><div>

<span style="white-space: pre;"><span style="font-size: x-small;">                </span></span><span style="font-size: x-small;">}</span></div><div><span style="white-space: pre;"><span style="font-size: x-small;">        </span></span><span style="font-size: x-small;">}</span></div>






<div><span style="font-size: x-small;">}</span></div></div><div><br></div><div><br>-- <br>Eyal Edri<br>
</div></div></div>
<br></div></div>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<br><br>Esteban Aliverti<br>
</div>
<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Eyal Edri<br>
</div></div>
<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br>