[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