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 |
Free forum by Nabble | Edit this page |