[ https://issues.apache.org/jira/browse/TRINIDAD-1547?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12794969#action_12794969 ]
Blake Sullivan commented on TRINIDAD-1547: ------------------------------------------ Oh yeah. The patch also fixes the following bug in the old code: @agent webkit and (version:1.8) and (version:1.9.0) would treat the extra 'and' as an 'or'. It was identical to writing: @agent webkit and (version:1.8), webkit and (version:1.9.0) With this patch, such a rule will be parsed correctly to match the media query specification and will always return false as a result (since the version can never match 1.8 and 1.9.0 at the same time). The solution is to use the correct syntax or, in this case, the new max-version support (since that was the intent of the rule) @agent webkit and (max-version:1.9.0) > @agent in skinning should allow for a range of agent versions > ------------------------------------------------------------- > > Key: TRINIDAD-1547 > URL: https://issues.apache.org/jira/browse/TRINIDAD-1547 > Project: MyFaces Trinidad > Issue Type: New Feature > Reporter: Jeanne Waldman > Attachments: JIRA_1547_1_2_12_2.patch > > > related to https://issues.apache.org/jira/browse/TRINIDAD-799 Add agent > version support in skinning > We currently have @agent support, @agent ie and (version:5) > We need to add version ranges - the min-version and max-version. > See thread from April, 2008: > http://www.mail-archive.com/dev@myfaces.apache.org/msg31841.html > -- from thread -- > max- means less-than-or-equal-to:max-version:8 means > version <= 8.0 == true > -- > option 5) the version feature is a String that matches the native > "major.minor.whatever" format of the browser's engine. If the browser's > engine uses non "." for separating versions, "." is used instead. > For matches, the "*" character is allowed in any version section. > For comparisons, the "*" is always a valid match regardless of <, >, or = > comparison > For comparisons where the comparison side contains fewer version sections > than the actual browser version, the comparison side is padded with * version > sections and the comparison occurs as above. > For comparisons where the comparison side contains more version sections than > the actual browser version, the browser version is padded with 0 version > sections and the comparison occurs as above. > // user wants to match IE 5, actual browser version ie 5.5 > @agent ie and (version:5) > matches because version:5 expands to version 5.* and 5.* matches 5.5 > @agent ie and (min-version:5) > matches because version:5 expands to version 5.* and 5.* < 5.5 = true > @agent ie and (max-version:5) > matches because version:5 expands to version 5.* and 5.* > 5.5 = true > // actual browser version gecko 1.9 > @agent gecko and (min-version:1.9.2) > does not match because the browser version 1.9 expands to 1.9.0 and 1.9.2 is > > than 1.9.0 > // actual browser version gecko 1.9 > @agent gecko and (min-version:1.9.*) > matches because the browser version 1.9 expands to 1.9.0 and 1.9.* == 1.9.0 > -- > I have implemented and attached a Version class with the desired behavior and > tested that the following works as expected > System.out.println("toString:" + new Version("5.0.3", "*")); > System.out.println("hashCode:" + new Version("5.0.3", "*").hashCode()); > System.out.println("not equals:" + new Version("5.0.3", "*").equals(new > Version("5", "*"))); > System.out.println("compareTo == 0:" + new Version("5.0.3", > "*").compareTo(new Version("5", "*"))); > System.out.println("compareTo == +:" + new Version("5.0.3", > "*").compareTo(new Version("5", "0"))); > System.out.println("compareTo == -:" + new Version("5.0.3", > "*").compareTo(new Version("5.0.4", "*"))); > Given the way that compareTo works, I changed the wildcard behavior from what > is listed before to make the wildcard behavior only affect compareTo() > results of 0. However, this still has the desired effect because min- and > max- comparisons are <= and >= respectively. Anway, I believe looking at the > code in compareTo() will give everyone a better idea of what I intend. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.