Update of /var/cvs/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/cache In directory james.mmbase.org:/tmp/cvs-serv32624/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/cache
Modified Files: TokenizerCacheNameResolver.java FlushNameTemplateBean.java Log Message: more tests See also: http://cvs.mmbase.org/viewcvs/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/cache Index: TokenizerCacheNameResolver.java =================================================================== RCS file: /var/cvs/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/cache/TokenizerCacheNameResolver.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -b -r1.2 -r1.3 --- TokenizerCacheNameResolver.java 28 Nov 2008 20:20:48 -0000 1.2 +++ TokenizerCacheNameResolver.java 8 Dec 2008 19:37:08 -0000 1.3 @@ -6,7 +6,7 @@ The license (Mozilla version 1.0) can be read at the MMBase site. See http://www.MMBase.org/license -*/ + */ package org.mmbase.applications.vprowizards.spring.cache; import java.util.ArrayList; @@ -30,31 +30,29 @@ * in names paces. Each name space could relate to a kind of cache flush hint [EMAIL PROTECTED] CacheFlushHint}. * There is also support for templates. See: [EMAIL PROTECTED] FlushNameTemplateBean} * </pre> + * * @author ebunders */ public class TokenizerCacheNameResolver implements CacheNameResolver { - - private Map<String, List<String>> namesForNamespace = null; private List<String> globalValues; private String input = null; - private final String reNamespace = "^[\\w_]+:"; - private final String reValue = "[\\w_]+"; - private final String reTemplate = "(" + reValue + "(\\[[\\w_]+(:[0-9])?\\])?)?"; - private final String reComposite = reNamespace + reTemplate + "(," + reTemplate + ")*"; + private static final String REGEX_NAMESPACE = "^[\\w_]+:"; + private static final String REGEX_VALUE = "[\\w_]+"; + private static final String REGEX_TEMPLATE = "(" + REGEX_VALUE + "(\\[[\\w_]+(:[0-9])?\\])?)?"; + private static final String REGEX_COMPOSITE = REGEX_NAMESPACE + REGEX_TEMPLATE + "(," + REGEX_TEMPLATE + ")*"; private static Logger log = Logging.getLoggerInstance(TokenizerCacheNameResolver.class); - public List<String> getNames(String nameSpace) { - if(StringUtils.isEmpty(nameSpace)) { + if (StringUtils.isEmpty(nameSpace)) { throw new IllegalStateException("attribute namespace is empty"); } tokenizeIfNecessary(); List<String> result = new ArrayList<String>(); - if(namesForNamespace.get(nameSpace) != null){ + if (namesForNamespace.get(nameSpace) != null) { result.addAll(namesForNamespace.get(nameSpace)); } result.addAll(globalValues); @@ -77,17 +75,15 @@ } /** - * Tokenize the input string with all the configured tokens. All values for each token are then put thrugh all the - * modifiers - *TODO: what if the string starts with a namespace that has not been registered. - [EMAIL PROTECTED] IllegalStateException when input is not set yet. + [EMAIL PROTECTED] IllegalStateException + * when input is not set yet. */ private void tokenize() { - if(StringUtils.isEmpty(input)) { + if (StringUtils.isEmpty(input)) { throw new IllegalStateException("set input first"); } - //init + // init namesForNamespace = new HashMap<String, List<String>>(); globalValues = new ArrayList<String>(); @@ -96,26 +92,23 @@ part = part.trim(); boolean partHasNamespace = false; // boolean matches = part.matches("^[\\w_]+:[\\w,]+"); - boolean matches = part.matches(reComposite); + boolean matches = part.matches(REGEX_COMPOSITE); if (matches) { partHasNamespace = true; String nameSpace = part.substring(0, part.indexOf(":")); - part = part.substring(part.indexOf(":")+1); - if(namesForNamespace.get(nameSpace) == null){ + part = part.substring(part.indexOf(":") + 1); + if (namesForNamespace.get(nameSpace) == null) { namesForNamespace.put(nameSpace, new ArrayList<String>()); } namesForNamespace.get(nameSpace).addAll(Arrays.asList(part.split(","))); } - if (!partHasNamespace) { globalValues.addAll(Arrays.asList(part.split(","))); } } } - - private void reset() { namesForNamespace = null; } @@ -124,6 +117,4 @@ throw new UnsupportedOperationException("this method is not supported for this cache name resolver"); } - - } Index: FlushNameTemplateBean.java =================================================================== RCS file: /var/cvs/applications/vpro-wizards/src/org/mmbase/applications/vprowizards/spring/cache/FlushNameTemplateBean.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -b -r1.4 -r1.5 --- FlushNameTemplateBean.java 6 Dec 2008 18:48:45 -0000 1.4 +++ FlushNameTemplateBean.java 8 Dec 2008 19:37:08 -0000 1.5 @@ -59,54 +59,51 @@ private Cloud cloud; + private TemplateQueryRunner templateQueryRunner = null; + private static final Logger log = Logging.getLoggerInstance(FlushNameTemplateBean.class); public void setCloud(Cloud cloud) { this.cloud = cloud; } - public void setNodeType(String type) { this.nodeType = type; } - public void setTemplate(String template) { this.template = template; } - public void setNodeNumber(String nodenr) { this.nodeNumber = nodenr; } - - public String processAndGetTemplate(){ + public String processAndGetTemplate() { checkNull(template, "template"); checkNull(nodeType, "nodeType"); checkNull(nodeNumber, "nodeNumber"); checkNull(cloud, "cloud"); - if(MultiTemplateParser.isTemplate(template)) { - TemplateQueryRunner templateQueryRunner = new MMBaseTemplateQueryRunner(cloud); - TemplateParser parser = new MultiTemplateParser(nodeType, nodeNumber, template, templateQueryRunner ); - parser.insertNumber(); + if (MultiTemplateParser.isTemplate(template)) { + templateQueryRunner = new MMBaseTemplateQueryRunner(cloud); + TemplateParser parser = new MultiTemplateParser(nodeType, nodeNumber, template, templateQueryRunner); + parser.insertNodeNumber(); return parser.getTemplate(); } return template; } + void setTemplateQueryRunner(TemplateQueryRunner templateQueryRunner) { + this.templateQueryRunner = templateQueryRunner; + } - private void checkNull(Object obj, String name){ + private void checkNull(Object obj, String name) { if (obj == null) { throw new IllegalStateException(String.format("property %s has not been set.", name)); } - if (String.class.isAssignableFrom(obj.getClass()) && StringUtils.isBlank((String)obj)) { + if (String.class.isAssignableFrom(obj.getClass()) && StringUtils.isBlank((String) obj)) { throw new IllegalStateException(String.format("property %s is an empty string.", name)); } } - - - - } _______________________________________________ Cvs mailing list Cvs@lists.mmbase.org http://lists.mmbase.org/mailman/listinfo/cvs