You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Jim Yu (JIRA)" <ji...@apache.org> on 2009/02/10 13:01:04 UTC

[jira] Commented: (HARMONY-6087) [luni] java.util.Scanner behaves differently with RI while parsing specific pattern

    [ https://issues.apache.org/jira/browse/HARMONY-6087?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12672241#action_12672241 ] 

Jim Yu commented on HARMONY-6087:
---------------------------------

I looked into code and found the root cause why Harmony fails to find a match was that the 
Scanner would ignore the next line terminator completely while trying to find a match. According 
to the Spec for findInLine(Pattern) method, this method "Attempts to find the next occurrence of 
the specified pattern ignoring delimiters." It seems our behavior of ignoring the delimiter complies 
with the Spec. But for the specific pattern in this case which contains a special constructs'?=' 
which means a zero-width positive lookahead, RI's behavior indicates it didn't ignore the delimiter
completely. In fact, according to the testcase result, RI would take the delimiter into consideration 
when it tries to find a match but exclude it in its match result. So it seems the Spec is obscure for
the meaning of "ignore". To ignore the delimiter at all even when scanning as Harmony does or just
ignore it in the match result ? RI's behavior indicates it means the later one. 

I've attached a patch to follow RI's behavior. 

> [luni] java.util.Scanner behaves differently with RI while parsing specific pattern 
> ------------------------------------------------------------------------------------
>
>                 Key: HARMONY-6087
>                 URL: https://issues.apache.org/jira/browse/HARMONY-6087
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>    Affects Versions: 5.0M8
>            Reporter: Jim Yu
>             Fix For: 5.0M9
>
>         Attachments: HARMONY-6087.diff
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> Here is a testcase, Scanner of Harmony behaves differently with RI 
> import java.util.Scanner;
> import java.util.regex.Pattern;
> public class SpecialPattern {
>     private static final Pattern pattern = Pattern.compile("^\\s*(?:\\*(?=[^/]))");
>     public static void main(String[] args) {
>         Scanner scn = new Scanner("   *\n");
>         String found = scn.findInLine(pattern);
>         System.out.print(found);
>     }
> }
> Result of RI:
>    *
> Result of Harmony:
> null

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.