Ignore:
Timestamp:
2018-08-11T19:37:49+02:00 (16 months ago)
Author:
Don-vip
Message:

code refactoring

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/search/SearchCompiler.java

    r14120 r14129  
    300300            return match((Tagged) osm);
    301301        }
     302
     303        protected static Pattern compilePattern(String regex, int flags) throws SearchParseError {
     304            try {
     305                return Pattern.compile(regex, flags);
     306            } catch (PatternSyntaxException e) {
     307                throw new SearchParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
     308            } catch (IllegalArgumentException | StringIndexOutOfBoundsException e) {
     309                // StringIndexOutOfBoundsException catched because of https://bugs.openjdk.java.net/browse/JI-9044959
     310                // See #13870: To remove after we switch to a version of Java which resolves this bug
     311                throw new SearchParseError(tr(rxErrorMsgNoPos, regex, e.getMessage()), e);
     312            }
     313        }
    302314    }
    303315
     
    686698            if (regexSearch) {
    687699                int searchFlags = regexFlags(caseSensitive);
    688 
    689                 try {
    690                     this.keyPattern = Pattern.compile(key, searchFlags);
    691                 } catch (PatternSyntaxException e) {
    692                     throw new SearchParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
    693                 } catch (IllegalArgumentException e) {
    694                     throw new SearchParseError(tr(rxErrorMsgNoPos, key, e.getMessage()), e);
    695                 }
    696                 try {
    697                     this.valuePattern = Pattern.compile(value, searchFlags);
    698                 } catch (PatternSyntaxException e) {
    699                     throw new SearchParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
    700                 } catch (IllegalArgumentException | StringIndexOutOfBoundsException e) {
    701                     throw new SearchParseError(tr(rxErrorMsgNoPos, value, e.getMessage()), e);
    702                 }
     700                this.keyPattern = compilePattern(key, searchFlags);
     701                this.valuePattern = compilePattern(value, searchFlags);
    703702                this.key = key;
    704703                this.value = value;
    705 
    706704            } else {
    707705                this.key = key;
     
    966964
    967965            if (regexp && !key.isEmpty() && !"*".equals(key)) {
    968                 try {
    969                     keyPattern = Pattern.compile(key, regexFlags(false));
    970                 } catch (PatternSyntaxException e) {
    971                     throw new SearchParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
    972                 } catch (IllegalArgumentException e) {
    973                     throw new SearchParseError(tr(rxErrorMsgNoPos, key, e.getMessage()), e);
    974                 }
     966                keyPattern = compilePattern(key, regexFlags(false));
    975967            } else {
    976968                keyPattern = null;
    977969            }
    978970            if (regexp && !this.value.isEmpty() && !"*".equals(this.value)) {
    979                 try {
    980                     valuePattern = Pattern.compile(this.value, regexFlags(false));
    981                 } catch (PatternSyntaxException e) {
    982                     throw new SearchParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
    983                 } catch (IllegalArgumentException e) {
    984                     throw new SearchParseError(tr(rxErrorMsgNoPos, value, e.getMessage()), e);
    985                 }
     971                valuePattern = compilePattern(this.value, regexFlags(false));
    986972            } else {
    987973                valuePattern = null;
     
    10981084            this.caseSensitive = caseSensitive;
    10991085            if (regexSearch) {
    1100                 try {
    1101                     this.searchRegex = Pattern.compile(s, regexFlags(caseSensitive));
    1102                 } catch (PatternSyntaxException e) {
    1103                     throw new SearchParseError(tr(rxErrorMsg, e.getPattern(), e.getIndex(), e.getMessage()), e);
    1104                 } catch (IllegalArgumentException | StringIndexOutOfBoundsException e) {
    1105                     // StringIndexOutOfBoundsException catched because of https://bugs.openjdk.java.net/browse/JI-9044959
    1106                     // See #13870: To remove after we switch to a version of Java which resolves this bug
    1107                     throw new SearchParseError(tr(rxErrorMsgNoPos, s, e.getMessage()), e);
    1108                 }
     1086                this.searchRegex = compilePattern(s, regexFlags(caseSensitive));
    11091087                this.search = s;
    11101088            } else if (caseSensitive) {
Note: See TracChangeset for help on using the changeset viewer.