svn commit: r1542544 - /ofbiz/trunk/framework/base/src/org/ofbiz/base/util/PatternFactory.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1542544 - /ofbiz/trunk/framework/base/src/org/ofbiz/base/util/PatternFactory.java

adrianc
Author: adrianc
Date: Sat Nov 16 18:30:08 2013
New Revision: 1542544

URL: http://svn.apache.org/r1542544
Log:
Created a PatternFactory class to replace the existing CompilerMatcher class.

https://issues.apache.org/jira/browse/OFBIZ-5395

Added:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/PatternFactory.java   (with props)

Added: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/PatternFactory.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/PatternFactory.java?rev=1542544&view=auto
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/PatternFactory.java (added)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/PatternFactory.java Sat Nov 16 18:30:08 2013
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *******************************************************************************/
+package org.ofbiz.base.util;
+
+import org.apache.oro.text.regex.MalformedPatternException;
+import org.apache.oro.text.regex.Pattern;
+import org.apache.oro.text.regex.Perl5Compiler;
+import org.ofbiz.base.util.cache.UtilCache;
+
+/**
+ * A RegEx compiled pattern factory.
+ *
+ */
+public class PatternFactory {
+
+    public static final String module = CompilerMatcher.class.getName();
+    private static final UtilCache<String, Pattern> compiledPerl5Patterns = UtilCache.createUtilCache("regularExpression.compiledPerl5Patterns", false);
+
+    /**
+     * Compiles and caches a Perl5 regexp pattern for the given string pattern.
+     *
+     * @param stringPattern a Perl5 pattern string
+     * @param caseSensitive case sensitive true/false
+     * @return a <code>Pattern</code> instance for the given string pattern
+     * @throws MalformedPatternException
+     */
+    public Pattern getPerl5Instance(String stringPattern, boolean caseSensitive) throws MalformedPatternException {
+        Pattern pattern = compiledPerl5Patterns.get(stringPattern);
+        if (pattern == null) {
+            Perl5Compiler compiler = new Perl5Compiler();
+            if (caseSensitive) {
+                pattern = compiler.compile(stringPattern);
+            } else {
+                pattern = compiler.compile(stringPattern, Perl5Compiler.CASE_INSENSITIVE_MASK);
+            }
+            pattern = compiledPerl5Patterns.putIfAbsentAndGet(stringPattern, pattern);
+            if (Debug.verboseOn()) {
+                Debug.logVerbose("Compiled and cached the pattern: '" + stringPattern, module);
+            }
+        }
+        return pattern;
+    }
+}

Propchange: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/PatternFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/PatternFactory.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Rev URL