diff --git a/api.search/src/org/netbeans/api/search/SearchPattern.java b/api.search/src/org/netbeans/api/search/SearchPattern.java --- a/api.search/src/org/netbeans/api/search/SearchPattern.java +++ b/api.search/src/org/netbeans/api/search/SearchPattern.java @@ -69,13 +69,13 @@ /** * Match the pattern literally. */ - LITERAL(Bundle.LBL_MatchType_Literal(), 'r'), + LITERAL(Bundle.LBL_MatchType_Literal(), 'L'), /** * The pattern can contain basic wildcards, star (*) for any string and * questionaire (?) for any character. The escape character for these * wildcards is backslash (\). */ - BASIC(Bundle.LBL_MatchType_Basic_Wildcards(), 'B'), + BASIC(Bundle.LBL_MatchType_Basic_Wildcards(), 'r'), /** * The pattern follows java.util.regex.Pattern syntax. */ @@ -102,13 +102,22 @@ case 'R': return REGEXP; case 'r': + return BASIC; + case 'L': return LITERAL; - case 'B': + default: return BASIC; - default: - return LITERAL; } } + + private static boolean isCanonicalPatternFlag(char ch) { + for (MatchType mt : MatchType.values()) { + if (mt.getCanonicalPatternFlag() == ch) { + return true; + } + } + return false; + } } /** @@ -150,13 +159,14 @@ * @param searchExpression non-null String of a searched text * @param wholeWords if true, only whole words were searched * @param matchCase if true, case sensitive search was preformed - * @param regExp if true, regular expression search was performed + * @param regExp if true, regular expression search was performed; if false, + * search with basic wildcards was performed * @return a new SearchPattern in accordance with given parameters */ public static SearchPattern create(String searchExpression, boolean wholeWords, boolean matchCase, boolean regExp) { return new SearchPattern(searchExpression, wholeWords, matchCase, - regExp ? MatchType.REGEXP : MatchType.LITERAL); + regExp ? MatchType.REGEXP : MatchType.BASIC); } /** @@ -320,7 +330,7 @@ //format mrw-findwhat if (canonicalString == null || Character.toUpperCase(canonicalString.charAt(0)) != 'M' - || Character.toUpperCase(canonicalString.charAt(1)) != 'R' + || !MatchType.isCanonicalPatternFlag(canonicalString.charAt(1)) || Character.toUpperCase(canonicalString.charAt(2)) != 'W' || canonicalString.charAt(3) != '-') { return null; diff --git a/api.search/test/unit/src/org/netbeans/api/search/SearchPatternTest.java b/api.search/test/unit/src/org/netbeans/api/search/SearchPatternTest.java --- a/api.search/test/unit/src/org/netbeans/api/search/SearchPatternTest.java +++ b/api.search/test/unit/src/org/netbeans/api/search/SearchPatternTest.java @@ -55,6 +55,21 @@ assertFalse(sp.isRegExp()); assertTrue(sp.isWholeWords()); assertEquals("Test", sp.getSearchExpression()); + assertEquals(MatchType.BASIC, sp.getMatchType()); + } + + @Test + public void testManuallyParseRegexp() throws Exception { + String canString = "MRW-Test"; + SearchPattern sp = SearchPattern.parsePattern(canString); + assertEquals(MatchType.REGEXP, sp.getMatchType()); + } + + @Test + public void testManuallyParseLiteral() throws Exception { + String canString = "MLW-Test"; + SearchPattern sp = SearchPattern.parsePattern(canString); + assertEquals(MatchType.LITERAL, sp.getMatchType()); } @Test @@ -63,6 +78,12 @@ String canString = sp.toCanonicalString(); assertEquals("mRW-ta", canString); + + sp = sp.changeMatchType(MatchType.BASIC); + assertEquals("mrW-ta", sp.toCanonicalString()); + + sp = sp.changeMatchType(MatchType.LITERAL); + assertEquals("mLW-ta", sp.toCanonicalString()); } @Test @@ -95,8 +116,8 @@ false, false, true).changeMatchType(MatchType.BASIC) .getMatchType()); - assertEquals("If not specified exactly, match type should be LITERAL", - MatchType.LITERAL, SearchPattern.create("test", + assertEquals("If not specified exactly, match type should be BASIC", + MatchType.BASIC, SearchPattern.create("test", false, false, false).getMatchType()); } }