You should add '^' and '$' to avoid matching with part of the type String.
-W
Thanks!I've found another way by using 'matches'. though i don't know which one is preferable (performance speaking..).rule "Filter File Types"salience 100 // prioritywhenFileType( type matches "(ico|gif|jpg|mov|wmv|jpeg|css|bmp|avi|swf|png)" )then//TODO: change to actual actionSystem.out.println("ALLOW");end2010/5/10 Esteban Aliverti <esteban.aliverti@gmail.com>
Maybe you can define a global List so you would not need to add it as a Fact:package com.test.droolsimport com.test.drools.Facts.FileType;global java.util.List allowedExtensions;rule "Filter File Types"whenFileType( type memberOf allowedExtensions )thenSystem.out.println("ALLOW");endYou will need to set the global list before inserting any Fact: ksession.setGlobal("allowedExtensions",somePrePopulatedList);Best,2010/5/9 eyal edri <eyal.edri@gmail.com>_______________________________________________Hi,sorry for the newbi question, i'm just starting to find my way in Drools.i want to write a rule that filters URLs with a certain suffix (e.g. jpg, gif, css, etc...).i read about global vars and other variables and i'm not sure what to do.i need to create a List with all the suffixes i want to filter, should i create it inside FileType?can you help?Eyal.-------------------------------------------here's why i had so far:the .drl file:package com.test.droolsimport com.test.drools.Facts.FileType;rule "Filter File Types"when$fileTypes : ???FileType( type memberOf $fileTypes )thenSystem.out.println("ALLOW");endhere's FileType:package com.commtouch.drools;import java.net.*;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Facts {// return a file type of a urlpublic static class FileType {private String type = "html";public FileType (URL url) {// get the path from the url//TODO: use parser to do it?String path = url.getPath();if (path != null) {// define regex to extract file from pathPattern fileRegex = Pattern.compile("([^/]+)$");Matcher fileMatcher = fileRegex.matcher(path);// get regex capure $1 (filename)String file = null;while (fileMatcher.find())file = fileMatcher.group(1);String suffix = null;if (file != null){//try to extract suffix from filePattern suffixRegex = Pattern.compile("\\.([^\\.]+)$");Matcher suffixMatcher = suffixRegex.matcher(file);while (suffixMatcher.find())suffix = suffixMatcher.group(1);//verify that the suffix is a valid suffixif (suffix != null && (suffix.length()> 1 && suffix.length() < 6))setType(suffix);}}}
public void setType(String type) {this.type = type;}public String getType() {return type;}}}
--
Eyal Edri
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Esteban Aliverti
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Eyal Edri
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users