[Schmitzm-commits] r2075 - in trunk/schmitzm-core/src/main/java/de/schmitzm: lang regex
scm-commit at wald.intevation.org
scm-commit at wald.intevation.org
Tue Aug 28 15:35:43 CEST 2012
Author: alfonx
Date: 2012-08-28 15:35:43 +0200 (Tue, 28 Aug 2012)
New Revision: 2075
Removed:
trunk/schmitzm-core/src/main/java/de/schmitzm/regex/RegexCache2.java
trunk/schmitzm-core/src/main/java/de/schmitzm/regex/RegexCacheOrig.java
Modified:
trunk/schmitzm-core/src/main/java/de/schmitzm/lang/LangUtil.java
Log:
Backup-Klasse RegexCache2 entfernt.
Modified: trunk/schmitzm-core/src/main/java/de/schmitzm/lang/LangUtil.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/lang/LangUtil.java 2012-08-19 14:10:10 UTC (rev 2074)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/lang/LangUtil.java 2012-08-28 13:35:43 UTC (rev 2075)
@@ -2678,23 +2678,11 @@
if (string == null)
return "";
- // Alle Zeilenumbrüche raus
- // Geschützte Leerzeichen weg
- // Tabulator -> Leer
- // final Matcher matcher = REMOVE_WHITESPACES_PATTERN.matcher(string);
-
final Matcher matcher = RegexCache.getInstance().getMatcher(
REMOVE_WHITESPACES_PATTERN_R, string);
string = matcher.replaceAll(" ");
- // matcher =
- // RegexCache.getInstance().getPattern("\\u00A0").matcher(string);
- // string = matcher.replaceAll(" ");
- //
- // matcher = RegexCache.getInstance().getPattern("\\t").matcher(string);
- // string = matcher.replaceAll(" ");
-
// Leerraum konsolidieren
final String result = RegexCache.getInstance()
.getMatcher(REMOVE_WHITESPACES_PATTERN2_R, string)
Deleted: trunk/schmitzm-core/src/main/java/de/schmitzm/regex/RegexCache2.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/regex/RegexCache2.java 2012-08-19 14:10:10 UTC (rev 2074)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/regex/RegexCache2.java 2012-08-28 13:35:43 UTC (rev 2075)
@@ -1,224 +0,0 @@
-package de.schmitzm.regex;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.regex.MatchResult;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Cached compilierte Pattern und auch Ergebnisse von RegExes. Use the matchers methods to obtain cached result and add
- * regex to cache automatically.
- *
- * @author stranger
- * @author stefan.tzeggai
- */
-public class RegexCache2 {
-
- /**
- * Diese Klasse dienst dazu, einen Eintrag im cache liegen zu haben, auch wenn keine match gefunden wurde. In dem
- * Falle ist das Feld {@link #matcherResult} dann <code>null</code>
- *
- */
- static class MyMatchResult {
-
- final MatchResult matcherResult;
-
- MyMatchResult(final MatchResult matcher) {
- this.matcherResult = matcher;
- }
- }
-
- /**
- * TODO Ein String der länger ist als die hier angegebene Anzahl Zeichen wir nicht gecached. Die Wahrscheinlichkeit,
- * dass der selbe Sting nochmal auftaucht wird als zu gering eingeschätzt.
- **/
- private static final int CACHE_VALUES_TO_RESULT_MAX_VALUE_LENGTH = 500;
-
- private static final int CACHE_VALUES_TO_RESULT_SIZE = 500;
-
- private static RegexCache2 singletonInstance;
-
- public static RegexCache2 getInstance() {
- return singletonInstance != null ? singletonInstance : new RegexCache2();
- }
-
- // TODO
- // http://lucene.apache.org/solr/api/org/apache/solr/util/ConcurrentLRUCache.html#ConcurrentLRUCache%28int,%20int%29
- private final ConcurrentHashMap<Pattern, ConcurrentHashMap<String, MyMatchResult>> matcherResults = new ConcurrentHashMap<Pattern, ConcurrentHashMap<String, MyMatchResult>>(
- CACHE_VALUES_TO_RESULT_SIZE);
- // private final LimitedConcurrentHashMap<Pattern, LimitedConcurrentHashMap<String, MyMatchResult>> matchers = new
- // LimitedConcurrentHashMap<Pattern, LimitedConcurrentHashMap<String, MyMatchResult>>(
- // CACHE_VALUES_TO_RESULT_SIZE, LimitedConcurrentHashMap.TRUNC_METHOD.OLDEST_GET);
-
- private final ConcurrentHashMap<String, Pattern> patterns = new ConcurrentHashMap<String, Pattern>(1000);
-
- private RegexCache2() {
- }
-
- /**
- * Will throw java exceptions when pattern won't compile.
- *
- * @param regex
- * may not be null
- * @param value
- * returns false is <code>null</code>
- */
- public final boolean matches(final String regex, final Object object) {
- if (object == null)
- return false;
- final String value = object instanceof String ? (String) object : object.toString();
-
- // Matcher m = getMatcher(regex, value);
- // return m.find();
-
- return result(regex, value) != null;
- }
-
- /**
- * Liefert eine compiliertes RegEx Pattern aus dem Cache. Wenn es vorher nicht existierte wird es erstellt.
- */
- public Pattern getPattern(String regex) {
- if (regex == null)
- return null;
- // synchronized (regex) {
- Pattern p = patterns.get(regex);
- if (p == null) {
- p = Pattern.compile(regex);
- patterns.putIfAbsent(regex, p);
- }
- return p;
- // }
- }
-
- // final static Map<String, ThreadLocal<Matcher>> matchersCachedThreadLocalPerRegex = Collections
- // .synchronizedMap(new LimitedHashMap<String, ThreadLocal<Matcher>>(10000, TRUNC_METHOD.OLDEST_GET));
-
- final static Map<String, ThreadLocal<Matcher>> matchersCachedThreadLocalPerRegex = new ConcurrentHashMap<String, ThreadLocal<Matcher>>(
- 10000);
-
- public static boolean matcherCache = true;
- public static boolean resultsCache = false;
-
- /**
- * Diese Methode ist gedacht um die Erstellung von Matcher-Objekten in der JVM zu reduzieren. Es für bis zu 10000
- * RegEx ein Cache verwaltet. Jeder dieser Caches ist ein ThreadLocal-Cache von Matchern. Somit liefert diese Methde
- * für die selbe RegEx auf N Threads N unterschiedliche Matcher.<br/>
- * Die Matcher werden für die Regex gecached. Wird ein Matcher für eine gecachte Regex mit einem anderen TEXT
- * angeforderd, wird zuerst {@link Matcher#reset(CharSequence)} ausgeführt.
- */
- public Matcher getMatcher(final String regex, final String text) {
-
- if (!matcherCache) {
- return getPattern(regex).matcher(text);
- }
-
- ThreadLocal<Matcher> threadLocal = matchersCachedThreadLocalPerRegex.get(regex);
-
- synchronized (regex) {
-
- if (threadLocal == null) {
-
- threadLocal = new ThreadLocal<Matcher>() {
-
- @Override
- protected Matcher initialValue() {
- return getPattern(regex).matcher(text);
- }
- };
- matchersCachedThreadLocalPerRegex.put(regex, threadLocal);
- }
-
- }
-
- return threadLocal.get().reset(text);
- }
-
- /**
- * Diese Methode ist gedacht um die Erstellung von Matcher-Objekten in der JVM zu reduzieren. Es für bis zu 10000
- * RegEx ein Cache verwaltet. Jeder dieser Caches ist ein ThreadLocal-Cache von Matchern. Somit liefert diese Methde
- * für die selbe RegEx auf N Threads N unterschiedliche Matcher.<br/>
- * Die Matcher werden für die Regex gecached. Wird ein Matcher für eine gecachte Regex mit einem anderen TEXT
- * angeforderd, wird zuerst {@link Matcher#reset(CharSequence)} ausgeführt.
- */
- // public Matcher getMatcher(final String regex, final String text) {
- // ThreadLocal<Matcher> threadLocal = matchersCachedThreadLocalPerRegex.get(regex);
- //
- // synchronized (regex) {
- //
- // if (threadLocal == null) {
- //
- // threadLocal = new ThreadLocal<Matcher>() {
- //
- // @Override
- // protected Matcher initialValue() {
- // return getPattern(regex).matcher(text);
- // }
- // };
- // matchersCachedThreadLocalPerRegex.put(regex, threadLocal);
- // }
- //
- // }
- //
- // return threadLocal.get().reset(text);
-
- // return getPattern(regex).matcher(text);
- // }
-
- /**
- * Will throw java exceptions when pattern won't compile.
- *
- * @param regex
- * may not be null
- * @param value
- * may not be null
- * @return <code>null</code> if the pattern didn't match. A {@link MatchResult} otherwise which contains the groups
- * etc.
- */
- public final MatchResult result(final String regex, final String value) {
-
- // Wenn der value-String zu lang oder zu kurz ist, dann einfach so machten
- if (!resultsCache || value.length() < 30 || value.length() > CACHE_VALUES_TO_RESULT_MAX_VALUE_LENGTH) {
- Matcher m = getMatcher(regex, value);
- boolean found = m.find();
- return found ? m.toMatchResult() : null;
- }
-
- final Pattern pattern = getPattern(regex);
-
- ConcurrentHashMap<String, MyMatchResult> m;
- // synchronized (matcherResults) { matcherResults ist jetzt concurrent!
- m = matcherResults.get(pattern);
- if (m == null) {
- matcherResults.put(pattern, m = new ConcurrentHashMap<String, MyMatchResult>());
- }
- // }
-
- // LimitedConcurrentHashMap<String, MyMatchResult> m;
- // synchronized (matchers) {
- // m = matchers.get(pattern);
- // if (m == null) {
- // matchers.put(pattern, m = new LimitedConcurrentHashMap<String, MyMatchResult>(
- // CACHE_VALUES_TO_RESULT_SIZE, TRUNC_METHOD.OLDEST_GET));
- // }
- // }
-
- MyMatchResult mResult;
- // synchronized (m) {
- mResult = m.get(value);
- if (mResult == null) {
- // final Matcher xm = pattern.matcher(value);
- final Matcher xm = getMatcher(regex, value);
- if (xm.find())
- mResult = new MyMatchResult(xm.toMatchResult());
- else
- mResult = new MyMatchResult(null);
-
- m.put(regex, mResult); // Hat die gefehlt?
- }
- // }
-
- return mResult.matcherResult;
- }
-
-}
Deleted: trunk/schmitzm-core/src/main/java/de/schmitzm/regex/RegexCacheOrig.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/regex/RegexCacheOrig.java 2012-08-19 14:10:10 UTC (rev 2074)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/regex/RegexCacheOrig.java 2012-08-28 13:35:43 UTC (rev 2075)
@@ -1,128 +0,0 @@
-package de.schmitzm.regex;
-
-import java.util.HashMap;
-import java.util.regex.MatchResult;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import de.schmitzm.lang.LimitedHashMap;
-import de.schmitzm.lang.LimitedHashMap.TRUNC_METHOD;
-
-/**
- * Cached compilierte Pattern und auch Ergebnisse von RegExes. Use the matchers methods to obtain cached result and add
- * regex to cache automatically.
- *
- * @author stranger
- * @author stefan.tzeggai
- */
-public class RegexCacheOrig {
-
- /**
- * Diese Klasse dienst dazu, einen Eintrag im cache liegen zu haben, auch wenn keine match gefunden wurde. In dem
- * Falle ist das Feld {@link #matcherResult} dann <code>null</code>
- *
- */
- static class MyMatchResult {
-
- final MatchResult matcherResult;
-
- MyMatchResult(final MatchResult matcher) {
- this.matcherResult = matcher;
- }
- }
-
- /**
- * TODO Ein String der länger ist als die hier angegebene Anzahl Zeichen wir nicht gecached. Die Wahrscheinlichkeit,
- * dass der selbe Sting nochmal auftaucht wird als zu gering eingeschätzt. TODO
- **/
- private static final int CACHE_VALUES_TO_RESULT_MAX_VALUE_LENGTH = 200;
-
- private static final int CACHE_VALUES_TO_RESULT_SIZE = 500;
-
- private static RegexCacheOrig singletonInstance;
-
- public static RegexCacheOrig getInstance() {
- return singletonInstance != null ? singletonInstance : new RegexCacheOrig();
- }
-
- private final LimitedHashMap<Pattern, LimitedHashMap<String, MyMatchResult>> matchers = new LimitedHashMap<Pattern, LimitedHashMap<String, MyMatchResult>>(
- CACHE_VALUES_TO_RESULT_SIZE, LimitedHashMap.TRUNC_METHOD.OLDEST_GET);
- private final HashMap<String, Pattern> patterns = new HashMap<String, Pattern>();
-
- private RegexCacheOrig() {
- }
-
- /**
- * Will throw java exceptions when pattern won't compile.
- *
- * @param regex
- * may not be null
- * @param value
- * returns false is <code>null</code>
- */
- public final boolean matches(final String regex, final Object object) {
- if (object == null)
- return false;
- final String value = object instanceof String ? (String) object : object.toString();
- return result(regex, value) != null;
- }
-
- /**
- * Liefert eine compiliertes RegEx Pattern aus dem Cache. Wenn es vorher nicht existierte wird es erstellt.
- */
- public Pattern getPattern(final String regex) {
- synchronized (patterns) {
- Pattern p = patterns.get(regex);
- if (p == null) {
- p = Pattern.compile(regex);
- patterns.put(regex, p);
- }
- return p;
- }
- }
-
- public Matcher getMatcher(final String regex, final String text) {
-
- return getPattern(regex).matcher(text);
- }
-
- /**
- * Will throw java exceptions when pattern won't compile.
- *
- * @param regex
- * may not be null
- * @param value
- * may not be null
- * @return <code>null</code> if the pattern didn't match. A {@link MatchResult} otherwise which contains the groups
- * etc.
- */
- public final MatchResult result(final String regex, final String value) {
-
- final Pattern pattern = getPattern(regex);
-
- LimitedHashMap<String, MyMatchResult> m;
- synchronized (matchers) {
- m = matchers.get(pattern);
- if (m == null) {
- matchers.put(pattern, m = new LimitedHashMap<String, MyMatchResult>(CACHE_VALUES_TO_RESULT_SIZE,
- TRUNC_METHOD.OLDEST_GET));
- }
- }
-
- MyMatchResult matcher;
- synchronized (m) {
- matcher = m.get(value);
- if (matcher == null) {
- final Matcher xm = pattern.matcher(value);
- if (xm.find())
- matcher = new MyMatchResult(xm.toMatchResult());
- else
- matcher = new MyMatchResult(null);
- // TODO?!
- }
- }
-
- return matcher.matcherResult;
- }
-
-}
More information about the Schmitzm-commits
mailing list