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
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs