Integrate r11187, r11189, r11191, r11192, r11195, r11200, r11201, r11203, r11204 and r11205 into releases/2.5 Review by: rdayal@google.com git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/2.5@11276 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/core/ext/linker/impl/permutations.js b/dev/core/src/com/google/gwt/core/ext/linker/impl/permutations.js index 0d454a0..b35644f 100644 --- a/dev/core/src/com/google/gwt/core/ext/linker/impl/permutations.js +++ b/dev/core/src/com/google/gwt/core/ext/linker/impl/permutations.js
@@ -52,7 +52,7 @@ // __PERMUTATIONS_END__ var idx = strongName.indexOf(':'); if (idx != -1) { - softPermutationId = +(strongName.substring(idx + 1)); + softPermutationId = parseInt(strongName.substring(idx + 1), 10); strongName = strongName.substring(0, idx); } } catch (e) {
diff --git a/user/src/com/google/gwt/aria/client/AlertRole.java b/user/src/com/google/gwt/aria/client/AlertRole.java index 8dd9212..574a8fe 100644 --- a/user/src/com/google/gwt/aria/client/AlertRole.java +++ b/user/src/com/google/gwt/aria/client/AlertRole.java
@@ -19,22 +19,11 @@ /** - * AlertRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#alert">alert</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface AlertRole extends RegionRole { }
diff --git a/user/src/com/google/gwt/aria/client/AlertRoleImpl.java b/user/src/com/google/gwt/aria/client/AlertRoleImpl.java index 7a9f37d..b9b00cb 100644 --- a/user/src/com/google/gwt/aria/client/AlertRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/AlertRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link AlertRole}.</p> */ -class AlertRoleImpl extends Role implements AlertRole { +class AlertRoleImpl extends RoleImpl implements AlertRole { AlertRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/AlertdialogRole.java b/user/src/com/google/gwt/aria/client/AlertdialogRole.java index b23c696..88c31d9 100644 --- a/user/src/com/google/gwt/aria/client/AlertdialogRole.java +++ b/user/src/com/google/gwt/aria/client/AlertdialogRole.java
@@ -19,22 +19,11 @@ /** - * AlertdialogRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#alertdialog">alertdialog</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface AlertdialogRole extends AlertRole, DialogRole { }
diff --git a/user/src/com/google/gwt/aria/client/AlertdialogRoleImpl.java b/user/src/com/google/gwt/aria/client/AlertdialogRoleImpl.java index 6371c47..fdec37a 100644 --- a/user/src/com/google/gwt/aria/client/AlertdialogRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/AlertdialogRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link AlertdialogRole}.</p> */ -class AlertdialogRoleImpl extends Role implements AlertdialogRole { +class AlertdialogRoleImpl extends RoleImpl implements AlertdialogRole { AlertdialogRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/ApplicationRole.java b/user/src/com/google/gwt/aria/client/ApplicationRole.java index 971607e..541319b 100644 --- a/user/src/com/google/gwt/aria/client/ApplicationRole.java +++ b/user/src/com/google/gwt/aria/client/ApplicationRole.java
@@ -19,22 +19,11 @@ /** - * ApplicationRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#application">application</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface ApplicationRole extends LandmarkRole { }
diff --git a/user/src/com/google/gwt/aria/client/ApplicationRoleImpl.java b/user/src/com/google/gwt/aria/client/ApplicationRoleImpl.java index b0cd391..23b4e68 100644 --- a/user/src/com/google/gwt/aria/client/ApplicationRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/ApplicationRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link ApplicationRole}.</p> */ -class ApplicationRoleImpl extends Role implements ApplicationRole { +class ApplicationRoleImpl extends RoleImpl implements ApplicationRole { ApplicationRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/ArticleRole.java b/user/src/com/google/gwt/aria/client/ArticleRole.java index 6e4803c..79fc2fc 100644 --- a/user/src/com/google/gwt/aria/client/ArticleRole.java +++ b/user/src/com/google/gwt/aria/client/ArticleRole.java
@@ -19,22 +19,11 @@ /** - * ArticleRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#article">article</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface ArticleRole extends DocumentRole, RegionRole { }
diff --git a/user/src/com/google/gwt/aria/client/ArticleRoleImpl.java b/user/src/com/google/gwt/aria/client/ArticleRoleImpl.java index d644ea2..ec4c6ab 100644 --- a/user/src/com/google/gwt/aria/client/ArticleRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/ArticleRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link ArticleRole}.</p> */ -class ArticleRoleImpl extends Role implements ArticleRole { +class ArticleRoleImpl extends RoleImpl implements ArticleRole { ArticleRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/BannerRole.java b/user/src/com/google/gwt/aria/client/BannerRole.java index 8fec2c2..6b610a8 100644 --- a/user/src/com/google/gwt/aria/client/BannerRole.java +++ b/user/src/com/google/gwt/aria/client/BannerRole.java
@@ -19,22 +19,11 @@ /** - * BannerRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#banner">banner</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface BannerRole extends LandmarkRole { }
diff --git a/user/src/com/google/gwt/aria/client/BannerRoleImpl.java b/user/src/com/google/gwt/aria/client/BannerRoleImpl.java index 8a1da72..b6dfbe0 100644 --- a/user/src/com/google/gwt/aria/client/BannerRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/BannerRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link BannerRole}.</p> */ -class BannerRoleImpl extends Role implements BannerRole { +class BannerRoleImpl extends RoleImpl implements BannerRole { BannerRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/ButtonRole.java b/user/src/com/google/gwt/aria/client/ButtonRole.java index 3c12a2f..c638ab9 100644 --- a/user/src/com/google/gwt/aria/client/ButtonRole.java +++ b/user/src/com/google/gwt/aria/client/ButtonRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * ButtonRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#button">button</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface ButtonRole extends CommandRole { String getAriaExpandedState(Element element);
diff --git a/user/src/com/google/gwt/aria/client/ButtonRoleImpl.java b/user/src/com/google/gwt/aria/client/ButtonRoleImpl.java index a3b4eef..5901f87 100644 --- a/user/src/com/google/gwt/aria/client/ButtonRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/ButtonRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link ButtonRole}.</p> */ -class ButtonRoleImpl extends Role implements ButtonRole { +class ButtonRoleImpl extends RoleImpl implements ButtonRole { ButtonRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/CheckboxRole.java b/user/src/com/google/gwt/aria/client/CheckboxRole.java index f78ec21..43b62bd 100644 --- a/user/src/com/google/gwt/aria/client/CheckboxRole.java +++ b/user/src/com/google/gwt/aria/client/CheckboxRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * CheckboxRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#checkbox">checkbox</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface CheckboxRole extends InputRole { String getAriaCheckedState(Element element);
diff --git a/user/src/com/google/gwt/aria/client/CheckboxRoleImpl.java b/user/src/com/google/gwt/aria/client/CheckboxRoleImpl.java index 43e1214..c06cfde 100644 --- a/user/src/com/google/gwt/aria/client/CheckboxRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/CheckboxRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link CheckboxRole}.</p> */ -class CheckboxRoleImpl extends Role implements CheckboxRole { +class CheckboxRoleImpl extends RoleImpl implements CheckboxRole { CheckboxRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/ColumnheaderRole.java b/user/src/com/google/gwt/aria/client/ColumnheaderRole.java index 416fcb3..b0ffab0 100644 --- a/user/src/com/google/gwt/aria/client/ColumnheaderRole.java +++ b/user/src/com/google/gwt/aria/client/ColumnheaderRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * ColumnheaderRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#columnheader">columnheader</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface ColumnheaderRole extends GridcellRole, SectionheadRole, WidgetRole { String getAriaSortProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/ColumnheaderRoleImpl.java b/user/src/com/google/gwt/aria/client/ColumnheaderRoleImpl.java index 4232cdf..abc855f 100644 --- a/user/src/com/google/gwt/aria/client/ColumnheaderRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/ColumnheaderRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link ColumnheaderRole}.</p> */ -class ColumnheaderRoleImpl extends Role implements ColumnheaderRole { +class ColumnheaderRoleImpl extends RoleImpl implements ColumnheaderRole { ColumnheaderRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/ComboboxRole.java b/user/src/com/google/gwt/aria/client/ComboboxRole.java index 803853b..1dae8bb 100644 --- a/user/src/com/google/gwt/aria/client/ComboboxRole.java +++ b/user/src/com/google/gwt/aria/client/ComboboxRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * ComboboxRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#combobox">combobox</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface ComboboxRole extends SelectRole { String getAriaAutocompleteProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/ComboboxRoleImpl.java b/user/src/com/google/gwt/aria/client/ComboboxRoleImpl.java index 10ab5ae..8e068de 100644 --- a/user/src/com/google/gwt/aria/client/ComboboxRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/ComboboxRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link ComboboxRole}.</p> */ -class ComboboxRoleImpl extends Role implements ComboboxRole { +class ComboboxRoleImpl extends RoleImpl implements ComboboxRole { ComboboxRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/CommandRole.java b/user/src/com/google/gwt/aria/client/CommandRole.java index 1ca991e..0b19a4f 100644 --- a/user/src/com/google/gwt/aria/client/CommandRole.java +++ b/user/src/com/google/gwt/aria/client/CommandRole.java
@@ -19,22 +19,11 @@ /** - * CommandRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#command">command</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface CommandRole extends WidgetRole { }
diff --git a/user/src/com/google/gwt/aria/client/ComplementaryRole.java b/user/src/com/google/gwt/aria/client/ComplementaryRole.java index c8c7a50..cbde080 100644 --- a/user/src/com/google/gwt/aria/client/ComplementaryRole.java +++ b/user/src/com/google/gwt/aria/client/ComplementaryRole.java
@@ -19,22 +19,11 @@ /** - * ComplementaryRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#complementary">complementary</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface ComplementaryRole extends LandmarkRole { }
diff --git a/user/src/com/google/gwt/aria/client/ComplementaryRoleImpl.java b/user/src/com/google/gwt/aria/client/ComplementaryRoleImpl.java index 4530496..45eedd2 100644 --- a/user/src/com/google/gwt/aria/client/ComplementaryRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/ComplementaryRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link ComplementaryRole}.</p> */ -class ComplementaryRoleImpl extends Role implements ComplementaryRole { +class ComplementaryRoleImpl extends RoleImpl implements ComplementaryRole { ComplementaryRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/CompositeRole.java b/user/src/com/google/gwt/aria/client/CompositeRole.java index 0002061..3b853ab 100644 --- a/user/src/com/google/gwt/aria/client/CompositeRole.java +++ b/user/src/com/google/gwt/aria/client/CompositeRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * CompositeRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#composite">composite</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface CompositeRole extends WidgetRole { String getAriaActivedescendantProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/ContentinfoRole.java b/user/src/com/google/gwt/aria/client/ContentinfoRole.java index 0138eb9..bef7d5d 100644 --- a/user/src/com/google/gwt/aria/client/ContentinfoRole.java +++ b/user/src/com/google/gwt/aria/client/ContentinfoRole.java
@@ -19,22 +19,11 @@ /** - * ContentinfoRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#contentinfo">contentinfo</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface ContentinfoRole extends LandmarkRole { }
diff --git a/user/src/com/google/gwt/aria/client/ContentinfoRoleImpl.java b/user/src/com/google/gwt/aria/client/ContentinfoRoleImpl.java index 3a21a78..a5db746 100644 --- a/user/src/com/google/gwt/aria/client/ContentinfoRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/ContentinfoRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link ContentinfoRole}.</p> */ -class ContentinfoRoleImpl extends Role implements ContentinfoRole { +class ContentinfoRoleImpl extends RoleImpl implements ContentinfoRole { ContentinfoRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/DefinitionRole.java b/user/src/com/google/gwt/aria/client/DefinitionRole.java index 71d27bc..3d5e291 100644 --- a/user/src/com/google/gwt/aria/client/DefinitionRole.java +++ b/user/src/com/google/gwt/aria/client/DefinitionRole.java
@@ -19,22 +19,11 @@ /** - * DefinitionRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#definition">definition</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface DefinitionRole extends SectionRole { }
diff --git a/user/src/com/google/gwt/aria/client/DefinitionRoleImpl.java b/user/src/com/google/gwt/aria/client/DefinitionRoleImpl.java index 9fcfbb2..e919610 100644 --- a/user/src/com/google/gwt/aria/client/DefinitionRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/DefinitionRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link DefinitionRole}.</p> */ -class DefinitionRoleImpl extends Role implements DefinitionRole { +class DefinitionRoleImpl extends RoleImpl implements DefinitionRole { DefinitionRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/DialogRole.java b/user/src/com/google/gwt/aria/client/DialogRole.java index 3381827..6d474b6 100644 --- a/user/src/com/google/gwt/aria/client/DialogRole.java +++ b/user/src/com/google/gwt/aria/client/DialogRole.java
@@ -19,22 +19,11 @@ /** - * DialogRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#dialog">dialog</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface DialogRole extends WindowRole { }
diff --git a/user/src/com/google/gwt/aria/client/DialogRoleImpl.java b/user/src/com/google/gwt/aria/client/DialogRoleImpl.java index 1f7a61c..7b33c00 100644 --- a/user/src/com/google/gwt/aria/client/DialogRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/DialogRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link DialogRole}.</p> */ -class DialogRoleImpl extends Role implements DialogRole { +class DialogRoleImpl extends RoleImpl implements DialogRole { DialogRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/DirectoryRole.java b/user/src/com/google/gwt/aria/client/DirectoryRole.java index 1a502cd..3bccc30 100644 --- a/user/src/com/google/gwt/aria/client/DirectoryRole.java +++ b/user/src/com/google/gwt/aria/client/DirectoryRole.java
@@ -19,22 +19,11 @@ /** - * DirectoryRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#directory">directory</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface DirectoryRole extends ListRole { }
diff --git a/user/src/com/google/gwt/aria/client/DirectoryRoleImpl.java b/user/src/com/google/gwt/aria/client/DirectoryRoleImpl.java index d584fbc..b4ce77b 100644 --- a/user/src/com/google/gwt/aria/client/DirectoryRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/DirectoryRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link DirectoryRole}.</p> */ -class DirectoryRoleImpl extends Role implements DirectoryRole { +class DirectoryRoleImpl extends RoleImpl implements DirectoryRole { DirectoryRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/DocumentRole.java b/user/src/com/google/gwt/aria/client/DocumentRole.java index 9a37083..3ce1f9c 100644 --- a/user/src/com/google/gwt/aria/client/DocumentRole.java +++ b/user/src/com/google/gwt/aria/client/DocumentRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * DocumentRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#document">document</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface DocumentRole extends StructureRole { String getAriaExpandedState(Element element);
diff --git a/user/src/com/google/gwt/aria/client/DocumentRoleImpl.java b/user/src/com/google/gwt/aria/client/DocumentRoleImpl.java index 2b22b8c..a77c13a 100644 --- a/user/src/com/google/gwt/aria/client/DocumentRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/DocumentRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link DocumentRole}.</p> */ -class DocumentRoleImpl extends Role implements DocumentRole { +class DocumentRoleImpl extends RoleImpl implements DocumentRole { DocumentRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/FormRole.java b/user/src/com/google/gwt/aria/client/FormRole.java index ef3c986..c1998b2 100644 --- a/user/src/com/google/gwt/aria/client/FormRole.java +++ b/user/src/com/google/gwt/aria/client/FormRole.java
@@ -19,22 +19,11 @@ /** - * FormRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#form">form</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface FormRole extends LandmarkRole { }
diff --git a/user/src/com/google/gwt/aria/client/FormRoleImpl.java b/user/src/com/google/gwt/aria/client/FormRoleImpl.java index f3b4d0a..04814a6 100644 --- a/user/src/com/google/gwt/aria/client/FormRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/FormRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link FormRole}.</p> */ -class FormRoleImpl extends Role implements FormRole { +class FormRoleImpl extends RoleImpl implements FormRole { FormRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/GridRole.java b/user/src/com/google/gwt/aria/client/GridRole.java index ef261e4..18c8661 100644 --- a/user/src/com/google/gwt/aria/client/GridRole.java +++ b/user/src/com/google/gwt/aria/client/GridRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * GridRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#grid">grid</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface GridRole extends CompositeRole, RegionRole { String getAriaLevelProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/GridRoleImpl.java b/user/src/com/google/gwt/aria/client/GridRoleImpl.java index 58ac5df..64e30ab 100644 --- a/user/src/com/google/gwt/aria/client/GridRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/GridRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link GridRole}.</p> */ -class GridRoleImpl extends Role implements GridRole { +class GridRoleImpl extends RoleImpl implements GridRole { GridRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/GridcellRole.java b/user/src/com/google/gwt/aria/client/GridcellRole.java index d4bd65d..b98e8ce 100644 --- a/user/src/com/google/gwt/aria/client/GridcellRole.java +++ b/user/src/com/google/gwt/aria/client/GridcellRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * GridcellRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#gridcell">gridcell</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface GridcellRole extends SectionRole, WidgetRole { String getAriaReadonlyProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/GridcellRoleImpl.java b/user/src/com/google/gwt/aria/client/GridcellRoleImpl.java index b69db4f..b058502 100644 --- a/user/src/com/google/gwt/aria/client/GridcellRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/GridcellRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link GridcellRole}.</p> */ -class GridcellRoleImpl extends Role implements GridcellRole { +class GridcellRoleImpl extends RoleImpl implements GridcellRole { GridcellRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/GroupRole.java b/user/src/com/google/gwt/aria/client/GroupRole.java index a10846b..9507677 100644 --- a/user/src/com/google/gwt/aria/client/GroupRole.java +++ b/user/src/com/google/gwt/aria/client/GroupRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * GroupRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#group">group</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface GroupRole extends SectionRole { String getAriaActivedescendantProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/GroupRoleImpl.java b/user/src/com/google/gwt/aria/client/GroupRoleImpl.java index b55072d..47864f2 100644 --- a/user/src/com/google/gwt/aria/client/GroupRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/GroupRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link GroupRole}.</p> */ -class GroupRoleImpl extends Role implements GroupRole { +class GroupRoleImpl extends RoleImpl implements GroupRole { GroupRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/HeadingRole.java b/user/src/com/google/gwt/aria/client/HeadingRole.java index 57de223..ecae557 100644 --- a/user/src/com/google/gwt/aria/client/HeadingRole.java +++ b/user/src/com/google/gwt/aria/client/HeadingRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * HeadingRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#heading">heading</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface HeadingRole extends SectionheadRole { String getAriaLevelProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/HeadingRoleImpl.java b/user/src/com/google/gwt/aria/client/HeadingRoleImpl.java index d43a908..fd89243 100644 --- a/user/src/com/google/gwt/aria/client/HeadingRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/HeadingRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link HeadingRole}.</p> */ -class HeadingRoleImpl extends Role implements HeadingRole { +class HeadingRoleImpl extends RoleImpl implements HeadingRole { HeadingRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/ImgRole.java b/user/src/com/google/gwt/aria/client/ImgRole.java index 7af8190..0c5eb86 100644 --- a/user/src/com/google/gwt/aria/client/ImgRole.java +++ b/user/src/com/google/gwt/aria/client/ImgRole.java
@@ -19,22 +19,11 @@ /** - * ImgRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#img">img</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface ImgRole extends SectionRole { }
diff --git a/user/src/com/google/gwt/aria/client/ImgRoleImpl.java b/user/src/com/google/gwt/aria/client/ImgRoleImpl.java index 88402c0..b1a2ae7 100644 --- a/user/src/com/google/gwt/aria/client/ImgRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/ImgRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link ImgRole}.</p> */ -class ImgRoleImpl extends Role implements ImgRole { +class ImgRoleImpl extends RoleImpl implements ImgRole { ImgRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/InputRole.java b/user/src/com/google/gwt/aria/client/InputRole.java index e33cb92..18941a4 100644 --- a/user/src/com/google/gwt/aria/client/InputRole.java +++ b/user/src/com/google/gwt/aria/client/InputRole.java
@@ -19,22 +19,11 @@ /** - * InputRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#input">input</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface InputRole extends WidgetRole { }
diff --git a/user/src/com/google/gwt/aria/client/LandmarkRole.java b/user/src/com/google/gwt/aria/client/LandmarkRole.java index e0ce6c5..70c1f9c 100644 --- a/user/src/com/google/gwt/aria/client/LandmarkRole.java +++ b/user/src/com/google/gwt/aria/client/LandmarkRole.java
@@ -19,22 +19,11 @@ /** - * LandmarkRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#landmark">landmark</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface LandmarkRole extends RegionRole { }
diff --git a/user/src/com/google/gwt/aria/client/LinkRole.java b/user/src/com/google/gwt/aria/client/LinkRole.java index 60b1745..e5243e3 100644 --- a/user/src/com/google/gwt/aria/client/LinkRole.java +++ b/user/src/com/google/gwt/aria/client/LinkRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * LinkRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#link">link</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface LinkRole extends CommandRole { String getAriaExpandedState(Element element);
diff --git a/user/src/com/google/gwt/aria/client/LinkRoleImpl.java b/user/src/com/google/gwt/aria/client/LinkRoleImpl.java index 92619fc..92f161d 100644 --- a/user/src/com/google/gwt/aria/client/LinkRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/LinkRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link LinkRole}.</p> */ -class LinkRoleImpl extends Role implements LinkRole { +class LinkRoleImpl extends RoleImpl implements LinkRole { LinkRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/ListRole.java b/user/src/com/google/gwt/aria/client/ListRole.java index 0a2d3e4..ac37031 100644 --- a/user/src/com/google/gwt/aria/client/ListRole.java +++ b/user/src/com/google/gwt/aria/client/ListRole.java
@@ -19,22 +19,11 @@ /** - * ListRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#list">list</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface ListRole extends RegionRole { }
diff --git a/user/src/com/google/gwt/aria/client/ListRoleImpl.java b/user/src/com/google/gwt/aria/client/ListRoleImpl.java index dec18c4..05d420d 100644 --- a/user/src/com/google/gwt/aria/client/ListRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/ListRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link ListRole}.</p> */ -class ListRoleImpl extends Role implements ListRole { +class ListRoleImpl extends RoleImpl implements ListRole { ListRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/ListboxRole.java b/user/src/com/google/gwt/aria/client/ListboxRole.java index 3d2b641..1bb4932 100644 --- a/user/src/com/google/gwt/aria/client/ListboxRole.java +++ b/user/src/com/google/gwt/aria/client/ListboxRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * ListboxRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#listbox">listbox</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface ListboxRole extends ListRole, SelectRole { String getAriaMultiselectableProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/ListboxRoleImpl.java b/user/src/com/google/gwt/aria/client/ListboxRoleImpl.java index 740f8a4..9856ad0 100644 --- a/user/src/com/google/gwt/aria/client/ListboxRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/ListboxRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link ListboxRole}.</p> */ -class ListboxRoleImpl extends Role implements ListboxRole { +class ListboxRoleImpl extends RoleImpl implements ListboxRole { ListboxRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/ListitemRole.java b/user/src/com/google/gwt/aria/client/ListitemRole.java index 803bb64..5a6a2e6 100644 --- a/user/src/com/google/gwt/aria/client/ListitemRole.java +++ b/user/src/com/google/gwt/aria/client/ListitemRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * ListitemRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#listitem">listitem</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface ListitemRole extends SectionRole { String getAriaLevelProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/ListitemRoleImpl.java b/user/src/com/google/gwt/aria/client/ListitemRoleImpl.java index 426e5bb..07be0c4 100644 --- a/user/src/com/google/gwt/aria/client/ListitemRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/ListitemRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link ListitemRole}.</p> */ -class ListitemRoleImpl extends Role implements ListitemRole { +class ListitemRoleImpl extends RoleImpl implements ListitemRole { ListitemRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/LogRole.java b/user/src/com/google/gwt/aria/client/LogRole.java index 24e2f38..4c8c19f 100644 --- a/user/src/com/google/gwt/aria/client/LogRole.java +++ b/user/src/com/google/gwt/aria/client/LogRole.java
@@ -19,22 +19,11 @@ /** - * LogRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#log">log</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface LogRole extends RegionRole { }
diff --git a/user/src/com/google/gwt/aria/client/LogRoleImpl.java b/user/src/com/google/gwt/aria/client/LogRoleImpl.java index b9c4344..1901e5e 100644 --- a/user/src/com/google/gwt/aria/client/LogRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/LogRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link LogRole}.</p> */ -class LogRoleImpl extends Role implements LogRole { +class LogRoleImpl extends RoleImpl implements LogRole { LogRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/MainRole.java b/user/src/com/google/gwt/aria/client/MainRole.java index 5b99380..a54e514 100644 --- a/user/src/com/google/gwt/aria/client/MainRole.java +++ b/user/src/com/google/gwt/aria/client/MainRole.java
@@ -19,22 +19,11 @@ /** - * MainRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#main">main</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface MainRole extends LandmarkRole { }
diff --git a/user/src/com/google/gwt/aria/client/MainRoleImpl.java b/user/src/com/google/gwt/aria/client/MainRoleImpl.java index a319bec..e8e5641 100644 --- a/user/src/com/google/gwt/aria/client/MainRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/MainRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link MainRole}.</p> */ -class MainRoleImpl extends Role implements MainRole { +class MainRoleImpl extends RoleImpl implements MainRole { MainRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/MarqueeRole.java b/user/src/com/google/gwt/aria/client/MarqueeRole.java index cba5e1a..f2bdb6e 100644 --- a/user/src/com/google/gwt/aria/client/MarqueeRole.java +++ b/user/src/com/google/gwt/aria/client/MarqueeRole.java
@@ -19,22 +19,11 @@ /** - * MarqueeRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#marquee">marquee</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface MarqueeRole extends SectionRole { }
diff --git a/user/src/com/google/gwt/aria/client/MarqueeRoleImpl.java b/user/src/com/google/gwt/aria/client/MarqueeRoleImpl.java index 0e449c3..a920949 100644 --- a/user/src/com/google/gwt/aria/client/MarqueeRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/MarqueeRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link MarqueeRole}.</p> */ -class MarqueeRoleImpl extends Role implements MarqueeRole { +class MarqueeRoleImpl extends RoleImpl implements MarqueeRole { MarqueeRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/MathRole.java b/user/src/com/google/gwt/aria/client/MathRole.java index 57a76a3..14216e7 100644 --- a/user/src/com/google/gwt/aria/client/MathRole.java +++ b/user/src/com/google/gwt/aria/client/MathRole.java
@@ -19,22 +19,11 @@ /** - * MathRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#math">math</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface MathRole extends SectionRole { }
diff --git a/user/src/com/google/gwt/aria/client/MathRoleImpl.java b/user/src/com/google/gwt/aria/client/MathRoleImpl.java index 1fd4f72..20e50d7 100644 --- a/user/src/com/google/gwt/aria/client/MathRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/MathRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link MathRole}.</p> */ -class MathRoleImpl extends Role implements MathRole { +class MathRoleImpl extends RoleImpl implements MathRole { MathRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/MenuRole.java b/user/src/com/google/gwt/aria/client/MenuRole.java index 5f5872b..6e81a78 100644 --- a/user/src/com/google/gwt/aria/client/MenuRole.java +++ b/user/src/com/google/gwt/aria/client/MenuRole.java
@@ -19,22 +19,11 @@ /** - * MenuRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#menu">menu</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface MenuRole extends ListRole, SelectRole { }
diff --git a/user/src/com/google/gwt/aria/client/MenuRoleImpl.java b/user/src/com/google/gwt/aria/client/MenuRoleImpl.java index 6cadf1f..033ffc2 100644 --- a/user/src/com/google/gwt/aria/client/MenuRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/MenuRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link MenuRole}.</p> */ -class MenuRoleImpl extends Role implements MenuRole { +class MenuRoleImpl extends RoleImpl implements MenuRole { MenuRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/MenubarRole.java b/user/src/com/google/gwt/aria/client/MenubarRole.java index b5ca651..6236d34 100644 --- a/user/src/com/google/gwt/aria/client/MenubarRole.java +++ b/user/src/com/google/gwt/aria/client/MenubarRole.java
@@ -19,22 +19,11 @@ /** - * MenubarRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#menubar">menubar</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface MenubarRole extends MenuRole { }
diff --git a/user/src/com/google/gwt/aria/client/MenubarRoleImpl.java b/user/src/com/google/gwt/aria/client/MenubarRoleImpl.java index 6b91189..cc85d67 100644 --- a/user/src/com/google/gwt/aria/client/MenubarRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/MenubarRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link MenubarRole}.</p> */ -class MenubarRoleImpl extends Role implements MenubarRole { +class MenubarRoleImpl extends RoleImpl implements MenubarRole { MenubarRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/MenuitemRole.java b/user/src/com/google/gwt/aria/client/MenuitemRole.java index 1f1ca0d..a8a2ad8 100644 --- a/user/src/com/google/gwt/aria/client/MenuitemRole.java +++ b/user/src/com/google/gwt/aria/client/MenuitemRole.java
@@ -19,22 +19,11 @@ /** - * MenuitemRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#menuitem">menuitem</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface MenuitemRole extends CommandRole { }
diff --git a/user/src/com/google/gwt/aria/client/MenuitemRoleImpl.java b/user/src/com/google/gwt/aria/client/MenuitemRoleImpl.java index bc68a2b..fc80d10 100644 --- a/user/src/com/google/gwt/aria/client/MenuitemRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/MenuitemRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link MenuitemRole}.</p> */ -class MenuitemRoleImpl extends Role implements MenuitemRole { +class MenuitemRoleImpl extends RoleImpl implements MenuitemRole { MenuitemRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/MenuitemcheckboxRole.java b/user/src/com/google/gwt/aria/client/MenuitemcheckboxRole.java index 74a22d0..53e09cf 100644 --- a/user/src/com/google/gwt/aria/client/MenuitemcheckboxRole.java +++ b/user/src/com/google/gwt/aria/client/MenuitemcheckboxRole.java
@@ -19,22 +19,11 @@ /** - * MenuitemcheckboxRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#menuitemcheckbox">menuitemcheckbox</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface MenuitemcheckboxRole extends CheckboxRole, MenuitemRole { }
diff --git a/user/src/com/google/gwt/aria/client/MenuitemcheckboxRoleImpl.java b/user/src/com/google/gwt/aria/client/MenuitemcheckboxRoleImpl.java index 4e3d4fb..7e21b6c 100644 --- a/user/src/com/google/gwt/aria/client/MenuitemcheckboxRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/MenuitemcheckboxRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link MenuitemcheckboxRole}.</p> */ -class MenuitemcheckboxRoleImpl extends Role implements MenuitemcheckboxRole { +class MenuitemcheckboxRoleImpl extends RoleImpl implements MenuitemcheckboxRole { MenuitemcheckboxRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/MenuitemradioRole.java b/user/src/com/google/gwt/aria/client/MenuitemradioRole.java index 89cfe80..f905190 100644 --- a/user/src/com/google/gwt/aria/client/MenuitemradioRole.java +++ b/user/src/com/google/gwt/aria/client/MenuitemradioRole.java
@@ -19,22 +19,11 @@ /** - * MenuitemradioRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#menuitemradio">menuitemradio</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface MenuitemradioRole extends MenuitemcheckboxRole, RadioRole { }
diff --git a/user/src/com/google/gwt/aria/client/MenuitemradioRoleImpl.java b/user/src/com/google/gwt/aria/client/MenuitemradioRoleImpl.java index 22972f1..4a8d234 100644 --- a/user/src/com/google/gwt/aria/client/MenuitemradioRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/MenuitemradioRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link MenuitemradioRole}.</p> */ -class MenuitemradioRoleImpl extends Role implements MenuitemradioRole { +class MenuitemradioRoleImpl extends RoleImpl implements MenuitemradioRole { MenuitemradioRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/NavigationRole.java b/user/src/com/google/gwt/aria/client/NavigationRole.java index 1ceea1e..e2859f0 100644 --- a/user/src/com/google/gwt/aria/client/NavigationRole.java +++ b/user/src/com/google/gwt/aria/client/NavigationRole.java
@@ -19,22 +19,11 @@ /** - * NavigationRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#navigation">navigation</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface NavigationRole extends LandmarkRole { }
diff --git a/user/src/com/google/gwt/aria/client/NavigationRoleImpl.java b/user/src/com/google/gwt/aria/client/NavigationRoleImpl.java index 0bd96f1..192095e 100644 --- a/user/src/com/google/gwt/aria/client/NavigationRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/NavigationRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link NavigationRole}.</p> */ -class NavigationRoleImpl extends Role implements NavigationRole { +class NavigationRoleImpl extends RoleImpl implements NavigationRole { NavigationRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/NoteRole.java b/user/src/com/google/gwt/aria/client/NoteRole.java index af77298..1a85552 100644 --- a/user/src/com/google/gwt/aria/client/NoteRole.java +++ b/user/src/com/google/gwt/aria/client/NoteRole.java
@@ -19,22 +19,11 @@ /** - * NoteRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#note">note</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface NoteRole extends SectionRole { }
diff --git a/user/src/com/google/gwt/aria/client/NoteRoleImpl.java b/user/src/com/google/gwt/aria/client/NoteRoleImpl.java index e4b25a5..c58cdae 100644 --- a/user/src/com/google/gwt/aria/client/NoteRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/NoteRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link NoteRole}.</p> */ -class NoteRoleImpl extends Role implements NoteRole { +class NoteRoleImpl extends RoleImpl implements NoteRole { NoteRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/OptionRole.java b/user/src/com/google/gwt/aria/client/OptionRole.java index ac16f8a..9ce9be0 100644 --- a/user/src/com/google/gwt/aria/client/OptionRole.java +++ b/user/src/com/google/gwt/aria/client/OptionRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * OptionRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#option">option</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface OptionRole extends InputRole { String getAriaCheckedState(Element element);
diff --git a/user/src/com/google/gwt/aria/client/OptionRoleImpl.java b/user/src/com/google/gwt/aria/client/OptionRoleImpl.java index 3598d52..c7b32ae 100644 --- a/user/src/com/google/gwt/aria/client/OptionRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/OptionRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link OptionRole}.</p> */ -class OptionRoleImpl extends Role implements OptionRole { +class OptionRoleImpl extends RoleImpl implements OptionRole { OptionRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/PresentationRole.java b/user/src/com/google/gwt/aria/client/PresentationRole.java index fed5cc0..c2b0df4 100644 --- a/user/src/com/google/gwt/aria/client/PresentationRole.java +++ b/user/src/com/google/gwt/aria/client/PresentationRole.java
@@ -19,22 +19,11 @@ /** - * PresentationRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#presentation">presentation</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface PresentationRole extends StructureRole { }
diff --git a/user/src/com/google/gwt/aria/client/PresentationRoleImpl.java b/user/src/com/google/gwt/aria/client/PresentationRoleImpl.java index 09c8bbe..56badbb 100644 --- a/user/src/com/google/gwt/aria/client/PresentationRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/PresentationRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link PresentationRole}.</p> */ -class PresentationRoleImpl extends Role implements PresentationRole { +class PresentationRoleImpl extends RoleImpl implements PresentationRole { PresentationRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/ProgressbarRole.java b/user/src/com/google/gwt/aria/client/ProgressbarRole.java index da17fd0..2c68d6b 100644 --- a/user/src/com/google/gwt/aria/client/ProgressbarRole.java +++ b/user/src/com/google/gwt/aria/client/ProgressbarRole.java
@@ -19,22 +19,11 @@ /** - * ProgressbarRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#progressbar">progressbar</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface ProgressbarRole extends RangeRole { }
diff --git a/user/src/com/google/gwt/aria/client/ProgressbarRoleImpl.java b/user/src/com/google/gwt/aria/client/ProgressbarRoleImpl.java index 1d30ef9..5170fa2 100644 --- a/user/src/com/google/gwt/aria/client/ProgressbarRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/ProgressbarRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link ProgressbarRole}.</p> */ -class ProgressbarRoleImpl extends Role implements ProgressbarRole { +class ProgressbarRoleImpl extends RoleImpl implements ProgressbarRole { ProgressbarRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/RadioRole.java b/user/src/com/google/gwt/aria/client/RadioRole.java index c8b3486..7315a6c 100644 --- a/user/src/com/google/gwt/aria/client/RadioRole.java +++ b/user/src/com/google/gwt/aria/client/RadioRole.java
@@ -19,22 +19,11 @@ /** - * RadioRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#radio">radio</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface RadioRole extends CheckboxRole, OptionRole { }
diff --git a/user/src/com/google/gwt/aria/client/RadioRoleImpl.java b/user/src/com/google/gwt/aria/client/RadioRoleImpl.java index 75b2ab5..04f0146 100644 --- a/user/src/com/google/gwt/aria/client/RadioRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/RadioRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link RadioRole}.</p> */ -class RadioRoleImpl extends Role implements RadioRole { +class RadioRoleImpl extends RoleImpl implements RadioRole { RadioRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/RadiogroupRole.java b/user/src/com/google/gwt/aria/client/RadiogroupRole.java index 980e3e4..0f00e49 100644 --- a/user/src/com/google/gwt/aria/client/RadiogroupRole.java +++ b/user/src/com/google/gwt/aria/client/RadiogroupRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * RadiogroupRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#radiogroup">radiogroup</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface RadiogroupRole extends SelectRole { String getAriaRequiredProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/RadiogroupRoleImpl.java b/user/src/com/google/gwt/aria/client/RadiogroupRoleImpl.java index 4ad7896..a235445 100644 --- a/user/src/com/google/gwt/aria/client/RadiogroupRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/RadiogroupRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link RadiogroupRole}.</p> */ -class RadiogroupRoleImpl extends Role implements RadiogroupRole { +class RadiogroupRoleImpl extends RoleImpl implements RadiogroupRole { RadiogroupRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/RangeRole.java b/user/src/com/google/gwt/aria/client/RangeRole.java index 886f6fc..6aad17d 100644 --- a/user/src/com/google/gwt/aria/client/RangeRole.java +++ b/user/src/com/google/gwt/aria/client/RangeRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * RangeRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#range">range</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface RangeRole extends WidgetRole { String getAriaValuemaxProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/RegionRole.java b/user/src/com/google/gwt/aria/client/RegionRole.java index dd5b187..dec20f8 100644 --- a/user/src/com/google/gwt/aria/client/RegionRole.java +++ b/user/src/com/google/gwt/aria/client/RegionRole.java
@@ -19,22 +19,11 @@ /** - * RegionRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#region">region</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface RegionRole extends SectionRole { }
diff --git a/user/src/com/google/gwt/aria/client/RegionRoleImpl.java b/user/src/com/google/gwt/aria/client/RegionRoleImpl.java index cdbe2d8..12816ab 100644 --- a/user/src/com/google/gwt/aria/client/RegionRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/RegionRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link RegionRole}.</p> */ -class RegionRoleImpl extends Role implements RegionRole { +class RegionRoleImpl extends RoleImpl implements RegionRole { RegionRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/Role.java b/user/src/com/google/gwt/aria/client/RoleImpl.java similarity index 95% rename from user/src/com/google/gwt/aria/client/Role.java rename to user/src/com/google/gwt/aria/client/RoleImpl.java index b7a6911..df8c999 100644 --- a/user/src/com/google/gwt/aria/client/Role.java +++ b/user/src/com/google/gwt/aria/client/RoleImpl.java
@@ -34,11 +34,12 @@ * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> * The Roles Model </a>.</p> */ -public class Role { - public static final String ATTR_NAME_ROLE = "role"; +class RoleImpl { + private static final String ATTR_NAME_ROLE = "role"; + private final String roleName; - public Role(String roleName) { + RoleImpl(String roleName) { assert roleName != null : "Role name cannot be null"; this.roleName = roleName; }
diff --git a/user/src/com/google/gwt/aria/client/Roles.java b/user/src/com/google/gwt/aria/client/Roles.java index 6338119..43c7b48 100644 --- a/user/src/com/google/gwt/aria/client/Roles.java +++ b/user/src/com/google/gwt/aria/client/Roles.java
@@ -18,46 +18,53 @@ ///////////////////////////////////////////////////////// /** - * <p>Class containing the ARIA roles as defined by <a href="http://www.w3.org/TR/wai-aria/"> - * W3C ARIA specification</a>. A WAI-ARIA role is set on an element using a <i>role</i> attribute. - * An element role is constant and is not supposed to change.</p> + * <p>A factory providing each concrete role in the ARIA specification. Each role implements + * methods that a GWT application can use to modify the appropriate DOM attributes for that + * role.</p> * - * <p>This is the central class in this ARIA API because it contains all defined roles which - * can be set to HTML elements. Each role in this class is a {@link Role} instance. - * The {@link Role} class contains methods for getting and setting states and properties.</p> + * <p>For example, suppose our GWT app has a image button and we want to make it visible in screen + * readers as a button with some help text. To do this, we add a <i>button</i> role to the image and + * set the ARIA <i>label</i> property to the help text that the screen reader can use:</p> * - * <p>Lets say we have an image button widget and we want to make it visible to a reader as a - * button, accompanied with some help text for the button usage. For the purpose we need to add a - * 'button' role to the image and set label that the reader can interpret. We set the 'button' role - * for an image (img) with the call: Roles.getButtonRole.set(img.getElement()) and set the - * 'aria-label' property by calling: Roles.getButtonRole().setAriaLabelProperty(img.getElement, - * "test")</p> + * <pre> + * Roles.getButtonRole().set(img.getElement()); + * Roles.getButtonRole().setAriaLabelProperty(img.getElement(), "some help text"); + * </pre> * - * <p>ARIA states are used similarly to ARIA properties by using the - * Roles.getButtonRole().setAriaEnabledState(img.getElement(), isEnabled) method. - * Although States and Properties are structurally the same, they are - * separated in 2 classes in this API because they are semantically different and have different - * usage. There exist the concept of extra properties and for now the only - * example is tabindex. If we want to set the tabindex to 0 for the button, - * we need to call Roles.getButtonRole().setTabindexExtraAttribute(img.getElement(), 0).</p> + * <p>Most ARIA properties have a prefix of "aria-" and only affect screen readers, but there is + * one exception: the "tabindex" property is the same one used for tab order in regular widgets. + * For example, to set tabindex to 0 for the button: + * </p> * - * <p>There are 4 groups of roles: + * <pre> + * Roles.getButtonRole().setTabindexExtraAttribute(img.getElement(), 0); + * </pre> + * + * <p>When the button changes state (it's enabled or disabled), we can change the ARIA enabled + * state to match, like this:</p> + * + * <pre> + * Roles.getButtonRole().setAriaEnabledState(img.getElement(), isEnabled); + * </pre> + * + * <p>ARIA distinguishes between properties (which change rarely and could be set in static HTML) + * and states (which need to be updated in response to user input). This distinction can get a bit + * blurry when a GWT app updates the DOM dynamically. Generally you should update ARIA + * attributes at the same time that you change the CSS styles on a DOM node, so that a screen + * reader will see the same state as someone viewing the page visually.</p> + * + * <p>The role interfaces form a hierarchy whose root is the {@link Role} interface, which contains + * generic methods that aren't specific to a role. Some abstract roles include:</p> * <ol> - * <li>Abstract roles -- used as base types for applied roles. They are not used by Web Authors - * and would not be exposed as role definitions for incorporation into a Web page. Base classes are - * referenced within the taxonomy and are used to build a picture of the role taxonomy class - * hierarchy within the taxonomy.</li> - * <li>Widget roles -- act as standalone user interface widgets or as part of larger, - * composite widgets</li> - * <li>Widget container roles -- act as composite user interface widgets. These roles typically act - * as containers that manage other, contained widgets</li> - * <li>Document structure roles -- describe structures that organize content in a page. Document - * structures are not usually interactive</li> - * <li>Landmark Roles -- regions of the page intended as navigational landmarks</li> + * <li>{@link WidgetRole}, for DOM elements that represent either standalone or composite widgets. + * <li>{@link CompositeRole}, for widgets that contain other widgets.</li> + * <li>{@link StructureRole}, for DOM elements that are part of the page layout.</li> + * <li>{@link LandmarkRole}, for DOM elements defining common regions of a page.</li> + * <li>{@link WindowRole}, for DOM elements that define windows and dialogs.</li> * </ol> * </p> * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"></p> + * @see <a href="http://www.w3.org/TR/wai-aria/roles">the W3C specification</a> */ public final class Roles { private static final AlertdialogRole ALERTDIALOG = new AlertdialogRoleImpl("alertdialog");
diff --git a/user/src/com/google/gwt/aria/client/RoletypeRole.java b/user/src/com/google/gwt/aria/client/RoletypeRole.java deleted file mode 100644 index 48af351..0000000 --- a/user/src/com/google/gwt/aria/client/RoletypeRole.java +++ /dev/null
@@ -1,150 +0,0 @@ -/* - * Copyright 2012 Google Inc. - * - * Licensed 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 com.google.gwt.aria.client; -///////////////////////////////////////////////////////// -// This is auto-generated code. Do not manually edit! // -///////////////////////////////////////////////////////// - -import com.google.gwt.dom.client.Element; - -/** - * RoletypeRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> - * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> - */ -public interface RoletypeRole { - String get(Element element); - - String getAriaAtomicProperty(Element element); - - String getAriaBusyState(Element element); - - String getAriaControlsProperty(Element element); - - String getAriaDescribedbyProperty(Element element); - - String getAriaDisabledState(Element element); - - String getAriaDropeffectProperty(Element element); - - String getAriaFlowtoProperty(Element element); - - String getAriaGrabbedState(Element element); - - String getAriaHaspopupProperty(Element element); - - String getAriaHiddenState(Element element); - - String getAriaInvalidState(Element element); - - String getAriaLabelledbyProperty(Element element); - - String getAriaLabelProperty(Element element); - - String getAriaLiveProperty(Element element); - - String getAriaOwnsProperty(Element element); - - String getAriaRelevantProperty(Element element); - - String getName(); - - String getTabindexExtraAttribute(Element element); - - void remove(Element element); - - void removeAriaAtomicProperty(Element element); - - void removeAriaBusyState(Element element); - - void removeAriaControlsProperty(Element element); - - void removeAriaDescribedbyProperty(Element element); - - void removeAriaDisabledState(Element element); - - void removeAriaDropeffectProperty(Element element); - - void removeAriaFlowtoProperty(Element element); - - void removeAriaGrabbedState(Element element); - - void removeAriaHaspopupProperty(Element element); - - void removeAriaHiddenState(Element element); - - void removeAriaInvalidState(Element element); - - void removeAriaLabelledbyProperty(Element element); - - void removeAriaLabelProperty(Element element); - - void removeAriaLiveProperty(Element element); - - void removeAriaOwnsProperty(Element element); - - void removeAriaRelevantProperty(Element element); - - void removeTabindexExtraAttribute(Element element); - - void set(Element element); - - void setAriaAtomicProperty(Element element, boolean value); - - void setAriaBusyState(Element element, boolean value); - - void setAriaControlsProperty(Element element, IdReference... value); - - void setAriaDescribedbyProperty(Element element, IdReference... value); - - void setAriaDisabledState(Element element, boolean value); - - void setAriaDropeffectProperty(Element element, DropeffectValue... value); - - void setAriaFlowtoProperty(Element element, IdReference... value); - - void setAriaGrabbedState(Element element, GrabbedValue value); - - void setAriaHaspopupProperty(Element element, boolean value); - - void setAriaHiddenState(Element element, boolean value); - - void setAriaInvalidState(Element element, InvalidValue value); - - void setAriaLabelledbyProperty(Element element, IdReference... value); - - void setAriaLabelProperty(Element element, String value); - - void setAriaLiveProperty(Element element, LiveValue value); - - void setAriaOwnsProperty(Element element, IdReference... value); - - void setAriaRelevantProperty(Element element, RelevantValue... value); - - void setTabindexExtraAttribute(Element element, int value); -}
diff --git a/user/src/com/google/gwt/aria/client/RowRole.java b/user/src/com/google/gwt/aria/client/RowRole.java index debf6e8..82f1032 100644 --- a/user/src/com/google/gwt/aria/client/RowRole.java +++ b/user/src/com/google/gwt/aria/client/RowRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * RowRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#row">row</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface RowRole extends GroupRole, WidgetRole { String getAriaLevelProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/RowRoleImpl.java b/user/src/com/google/gwt/aria/client/RowRoleImpl.java index ad1a4c0..9b9a467 100644 --- a/user/src/com/google/gwt/aria/client/RowRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/RowRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link RowRole}.</p> */ -class RowRoleImpl extends Role implements RowRole { +class RowRoleImpl extends RoleImpl implements RowRole { RowRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/RowgroupRole.java b/user/src/com/google/gwt/aria/client/RowgroupRole.java index b73afd0..55ba25e 100644 --- a/user/src/com/google/gwt/aria/client/RowgroupRole.java +++ b/user/src/com/google/gwt/aria/client/RowgroupRole.java
@@ -19,22 +19,11 @@ /** - * RowgroupRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#rowgroup">rowgroup</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface RowgroupRole extends GroupRole { }
diff --git a/user/src/com/google/gwt/aria/client/RowgroupRoleImpl.java b/user/src/com/google/gwt/aria/client/RowgroupRoleImpl.java index e0bab0e..74ec684 100644 --- a/user/src/com/google/gwt/aria/client/RowgroupRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/RowgroupRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link RowgroupRole}.</p> */ -class RowgroupRoleImpl extends Role implements RowgroupRole { +class RowgroupRoleImpl extends RoleImpl implements RowgroupRole { RowgroupRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/RowheaderRole.java b/user/src/com/google/gwt/aria/client/RowheaderRole.java index 2192540..73ab027 100644 --- a/user/src/com/google/gwt/aria/client/RowheaderRole.java +++ b/user/src/com/google/gwt/aria/client/RowheaderRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * RowheaderRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#rowheader">rowheader</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface RowheaderRole extends GridcellRole, SectionheadRole, WidgetRole { String getAriaSortProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/RowheaderRoleImpl.java b/user/src/com/google/gwt/aria/client/RowheaderRoleImpl.java index 94bb84c..6e16a37 100644 --- a/user/src/com/google/gwt/aria/client/RowheaderRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/RowheaderRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link RowheaderRole}.</p> */ -class RowheaderRoleImpl extends Role implements RowheaderRole { +class RowheaderRoleImpl extends RoleImpl implements RowheaderRole { RowheaderRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/ScrollbarRole.java b/user/src/com/google/gwt/aria/client/ScrollbarRole.java index 67c1ff9..723447e 100644 --- a/user/src/com/google/gwt/aria/client/ScrollbarRole.java +++ b/user/src/com/google/gwt/aria/client/ScrollbarRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * ScrollbarRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#scrollbar">scrollbar</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface ScrollbarRole extends InputRole, RangeRole { String getAriaOrientationProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/ScrollbarRoleImpl.java b/user/src/com/google/gwt/aria/client/ScrollbarRoleImpl.java index 6c37f8b..6b677e0 100644 --- a/user/src/com/google/gwt/aria/client/ScrollbarRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/ScrollbarRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link ScrollbarRole}.</p> */ -class ScrollbarRoleImpl extends Role implements ScrollbarRole { +class ScrollbarRoleImpl extends RoleImpl implements ScrollbarRole { ScrollbarRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/SearchRole.java b/user/src/com/google/gwt/aria/client/SearchRole.java index abf6ae5..1cd92f7 100644 --- a/user/src/com/google/gwt/aria/client/SearchRole.java +++ b/user/src/com/google/gwt/aria/client/SearchRole.java
@@ -19,22 +19,11 @@ /** - * SearchRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#search">search</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface SearchRole extends LandmarkRole { }
diff --git a/user/src/com/google/gwt/aria/client/SearchRoleImpl.java b/user/src/com/google/gwt/aria/client/SearchRoleImpl.java index c6d3125..2a6fcaf 100644 --- a/user/src/com/google/gwt/aria/client/SearchRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/SearchRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link SearchRole}.</p> */ -class SearchRoleImpl extends Role implements SearchRole { +class SearchRoleImpl extends RoleImpl implements SearchRole { SearchRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/SectionRole.java b/user/src/com/google/gwt/aria/client/SectionRole.java index 5b7183f..bf6a7b2 100644 --- a/user/src/com/google/gwt/aria/client/SectionRole.java +++ b/user/src/com/google/gwt/aria/client/SectionRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * SectionRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#section">section</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface SectionRole extends StructureRole { String getAriaExpandedState(Element element);
diff --git a/user/src/com/google/gwt/aria/client/SectionheadRole.java b/user/src/com/google/gwt/aria/client/SectionheadRole.java index 8cae3a3..c54e8a2 100644 --- a/user/src/com/google/gwt/aria/client/SectionheadRole.java +++ b/user/src/com/google/gwt/aria/client/SectionheadRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * SectionheadRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#sectionhead">sectionhead</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface SectionheadRole extends StructureRole { String getAriaExpandedState(Element element);
diff --git a/user/src/com/google/gwt/aria/client/SelectRole.java b/user/src/com/google/gwt/aria/client/SelectRole.java index 706ce12..22de0db 100644 --- a/user/src/com/google/gwt/aria/client/SelectRole.java +++ b/user/src/com/google/gwt/aria/client/SelectRole.java
@@ -19,22 +19,11 @@ /** - * SelectRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#select">select</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface SelectRole extends CompositeRole, GroupRole, InputRole { }
diff --git a/user/src/com/google/gwt/aria/client/SeparatorRole.java b/user/src/com/google/gwt/aria/client/SeparatorRole.java index 3eea52e..ffc966d 100644 --- a/user/src/com/google/gwt/aria/client/SeparatorRole.java +++ b/user/src/com/google/gwt/aria/client/SeparatorRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * SeparatorRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#separator">separator</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface SeparatorRole extends StructureRole { String getAriaExpandedState(Element element);
diff --git a/user/src/com/google/gwt/aria/client/SeparatorRoleImpl.java b/user/src/com/google/gwt/aria/client/SeparatorRoleImpl.java index 7f3911f..dd75693 100644 --- a/user/src/com/google/gwt/aria/client/SeparatorRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/SeparatorRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link SeparatorRole}.</p> */ -class SeparatorRoleImpl extends Role implements SeparatorRole { +class SeparatorRoleImpl extends RoleImpl implements SeparatorRole { SeparatorRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/SliderRole.java b/user/src/com/google/gwt/aria/client/SliderRole.java index 2aef7bf..ab268b2 100644 --- a/user/src/com/google/gwt/aria/client/SliderRole.java +++ b/user/src/com/google/gwt/aria/client/SliderRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * SliderRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#slider">slider</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface SliderRole extends InputRole, RangeRole { String getAriaOrientationProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/SliderRoleImpl.java b/user/src/com/google/gwt/aria/client/SliderRoleImpl.java index 4427602..5ebd768 100644 --- a/user/src/com/google/gwt/aria/client/SliderRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/SliderRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link SliderRole}.</p> */ -class SliderRoleImpl extends Role implements SliderRole { +class SliderRoleImpl extends RoleImpl implements SliderRole { SliderRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/SpinbuttonRole.java b/user/src/com/google/gwt/aria/client/SpinbuttonRole.java index 79775bb..cddb0b6 100644 --- a/user/src/com/google/gwt/aria/client/SpinbuttonRole.java +++ b/user/src/com/google/gwt/aria/client/SpinbuttonRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * SpinbuttonRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#spinbutton">spinbutton</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface SpinbuttonRole extends InputRole, RangeRole { String getAriaRequiredProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/SpinbuttonRoleImpl.java b/user/src/com/google/gwt/aria/client/SpinbuttonRoleImpl.java index 0b074b8..872080d 100644 --- a/user/src/com/google/gwt/aria/client/SpinbuttonRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/SpinbuttonRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link SpinbuttonRole}.</p> */ -class SpinbuttonRoleImpl extends Role implements SpinbuttonRole { +class SpinbuttonRoleImpl extends RoleImpl implements SpinbuttonRole { SpinbuttonRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/StatusRole.java b/user/src/com/google/gwt/aria/client/StatusRole.java index e59e0c9..9bde7d7 100644 --- a/user/src/com/google/gwt/aria/client/StatusRole.java +++ b/user/src/com/google/gwt/aria/client/StatusRole.java
@@ -19,22 +19,11 @@ /** - * StatusRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#status">status</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface StatusRole extends RegionRole { }
diff --git a/user/src/com/google/gwt/aria/client/StatusRoleImpl.java b/user/src/com/google/gwt/aria/client/StatusRoleImpl.java index e22482c..2329a3e 100644 --- a/user/src/com/google/gwt/aria/client/StatusRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/StatusRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link StatusRole}.</p> */ -class StatusRoleImpl extends Role implements StatusRole { +class StatusRoleImpl extends RoleImpl implements StatusRole { StatusRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/StructureRole.java b/user/src/com/google/gwt/aria/client/StructureRole.java index e4c7212..69a1430 100644 --- a/user/src/com/google/gwt/aria/client/StructureRole.java +++ b/user/src/com/google/gwt/aria/client/StructureRole.java
@@ -19,22 +19,11 @@ /** - * StructureRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#structure">structure</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ -public interface StructureRole extends RoletypeRole { +public interface StructureRole extends Role { }
diff --git a/user/src/com/google/gwt/aria/client/TabRole.java b/user/src/com/google/gwt/aria/client/TabRole.java index 90e334f..47875c7 100644 --- a/user/src/com/google/gwt/aria/client/TabRole.java +++ b/user/src/com/google/gwt/aria/client/TabRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * TabRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#tab">tab</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface TabRole extends SectionheadRole, WidgetRole { String getAriaSelectedState(Element element);
diff --git a/user/src/com/google/gwt/aria/client/TabRoleImpl.java b/user/src/com/google/gwt/aria/client/TabRoleImpl.java index 101309d..60aef5e 100644 --- a/user/src/com/google/gwt/aria/client/TabRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/TabRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link TabRole}.</p> */ -class TabRoleImpl extends Role implements TabRole { +class TabRoleImpl extends RoleImpl implements TabRole { TabRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/TablistRole.java b/user/src/com/google/gwt/aria/client/TablistRole.java index 47d8a1e..b795ed8 100644 --- a/user/src/com/google/gwt/aria/client/TablistRole.java +++ b/user/src/com/google/gwt/aria/client/TablistRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * TablistRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#tablist">tablist</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface TablistRole extends CompositeRole, DirectoryRole { String getAriaLevelProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/TablistRoleImpl.java b/user/src/com/google/gwt/aria/client/TablistRoleImpl.java index 3952c79..a92be09 100644 --- a/user/src/com/google/gwt/aria/client/TablistRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/TablistRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link TablistRole}.</p> */ -class TablistRoleImpl extends Role implements TablistRole { +class TablistRoleImpl extends RoleImpl implements TablistRole { TablistRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/TabpanelRole.java b/user/src/com/google/gwt/aria/client/TabpanelRole.java index 42deefd..30a8d9a 100644 --- a/user/src/com/google/gwt/aria/client/TabpanelRole.java +++ b/user/src/com/google/gwt/aria/client/TabpanelRole.java
@@ -19,22 +19,11 @@ /** - * TabpanelRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#tabpanel">tabpanel</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface TabpanelRole extends RegionRole { }
diff --git a/user/src/com/google/gwt/aria/client/TabpanelRoleImpl.java b/user/src/com/google/gwt/aria/client/TabpanelRoleImpl.java index ebb9797..54aaff6 100644 --- a/user/src/com/google/gwt/aria/client/TabpanelRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/TabpanelRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link TabpanelRole}.</p> */ -class TabpanelRoleImpl extends Role implements TabpanelRole { +class TabpanelRoleImpl extends RoleImpl implements TabpanelRole { TabpanelRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/TextboxRole.java b/user/src/com/google/gwt/aria/client/TextboxRole.java index 68b9ee8..03f6a37 100644 --- a/user/src/com/google/gwt/aria/client/TextboxRole.java +++ b/user/src/com/google/gwt/aria/client/TextboxRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * TextboxRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#textbox">textbox</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface TextboxRole extends InputRole { String getAriaActivedescendantProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/TextboxRoleImpl.java b/user/src/com/google/gwt/aria/client/TextboxRoleImpl.java index 6a967aa..88203ad 100644 --- a/user/src/com/google/gwt/aria/client/TextboxRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/TextboxRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link TextboxRole}.</p> */ -class TextboxRoleImpl extends Role implements TextboxRole { +class TextboxRoleImpl extends RoleImpl implements TextboxRole { TextboxRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/TimerRole.java b/user/src/com/google/gwt/aria/client/TimerRole.java index 353aeb7..66a9043 100644 --- a/user/src/com/google/gwt/aria/client/TimerRole.java +++ b/user/src/com/google/gwt/aria/client/TimerRole.java
@@ -19,22 +19,11 @@ /** - * TimerRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#timer">timer</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface TimerRole extends StatusRole { }
diff --git a/user/src/com/google/gwt/aria/client/TimerRoleImpl.java b/user/src/com/google/gwt/aria/client/TimerRoleImpl.java index 217e334..4bcb08b 100644 --- a/user/src/com/google/gwt/aria/client/TimerRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/TimerRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link TimerRole}.</p> */ -class TimerRoleImpl extends Role implements TimerRole { +class TimerRoleImpl extends RoleImpl implements TimerRole { TimerRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/ToolbarRole.java b/user/src/com/google/gwt/aria/client/ToolbarRole.java index 198cd3e..ae2b7cb 100644 --- a/user/src/com/google/gwt/aria/client/ToolbarRole.java +++ b/user/src/com/google/gwt/aria/client/ToolbarRole.java
@@ -19,22 +19,11 @@ /** - * ToolbarRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#toolbar">toolbar</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface ToolbarRole extends GroupRole { }
diff --git a/user/src/com/google/gwt/aria/client/ToolbarRoleImpl.java b/user/src/com/google/gwt/aria/client/ToolbarRoleImpl.java index 1861f0a..4592e60 100644 --- a/user/src/com/google/gwt/aria/client/ToolbarRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/ToolbarRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link ToolbarRole}.</p> */ -class ToolbarRoleImpl extends Role implements ToolbarRole { +class ToolbarRoleImpl extends RoleImpl implements ToolbarRole { ToolbarRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/TooltipRole.java b/user/src/com/google/gwt/aria/client/TooltipRole.java index 1928a78..b456cc7 100644 --- a/user/src/com/google/gwt/aria/client/TooltipRole.java +++ b/user/src/com/google/gwt/aria/client/TooltipRole.java
@@ -19,22 +19,11 @@ /** - * TooltipRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#tooltip">tooltip</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface TooltipRole extends SectionRole { }
diff --git a/user/src/com/google/gwt/aria/client/TooltipRoleImpl.java b/user/src/com/google/gwt/aria/client/TooltipRoleImpl.java index 85e3d4e..309a1ca 100644 --- a/user/src/com/google/gwt/aria/client/TooltipRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/TooltipRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link TooltipRole}.</p> */ -class TooltipRoleImpl extends Role implements TooltipRole { +class TooltipRoleImpl extends RoleImpl implements TooltipRole { TooltipRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/TreeRole.java b/user/src/com/google/gwt/aria/client/TreeRole.java index 09c6a37..eaf1993 100644 --- a/user/src/com/google/gwt/aria/client/TreeRole.java +++ b/user/src/com/google/gwt/aria/client/TreeRole.java
@@ -20,22 +20,11 @@ import com.google.gwt.dom.client.Element; /** - * TreeRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#tree">tree</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface TreeRole extends SelectRole { String getAriaMultiselectableProperty(Element element);
diff --git a/user/src/com/google/gwt/aria/client/TreeRoleImpl.java b/user/src/com/google/gwt/aria/client/TreeRoleImpl.java index 235afe4..6927782 100644 --- a/user/src/com/google/gwt/aria/client/TreeRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/TreeRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link TreeRole}.</p> */ -class TreeRoleImpl extends Role implements TreeRole { +class TreeRoleImpl extends RoleImpl implements TreeRole { TreeRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/TreegridRole.java b/user/src/com/google/gwt/aria/client/TreegridRole.java index c19fad7..e2a4430 100644 --- a/user/src/com/google/gwt/aria/client/TreegridRole.java +++ b/user/src/com/google/gwt/aria/client/TreegridRole.java
@@ -19,22 +19,11 @@ /** - * TreegridRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#treegrid">treegrid</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface TreegridRole extends GridRole, TreeRole { }
diff --git a/user/src/com/google/gwt/aria/client/TreegridRoleImpl.java b/user/src/com/google/gwt/aria/client/TreegridRoleImpl.java index bff82e8..1d5f9bf 100644 --- a/user/src/com/google/gwt/aria/client/TreegridRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/TreegridRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link TreegridRole}.</p> */ -class TreegridRoleImpl extends Role implements TreegridRole { +class TreegridRoleImpl extends RoleImpl implements TreegridRole { TreegridRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/TreeitemRole.java b/user/src/com/google/gwt/aria/client/TreeitemRole.java index 5157f99..2266786 100644 --- a/user/src/com/google/gwt/aria/client/TreeitemRole.java +++ b/user/src/com/google/gwt/aria/client/TreeitemRole.java
@@ -19,22 +19,11 @@ /** - * TreeitemRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#treeitem">treeitem</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ public interface TreeitemRole extends ListitemRole, OptionRole { }
diff --git a/user/src/com/google/gwt/aria/client/TreeitemRoleImpl.java b/user/src/com/google/gwt/aria/client/TreeitemRoleImpl.java index 1491907..7344626 100644 --- a/user/src/com/google/gwt/aria/client/TreeitemRoleImpl.java +++ b/user/src/com/google/gwt/aria/client/TreeitemRoleImpl.java
@@ -22,7 +22,7 @@ /** * <p>Implements {@link TreeitemRole}.</p> */ -class TreeitemRoleImpl extends Role implements TreeitemRole { +class TreeitemRoleImpl extends RoleImpl implements TreeitemRole { TreeitemRoleImpl(String roleName) { super(roleName); }
diff --git a/user/src/com/google/gwt/aria/client/WidgetRole.java b/user/src/com/google/gwt/aria/client/WidgetRole.java index 3cec572..7b7f38e 100644 --- a/user/src/com/google/gwt/aria/client/WidgetRole.java +++ b/user/src/com/google/gwt/aria/client/WidgetRole.java
@@ -19,22 +19,11 @@ /** - * WidgetRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#widget">widget</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ -public interface WidgetRole extends RoletypeRole { +public interface WidgetRole extends Role { }
diff --git a/user/src/com/google/gwt/aria/client/WindowRole.java b/user/src/com/google/gwt/aria/client/WindowRole.java index 3b34cdc..73ad921 100644 --- a/user/src/com/google/gwt/aria/client/WindowRole.java +++ b/user/src/com/google/gwt/aria/client/WindowRole.java
@@ -20,24 +20,13 @@ import com.google.gwt.dom.client.Element; /** - * WindowRole interface. - * The interface defines methods for setting, getting, removing states and properties. - * <p>Allows ARIA Accessibility attributes to be added to widgets so that they can be identified by - * assistive technology.</p> + * A type that represents the <a href="http://www.w3.org/TR/wai-aria/roles#window">window</a> + * role in the ARIA specification. * - * <p>ARIA roles define widgets and page structure that can be interpreted by a reader - * application/device. There is a set of abstract roles which are used as - * building blocks of the roles hierarchy structural and define the common properties and states - * for the concrete roles. Abstract roles cannot be set to HTML elements.</p> - * - * <p>There are states and properties that are defined for a role. As roles are organized in a - * hierarchy, a role has inherited and own properties and states which can be set to the - * element.</p> - * - * <p>For more details about ARIA roles check <a href="http://www.w3.org/TR/wai-aria/roles"> - * The Roles Model </a>.</p> + * @see Role + * @see Roles */ -public interface WindowRole extends RoletypeRole { +public interface WindowRole extends Role { String getAriaExpandedState(Element element); void removeAriaExpandedState(Element element);
diff --git a/user/src/com/google/gwt/user/client/ui/AbstractNativeScrollbar.java b/user/src/com/google/gwt/user/client/ui/AbstractNativeScrollbar.java index 5d04e05..e09de7f 100644 --- a/user/src/com/google/gwt/user/client/ui/AbstractNativeScrollbar.java +++ b/user/src/com/google/gwt/user/client/ui/AbstractNativeScrollbar.java
@@ -20,7 +20,6 @@ import com.google.gwt.dom.client.Style.Overflow; import com.google.gwt.dom.client.Style.Position; import com.google.gwt.dom.client.Style.Unit; -import com.google.gwt.dom.client.Style.Visibility; import com.google.gwt.event.dom.client.HasScrollHandlers; import com.google.gwt.event.dom.client.ScrollEvent; import com.google.gwt.event.dom.client.ScrollHandler; @@ -88,12 +87,11 @@ // Create a scrollable element and attach it to the body. Element scrollable = Document.get().createDivElement(); scrollable.getStyle().setPosition(Position.ABSOLUTE); - scrollable.getStyle().setTop(0.0, Unit.PX); - scrollable.getStyle().setLeft(0.0, Unit.PX); + scrollable.getStyle().setTop(-1000.0, Unit.PX); + scrollable.getStyle().setLeft(-1000.0, Unit.PX); scrollable.getStyle().setHeight(100.0, Unit.PX); scrollable.getStyle().setWidth(100.0, Unit.PX); scrollable.getStyle().setOverflow(Overflow.SCROLL); - scrollable.getStyle().setVisibility(Visibility.HIDDEN); scrollable.getStyle().setProperty("direction", "rtl"); Document.get().getBody().appendChild(scrollable);
diff --git a/user/src/com/google/gwt/user/client/ui/SuggestBox.java b/user/src/com/google/gwt/user/client/ui/SuggestBox.java index 20e2e6e..58f7d9f 100644 --- a/user/src/com/google/gwt/user/client/ui/SuggestBox.java +++ b/user/src/com/google/gwt/user/client/ui/SuggestBox.java
@@ -84,7 +84,7 @@ * to know when a suggestion has been chosen from the SuggestBox's list of * suggestions. A SuggestBox fires {@link SuggestionEvent SuggestionEvents} * whenever a suggestion is chosen, and handlers for these events can be added - * using the {@link #addValueChangeHandler(ValueChangeHandler)} method. + * using the {@link #addSelectionHandler(SelectionHandler)} method. * </p> * * <p>
diff --git a/user/src/com/google/gwt/validation/client/AbstractGwtValidatorFactory.java b/user/src/com/google/gwt/validation/client/AbstractGwtValidatorFactory.java index 90532e6..dfde7da 100644 --- a/user/src/com/google/gwt/validation/client/AbstractGwtValidatorFactory.java +++ b/user/src/com/google/gwt/validation/client/AbstractGwtValidatorFactory.java
@@ -25,6 +25,7 @@ import javax.validation.Validator; import javax.validation.ValidatorContext; import javax.validation.ValidatorFactory; +import javax.validation.spi.ConfigurationState; /** * <strong>EXPERIMENTAL</strong> and subject to change. Do not use this in @@ -56,33 +57,38 @@ * </pre> */ public abstract class AbstractGwtValidatorFactory implements ValidatorFactory { - - private final ConstraintValidatorFactory constraintValidatorFactory = GWT - .create(ConstraintValidatorFactory.class); - private final GwtMessageInterpolator messageInterpolator = new GwtMessageInterpolator(); - private final TraversableResolver traversableResolver = GWT - .create(TraversableResolver.class);; + private ConstraintValidatorFactory constraintValidatorFactory; + private MessageInterpolator messageInterpolator; + private TraversableResolver traversableResolver; /** - * Implement this method to returns a {@link GWT#create}ed {@link Validator} + * Implement this method to return a {@link GWT#create}d {@link Validator} * annotated with {@link GwtValidation}. * * @return newly created Validator */ public abstract AbstractGwtValidator createValidator(); + /** + * GWT does not support {@link ConstraintValidatorFactory}, so the object returned by this method + * will not work. + */ + @Override public final ConstraintValidatorFactory getConstraintValidatorFactory() { return constraintValidatorFactory; } + @Override public final MessageInterpolator getMessageInterpolator() { return messageInterpolator; } + @Override public final TraversableResolver getTraversableResolver() { return traversableResolver; } + @Override public final Validator getValidator() { AbstractGwtValidator validator = createValidator(); validator.init(getConstraintValidatorFactory(), getMessageInterpolator(), @@ -90,11 +96,27 @@ return validator; } + public final void init(ConfigurationState configState) { + ConstraintValidatorFactory configConstraintValidatorFactory = + configState.getConstraintValidatorFactory(); + this.constraintValidatorFactory = configConstraintValidatorFactory != null ? + configConstraintValidatorFactory : + GWT.<ConstraintValidatorFactory>create(ConstraintValidatorFactory.class); + TraversableResolver configTraversableResolver = configState.getTraversableResolver(); + this.traversableResolver = configTraversableResolver != null ? + configTraversableResolver : GWT.<TraversableResolver>create(TraversableResolver.class); + MessageInterpolator configMessageInterpolator = configState.getMessageInterpolator(); + this.messageInterpolator = configMessageInterpolator != null ? + configMessageInterpolator : new GwtMessageInterpolator(); + } + + @Override public final <T> T unwrap(Class<T> type) { // TODO(nchalko) implement return null; } + @Override public final ValidatorContext usingContext() { return new GwtValidatorContext(this); }
diff --git a/user/src/com/google/gwt/validation/client/Group.java b/user/src/com/google/gwt/validation/client/Group.java new file mode 100644 index 0000000..8bfbce2 --- /dev/null +++ b/user/src/com/google/gwt/validation/client/Group.java
@@ -0,0 +1,94 @@ +/* + * Copyright 2012 Google Inc. + * + * Licensed 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 com.google.gwt.validation.client; + +import javax.validation.groups.Default; + +/** + * <strong>EXPERIMENTAL</strong> and subject to change. Do not use this in + * production code. + * <p> + * Encapsulates a single validation group. + * <p> + * Modified from the Hibernate validator for use with GWT. + */ +public class Group { + /** + * The actual group. + */ + private final Class<?> group; + + /** + * The sequence the group is part of ({@code null}, if this group is not part of a sequence). + */ + private final Class<?> sequence; + + /** + * Creates a group that is not part of a sequence with no parents. + * @param group The validation group. + */ + public Group(Class<?> group) { + this(group, null); + } + + /** + * Creates a group that is part of a sequence with no parents. + * @param group The validation group. Must not be null. + * @param sequence The sequence the group is a part of. Can be null if the group is not part of + * a sequence. + */ + public Group(Class<?> group, Class<?> sequence) { + if (group == null) { + throw new IllegalArgumentException("The group class must not be null"); + } + this.group = group; + this.sequence = sequence; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof Group)) { + return false; + } + Group other = (Group) o; + return group.equals(other.group); + } + + public Class<?> getGroup() { + return group; + } + + public Class<?> getSequence() { + return sequence; + } + + @Override + public int hashCode() { + return group.hashCode(); + } + + public boolean isDefaultGroup() { + return getGroup().getName().equals(Default.class.getName()); + } + + @Override + public String toString() { + return "Group{" + "group=" + group.getName() + "}"; + } +}
diff --git a/user/src/com/google/gwt/validation/client/GroupChain.java b/user/src/com/google/gwt/validation/client/GroupChain.java new file mode 100644 index 0000000..f379afc --- /dev/null +++ b/user/src/com/google/gwt/validation/client/GroupChain.java
@@ -0,0 +1,134 @@ +/* + * Copyright 2012 Google Inc. + * + * Licensed 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 com.google.gwt.validation.client; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.validation.GroupDefinitionException; +import javax.validation.groups.Default; + +/** + * <strong>EXPERIMENTAL</strong> and subject to change. Do not use this in + * production code. + * <p> + * An instance of {@code GroupChain} defines the group order during one full validation call. + * <p> + * Modified from the Hibernate validator for use with GWT. + */ +public final class GroupChain { + + /** + * The list of single groups to be used this validation. + */ + private final List<Group> groupList = new ArrayList<Group>(); + + /** + * The different sequences for this validation. The map contains the list of groups mapped to + * their sequence name. + */ + private final Map<Class<?>, List<Group>> sequenceMap = new HashMap<Class<?>, List<Group>>(); + + public void checkDefaultGroupSequenceIsExpandable(List<Class<?>> defaultGroupSequence) + throws GroupDefinitionException { + for (Map.Entry<Class<?>, List<Group>> entry : sequenceMap.entrySet()) { + Class<?> sequence = entry.getKey(); + List<Group> groups = entry.getValue(); + List<Group> defaultGroupList = buildTempGroupList(defaultGroupSequence, sequence); + int defaultGroupIndex = containsDefaultGroupAtIndex(sequence, groups); + if (defaultGroupIndex != -1) { + ensureDefaultGroupSequenceIsExpandable(groups, defaultGroupList, defaultGroupIndex); + } + } + } + + public Collection<Group> getAllGroups() { + return groupList; + } + + public Iterator<Group> getGroupIterator() { + return groupList.iterator(); + } + + public Iterator<List<Group>> getSequenceIterator() { + return sequenceMap.values().iterator(); + } + + public void insertGroup(Group group) { + if (!groupList.contains(group)) { + groupList.add(group); + } + } + + public void insertSequence(List<Group> groups) { + if (groups != null && groups.size() != 0) { + if (!sequenceMap.containsValue(groups)) { + sequenceMap.put(groups.get(0).getSequence(), groups); + } + } + } + + @Override + public String toString() { + return "GroupChain{" + + "groupList=" + groupList + + ", sequenceMap=" + sequenceMap + + "}"; + } + + private List<Group> buildTempGroupList(List<Class<?>> defaultGroupSequence, Class<?> sequence) { + List<Group> groups = new ArrayList<Group>(); + for (Class<?> clazz : defaultGroupSequence) { + Group g = new Group(clazz, sequence); + groups.add(g); + } + return groups; + } + + private int containsDefaultGroupAtIndex(Class<?> sequence, List<Group> groupList) { + Group defaultGroup = new Group(Default.class, sequence); + return groupList.indexOf(defaultGroup); + } + + private void ensureDefaultGroupSequenceIsExpandable(List<Group> groupList, + List<Group> defaultGroupList, int defaultGroupIndex) throws GroupDefinitionException { + for (int i = 0; i < defaultGroupList.size(); i++) { + Group group = defaultGroupList.get(i); + if (group.getGroup().equals(Default.class)) { + // we don't have to consider the default group since it is the one we want to replace + continue; + } + // check whether the sequence contains group of the default group sequence + int index = groupList.indexOf(group); + if (index == -1) { + continue; // if the group is not in the sequence we can continue + } + + if ((i == 0 && index == defaultGroupIndex - 1) + || (i == defaultGroupList.size() - 1 && index == defaultGroupIndex + 1)) { + // if we are at the beginning or end of he defaultGroupSequence and the matches are either + // directly before resp after we can continue as well, since we basically have two groups + continue; + } + throw new GroupDefinitionException("Unable to expand default group list " + defaultGroupList + + " into sequence " + groupList); + } + } +}
diff --git a/user/src/com/google/gwt/validation/client/GroupChainGenerator.java b/user/src/com/google/gwt/validation/client/GroupChainGenerator.java new file mode 100644 index 0000000..c312cc1 --- /dev/null +++ b/user/src/com/google/gwt/validation/client/GroupChainGenerator.java
@@ -0,0 +1,174 @@ +/* + * Copyright 2012 Google Inc. + * + * Licensed 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 com.google.gwt.validation.client; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.validation.GroupDefinitionException; +import javax.validation.ValidationException; + +/** + * <strong>EXPERIMENTAL</strong> and subject to change. Do not use this in + * production code. + * <p> + * Helper class used to resolve groups and sequences into a single chain of groups which can then be validated. + * <p> + * Modified from the Hibernate validator for use with GWT. + */ +public class GroupChainGenerator { + private final ValidationGroupsMetadata validationGroupsMetadata; + + private final Map<Class<?>, List<Group>> resolvedSequences = new HashMap<Class<?>, List<Group>>(); + + public GroupChainGenerator(ValidationGroupsMetadata validationGroupsMetadata) { + this.validationGroupsMetadata = validationGroupsMetadata; + } + + /** + * Generates a chain of groups to be validated given the specified validation groups. + * + * @param groups The groups specified at the validation call. + * + * @return an instance of {@code GroupChain} defining the order in which validation has to occur. + */ + public GroupChain getGroupChainFor(Collection<Class<?>> groups) { + if (groups == null || groups.size() == 0) { + throw new IllegalArgumentException("At least one group has to be specified."); + } + + for (Class<?> clazz : groups) { + if (!validationGroupsMetadata.containsGroup(clazz) + && !validationGroupsMetadata.isSeqeuence(clazz)) { + throw new ValidationException("The class " + clazz + " is not a valid group or sequence."); + } + } + + GroupChain chain = new GroupChain(); + for (Class<?> clazz : groups) { + if (isGroupSequence(clazz)) { + insertSequence(clazz, chain); + } + else { + Group group = new Group(clazz); + chain.insertGroup(group); + insertInheritedGroups(clazz, chain); + } + } + + return chain; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder(); + sb.append("GroupChainGenerator"); + sb.append("{resolvedSequences=").append(resolvedSequences); + sb.append('}'); + return sb.toString(); + } + + private void addGroups(List<Group> resolvedGroupSequence, List<Group> groups) { + for (Group tmpGroup : groups) { + if (resolvedGroupSequence.contains(tmpGroup) + && resolvedGroupSequence.indexOf(tmpGroup) < resolvedGroupSequence.size() - 1) { + throw new GroupDefinitionException("Unable to expand group sequence."); + } + resolvedGroupSequence.add(tmpGroup); + } + } + + private void addInheritedGroups(Group group, List<Group> expandedGroups) { + Set<Class<?>> inheritedGroups = validationGroupsMetadata.getParentsOfGroup(group.getGroup()); + if (inheritedGroups != null) { + for (Class<?> inheritedGroup : inheritedGroups) { + if (isGroupSequence(inheritedGroup)) { + throw new GroupDefinitionException("Sequence definitions are not allowed as composing " + + "parts of a sequence."); + } + Group g = new Group(inheritedGroup, group.getSequence()); + expandedGroups.add(g); + addInheritedGroups(g, expandedGroups); + } + } + } + + private List<Group> expandInhertitedGroups(List<Group> sequence) { + List<Group> expandedGroup = new ArrayList<Group>(); + for (Group group : sequence) { + expandedGroup.add(group); + addInheritedGroups(group, expandedGroup); + } + return expandedGroup; + } + + /** + * Recursively add inherited groups into the group chain. + * + * @param clazz The group interface + * @param chain The group chain we are currently building. + */ + private void insertInheritedGroups(Class<?> clazz, GroupChain chain) { + for (Class<?> inheritedGroup : validationGroupsMetadata.getParentsOfGroup(clazz)) { + Group group = new Group(inheritedGroup); + chain.insertGroup(group); + insertInheritedGroups(inheritedGroup, chain); + } + } + + private void insertSequence(Class<?> clazz, GroupChain chain) { + List<Group> sequence; + if (resolvedSequences.containsKey(clazz)) { + sequence = resolvedSequences.get(clazz); + } else { + sequence = resolveSequence(clazz, new ArrayList<Class<?>>()); + // we expand the inherited groups only after we determined whether the sequence is expandable + sequence = expandInhertitedGroups(sequence); + } + chain.insertSequence(sequence); + } + + private boolean isGroupSequence(Class<?> clazz) { + return validationGroupsMetadata.isSeqeuence(clazz); + } + + private List<Group> resolveSequence(Class<?> group, List<Class<?>> processedSequences) { + if (processedSequences.contains(group)) { + throw new GroupDefinitionException("Cyclic dependency in groups definition"); + } else { + processedSequences.add(group); + } + List<Group> resolvedGroupSequence = new ArrayList<Group>(); + List<Class<?>> sequenceList = validationGroupsMetadata.getSequenceList(group); + for (Class<?> clazz : sequenceList ) { + if (isGroupSequence(clazz)) { + List<Group> tmpSequence = resolveSequence(clazz, processedSequences); + addGroups(resolvedGroupSequence, tmpSequence); + } + else { + List<Group> list = new ArrayList<Group>(); + list.add(new Group(clazz, group)); + addGroups(resolvedGroupSequence, list); + } + } + resolvedSequences.put(group, resolvedGroupSequence); + return resolvedGroupSequence; + } +}
diff --git a/user/src/com/google/gwt/validation/client/GroupInheritanceMap.java b/user/src/com/google/gwt/validation/client/GroupInheritanceMap.java deleted file mode 100644 index f517670..0000000 --- a/user/src/com/google/gwt/validation/client/GroupInheritanceMap.java +++ /dev/null
@@ -1,176 +0,0 @@ -/* - * Copyright 2012 Google Inc. - * - * Licensed 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 com.google.gwt.validation.client; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.Map; -import java.util.HashMap; -import java.util.Set; -import java.util.Stack; - -import javax.validation.groups.Default; - - -/** - * <strong>EXPERIMENTAL</strong> and subject to change. Do not use this in - * production code. - * <p> - * Contains all the information known about the inheritance information for validation groups. - */ -public class GroupInheritanceMap { - - /** - * Builder for {@link GroupInheritanceMap} - */ - public static class Builder { - Map<Class<?>, Set<Class<?>>> mapping; - - private Builder() { - mapping = new HashMap<Class<?>, Set<Class<?>>>(); - addGroup(Default.class); - } - - /** - * Adds a group to the inheritance map. May optionally include parents of the group. - * @param group The validation group to add. - * @param parents A list of validation groups which {@code group} extends. Can be empty if the - * group contains no parents. - */ - public Builder addGroup(Class<?> group, Class<?>... parents) { - mapping.put(group, new HashSet<Class<?>>(Arrays.asList(parents))); - return this; - } - - public GroupInheritanceMap build() { - return new GroupInheritanceMap(mapping); - } - } - - /** - * Creates a builder populated only with the {@link Default} group. - */ - public static Builder builder() { - return new Builder(); - } - - private final Map<Class<?>, Set<Class<?>>> mapping; - - private GroupInheritanceMap(Map<Class<?>, Set<Class<?>>> mapping) { - this.mapping = Collections.unmodifiableMap(mapping); - } - - /** - * Checks if a given group has been added to the map. - */ - public boolean containsGroup(Class<?> group) { - return mapping.containsKey(group); - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - if (!(other instanceof GroupInheritanceMap)) { - return false; - } - GroupInheritanceMap otherObj = (GroupInheritanceMap)other; - return mapping.equals(otherObj.mapping); - } - - /** - * Finds all of the validation groups extended by an intial set of groups. - * @param baseGroups The initial set of groups to find parents of. These groups must have been - * added to the inheritance map already. - * @return A unified set of groups and their parents. - * @throws IllegalArgumentException If an initial group has not been added to the map before - * calling this method. - */ - public Set<Class<?>> findAllExtendedGroups(Collection<Class<?>> baseGroups) - throws IllegalArgumentException { - Set<Class<?>> found = new HashSet<Class<?>>(); - Stack<Class<?>> remaining = new Stack<Class<?>>(); - // initialize - for (Class<?> group : baseGroups) { - if (!mapping.containsKey(group)) { - throw new IllegalArgumentException("The collection of groups contains a group which" + - " was not added to the map. Be sure to call addGroup() for all groups first."); - } - remaining.push(group); - } - // traverse - Class<?> current; - Set<Class<?>> superInterfaces; - while (!remaining.isEmpty()) { - current = remaining.pop(); - found.add(current); - superInterfaces = mapping.get(current); - for (Class<?> parent : superInterfaces) { - if (!found.contains(parent)) { - remaining.push(parent); - } - } - } - return found; - } - - /** - * Recursively gets all of the groups in the map (children and parents alike) in one flat set. - */ - public Set<Class<?>> getAllGroups() { - Set<Class<?>> allGroups = new HashSet<Class<?>>(); - for (Map.Entry<Class<?>, Set<Class<?>>> entry : mapping.entrySet()) { - allGroups.add(entry.getKey()); - allGroups.addAll(entry.getValue()); - } - return allGroups; - } - - /** - * If the group has been added to the map then its parent groups (of one level above) are - * retrieved. Otherwise null is returned. - * - * @see #containsGroup(Class) - * @see #findAllExtendedGroups(Collection) - */ - public Set<Class<?>> getParentsOfGroup(Class<?> group) { - return mapping.get(group); - } - - /** - * Returns all of the groups added to the map (but not their parents). - */ - public Set<Class<?>> getRootGroups() { - return mapping.keySet(); - } - - @Override - public int hashCode() { - return mapping.hashCode(); - } - - public boolean isEmpty() { - return mapping.isEmpty(); - } - - @Override - public String toString() { - return mapping.toString(); - } -}
diff --git a/user/src/com/google/gwt/validation/client/GroupValidator.java b/user/src/com/google/gwt/validation/client/GroupValidator.java new file mode 100644 index 0000000..bd73947 --- /dev/null +++ b/user/src/com/google/gwt/validation/client/GroupValidator.java
@@ -0,0 +1,41 @@ +/* + * Copyright 2012 Google Inc. + * + * Licensed 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 com.google.gwt.validation.client; + +import com.google.gwt.validation.client.impl.GwtValidationContext; + +import java.util.Set; + +import javax.validation.ConstraintViolation; + +/** + * <strong>EXPERIMENTAL</strong> and subject to change. Do not use this in + * production code. + * <p> + * Does shallow group-specific validation. Group sequences and Default group overriding are not + * directly supported by implementations of this interface. Instead, this is used by higher-level + * validators to delegate the validation of specific areas. + * + */ +public interface GroupValidator { + + /** + * Validates the given group(s) (may not include group sequences) + * and adds any violations to the set. + */ + <T> void validateGroups(GwtValidationContext<T> context, // + Set<ConstraintViolation<T>> violations, Group... groups); +}
diff --git a/user/src/com/google/gwt/validation/client/GwtConstraintValidatorFactory.java b/user/src/com/google/gwt/validation/client/GwtConstraintValidatorFactory.java index 3e1a8c4..cdaeab2 100644 --- a/user/src/com/google/gwt/validation/client/GwtConstraintValidatorFactory.java +++ b/user/src/com/google/gwt/validation/client/GwtConstraintValidatorFactory.java
@@ -18,28 +18,12 @@ import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorFactory; -/* - * Copyright 2010 Google Inc. - * - * Licensed 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. - */ - /** * <strong>EXPERIMENTAL</strong> and subject to change. Do not use this in * production code. * <p> * GWT does not support {@link ConstraintValidatorFactory} use - * {@link com.google.gwt.core.client.GWT;#create(Class)} instead. Using this + * {@link com.google.gwt.core.client.GWT#create(Class) GWT.create(Class)} instead. Using this * class throws a {@link UnsupportedOperationException}. */ public final class GwtConstraintValidatorFactory implements @@ -50,6 +34,7 @@ * * @throws UnsupportedOperationException */ + @Override public <T extends ConstraintValidator<?, ?>> T getInstance(Class<T> key) { throw new UnsupportedOperationException("GWT does not support " + ConstraintValidatorFactory.class.getName()
diff --git a/user/src/com/google/gwt/validation/client/ValidationGroupsMetadata.java b/user/src/com/google/gwt/validation/client/ValidationGroupsMetadata.java new file mode 100644 index 0000000..bd3d803 --- /dev/null +++ b/user/src/com/google/gwt/validation/client/ValidationGroupsMetadata.java
@@ -0,0 +1,232 @@ +/* + * Copyright 2012 Google Inc. + * + * Licensed 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 com.google.gwt.validation.client; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.HashMap; +import java.util.Set; +import java.util.Stack; + +import javax.validation.groups.Default; + + +/** + * <strong>EXPERIMENTAL</strong> and subject to change. Do not use this in + * production code. + * <p> + * Contains all the information known about the inheritance information for validation groups. + */ +public class ValidationGroupsMetadata { + + /** + * Builder for {@link ValidationGroupsMetadata} + */ + public static class Builder { + private final Map<Class<?>, Set<Class<?>>> inheritanceinheritanceMap; + private final Map<Class<?>, List<Class<?>>> sequenceMap; + + private Builder() { + inheritanceinheritanceMap = new HashMap<Class<?>, Set<Class<?>>>(); + sequenceMap = new HashMap<Class<?>, List<Class<?>>>(); + addGroup(Default.class); + } + + /** + * Adds a group to the inheritance map. May optionally include parents of the group. + * @param group The validation group to add. + * @param parents A list of validation groups which {@code group} extends. Can be empty if the + * group contains no parents. + */ + public Builder addGroup(Class<?> group, Class<?>... parents) { + inheritanceinheritanceMap.put(group, new HashSet<Class<?>>(Arrays.asList(parents))); + return this; + } + + /** + * Adds a group sequence to the sequence map. + * @param groupSequence The class representing the sequence (annotated with @GroupSequence) + * @param sequenceGroups The groups in the sequence. + */ + public Builder addSequence(Class<?> groupSequence, Class<?>... sequenceGroups) { + sequenceMap.put(groupSequence, Arrays.asList(sequenceGroups)); + return this; + } + + public ValidationGroupsMetadata build() { + return new ValidationGroupsMetadata(inheritanceinheritanceMap, sequenceMap); + } + } + + /** + * Creates a builder populated only with the {@link Default} group. + */ + public static Builder builder() { + return new Builder(); + } + + private final Map<Class<?>, Set<Class<?>>> inheritanceMapping; + private final Map<Class<?>, List<Class<?>>> sequenceMapping; + + private ValidationGroupsMetadata(Map<Class<?>, Set<Class<?>>> inheritanceinheritanceMap, + Map<Class<?>, List<Class<?>>> sequenceMap) { + this.inheritanceMapping = Collections.unmodifiableMap(inheritanceinheritanceMap); + this.sequenceMapping = Collections.unmodifiableMap(sequenceMap); + } + + /** + * Checks if a given group has been added to the inheritance map. + */ + public boolean containsGroup(Class<?> group) { + return inheritanceMapping.containsKey(group); + } + + @Override + public boolean equals(Object other) { + if (this == other) { + return true; + } + if (!(other instanceof ValidationGroupsMetadata)) { + return false; + } + ValidationGroupsMetadata otherObj = (ValidationGroupsMetadata)other; + return inheritanceMapping.equals(otherObj.inheritanceMapping) + && sequenceMapping.equals(otherObj.sequenceMapping); + } + + /** + * Finds all of the validation groups extended by an intial set of groups. + * @param baseGroups The initial set of groups to find parents of. These groups must have been + * added to the inheritance map already. + * @return A unified set of groups and their parents. + * @throws IllegalArgumentException If an initial group has not been added to the map before + * calling this method. + */ + public Set<Class<?>> findAllExtendedGroups(Collection<Class<?>> baseGroups) + throws IllegalArgumentException { + Set<Class<?>> found = new HashSet<Class<?>>(); + Stack<Class<?>> remaining = new Stack<Class<?>>(); + // initialize + for (Class<?> group : baseGroups) { + if (!inheritanceMapping.containsKey(group)) { + throw new IllegalArgumentException("The collection of groups contains a group which" + + " was not added to the map. Be sure to call addGroup() for all groups first."); + } + remaining.push(group); + } + // traverse + Class<?> current; + Set<Class<?>> superInterfaces; + while (!remaining.isEmpty()) { + current = remaining.pop(); + found.add(current); + superInterfaces = inheritanceMapping.get(current); + for (Class<?> parent : superInterfaces) { + if (!found.contains(parent)) { + remaining.push(parent); + } + } + } + return found; + } + + /** + * Recursively gets all of the groups and sequence groups in the map (children and parents alike) + * in one flat set. + */ + public Set<Class<?>> getAllGroupsAndSequences() { + Set<Class<?>> allGroups = new HashSet<Class<?>>(); + for (Map.Entry<Class<?>, Set<Class<?>>> entry : inheritanceMapping.entrySet()) { + allGroups.add(entry.getKey()); + allGroups.addAll(entry.getValue()); + } + allGroups.addAll(sequenceMapping.keySet()); + return allGroups; + } + + /** + * Returns all the known group sequence classes. + */ + public Set<Class<?>> getGroupSequences() { + return sequenceMapping.keySet(); + } + + /** + * If the group has been added to the map then its parent groups (of one level above) are + * retrieved. Otherwise null is returned. + * + * @see #containsGroup(Class) + * @see #findAllExtendedGroups(Collection) + */ + public Set<Class<?>> getParentsOfGroup(Class<?> group) { + return inheritanceMapping.get(group); + } + + /** + * Returns all of the groups added to the map (but not their parents). + */ + public Set<Class<?>> getRootGroups() { + return inheritanceMapping.keySet(); + } + + /** + * If the sequence class has been added to the map then the actual sequence list is retrieved. + * Otherwise null is returned. + */ + public List<Class<?>> getSequenceList(Class<?> sequence) { + return sequenceMapping.get(sequence); + } + + @Override + public int hashCode() { + int result = inheritanceMapping.hashCode(); + result = 31 * result + sequenceMapping.hashCode(); + return result; + } + + /** + * Checks if a group extends other groups (has parents). + */ + public boolean hasParents(Class<?> group) { + Set<Class<?>> possibleParents = getParentsOfGroup(group); + return possibleParents != null && !possibleParents.isEmpty(); + } + + public boolean isInheritanceMapEmpty() { + return inheritanceMapping.isEmpty(); + } + + /** + * Checks if a given class is a group sequence map. + */ + public boolean isSeqeuence(Class<?> sequence) { + return sequenceMapping.containsKey(sequence); + } + + public boolean isSequenceMapEmpty() { + return sequenceMapping.isEmpty(); + } + + @Override + public String toString() { + return "ValidationGroupsMetaData{inheritanceMap=" + inheritanceMapping + ", " + + "sequenceMap=" + sequenceMapping + "}"; + } +}
diff --git a/user/src/com/google/gwt/validation/client/impl/AbstractGwtSpecificValidator.java b/user/src/com/google/gwt/validation/client/impl/AbstractGwtSpecificValidator.java index 4dbc1b4..0b380c4 100644 --- a/user/src/com/google/gwt/validation/client/impl/AbstractGwtSpecificValidator.java +++ b/user/src/com/google/gwt/validation/client/impl/AbstractGwtSpecificValidator.java
@@ -15,19 +15,28 @@ */ package com.google.gwt.validation.client.impl; -import com.google.gwt.validation.client.GroupInheritanceMap; +import com.google.gwt.validation.client.Group; +import com.google.gwt.validation.client.GroupChain; +import com.google.gwt.validation.client.GroupChainGenerator; +import com.google.gwt.validation.client.GroupValidator; +import com.google.gwt.validation.client.ValidationGroupsMetadata; import java.lang.annotation.Annotation; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Set; import javax.validation.ConstraintValidator; import javax.validation.ConstraintViolation; import javax.validation.MessageInterpolator; +import javax.validation.ValidationException; import javax.validation.groups.Default; /** @@ -68,9 +77,85 @@ return new AttributeBuilder(); } - protected Class<?>[] addDefaultGroupWhenEmpty(Class<?>[] groups) { - if (groups.length == 0) { - groups = new Class<?>[]{Default.class}; + protected static Class<?>[] groupsToClasses(Group... groups) { + int numGroups = groups.length; + Class<?>[] array = new Class<?>[numGroups]; + for (int i = 0; i < numGroups; i++) { + array[i] = groups[i].getGroup(); + } + return array; + } + + @Override + public <T> Set<ConstraintViolation<T>> validate( + GwtValidationContext<T> context, + G object, + Class<?>... groups) { + context.addValidatedObject(object); + try { + GroupValidator classGroupValidator = new ClassGroupValidator(object); + GroupChain groupChain = createGroupChainFromGroups(context, groups); + BeanMetadata beanMetadata = getBeanMetadata(); + List<Class<?>> defaultGroupSeq = beanMetadata.getDefaultGroupSequence(); + if (beanMetadata.defaultGroupSequenceIsRedefined()) { + // only need to check this on class-level validation + groupChain.checkDefaultGroupSequenceIsExpandable(defaultGroupSeq); + } + return validateGroups(context, classGroupValidator, groupChain); + } catch (IllegalArgumentException e) { + throw e; + } catch (ValidationException e) { + throw e; + } catch (Exception e) { + throw new ValidationException("Error validating " + object.getClass(), e); + } + } + + @Override + public <T> Set<ConstraintViolation<T>> validateProperty( + GwtValidationContext<T> context, + G object, + String propertyName, + Class<?>... groups) throws ValidationException { + try { + GroupValidator propertyGroupValidator = new PropertyGroupValidator(object, propertyName); + GroupChain groupChain = createGroupChainFromGroups(context, groups); + return validateGroups(context, propertyGroupValidator, groupChain); + } catch (IllegalArgumentException e) { + throw e; + } catch (ValidationException e) { + throw e; + } catch (Exception e) { + throw new ValidationException("Error validating property " + propertyName + + " of " + object.getClass(), e); + } + } + + @Override + public <T> Set<ConstraintViolation<T>> validateValue( + GwtValidationContext<T> context, + Class<G> beanType, + String propertyName, + Object value, + Class<?>... groups) throws ValidationException { + try { + GroupValidator valueGroupValidator = new ValueGroupValidator(beanType, propertyName, value); + GroupChain groupChain = createGroupChainFromGroups(context, groups); + return validateGroups(context, valueGroupValidator, groupChain); + } catch (IllegalArgumentException e) { + throw e; + } catch (ValidationException e) { + throw e; + } catch (Exception e) { + throw new ValidationException("Error validating property " + propertyName + + " with value " + value + " of " + beanType, e); + } + } + + protected List<Class<?>> addDefaultGroupWhenEmpty(List<Class<?>> groups) { + if (groups.isEmpty()) { + groups = new ArrayList<Class<?>>(); + groups.add(Default.class); } return groups; } @@ -95,19 +180,19 @@ protected <A extends Annotation, T, V> boolean validate( GwtValidationContext<T> context, Set<ConstraintViolation<T>> violations, G object, V value, ConstraintValidator<A, ? super V> validator, - ConstraintDescriptorImpl<A> constraintDescriptor, Class<?>[] groups) { + ConstraintDescriptorImpl<A> constraintDescriptor, Class<?>... groups) { validator.initialize(constraintDescriptor.getAnnotation()); ConstraintValidatorContextImpl<A, V> constraintValidatorContext = context.createConstraintValidatorContext(constraintDescriptor); - GroupInheritanceMap groupInheritanceMap = context.getValidator().getGroupInheritanceMap(); - // check against the groups passed in as well as their parent (super) interfaces - Set<Class<?>> extendedGroups = groupInheritanceMap.findAllExtendedGroups(Arrays.asList(groups)); + List<Class<?>> groupsList = Arrays.asList(groups); + ValidationGroupsMetadata validationGroupsMetadata = + context.getValidator().getValidationGroupsMetadata(); Set<Class<?>> constraintGroups = constraintDescriptor.getGroups(); // check groups requested are in the set of constraint groups (including the implicit group) - if (!containsAny(extendedGroups, constraintGroups) - && !Arrays.asList(groups).contains(getConstraints(groupInheritanceMap).getElementClass())) { + if (!containsAny(groupsList, constraintGroups) + && !groupsList.contains(getConstraints(validationGroupsMetadata).getElementClass())) { return false; } @@ -171,4 +256,91 @@ .build(); return violation; } + + private <T> GroupChain createGroupChainFromGroups(GwtValidationContext<T> context, Class<?>... groups) { + List<Class<?>> groupsList = addDefaultGroupWhenEmpty(Arrays.asList(groups)); + ValidationGroupsMetadata validationGroupsMetadata = + context.getValidator().getValidationGroupsMetadata(); + return new GroupChainGenerator(validationGroupsMetadata).getGroupChainFor(groupsList); + } + + /** + * Performs the top-level validation using a helper {@link GroupValidator}. This takes + * group sequencing and Default group overriding into account. + */ + private <T> Set<ConstraintViolation<T>> validateGroups( + GwtValidationContext<T> context, + GroupValidator groupValidator, + GroupChain groupChain) { + + Set<ConstraintViolation<T>> violations = new HashSet<ConstraintViolation<T>>(); + + Collection<Group> allGroups = groupChain.getAllGroups(); + Group[] allGroupsArray = allGroups.toArray(new Group[allGroups.size()]); + groupValidator.validateGroups(context, violations, allGroupsArray); + + // handle sequences + Iterator<List<Group>> sequenceIterator = groupChain.getSequenceIterator(); + while (sequenceIterator.hasNext()) { + List<Group> sequence = sequenceIterator.next(); + for (Group group : sequence) { + int numberOfViolations = violations.size(); + groupValidator.validateGroups(context, violations, group); + if (violations.size() > numberOfViolations) { + // stop processing when an error occurs + break; + } + } + } + return violations; + } + + private class ClassGroupValidator implements GroupValidator { + private final G object; + + public ClassGroupValidator(G object) { + this.object = object; + } + + @Override + public <T> void validateGroups(GwtValidationContext<T> context, + Set<ConstraintViolation<T>> violations, Group... groups) { + expandDefaultAndValidateClassGroups(context, object, violations, groups); + } + } + + private class PropertyGroupValidator implements GroupValidator { + private final G object; + private final String propertyName; + + public PropertyGroupValidator(G object, String propertyName) { + this.object = object; + this.propertyName = propertyName; + } + + @Override + public <T> void validateGroups(GwtValidationContext<T> context, + Set<ConstraintViolation<T>> violations, Group... groups) { + expandDefaultAndValidatePropertyGroups(context, object, propertyName, violations, groups); + } + } + + private class ValueGroupValidator implements GroupValidator { + private final Class<G> beanType; + private final String propertyName; + private final Object value; + + public ValueGroupValidator(Class<G> beanType, String propertyName, Object value) { + this.beanType = beanType; + this.propertyName = propertyName; + this.value = value; + } + + @Override + public <T> void validateGroups(GwtValidationContext<T> context, + Set<ConstraintViolation<T>> violations, Group... groups) { + expandDefaultAndValidateValueGroups(context, beanType, propertyName, value, violations, // + groups); + } + } }
diff --git a/user/src/com/google/gwt/validation/client/impl/AbstractGwtValidator.java b/user/src/com/google/gwt/validation/client/impl/AbstractGwtValidator.java index 0cdd850..664d4a8 100644 --- a/user/src/com/google/gwt/validation/client/impl/AbstractGwtValidator.java +++ b/user/src/com/google/gwt/validation/client/impl/AbstractGwtValidator.java
@@ -15,9 +15,10 @@ */ package com.google.gwt.validation.client.impl; -import com.google.gwt.validation.client.GroupInheritanceMap; +import com.google.gwt.validation.client.ValidationGroupsMetadata; import java.util.Arrays; +import java.util.HashSet; import java.util.Set; import javax.validation.ConstraintValidatorFactory; @@ -38,29 +39,29 @@ public abstract class AbstractGwtValidator implements Validator { private final Set<Class<?>> validGroups; - private final GroupInheritanceMap groupInheritanceMap; + private final ValidationGroupsMetadata validationGroupsMetadata; private ConstraintValidatorFactory contraintValidatorFactory; private MessageInterpolator messageInterpolator; private TraversableResolver traversableResolver; /** * Creates a validator initialized with the default group inheritance map. - * @see #AbstractGwtValidator(GroupInheritanceMap) + * @see #AbstractGwtValidator(ValidationGroups) */ public AbstractGwtValidator() { - this(GroupInheritanceMap.builder().build()); + this(ValidationGroupsMetadata.builder().build()); } /** - * @param groupInheritanceMap Map of groups to the groups' parents. + * @param validationGroupsMetadata Validation group metadata. */ - public AbstractGwtValidator(GroupInheritanceMap groupInheritanceMap) { - validGroups = groupInheritanceMap.getAllGroups(); - this.groupInheritanceMap = groupInheritanceMap; + public AbstractGwtValidator(ValidationGroupsMetadata validationGroupsMetadata) { + validGroups = validationGroupsMetadata.getAllGroupsAndSequences(); + this.validationGroupsMetadata = validationGroupsMetadata; } - public GroupInheritanceMap getGroupInheritanceMap() { - return groupInheritanceMap; + public ValidationGroupsMetadata getValidationGroupsMetadata() { + return validationGroupsMetadata; } public void init(ConstraintValidatorFactory factory, @@ -82,8 +83,12 @@ protected void checkGroups(Class<?>... groups) { if (!validGroups.containsAll(Arrays.asList(groups))) { + HashSet<Class<?>> unknown = new HashSet<Class<?>>(); + unknown.addAll(Arrays.asList(groups)); + unknown.removeAll(validGroups); throw new IllegalArgumentException(this.getClass() - + " only processes the following groups " + validGroups); + + " only processes the following groups " + validGroups + ". " + + "The following groups could not be processed " + unknown); } }
diff --git a/user/src/com/google/gwt/validation/client/impl/BaseGwtConfiguration.java b/user/src/com/google/gwt/validation/client/impl/BaseGwtConfiguration.java index 8a196a8..c7d00f9 100644 --- a/user/src/com/google/gwt/validation/client/impl/BaseGwtConfiguration.java +++ b/user/src/com/google/gwt/validation/client/impl/BaseGwtConfiguration.java
@@ -19,13 +19,15 @@ import com.google.gwt.validation.client.spi.GwtConfigurationState; import com.google.gwt.validation.client.spi.GwtValidationProvider; +import java.util.HashMap; +import java.util.Map; + import javax.validation.Configuration; import javax.validation.ConstraintValidatorFactory; import javax.validation.MessageInterpolator; import javax.validation.TraversableResolver; import javax.validation.ValidatorFactory; import javax.validation.spi.BootstrapState; -import javax.validation.spi.ConfigurationState; /** * <strong>EXPERIMENTAL</strong> and subject to change. Do not use this in @@ -38,6 +40,10 @@ protected final GwtValidationProvider provider; protected final BootstrapState state; + protected final Map<String, String> properties = new HashMap<String, String>(); + protected ConstraintValidatorFactory constraintValidatorFactory; + protected MessageInterpolator messageInterpolator; + protected TraversableResolver traversableResolver; public BaseGwtConfiguration(GwtValidationProvider gwtValidationProvider, BootstrapState state) { @@ -45,48 +51,65 @@ this.state = state; } + @Override public final BaseGwtConfiguration addProperty(String name, String value) { - // TODO(nchalko) implement. + properties.put(name, value); return this; } + @Override public final ValidatorFactory buildValidatorFactory() { - ConfigurationState configurationState = new GwtConfigurationState(); + GwtConfigurationState configurationState = new GwtConfigurationState( // + constraintValidatorFactory, // + messageInterpolator, // + properties, // + traversableResolver); return provider.buildValidatorFactory(configurationState); } + /** + * <b>{@link ConstraintValidatorFactory} is unsupported in GWT.</b> + * Constraint validators are instead created using GWT.create- with no factory. + */ + @Override public final BaseGwtConfiguration constraintValidatorFactory( ConstraintValidatorFactory constraintValidatorFactory) { - // TODO(nchalko) implement. + this.constraintValidatorFactory = constraintValidatorFactory; return this; } + @Override public final ConstraintValidatorFactory getDefaultConstraintValidatorFactory() { return GWT.create(ConstraintValidatorFactory.class); } + @Override public final MessageInterpolator getDefaultMessageInterpolator() { return GWT.create(MessageInterpolator.class); } + @Override public final TraversableResolver getDefaultTraversableResolver() { return GWT.create(TraversableResolver.class); } + @Override public final BaseGwtConfiguration ignoreXmlConfiguration() { - // TODO(nchalko) implement. + // Always ignore XML anyway return this; } + @Override public final BaseGwtConfiguration messageInterpolator( MessageInterpolator interpolator) { - // TODO(nchalko) implement. + this.messageInterpolator = interpolator; return this; } + @Override public final BaseGwtConfiguration traversableResolver( TraversableResolver resolver) { - // TODO(nchalko) implement. + this.traversableResolver = resolver; return this; }
diff --git a/user/src/com/google/gwt/validation/client/impl/BeanMetadata.java b/user/src/com/google/gwt/validation/client/impl/BeanMetadata.java new file mode 100644 index 0000000..0aa177f --- /dev/null +++ b/user/src/com/google/gwt/validation/client/impl/BeanMetadata.java
@@ -0,0 +1,53 @@ +/* + * Copyright 2012 Google Inc. + * + * Licensed 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 com.google.gwt.validation.client.impl; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import javax.validation.groups.Default; + +/** + * <strong>EXPERIMENTAL</strong> and subject to change. Do not use this in + * production code. + * <p> + * Describes information about a bean. + */ +public class BeanMetadata { + private final Class<?> beanClass; + private final List<Class<?>> defaultGroupSequence; + private final boolean defaultGroupSequenceRedefined; + + public BeanMetadata(Class<?> beanClass, Class<?>... defaultGroupSequence) { + this.beanClass = beanClass; + this.defaultGroupSequence = Collections.unmodifiableList(Arrays.asList(defaultGroupSequence)); + this.defaultGroupSequenceRedefined = !(defaultGroupSequence.length == 1 && + defaultGroupSequence[0].equals(Default.class)); + } + + public boolean defaultGroupSequenceIsRedefined() { + return defaultGroupSequenceRedefined; + } + + public Class<?> getBeanClass() { + return beanClass; + } + + public List<Class<?>> getDefaultGroupSequence() { + return defaultGroupSequence; + } +}
diff --git a/user/src/com/google/gwt/validation/client/impl/ConstraintFinderImpl.java b/user/src/com/google/gwt/validation/client/impl/ConstraintFinderImpl.java index 1b6f3c9..30369c4 100644 --- a/user/src/com/google/gwt/validation/client/impl/ConstraintFinderImpl.java +++ b/user/src/com/google/gwt/validation/client/impl/ConstraintFinderImpl.java
@@ -16,16 +16,21 @@ package com.google.gwt.validation.client.impl; import com.google.gwt.validation.client.ConstraintOrigin; -import com.google.gwt.validation.client.GroupInheritanceMap; +import com.google.gwt.validation.client.Group; +import com.google.gwt.validation.client.GroupChain; +import com.google.gwt.validation.client.GroupChainGenerator; +import com.google.gwt.validation.client.ValidationGroupsMetadata; import java.lang.annotation.ElementType; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Set; +import javax.validation.groups.Default; import javax.validation.metadata.ConstraintDescriptor; import javax.validation.metadata.Scope; import javax.validation.metadata.ElementDescriptor.ConstraintFinder; @@ -37,15 +42,18 @@ */ public final class ConstraintFinderImpl implements ConstraintFinder { private Set<ConstraintDescriptorImpl<?>> constraintDescriptors; - private GroupInheritanceMap groupInheritanceMap; + private ValidationGroupsMetadata validationGroupsMetadata; private List<Class<?>> groups; private Set<ConstraintOrigin> definedInSet; private Set<ElementType> elementTypes; + private BeanMetadata beanMetadata; - public ConstraintFinderImpl(GroupInheritanceMap groupInheritanceMap, + public ConstraintFinderImpl(BeanMetadata beanMetadata, + ValidationGroupsMetadata validationGroupsMetadata, Set<ConstraintDescriptorImpl<?>> constraintDescriptors) { - this.groupInheritanceMap = groupInheritanceMap; + this.validationGroupsMetadata = validationGroupsMetadata; this.constraintDescriptors = constraintDescriptors; + this.beanMetadata = beanMetadata; elementTypes = new HashSet<ElementType>(); elementTypes.add(ElementType.TYPE); elementTypes.add(ElementType.METHOD); @@ -65,10 +73,11 @@ @Override public Set<ConstraintDescriptor<?>> getConstraintDescriptors() { - if (groupInheritanceMap == null) { - // sanity check - this could be null if the caller does not set a group inheritance map first + if (validationGroupsMetadata == null) { + // sanity check - this could be null if the caller does not set group metadata first throw new IllegalStateException("ConstraintFinderImpl not initialized properly. A " + - "GroupInheritanceMap is required by GWT to properly find all constraint descriptors."); + "ValidationGroupsMetadata object is required by GWT to properly find all constraint " + + "descriptors."); } Set<ConstraintDescriptor<?>> matchingDescriptors = new HashSet<ConstraintDescriptor<?>>(); findMatchingDescriptors(matchingDescriptors); @@ -90,8 +99,15 @@ @Override public ConstraintFinder unorderedAndMatchingGroups(Class<?>... groups) { - this.groups = new ArrayList<Class<?>>(groups.length); - Collections.addAll(this.groups, groups); + this.groups = new ArrayList<Class<?>>(); + for (Class<?> clazz : groups) { + if (Default.class.equals(clazz) && beanMetadata.defaultGroupSequenceIsRedefined()) { + this.groups.addAll(beanMetadata.getDefaultGroupSequence()); + } + else { + this.groups.add(clazz); + } + } return this; } @@ -108,10 +124,12 @@ private void findMatchingDescriptors(Set<ConstraintDescriptor<?>> matchingDescriptors) { if (!groups.isEmpty()) { - // TODO(idol) The group sequence ordering will play a part here - Set<Class<?>> extendedGroups = groupInheritanceMap.findAllExtendedGroups(groups); - for (Class<?> group : extendedGroups) { - addMatchingDescriptorsForGroup(group, matchingDescriptors); + GroupChain groupChain = + new GroupChainGenerator(validationGroupsMetadata).getGroupChainFor(groups); + Iterator<Group> groupIterator = groupChain.getGroupIterator(); + while (groupIterator.hasNext()) { + Group g = groupIterator.next(); + addMatchingDescriptorsForGroup(g.getGroup(), matchingDescriptors); } } else {
diff --git a/user/src/com/google/gwt/validation/client/impl/GwtBeanDescriptor.java b/user/src/com/google/gwt/validation/client/impl/GwtBeanDescriptor.java index a6bd79c..e5560d7 100644 --- a/user/src/com/google/gwt/validation/client/impl/GwtBeanDescriptor.java +++ b/user/src/com/google/gwt/validation/client/impl/GwtBeanDescriptor.java
@@ -15,7 +15,7 @@ */ package com.google.gwt.validation.client.impl; -import com.google.gwt.validation.client.GroupInheritanceMap; +import com.google.gwt.validation.client.ValidationGroupsMetadata; import javax.validation.metadata.BeanDescriptor; @@ -29,5 +29,5 @@ * @param <T> */ public interface GwtBeanDescriptor<T> extends BeanDescriptor { - void setGroupInheritanceMap(GroupInheritanceMap groupInheritanceMap); + void setValidationGroupsMetadata(ValidationGroupsMetadata validationGroupsMetadata); }
diff --git a/user/src/com/google/gwt/validation/client/impl/GwtBeanDescriptorImpl.java b/user/src/com/google/gwt/validation/client/impl/GwtBeanDescriptorImpl.java index 55199d9..c17c433 100644 --- a/user/src/com/google/gwt/validation/client/impl/GwtBeanDescriptorImpl.java +++ b/user/src/com/google/gwt/validation/client/impl/GwtBeanDescriptorImpl.java
@@ -15,7 +15,7 @@ */ package com.google.gwt.validation.client.impl; -import com.google.gwt.validation.client.GroupInheritanceMap; +import com.google.gwt.validation.client.ValidationGroupsMetadata; import java.lang.annotation.Annotation; import java.util.Collection; @@ -52,6 +52,7 @@ private final Set<ConstraintDescriptorImpl<? extends Annotation>> constraints = new HashSet<ConstraintDescriptorImpl<? extends Annotation>>(); private boolean isConstrained; + private BeanMetadata beanMetadata; private Builder(Class<T> clazz) { this.clazz = clazz; @@ -64,7 +65,7 @@ } public GwtBeanDescriptorImpl<T> build() { - return new GwtBeanDescriptorImpl<T>(clazz, isConstrained, descriptorMap, + return new GwtBeanDescriptorImpl<T>(clazz, isConstrained, descriptorMap, beanMetadata, constraints); } @@ -73,6 +74,11 @@ return this; } + public Builder<T> setBeanMetadata(BeanMetadata beanMetadata) { + this.beanMetadata = beanMetadata; + return this; + } + public Builder<T> setConstrained(boolean isConstrained) { this.isConstrained = isConstrained; return this; @@ -88,44 +94,45 @@ private final Map<String, PropertyDescriptorImpl> descriptorMap = new HashMap<String, PropertyDescriptorImpl>(); private final boolean isBeanConstrained; + + private final BeanMetadata beanMetadata; - private GroupInheritanceMap groupInheritanceMap; + private ValidationGroupsMetadata validationGroupsMetadata; private GwtBeanDescriptorImpl(Class<T> clazz, boolean isConstrained, - Map<String, PropertyDescriptorImpl> descriptorMap, + Map<String, PropertyDescriptorImpl> descriptorMap, BeanMetadata beanMetadata, Set<ConstraintDescriptorImpl<?>> constraints) { - super(); this.clazz = clazz; this.isBeanConstrained = isConstrained; + this.beanMetadata = beanMetadata; this.descriptorMap.putAll(descriptorMap); this.constraints.addAll(constraints); } @Override public ConstraintFinder findConstraints() { - return new ConstraintFinderImpl(groupInheritanceMap, constraints); + return new ConstraintFinderImpl(beanMetadata, validationGroupsMetadata, constraints); } @Override public Set<PropertyDescriptor> getConstrainedProperties() { Collection<PropertyDescriptorImpl> props = descriptorMap.values(); for (PropertyDescriptorImpl prop : props) { - prop.setGroupInheritanceMap(groupInheritanceMap); + prop.setValidationGroupsMetadata(validationGroupsMetadata); } return new HashSet<PropertyDescriptor>(props); } @Override public Set<ConstraintDescriptor<?>> getConstraintDescriptors() { - // Copy for safety - return new HashSet<ConstraintDescriptor<?>>(constraints); + return findConstraints().getConstraintDescriptors(); } @Override public PropertyDescriptor getConstraintsForProperty(String propertyName) { PropertyDescriptorImpl propDesc = descriptorMap.get(propertyName); if (propDesc != null) { - propDesc.setGroupInheritanceMap(groupInheritanceMap); + propDesc.setValidationGroupsMetadata(validationGroupsMetadata); } return propDesc; } @@ -146,8 +153,8 @@ } @Override - public void setGroupInheritanceMap(GroupInheritanceMap groupInheritanceMap) { + public void setValidationGroupsMetadata(ValidationGroupsMetadata validationGroupsMetadata) { // TODO(idol) Find some way to pass this via the constructor rather than after creation - this.groupInheritanceMap = groupInheritanceMap; + this.validationGroupsMetadata = validationGroupsMetadata; } } \ No newline at end of file
diff --git a/user/src/com/google/gwt/validation/client/impl/GwtSpecificValidator.java b/user/src/com/google/gwt/validation/client/impl/GwtSpecificValidator.java index cdc42dd..b97bb7a 100644 --- a/user/src/com/google/gwt/validation/client/impl/GwtSpecificValidator.java +++ b/user/src/com/google/gwt/validation/client/impl/GwtSpecificValidator.java
@@ -15,7 +15,8 @@ */ package com.google.gwt.validation.client.impl; -import com.google.gwt.validation.client.GroupInheritanceMap; +import com.google.gwt.validation.client.Group; +import com.google.gwt.validation.client.ValidationGroupsMetadata; import java.util.Set; @@ -34,18 +35,68 @@ public interface GwtSpecificValidator<G> { /** + * Helper method used to first expand the Default group sequence and then + * perform validation of a bean using the specific group(s). + * @param context GWT validation context. + * @param object Object being validated. + * @param violations Set of violations to add to. + * @param groups What group(s) to validate. + */ + <T> void expandDefaultAndValidateClassGroups( + GwtValidationContext<T> context, + G object, + Set<ConstraintViolation<T>> violations, + Group... groups); + + /** + * Helper method used to first expand the Default group sequence and then + * perform validation of a bean using the specific group(s). + * @param context GWT validation context. + * @param object Object being validated. + * @param violations Set of violations to add to. + * @param groups What group(s) to validate. + */ + <T> void expandDefaultAndValidatePropertyGroups( + GwtValidationContext<T> context, + G object, + String propertyName, + Set<ConstraintViolation<T>> violations, + Group... groups); + + /** + * Helper method used to first expand the Default group sequence and then + * perform validation of a bean using the specific group(s). + * @param context GWT validation context. + * @param object Object being validated. + * @param violations Set of violations to add to. + * @param groups What group(s) to validate. + */ + <T> void expandDefaultAndValidateValueGroups( + GwtValidationContext<T> context, + Class<G> beanType, + String propertyName, + Object value, + Set<ConstraintViolation<T>> violations, + Group... groups); + + /** + * @return The metadata for the bean class associated with this valdiator. + */ + BeanMetadata getBeanMetadata(); + + /** * Return the descriptor object describing bean constraints. The returned * object (and associated objects including * <code>ConstraintDescriptor<code>s) are immutable. * - * @param groupInheritanceMap The group inheritance map for the validator. + * @param validationGroupsMetadata The validation groups metadata for the validator. * @return the bean descriptor for the class associated with this validator. * * @throws IllegalArgumentException if clazz is null * @throws ValidationException if a non recoverable error happens during the * metadata discovery or if some constraints are invalid. */ - GwtBeanDescriptor<G> getConstraints(GroupInheritanceMap groupInheritanceMap) + GwtBeanDescriptor<G> getConstraints(ValidationGroupsMetadata validationGroupsMetadata) throws ValidationException; /** @@ -68,6 +119,20 @@ G object, Class<?>... groups) throws ValidationException; /** + * Helper method used to perform validation of a bean using specific group(s). Does not expand + * the Default group seqeunce if it is redefined. + * @param context GWT validation context. + * @param object Object being validated. + * @param violations Set of violations to add to. + * @param groups What group(s) to validate. + */ + <T> void validateClassGroups( + GwtValidationContext<T> context, + G object, + Set<ConstraintViolation<T>> violations, + Class<?>... groups); + + /** * Validates all constraints placed on the property of <code>object</code> * named <code>propertyName</code>. * @@ -91,6 +156,21 @@ Class<?>... groups) throws ValidationException; /** + * Helper method used to perform validation of a bean property using specific group(s). + * @param context GWT validation context. + * @param object Object with property being validated. + * @param propertyName Name of property to validate. + * @param violations Set of violations to add to. + * @param groups What group(s) to validate. + */ + <T> void validatePropertyGroups( + GwtValidationContext<T> context, + G object, + String propertyName, + Set<ConstraintViolation<T>> violations, + Class<?>... groups); + + /** * Validates all constraints placed on the property named * <code>propertyName</code> of the class <code>beanType</code> where the * property value is <code>value</code>. @@ -118,4 +198,22 @@ <T> Set<ConstraintViolation<T>> validateValue( GwtValidationContext<T> context, Class<G> beanType, String propertyName, Object value, Class<?>... groups) throws ValidationException; + + /** + * Helper method used to perform validation of a class property with a specified value + * using specific group(s). + * @param context GWT validation context. + * @param beanType Class with property being validated. + * @param propertyName Name of property to validate. + * @param value The value of the property to use. + * @param violations Set of violations to add to. + * @param groups What group(s) to validate. + */ + <T> void validateValueGroups( + GwtValidationContext<T> context, + Class<G> beanType, + String propertyName, + Object value, + Set<ConstraintViolation<T>> violations, + Class<?>... groups); }
diff --git a/user/src/com/google/gwt/validation/client/impl/PropertyDescriptorImpl.java b/user/src/com/google/gwt/validation/client/impl/PropertyDescriptorImpl.java index 310be32..77d72f8 100644 --- a/user/src/com/google/gwt/validation/client/impl/PropertyDescriptorImpl.java +++ b/user/src/com/google/gwt/validation/client/impl/PropertyDescriptorImpl.java
@@ -15,7 +15,7 @@ */ package com.google.gwt.validation.client.impl; -import com.google.gwt.validation.client.GroupInheritanceMap; +import com.google.gwt.validation.client.ValidationGroupsMetadata; import java.util.Arrays; import java.util.HashSet; @@ -35,29 +35,33 @@ private Set<ConstraintDescriptorImpl<?>> descriptors; private Class<?> elementClass; private String name; - private GroupInheritanceMap groupInheritanceMap; + private ValidationGroupsMetadata validationGroupsMetadata; + private BeanMetadata parentBeanMetadata; public PropertyDescriptorImpl(String name, Class<?> elementClass, - boolean cascaded, ConstraintDescriptorImpl<?>... descriptors) { - this(name, elementClass, cascaded, null, descriptors); + boolean cascaded, BeanMetadata parentBeanMetadata, + ConstraintDescriptorImpl<?>... descriptors) { + this(name, elementClass, cascaded, parentBeanMetadata, null, descriptors); } public PropertyDescriptorImpl(String name, Class<?> elementClass, - boolean cascaded, GroupInheritanceMap groupInheritanceMap, + boolean cascaded, BeanMetadata parentBeanMetadata, + ValidationGroupsMetadata validationGroupsMetadata, ConstraintDescriptorImpl<?>... descriptors) { super(); this.elementClass = elementClass; this.cascaded = cascaded; this.name = name; - this.groupInheritanceMap = groupInheritanceMap; + this.validationGroupsMetadata = validationGroupsMetadata; + this.parentBeanMetadata = parentBeanMetadata; this.descriptors = new HashSet<ConstraintDescriptorImpl<?>>( Arrays.asList(descriptors)); } @Override public ConstraintFinder findConstraints() { - return new ConstraintFinderImpl(groupInheritanceMap, descriptors); + return new ConstraintFinderImpl(parentBeanMetadata, validationGroupsMetadata, descriptors); } @Override @@ -85,14 +89,20 @@ return cascaded; } - public void setGroupInheritanceMap(GroupInheritanceMap groupInheritanceMap) { + public void setValidationGroupsMetadata(ValidationGroupsMetadata validationGroupsMetadata) { // TODO(idol) Find some way to pass this via the constructor rather than after creation - this.groupInheritanceMap = groupInheritanceMap; + this.validationGroupsMetadata = validationGroupsMetadata; } public PropertyDescriptorImpl shallowCopy() { ConstraintDescriptorImpl<?>[] desc = new ConstraintDescriptorImpl<?>[descriptors.size()]; descriptors.toArray(desc); - return new PropertyDescriptorImpl(name, elementClass, cascaded, groupInheritanceMap, desc); + return new PropertyDescriptorImpl( // + name, // + elementClass, // + cascaded, // + parentBeanMetadata, // + validationGroupsMetadata, // + desc); } }
diff --git a/user/src/com/google/gwt/validation/client/spi/BaseConfigurationState.java b/user/src/com/google/gwt/validation/client/spi/BaseConfigurationState.java index d9f259d..e28cb1b 100644 --- a/user/src/com/google/gwt/validation/client/spi/BaseConfigurationState.java +++ b/user/src/com/google/gwt/validation/client/spi/BaseConfigurationState.java
@@ -15,6 +15,7 @@ */ package com.google.gwt.validation.client.spi; +import java.util.Collections; import java.util.Map; import javax.validation.ConstraintValidatorFactory; @@ -28,28 +29,44 @@ * <p> * Base GWT implementation of {@link ConfigurationState}. */ -abstract class BaseConfigurationState implements ConfigurationState { +public abstract class BaseConfigurationState implements ConfigurationState { + private final ConstraintValidatorFactory constraintValidatorFactory; + private final MessageInterpolator messageInterpolator; + private final Map<String, String> properties; + private final TraversableResolver traversableResolver; + public BaseConfigurationState( + ConstraintValidatorFactory constraintValidatorFactory, + MessageInterpolator messageInterpolator, + Map<String, String> properties, + TraversableResolver traversableResolver) { + this.constraintValidatorFactory = constraintValidatorFactory; + this.messageInterpolator = messageInterpolator; + this.properties = Collections.unmodifiableMap(properties); + this.traversableResolver = traversableResolver; + } + + @Override public ConstraintValidatorFactory getConstraintValidatorFactory() { - // TODO(nchalko) implement. - return null; + return constraintValidatorFactory; } + @Override public MessageInterpolator getMessageInterpolator() { - // TODO(nchalko) implement. - return null; + return messageInterpolator; } + @Override public Map<String, String> getProperties() { - // TODO(nchalko) implement. - return null; + return properties; } + @Override public TraversableResolver getTraversableResolver() { - // TODO(nchalko) implement. - return null; + return traversableResolver; } + @Override public boolean isIgnoreXmlConfiguration() { // Always ignore XML return false;
diff --git a/user/src/com/google/gwt/validation/client/spi/GwtConfigurationState.java b/user/src/com/google/gwt/validation/client/spi/GwtConfigurationState.java index 7b4027a..1496001 100644 --- a/user/src/com/google/gwt/validation/client/spi/GwtConfigurationState.java +++ b/user/src/com/google/gwt/validation/client/spi/GwtConfigurationState.java
@@ -16,8 +16,13 @@ package com.google.gwt.validation.client.spi; import java.io.InputStream; +import java.util.Map; import java.util.Set; +import javax.validation.ConstraintValidatorFactory; +import javax.validation.MessageInterpolator; +import javax.validation.TraversableResolver; + /** * <strong>EXPERIMENTAL</strong> and subject to change. Do not use this in * production code. @@ -26,6 +31,13 @@ */ public final class GwtConfigurationState extends BaseConfigurationState { + public GwtConfigurationState(ConstraintValidatorFactory constraintValidatorFactory, + MessageInterpolator messageInterpolator, Map<String, String> properties, + TraversableResolver traversableResolver) { + super(constraintValidatorFactory, messageInterpolator, properties, traversableResolver); + } + + @Override public Set<InputStream> getMappingStreams() { throw new UnsupportedOperationException( "GWT Validation does not support getMappingStreams");
diff --git a/user/src/com/google/gwt/validation/client/spi/GwtValidationProvider.java b/user/src/com/google/gwt/validation/client/spi/GwtValidationProvider.java index ecedd8e..ca24bf3 100644 --- a/user/src/com/google/gwt/validation/client/spi/GwtValidationProvider.java +++ b/user/src/com/google/gwt/validation/client/spi/GwtValidationProvider.java
@@ -16,6 +16,7 @@ package com.google.gwt.validation.client.spi; import com.google.gwt.core.client.GWT; +import com.google.gwt.validation.client.AbstractGwtValidatorFactory; import com.google.gwt.validation.client.impl.BaseGwtConfiguration; import com.google.gwt.validation.client.impl.GwtConfiguration; @@ -34,15 +35,20 @@ public final class GwtValidationProvider implements ValidationProvider<BaseGwtConfiguration> { - public ValidatorFactory buildValidatorFactory( - ConfigurationState configurationState) { - return GWT.create(ValidatorFactory.class); + @Override + public ValidatorFactory buildValidatorFactory(ConfigurationState configurationState) { + AbstractGwtValidatorFactory validatorFactory = + (AbstractGwtValidatorFactory) GWT.create(ValidatorFactory.class); + validatorFactory.init(configurationState); + return validatorFactory; } + @Override public Configuration<?> createGenericConfiguration(BootstrapState state) { return new GwtConfiguration(this, state); } + @Override public GwtConfiguration createSpecializedConfiguration(BootstrapState state) { return new GwtConfiguration(this, state); }
diff --git a/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java b/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java index 1f349e3..d93b90f 100644 --- a/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java +++ b/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java
@@ -26,7 +26,6 @@ import com.google.gwt.core.ext.typeinfo.JMethod; import com.google.gwt.core.ext.typeinfo.JPrimitiveType; import com.google.gwt.core.ext.typeinfo.JType; -import com.google.gwt.core.ext.typeinfo.TypeOracle; import com.google.gwt.dev.jjs.ast.JProgram; import com.google.gwt.thirdparty.guava.common.base.Function; import com.google.gwt.thirdparty.guava.common.base.Functions; @@ -42,9 +41,13 @@ import com.google.gwt.user.rebind.ClassSourceFileComposerFactory; import com.google.gwt.user.rebind.SourceWriter; import com.google.gwt.validation.client.ConstraintOrigin; -import com.google.gwt.validation.client.GroupInheritanceMap; +import com.google.gwt.validation.client.Group; +import com.google.gwt.validation.client.GroupChain; +import com.google.gwt.validation.client.GroupChainGenerator; +import com.google.gwt.validation.client.ValidationGroupsMetadata; import com.google.gwt.validation.client.impl.AbstractGwtSpecificValidator; import com.google.gwt.validation.client.impl.ConstraintDescriptorImpl; +import com.google.gwt.validation.client.impl.BeanMetadata; import com.google.gwt.validation.client.impl.GwtBeanDescriptor; import com.google.gwt.validation.client.impl.GwtBeanDescriptorImpl; import com.google.gwt.validation.client.impl.GwtValidationContext; @@ -59,8 +62,11 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -69,6 +75,7 @@ import javax.validation.Constraint; import javax.validation.ConstraintValidator; import javax.validation.ConstraintViolation; +import javax.validation.GroupSequence; import javax.validation.Payload; import javax.validation.UnexpectedTypeException; import javax.validation.Valid; @@ -82,7 +89,7 @@ * <strong>EXPERIMENTAL</strong> and subject to change. Do not use this in * production code. * <p> - * Creates a {@link com.google.gwt.validation.client.GwtSpecificValidator}. + * Creates a {@link com.google.gwt.validation.client.impl.GwtSpecificValidator}. * <p> * This class is not thread safe. */ @@ -100,6 +107,7 @@ private static Function<java.beans.PropertyDescriptor, String> PROPERTY_DESCRIPTOR_TO_NAME = new Function<java.beans.PropertyDescriptor, String>() { + @Override public String apply(java.beans.PropertyDescriptor pd) { return pd.getName(); } @@ -107,6 +115,7 @@ private static Function<Object, String> TO_LITERAL = new Function<Object, String>() { + @Override public String apply(Object input) { return asLiteral(input); } @@ -121,7 +130,7 @@ * Java Source code. * * <p> - * Supports all types that {@link Annotation) value can have. + * Supports all types that {@link Annotation} value can have. * * * @throws IllegalArgumentException if the type of the object does not have a java literal form. @@ -261,6 +270,7 @@ Predicate<Class<?>> inBest = new Predicate<Class<?>>() { + @Override public boolean apply(Class<?> key) { return best.contains(key); } @@ -331,13 +341,10 @@ private Set<JMethod> gettersToWrap = Sets.newHashSet(); - private final TypeOracle oracle; - public GwtSpecificValidatorCreator(JClassType validatorType, JClassType beanType, BeanHelper beanHelper, TreeLogger logger, GeneratorContext context) { super(context, logger, validatorType); - this.oracle = context.getTypeOracle(); this.beanType = beanType; this.beanHelper = beanHelper; } @@ -345,9 +352,10 @@ @Override protected void compose(ClassSourceFileComposerFactory composerFactory) { addImports(composerFactory, Annotation.class, ConstraintViolation.class, - GWT.class, GroupInheritanceMap.class, GwtBeanDescriptor.class, GwtValidationContext.class, - HashSet.class, IllegalArgumentException.class, Set.class, - ValidationException.class); + GWT.class, ValidationGroupsMetadata.class, Group.class, GroupChain.class, + GroupChainGenerator.class, GwtBeanDescriptor.class, BeanMetadata.class, + GwtValidationContext.class, ArrayList.class, HashSet.class, IllegalArgumentException.class, + Set.class, Collection.class, Iterator.class, List.class, ValidationException.class); composerFactory.setSuperclass(AbstractGwtSpecificValidator.class.getCanonicalName() + "<" + beanType.getQualifiedSourceName() + ">"); composerFactory.addImplementedInterface(validatorType.getName()); @@ -358,16 +366,26 @@ throws UnableToCompleteException { writeFields(sw); sw.println(); - writeValidate(sw); + writeValidateClassGroups(sw); sw.println(); - writeValidateProperty(sw); + writeExpandDefaultAndValidateClassGroups(sw); sw.println(); - writeValidateValue(sw); + writeExpandDefaultAndValidatePropertyGroups(sw); + sw.println(); + writeExpandDefaultAndValidateValueGroups(sw); + sw.println(); + writeValidatePropertyGroups(sw); + sw.println(); + writeValidateValueGroups(sw); + sw.println(); + writeGetBeanMetadata(sw); sw.println(); writeGetDescriptor(sw); sw.println(); writePropertyValidators(sw); sw.println(); + writeValidateAllNonInheritedProperties(sw); + sw.println(); // Write the wrappers after we know which are needed writeWrappers(sw); @@ -513,6 +531,7 @@ private Predicate<PropertyDescriptor> newPropertyNameMatches( final PropertyDescriptor p) { return new Predicate<PropertyDescriptor>() { + @Override public boolean apply(PropertyDescriptor input) { return input.getPropertyName().equals(p.getPropertyName()); } @@ -523,10 +542,6 @@ return "_" + field.getName(); } - /** - * @param method - * @return - */ private String toWrapperName(JMethod method) { return "_" + method.getName(); } @@ -573,6 +588,9 @@ sw.println("_pd)"); } + // .setBeanMetadata(beanMetadata) + sw.println(".setBeanMetadata(beanMetadata)"); + // .build(); sw.println(".build();"); sw.outdent(); @@ -581,34 +599,88 @@ sw.outdent(); } - private void writeCatchUnexpectedException(SourceWriter sw, String message) { - // } catch (IllegalArgumentException e) { - sw.outdent(); - sw.println("} catch (IllegalArgumentException e) {"); + private void writeBeanMetadata(SourceWriter sw) throws UnableToCompleteException { + // private final BeanMetadata beanMetadata = + sw.println("private final BeanMetadata beanMetadata ="); + sw.indent(); sw.indent(); - // throw e; - sw.println("throw e;"); - - // } catch (ValidationException e) { - sw.outdent(); - sw.println("} catch (ValidationException e) {"); + // new BeanMetadata( + sw.println("new " + BeanMetadata.class.getSimpleName() + "("); + sw.indent(); sw.indent(); - // throw e; - sw.println("throw e;"); + // <<bean class>>, <<default group seq class 1>>, <<default group seq class 2>>, ... + Class<?> beanClazz = beanHelper.getClazz(); + sw.print(asLiteral(beanClazz)); + GroupSequence groupSeqAnnotation = beanClazz.getAnnotation(GroupSequence.class); + List<Class<?>> groupSequence = new ArrayList<Class<?>>(); + if (groupSeqAnnotation == null) { + groupSequence.add(beanClazz); + } else { + groupSequence.addAll(Arrays.asList(groupSeqAnnotation.value())); + } + boolean groupSequenceContainsDefault = false; + for (Class<?> group : groupSequence) { + sw.println(","); + if (group.getName().equals(beanClazz.getName())) { + sw.print(asLiteral(Default.class)); + groupSequenceContainsDefault = true; + } + else if (group.getName().equals(Default.class.getName())) { + throw error(logger, "'Default.class' cannot appear in default group sequence list."); + } + else { + sw.print(asLiteral(group)); + } + } + if (!groupSequenceContainsDefault) { + throw error(logger, beanClazz.getName() + " must be part of the redefined default group " + + "sequence."); + } - // } catch (Exception e) { + sw.println(");"); sw.outdent(); - sw.println("} catch (Exception e) {"); - sw.indent(); - - // throw new ValidationException("my message", e); - sw.println("throw new ValidationException(" + message + ", e);"); - - // } sw.outdent(); - sw.println("}"); + sw.outdent(); + sw.outdent(); + } + + private void writeClassLevelConstraintsValidation(SourceWriter sw, String groupsVarName) + throws UnableToCompleteException { + // all class level constraints + int count = 0; + Class<?> clazz = beanHelper.getClazz(); + for (ConstraintDescriptor<?> constraint : beanHelper.getBeanDescriptor().getConstraintDescriptors()) { + if (hasMatchingAnnotation(constraint)) { + + if (!constraint.getConstraintValidatorClasses().isEmpty()) { + Class<? extends ConstraintValidator<? extends Annotation, ?>> validatorClass = getValidatorForType( + constraint, clazz); + + // validate(context, violations, null, object, + sw.print("validate(context, violations, null, object, "); + + // new MyValidtor(), + sw.print("new "); + sw.print(validatorClass.getCanonicalName()); + sw.print("(), "); // TODO(nchalko) use ConstraintValidatorFactory + + // this.aConstraintDescriptor, groups); + sw.print(constraintDescriptorVar("this", count)); + sw.print(", "); + sw.print(groupsVarName); + sw.println(");"); + } else if (constraint.getComposingConstraints().isEmpty()) { + // TODO(nchalko) What does the spec say to do here. + logger.log(TreeLogger.WARN, "No ConstraintValidator of " + constraint + + " for type " + clazz); + } + // TODO(nchalko) handle constraint.isReportAsSingleViolation() and + // hasComposingConstraints + } + count++; + } } private void writeConstraintDescriptor(SourceWriter sw, @@ -733,6 +805,175 @@ sw.println(); } + private void writeExpandDefaultAndValidate(SourceWriter sw, Stage stage) throws UnableToCompleteException { + Class<?> clazz = beanHelper.getClazz(); + + // ArrayList<Class<?>> justGroups = new ArrayList<Class<?>>(); + sw.println("ArrayList<Class<?>> justGroups = new ArrayList<Class<?>>();"); + + // for (Group g : groups) { + sw.println("for (Group g : groups) {"); + sw.indent(); + // if (!g.isDefaultGroup() || !getBeanMetadata().defaultGroupSequenceIsRedefined()) { + sw.println("if (!g.isDefaultGroup() || !getBeanMetadata().defaultGroupSequenceIsRedefined()) {"); + sw.indent(); + // justGroups.add(g.getGroup()); + sw.println("justGroups.add(g.getGroup());"); + sw.outdent(); + // } + sw.println("}"); + sw.outdent(); + // } + sw.println("}"); + + // Class<?>[] justGroupsArray = justGroups.toArray(new Class<?>[justGroups.size()]); + sw.println("Class<?>[] justGroupsArray = justGroups.toArray(new Class<?>[justGroups.size()]);"); + + switch (stage) { + case OBJECT: + // validateAllNonInheritedProperties(context, object, violations, justGroupsArray); + sw.println("validateAllNonInheritedProperties(context, object, violations, " + + "justGroupsArray);"); + writeClassLevelConstraintsValidation(sw, "justGroupsArray"); + break; + case PROPERTY: + // validatePropertyGroups(context, object, propertyName, violations, justGroupsArray); + sw.println("validatePropertyGroups(context, object, propertyName, violations, " + + "justGroupsArray);"); + break; + case VALUE: + // validateValueGroups(context, beanType, propertyName, value, violations, + // justGroupsArray); + sw.println("validateValueGroups(context, beanType, propertyName, value, violations, " + + "justGroupsArray);"); + break; + default: + throw new IllegalStateException(); + } + + // if (getBeanMetadata().defaultGroupSequenceIsRedefined()) { + sw.println("if (getBeanMetadata().defaultGroupSequenceIsRedefined()) {"); + sw.indent(); + // for (Class<?> g : beanMetadata.getDefaultGroupSequence()) { + sw.println("for (Class<?> g : beanMetadata.getDefaultGroupSequence()) {"); + sw.indent(); + // int numberOfViolations = violations.size(); + sw.println("int numberOfViolations = violations.size();"); + + switch (stage) { + case OBJECT: + // validateAllNonInheritedProperties(context, object, violations, g); + sw.println("validateAllNonInheritedProperties(context, object, violations, g);"); + writeClassLevelConstraintsValidation(sw, "g"); + // validate super classes and super interfaces + writeValidateInheritance(sw, clazz, Stage.OBJECT, null, false, "g"); + break; + case PROPERTY: + // validatePropertyGroups(context, object, propertyName, violations, g); + sw.println("validatePropertyGroups(context, object, propertyName, violations, g);"); + break; + case VALUE: + // validateValueGroups(context, beanType, propertyName, value, violations, g); + sw.println("validateValueGroups(context, beanType, propertyName, value, violations, g);"); + break; + default: + throw new IllegalStateException(); + } + + // if (violations.size() > numberOfViolations) { + sw.println("if (violations.size() > numberOfViolations) {"); + sw.indent(); + // break; + sw.println("break;"); + sw.outdent(); + // } + sw.println("}"); + sw.outdent(); + // } + sw.println("}"); + sw.outdent(); + // } + sw.println("}"); + if (stage == Stage.OBJECT) { + // else { + sw.println("else {"); + sw.indent(); + + // validate super classes and super interfaces + writeValidateInheritance(sw, clazz, Stage.OBJECT, null, true, "groups"); + + // } + sw.outdent(); + sw.println("}"); + } + } + + private void writeExpandDefaultAndValidateClassGroups(SourceWriter sw) throws UnableToCompleteException { + // public <T> void expandDefaultAndValidateClassGroups( + sw.println("public <T> void expandDefaultAndValidateClassGroups("); + + // GwtValidationContext<T> context, BeanType object, + // Set<ConstraintViolation<T>> violations, Group... groups) { + sw.indent(); + sw.indent(); + sw.println("GwtValidationContext<T> context,"); + sw.println(beanHelper.getTypeCanonicalName() + " object,"); + sw.println("Set<ConstraintViolation<T>> violations,"); + sw.println("Group... groups) {"); + sw.outdent(); + + writeExpandDefaultAndValidate(sw, Stage.OBJECT); + + // } + sw.outdent(); + sw.println("}"); + } + + private void writeExpandDefaultAndValidatePropertyGroups(SourceWriter sw) throws UnableToCompleteException { + // public <T> void expandDefaultAndValidatePropertyGroups( + sw.println("public <T> void expandDefaultAndValidatePropertyGroups("); + + // GwtValidationContext<T> context, BeanType object, String propertyName, + // Set<ConstraintViolation<T>> violations, Group... groups) { + sw.indent(); + sw.indent(); + sw.println("GwtValidationContext<T> context,"); + sw.println(beanHelper.getTypeCanonicalName() + " object,"); + sw.println("String propertyName,"); + sw.println("Set<ConstraintViolation<T>> violations,"); + sw.println("Group... groups) {"); + sw.outdent(); + + writeExpandDefaultAndValidate(sw, Stage.PROPERTY); + + // } + sw.outdent(); + sw.println("}"); + } + + private void writeExpandDefaultAndValidateValueGroups(SourceWriter sw) throws UnableToCompleteException { + // public <T> void expandDefaultAndValidateValueGroups( + sw.println("public <T> void expandDefaultAndValidateValueGroups("); + + // GwtValidationContext<T> context, Class<Author> beanType, String propertyName, + // Object value, Set<ConstraintViolation<T>> violations, Group... groups) { + sw.indent(); + sw.indent(); + sw.println("GwtValidationContext<T> context,"); + sw.println("Class<" + beanHelper.getTypeCanonicalName() + "> beanType,"); + sw.println("String propertyName,"); + sw.println("Object value,"); + sw.println("Set<ConstraintViolation<T>> violations,"); + sw.println("Group... groups) {"); + sw.outdent(); + + writeExpandDefaultAndValidate(sw, Stage.VALUE); + + // } + sw.outdent(); + sw.println("}"); + } + private void writeFields(SourceWriter sw) throws UnableToCompleteException { // Create a static array of all valid property names. @@ -767,6 +1008,10 @@ sw.outdent(); sw.outdent(); + // Write the metadata for the bean + writeBeanMetadata(sw); + sw.println(); + // Create a variable for each constraint of each property for (PropertyDescriptor p : beanHelper.getBeanDescriptor().getConstrainedProperties()) { @@ -829,15 +1074,29 @@ sw.println("}-*/;"); } - private void writeGetDescriptor(SourceWriter sw) { - // public GwtBeanDescriptor<beanType> getConstraints(GroupInheritanceMap groupInheritanceMap) { - sw.print("public "); - sw.print("GwtBeanDescriptor<" + beanHelper.getTypeCanonicalName() + "> "); - sw.println("getConstraints(GroupInheritanceMap groupInheritanceMap) {"); + private void writeGetBeanMetadata(SourceWriter sw) { + // public BeanMetadata getBeanMetadata() { + sw.println("public BeanMetadata getBeanMetadata() {"); sw.indent(); - // beanDescriptor.setGroupInheritanceMap(groupInheritanceMap); - sw.println("beanDescriptor.setGroupInheritanceMap(groupInheritanceMap);"); + // return beanMetadata; + sw.println("return beanMetadata;"); + + // } + sw.outdent(); + sw.println("}"); + } + + private void writeGetDescriptor(SourceWriter sw) { + // public GwtBeanDescriptor<beanType> + // getConstraints(ValidationGroupsMetadata validationGroupsMetadata) { + sw.print("public "); + sw.print("GwtBeanDescriptor<" + beanHelper.getTypeCanonicalName() + "> "); + sw.println("getConstraints(ValidationGroupsMetadata validationGroupsMetadata) {"); + sw.indent(); + + // beanDescriptor.setValidationGroupsMetadata(validationGroupsMetadata); + sw.println("beanDescriptor.setValidationGroupsMetadata(validationGroupsMetadata);"); // return beanDescriptor; sw.println("return beanDescriptor;"); @@ -936,10 +1195,6 @@ sw.println("}"); } - private void writeNewViolations(SourceWriter sw) { - writeNewViolations(sw, DEFAULT_VIOLATION_VAR); - } - private void writeNewViolations(SourceWriter sw, String violationName) { // Set<ConstraintViolation<T>> violations = sw.print("Set<ConstraintViolation<T>> "); @@ -980,7 +1235,10 @@ sw.println(p.getElementClass().getCanonicalName() + ".class,"); // isCascaded, - sw.print(Boolean.toString(p.isCascaded())); + sw.print(Boolean.toString(p.isCascaded()) + ","); + + // beanMetadata, + sw.print("beanMetadata"); // myProperty_c0, // myProperty_c1 ); @@ -1012,29 +1270,41 @@ } } - private void writeValidate(SourceWriter sw) throws UnableToCompleteException { - // public <T> Set<ConstraintViolation<T>> validate( - sw.println("public <T> Set<ConstraintViolation<T>> validate("); + private void writeValidateAllNonInheritedProperties(SourceWriter sw) { + // private <T> void validateAllNonInheritedProperties( + sw.println("private <T> void validateAllNonInheritedProperties("); + sw.indent(); + sw.indent(); - // GwtValidationContext<T> context, BeanType object, Class<?>... groups) { + // GwtValidationContext<T> context, BeanType object, + // Set<ConstraintViolation<T>> violations, Class<?>... groups) { + sw.println("GwtValidationContext<T> context,"); + sw.println(beanHelper.getTypeCanonicalName() + " object,"); + sw.println("Set<ConstraintViolation<T>> violations,"); + sw.println("Class<?>... groups) {"); + sw.outdent(); + + for (PropertyDescriptor p : beanHelper.getBeanDescriptor().getConstrainedProperties()) { + writeValidatePropertyCall(sw, p, false, true); + } + + sw.outdent(); + sw.println("}"); + } + + private void writeValidateClassGroups(SourceWriter sw) throws UnableToCompleteException { + // public <T> void validateClassGroups( + sw.println("public <T> void validateClassGroups("); + + // GwtValidationContext<T> context, BeanType object, + // Set<ConstraintViolation<T>> violations, Group... groups) { sw.indent(); sw.indent(); sw.println("GwtValidationContext<T> context,"); sw.println(beanHelper.getTypeCanonicalName() + " object,"); + sw.println("Set<ConstraintViolation<T>> violations,"); sw.println("Class<?>... groups) {"); sw.outdent(); - - // groups = addDefaultGroupWhenEmpty(groups); - sw.println("groups = addDefaultGroupWhenEmpty(groups);"); - - // try { - sw.println("try {"); - sw.indent(); - - writeNewViolations(sw); - - // context.addValidatedObject(object); - sw.println("context.addValidatedObject(object);"); // /// For each group @@ -1045,52 +1315,12 @@ // all reachable getters (both) at once // including all reachable and cascadable associations - Set<PropertyDescriptor> properties = beanHelper.getBeanDescriptor().getConstrainedProperties(); - - for (PropertyDescriptor p : properties) { - writeValidatePropertyCall(sw, p, false, true); - } - - // all class level constraints - int count = 0; - Class<?> clazz = beanHelper.getClazz(); - for (ConstraintDescriptor<?> constraint : beanHelper.getBeanDescriptor().getConstraintDescriptors()) { - if (hasMatchingAnnotation(constraint)) { - - if (!constraint.getConstraintValidatorClasses().isEmpty()) { - Class<? extends ConstraintValidator<? extends Annotation, ?>> validatorClass = getValidatorForType( - constraint, clazz); - - // validate(context, violations, null, object, - sw.print("validate(context, violations, null, object, "); - - // new MyValidtor(); - sw.print("new "); - sw.print(validatorClass.getCanonicalName()); - sw.print("(), "); // TODO(nchalko) use ConstraintValidatorFactory - - // this.aConstraintDescriptor, groups);; - sw.print(constraintDescriptorVar("this", count)); - sw.println(", groups);"); - } else if (constraint.getComposingConstraints().isEmpty()) { - // TODO(nchalko) What does the spec say to do here. - logger.log(TreeLogger.WARN, "No ConstraintValidator of " + constraint - + " for type " + clazz); - } - // TODO(nchalko) handle constraint.isReportAsSingleViolation() and - // hasComposingConstraints - } - count++; - } + sw.println("validateAllNonInheritedProperties(context, object, violations, groups);"); // validate super classes and super interfaces - writeValidateInheritance(sw, clazz, Stage.OBJECT, null); + writeValidateInheritance(sw, beanHelper.getClazz(), Stage.OBJECT, null, false, "groups"); - // return violations; - sw.println("return violations;"); - - writeCatchUnexpectedException(sw, - "\"Error validating " + beanHelper.getTypeCanonicalName() + "\""); + writeClassLevelConstraintsValidation(sw, "groups"); // } sw.outdent(); @@ -1308,21 +1538,27 @@ sw.println(", groups);"); } - private void writeValidateInheritance(SourceWriter sw, Class<?> clazz, - Stage stage, PropertyDescriptor property) + private void writeValidateInheritance(SourceWriter sw, Class<?> clazz, Stage stage, + PropertyDescriptor property) throws UnableToCompleteException { + writeValidateInheritance(sw, clazz, stage, property, false, "groups"); + } + + private void writeValidateInheritance(SourceWriter sw, Class<?> clazz, Stage stage, + PropertyDescriptor property, boolean expandDefaultGroupSequence, String groupsVarName) throws UnableToCompleteException { - writeValidateInterfaces(sw, clazz, stage, property); + writeValidateInterfaces(sw, clazz, stage, property, expandDefaultGroupSequence, groupsVarName); Class<?> superClass = clazz.getSuperclass(); if (superClass != null) { - writeValidatorCall(sw, superClass, stage, property); + writeValidatorCall(sw, superClass, stage, property, expandDefaultGroupSequence, groupsVarName); } } private void writeValidateInterfaces(SourceWriter sw, Class<?> clazz, - Stage stage, PropertyDescriptor p) throws UnableToCompleteException { + Stage stage, PropertyDescriptor p, boolean expandDefaultGroupSequence, String groupsVarName) + throws UnableToCompleteException { for (Class<?> type : clazz.getInterfaces()) { - writeValidatorCall(sw, type, stage, p); - writeValidateInterfaces(sw, type, stage, p); + writeValidatorCall(sw, type, stage, p, expandDefaultGroupSequence, groupsVarName); + writeValidateInterfaces(sw, type, stage, p, expandDefaultGroupSequence, groupsVarName); } } @@ -1423,60 +1659,6 @@ sw.println("}"); } - private void writeValidateProperty(SourceWriter sw) - throws UnableToCompleteException { - // public <T> Set<ConstraintViolation<T>> validate( - sw.println("public <T> Set<ConstraintViolation<T>> validateProperty("); - - // GwtValidationContext<T> context, BeanType object, String propertyName, - // Class<?>... groups) throws ValidationException { - sw.indent(); - sw.indent(); - sw.println("GwtValidationContext<T> context,"); - sw.println(beanHelper.getTypeCanonicalName() + " object,"); - sw.println("String propertyName,"); - sw.println("Class<?>... groups) throws ValidationException {"); - sw.outdent(); - - // try { - sw.println("try {"); - sw.indent(); - - writeNewViolations(sw); - - for (PropertyDescriptor property : beanHelper.getBeanDescriptor().getConstrainedProperties()) { - // if (propertyName.equals(myPropety)) { - sw.print("if (propertyName.equals(\""); - sw.print(property.getPropertyName()); - sw.println("\")) {"); - sw.indent(); - - writeValidatePropertyCall(sw, property, false, false); - - // validate all super classes and interfaces - writeValidateInheritance(sw, beanHelper.getClazz(), Stage.PROPERTY, - property); - - // } - sw.outdent(); - sw.print("} else "); - } - - writeIfPropertyNameNotFound(sw); - - // return violations; - sw.println("return violations;"); - - writeCatchUnexpectedException( - sw, - "\"Error validating \" + propertyName + \" of " - + beanHelper.getTypeCanonicalName() + "\""); - - // } - sw.outdent(); - sw.println("}"); - } - private void writeValidatePropertyCall(SourceWriter sw, PropertyDescriptor property, boolean useValue, boolean honorValid) { if (useValue) { @@ -1541,6 +1723,47 @@ } } + private void writeValidatePropertyGroups(SourceWriter sw) + throws UnableToCompleteException { + // public <T> void validatePropertyGroups( + sw.println("public <T> void validatePropertyGroups("); + + // GwtValidationContext<T> context, BeanType object, String propertyName, + // Set<ConstraintViolation<T>> violations, Class<?>... groups) throws ValidationException { + sw.indent(); + sw.indent(); + sw.println("GwtValidationContext<T> context,"); + sw.println(beanHelper.getTypeCanonicalName() + " object,"); + sw.println("String propertyName,"); + sw.println("Set<ConstraintViolation<T>> violations,"); + sw.println("Class<?>... groups) throws ValidationException {"); + sw.outdent(); + + for (PropertyDescriptor property : beanHelper.getBeanDescriptor().getConstrainedProperties()) { + // if (propertyName.equals(myPropety)) { + sw.print("if (propertyName.equals(\""); + sw.print(property.getPropertyName()); + sw.println("\")) {"); + sw.indent(); + + writeValidatePropertyCall(sw, property, false, false); + + // validate all super classes and interfaces + writeValidateInheritance(sw, beanHelper.getClazz(), Stage.PROPERTY, + property); + + // } + sw.outdent(); + sw.print("} else "); + } + + writeIfPropertyNameNotFound(sw); + + // } + sw.outdent(); + sw.println("}"); + } + private void writeValidatePropertyMethod(SourceWriter sw, PropertyDescriptor p, boolean useField) throws UnableToCompleteException { Class<?> elementClass = p.getElementClass(); @@ -1583,9 +1806,6 @@ sw.print(p.getPropertyName()); sw.println("\");"); - // groups = addDefaultGroupWhenEmpty(groups); - sw.println("groups = addDefaultGroupWhenEmpty(groups);"); - // TODO(nchalko) move this out of here to the Validate method if (p.isCascaded() && hasValid(p, useField)) { @@ -1660,31 +1880,23 @@ sw.println("}"); } - private void writeValidateValue(SourceWriter sw) + private void writeValidateValueGroups(SourceWriter sw) throws UnableToCompleteException { - // public <T> Set<ConstraintViolation<T>> validate( - sw.println("public <T> Set<ConstraintViolation<T>> validateValue("); + // public <T> void validateValueGroups( + sw.println("public <T> void validateValueGroups("); - // GwtValidationContext<T> context, Class<Author> beanType, - // String propertyName, Object value, Class<?>... groups) { + // GwtValidationContext<T> context, Class<Author> beanType, String propertyName, + // Object value, Set<ConstraintViolation<T>> violations, Class<?>... groups) { sw.indent(); sw.indent(); sw.println("GwtValidationContext<T> context,"); sw.println("Class<" + beanHelper.getTypeCanonicalName() + "> beanType,"); sw.println("String propertyName,"); sw.println("Object value,"); + sw.println("Set<ConstraintViolation<T>> violations,"); sw.println("Class<?>... groups) {"); sw.outdent(); - // groups = addDefaultGroupWhenEmpty(groups); - sw.println("groups = addDefaultGroupWhenEmpty(groups);"); - - // try { - sw.println("try {"); - sw.indent(); - - writeNewViolations(sw); - for (PropertyDescriptor property : beanHelper.getBeanDescriptor().getConstrainedProperties()) { // if (propertyName.equals(myPropety)) { @@ -1694,7 +1906,7 @@ sw.indent(); if (!isIterableOrMap(property.getElementClass())) { - writeValidatePropertyCall(sw, property, true, true); + writeValidatePropertyCall(sw, property, true, false); } // validate all super classes and interfaces @@ -1708,50 +1920,51 @@ writeIfPropertyNameNotFound(sw); - // return violations; - sw.println("return violations;"); - - writeCatchUnexpectedException( - sw, - "\"Error validating \" + propertyName + \" of " - + beanHelper.getTypeCanonicalName() + "\""); - sw.outdent(); sw.println("}"); } + /** + * @param p Only used if writing a call to validate a property - otherwise can be null. + * @param expandDefaultGroupSequence Only used if writing a call to validate a bean. + * @param groupsVarName The name of the variable containing the groups. + */ private void writeValidatorCall(SourceWriter sw, Class<?> type, Stage stage, - PropertyDescriptor p) throws UnableToCompleteException { + PropertyDescriptor p, boolean expandDefaultGroupSequence, String groupsVarName) + throws UnableToCompleteException { if (BeanHelper.isClassConstrained(type) && !isIterableOrMap(type)) { BeanHelper helper = createBeanHelper(type); beansToValidate.add(helper); switch (stage) { case OBJECT: - // voilations.addAll(myValidator.validate(context,object,groups)); - sw.print("violations.addAll("); + // myValidator sw.print(helper.getValidatorInstanceName()); - sw.println(".validate(context, object, groups));"); + if (expandDefaultGroupSequence) { + // .expandDefaultAndValidateClassGroups(context,object,violations,groups); + sw.println(".expandDefaultAndValidateClassGroups(context, object, violations, " + + groupsVarName + ");"); + } else { + // .validateClassGroups(context,object,violations,groups); + sw.println(".validateClassGroups(context, object, violations, " + groupsVarName + ");"); + } break; case PROPERTY: if (isPropertyConstrained(helper, p)) { - // voilations.addAll(myValidator.validateProperty(context,object - // ,propertyName, groups)); - sw.print("violations.addAll("); + // myValidator.validatePropertyGroups(context,object + // ,propertyName, violations, groups); sw.print(helper.getValidatorInstanceName()); - sw.print(".validateProperty(context, object,"); - sw.println(" propertyName, groups));"); + sw.print(".validatePropertyGroups(context, object,"); + sw.println(" propertyName, violations, " + groupsVarName + ");"); } break; case VALUE: if (isPropertyConstrained(helper, p)) { - // voilations.addAll(myValidator.validateProperty(context,beanType - // ,propertyName, value, groups)); - sw.print("violations.addAll("); + // myValidator.validateValueGroups(context,beanType + // ,propertyName, value, violations, groups); sw.print(helper.getValidatorInstanceName()); - sw.print(".validateValue(context, "); - // TODO(nchalko) this seems like an unneeded param + sw.print(".validateValueGroups(context, "); sw.print(helper.getTypeCanonicalName()); - sw.println(".class, propertyName, value, groups));"); + sw.println(".class, propertyName, value, violations, " + groupsVarName + ");"); } break; default:
diff --git a/user/src/com/google/gwt/validation/rebind/ValidatorCreator.java b/user/src/com/google/gwt/validation/rebind/ValidatorCreator.java index d8f4751..a805ab3 100644 --- a/user/src/com/google/gwt/validation/rebind/ValidatorCreator.java +++ b/user/src/com/google/gwt/validation/rebind/ValidatorCreator.java
@@ -25,7 +25,7 @@ import com.google.gwt.user.rebind.ClassSourceFileComposerFactory; import com.google.gwt.user.rebind.SourceWriter; import com.google.gwt.validation.client.GwtValidation; -import com.google.gwt.validation.client.GroupInheritanceMap; +import com.google.gwt.validation.client.ValidationGroupsMetadata; import com.google.gwt.validation.client.impl.AbstractGwtValidator; import com.google.gwt.validation.client.impl.GwtBeanDescriptor; import com.google.gwt.validation.client.impl.GwtSpecificValidator; @@ -38,6 +38,7 @@ import java.util.Set; import javax.validation.ConstraintViolation; +import javax.validation.GroupSequence; import javax.validation.groups.Default; import javax.validation.metadata.BeanDescriptor; @@ -77,7 +78,7 @@ GwtBeanDescriptor.class, GwtSpecificValidator.class, GwtValidationContext.class, - GroupInheritanceMap.class, + ValidationGroupsMetadata.class, Set.class, HashSet.class, Map.class, @@ -93,7 +94,7 @@ protected void writeClassBody(SourceWriter sourceWriter) { writeConstructor(sourceWriter); sourceWriter.println(); - writeCreateGroupInheritanceMap(sourceWriter); + writeCreateValidationGroupsMetadata(sourceWriter); sourceWriter.println(); writeValidate(sourceWriter); sourceWriter.println(); @@ -111,8 +112,8 @@ sw.println("public " + getSimpleName() + "() {"); sw.indent(); - // super(createGroupInheritanceMap()); - sw.println("super(createGroupInheritanceMap());"); + // super(createValidationGroupsMetadata()); + sw.println("super(createValidationGroupsMetadata());"); sw.outdent(); sw.println("}"); @@ -134,9 +135,9 @@ // object, sw.println(objectName + ", "); - // MyBeanValidator.INSTANCE.getConstraints(getGroupInheritanceMap()), + // MyBeanValidator.INSTANCE.getConstraints(getValidationGroupsMetadata()), sw.print(bean.getFullyQualifiedValidatorName()); - sw.println(".INSTANCE.getConstraints(getGroupInheritanceMap()), "); + sw.println(".INSTANCE.getConstraints(getValidationGroupsMetadata()), "); // getMessageInterpolator(), sw.println("getMessageInterpolator(), "); @@ -147,24 +148,33 @@ sw.outdent(); } - private void writeCreateGroupInheritanceMap(SourceWriter sw) { - // private static GroupInheritanceMap creategroupInheritanceMap() { - sw.println("private static GroupInheritanceMap createGroupInheritanceMap() {"); + private void writeCreateValidationGroupsMetadata(SourceWriter sw) { + // private static ValidationGroupsMetadata createValidationGroupsMetadata() { + sw.println("private static ValidationGroupsMetadata createValidationGroupsMetadata() {"); sw.indent(); - // GroupInheritanceMap groupInheritanceMap = GroupInheritanceMap.builder() - sw.println("return GroupInheritanceMap.builder()"); + // return ValidationGroupsMetadata.builder() + sw.println("return ValidationGroupsMetadata.builder()"); sw.indent(); sw.indent(); for (Class<?> group : gwtValidation.groups()) { - // .addGroup(<<group>> - sw.print(".addGroup("); - sw.print(group.getCanonicalName() + ".class"); - Class<?>[] parentInterfaces = group.getInterfaces(); - for (Class<?> parent : parentInterfaces) { - // , <<parent class>> + GroupSequence sequenceAnnotation = group.getAnnotation(GroupSequence.class); + Class<?>[] groups; + if (sequenceAnnotation != null) { + // .addSequence(<<sequence>> + sw.print(".addSequence("); + sw.print(group.getCanonicalName() + ".class"); + groups = sequenceAnnotation.value(); + } else { + // .addGroup(<<group>> + sw.print(".addGroup("); + sw.print(group.getCanonicalName() + ".class"); + groups = group.getInterfaces(); + } + for (Class<?> clazz : groups) { + // , <<group class>> sw.print(", "); - sw.print(parent.getCanonicalName() + ".class"); + sw.print(clazz.getCanonicalName() + ".class"); } // ) sw.println(")"); @@ -205,10 +215,10 @@ sw.println("if (clazz.equals(" + bean.getTypeCanonicalName() + ".class)) {"); sw.indent(); - // return MyBeanValidator.INSTANCE.getConstraints(getGroupInheritanceMap()); + // return MyBeanValidator.INSTANCE.getConstraints(getValidationGroupsMetadata()); sw.print("return "); sw.print(bean.getFullyQualifiedValidatorName()); - sw.println(".INSTANCE.getConstraints(getGroupInheritanceMap());"); + sw.println(".INSTANCE.getConstraints(getValidationGroupsMetadata());"); // } sw.outdent();
diff --git a/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/spi/GwtConfigurationState.java b/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/spi/GwtConfigurationState.java index 95d267f..a69c185 100644 --- a/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/spi/GwtConfigurationState.java +++ b/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/spi/GwtConfigurationState.java
@@ -15,13 +15,24 @@ */ package com.google.gwt.validation.client.spi; +import java.util.Map; import java.util.Set; +import javax.validation.ConstraintValidatorFactory; +import javax.validation.MessageInterpolator; +import javax.validation.TraversableResolver; + /** * Only the GWT incompatible parts. */ public final class GwtConfigurationState extends BaseConfigurationState { + public GwtConfigurationState(ConstraintValidatorFactory constraintValidatorFactory, + MessageInterpolator messageInterpolator, Map<String, String> properties, + TraversableResolver traversableResolver) { + super(constraintValidatorFactory, messageInterpolator, properties, traversableResolver); + } + public Set<String> getMappingStreams() { throw new UnsupportedOperationException( "GWT Validation does not support getMappingStreams");
diff --git a/user/test-super/org/testng/super/org/testng/Assert.java b/user/test-super/org/testng/super/org/testng/Assert.java index 7326ef0..33db0f1 100644 --- a/user/test-super/org/testng/super/org/testng/Assert.java +++ b/user/test-super/org/testng/super/org/testng/Assert.java
@@ -137,29 +137,181 @@ * @param message the assertion error message */ private static void assertArrayEquals(Object actual, Object expected, String message) { - //is called only when expected is an array -// if (actual.getClass().isArray()) { -// int expectedLength = Array.getLength(expected); -// if (expectedLength == Array.getLength(actual)) { -// for (int i = 0 ; i < expectedLength ; i++) { -// Object _actual = Array.get(actual, i); -// Object _expected = Array.get(expected, i); -// try { -// assertEquals(_actual, _expected); -// } catch (AssertionError ae) { -// failNotEquals(actual, expected, message == null ? "" : message -// + " (values as index " + i + " are not the same)"); -// } -// } -// //array values matched -// return; -// } else { -// failNotEquals(Array.getLength(actual), expectedLength, message == null ? "" : message -// + " (Array lengths are not the same)"); -// } -// } -// failNotEquals(actual, expected, message); - fail("assertArrayEquals not implemented"); + // is called only when expected is an array + if (actual.getClass().isArray()) { + if (actual instanceof Object[] && expected instanceof Object[]) { + Object[] actualArray = (Object[]) actual; + Object[] expectedArray = (Object[]) expected; + int expectedLength = expectedArray.length; + if (expectedLength == actualArray.length) { + for (int i = 0; i < expectedLength; i++) { + Object _actual = actualArray[i]; + Object _expected = expectedArray[i]; + try { + assertEquals(_actual, _expected); + } catch (AssertionError ae) { + failArrayValuesAtIndexNotEqual(_actual, _expected, i, message); + } + } + return; + } else { + failArrayLengthsNotEqual(actualArray.length, expectedLength, message); + } + } + else if (actual instanceof int[] && expected instanceof int[]) { + int[] actualArray = (int[]) actual; + int[] expectedArray = (int[]) expected; + int expectedLength = expectedArray.length; + if (expectedLength == actualArray.length) { + for (int i = 0; i < expectedLength; i++) { + int _actual = actualArray[i]; + int _expected = expectedArray[i]; + try { + assertEquals(_actual, _expected); + } catch (AssertionError ae) { + failArrayValuesAtIndexNotEqual(_actual, _expected, i, message); + } + } + return; + } else { + failArrayLengthsNotEqual(actualArray.length, expectedLength, message); + } + } + else if (actual instanceof float[] && expected instanceof float[]) { + float[] actualArray = (float[]) actual; + float[] expectedArray = (float[]) expected; + int expectedLength = expectedArray.length; + if (expectedLength == actualArray.length) { + for (int i = 0; i < expectedLength; i++) { + float _actual = actualArray[i]; + float _expected = expectedArray[i]; + try { + assertEquals(_actual, _expected); + } catch (AssertionError ae) { + failArrayValuesAtIndexNotEqual(_actual, _expected, i, message); + } + } + return; + } else { + failArrayLengthsNotEqual(actualArray.length, expectedLength, message); + } + } + else if (actual instanceof long[] && expected instanceof long[]) { + long[] actualArray = (long[]) actual; + long[] expectedArray = (long[]) expected; + int expectedLength = expectedArray.length; + if (expectedLength == actualArray.length) { + for (int i = 0; i < expectedLength; i++) { + long _actual = actualArray[i]; + long _expected = expectedArray[i]; + try { + assertEquals(_actual, _expected); + } catch (AssertionError ae) { + failArrayValuesAtIndexNotEqual(_actual, _expected, i, message); + } + } + return; + } else { + failArrayLengthsNotEqual(actualArray.length, expectedLength, message); + } + } + else if (actual instanceof double[] && expected instanceof double[]) { + double[] actualArray = (double[]) actual; + double[] expectedArray = (double[]) expected; + int expectedLength = expectedArray.length; + if (expectedLength == actualArray.length) { + for (int i = 0; i < expectedLength; i++) { + double _actual = actualArray[i]; + double _expected = expectedArray[i]; + try { + assertEquals(_actual, _expected); + } catch (AssertionError ae) { + failArrayValuesAtIndexNotEqual(_actual, _expected, i, message); + } + } + return; + } else { + failArrayLengthsNotEqual(actualArray.length, expectedLength, message); + } + } + else if (actual instanceof boolean[] && expected instanceof boolean[]) { + boolean[] actualArray = (boolean[]) actual; + boolean[] expectedArray = (boolean[]) expected; + int expectedLength = expectedArray.length; + if (expectedLength == actualArray.length) { + for (int i = 0; i < expectedLength; i++) { + boolean _actual = actualArray[i]; + boolean _expected = expectedArray[i]; + try { + assertEquals(_actual, _expected); + } catch (AssertionError ae) { + failArrayValuesAtIndexNotEqual(_actual, _expected, i, message); + } + } + return; + } else { + failArrayLengthsNotEqual(actualArray.length, expectedLength, message); + } + } + else if (actual instanceof byte[] && expected instanceof byte[]) { + byte[] actualArray = (byte[]) actual; + byte[] expectedArray = (byte[]) expected; + int expectedLength = expectedArray.length; + if (expectedLength == actualArray.length) { + for (int i = 0; i < expectedLength; i++) { + byte _actual = actualArray[i]; + byte _expected = expectedArray[i]; + try { + assertEquals(_actual, _expected); + } catch (AssertionError ae) { + failArrayValuesAtIndexNotEqual(_actual, _expected, i, message); + } + } + return; + } else { + failArrayLengthsNotEqual(actualArray.length, expectedLength, message); + } + } + else if (actual instanceof short[] && expected instanceof short[]) { + short[] actualArray = (short[]) actual; + short[] expectedArray = (short[]) expected; + int expectedLength = expectedArray.length; + if (expectedLength == actualArray.length) { + for (int i = 0; i < expectedLength; i++) { + short _actual = actualArray[i]; + short _expected = expectedArray[i]; + try { + assertEquals(_actual, _expected); + } catch (AssertionError ae) { + failArrayValuesAtIndexNotEqual(_actual, _expected, i, message); + } + } + return; + } else { + failArrayLengthsNotEqual(actualArray.length, expectedLength, message); + } + } + else if (actual instanceof char[] && expected instanceof char[]) { + char[] actualArray = (char[]) actual; + char[] expectedArray = (char[]) expected; + int expectedLength = expectedArray.length; + if (expectedLength == actualArray.length) { + for (int i = 0; i < expectedLength; i++) { + char _actual = actualArray[i]; + char _expected = expectedArray[i]; + try { + assertEquals(_actual, _expected); + } catch (AssertionError ae) { + failArrayValuesAtIndexNotEqual(_actual, _expected, i, message); + } + } + return; + } else { + failArrayLengthsNotEqual(actualArray.length, expectedLength, message); + } + } + } + failNotEquals(actual, expected, message); } /** @@ -472,6 +624,18 @@ assertNotSame(actual, expected, null); } + static private void failArrayLengthsNotEqual(int actualLength, int expectedLength, + String message) { + failNotEquals(actualLength, expectedLength, message == null ? "" : message + + " (Array lengths are not the same)"); + } + + static private void failArrayValuesAtIndexNotEqual(Object actual, Object expected, int index, + String message) { + failNotEquals(actual, expected, message == null ? "" : message + + " (values as index " + index + " are not the same)"); + } + static private void failSame(Object actual, Object expected, String message) { String formatted = ""; if(message != null) {
diff --git a/user/test/com/google/gwt/aria/AriaSuite.java b/user/test/com/google/gwt/aria/AriaSuite.java index 8e5dee4..7c1b296 100644 --- a/user/test/com/google/gwt/aria/AriaSuite.java +++ b/user/test/com/google/gwt/aria/AriaSuite.java
@@ -14,7 +14,7 @@ package com.google.gwt.aria; import com.google.gwt.aria.client.AttributeTest; -import com.google.gwt.aria.client.RoleTest; +import com.google.gwt.aria.client.RoleImplTest; import com.google.gwt.junit.tools.GWTTestSuite; import junit.framework.Test; @@ -26,7 +26,7 @@ public static Test suite() { GWTTestSuite suite = new GWTTestSuite("Test for suite for aria"); suite.addTestSuite(AttributeTest.class); - suite.addTestSuite(RoleTest.class); + suite.addTestSuite(RoleImplTest.class); return suite; } }
diff --git a/user/test/com/google/gwt/aria/client/RoleTest.java b/user/test/com/google/gwt/aria/client/RoleImplTest.java similarity index 96% rename from user/test/com/google/gwt/aria/client/RoleTest.java rename to user/test/com/google/gwt/aria/client/RoleImplTest.java index ade10b3..4fd88f2 100644 --- a/user/test/com/google/gwt/aria/client/RoleTest.java +++ b/user/test/com/google/gwt/aria/client/RoleImplTest.java
@@ -20,9 +20,9 @@ import com.google.gwt.junit.client.GWTTestCase; /** - * Tests {@link Role} ARIA classes + * Tests generic role methods implemented in {@link RoleImpl}. */ -public class RoleTest extends GWTTestCase { +public class RoleImplTest extends GWTTestCase { private Element div; private RegionRole regionRole;
diff --git a/user/test/com/google/gwt/user/cellview/client/SimplePagerTest.java b/user/test/com/google/gwt/user/cellview/client/SimplePagerTest.java index 0f8891c..19bfe20 100644 --- a/user/test/com/google/gwt/user/cellview/client/SimplePagerTest.java +++ b/user/test/com/google/gwt/user/cellview/client/SimplePagerTest.java
@@ -16,7 +16,6 @@ package com.google.gwt.user.cellview.client; import com.google.gwt.aria.client.Property; -import com.google.gwt.aria.client.Role; import com.google.gwt.aria.client.Roles; import com.google.gwt.aria.client.State; import com.google.gwt.core.client.GWT; @@ -43,7 +42,7 @@ NodeList<Element> nodeList = pager.getElement().getElementsByTagName("img"); for (int i = 0; i < nodeList.getLength(); i++) { Element imgElem = nodeList.getItem(i); - assertEquals(Roles.getButtonRole().getName(), imgElem.getAttribute(Role.ATTR_NAME_ROLE)); + assertEquals(Roles.getButtonRole().getName(), imgElem.getAttribute("role")); String label = imgElem.getAttribute(Property.LABEL.getName()); assertNotNull(label); if (label.equals(imageButtonConstants.firstPage())
diff --git a/user/test/com/google/gwt/validation/ValidationClientJreSuite.java b/user/test/com/google/gwt/validation/ValidationClientJreSuite.java index 7d17aa8..5522679 100644 --- a/user/test/com/google/gwt/validation/ValidationClientJreSuite.java +++ b/user/test/com/google/gwt/validation/ValidationClientJreSuite.java
@@ -15,7 +15,7 @@ */ package com.google.gwt.validation; -import com.google.gwt.validation.client.GroupInheritanceMapTest; +import com.google.gwt.validation.client.ValidationGroupsMetadataTest; import com.google.gwt.validation.client.impl.NodeImplTest; import com.google.gwt.validation.client.impl.PathImplTest; @@ -32,7 +32,7 @@ "Test suite for validation client code that does not require GWT."); suite.addTestSuite(PathImplTest.class); suite.addTestSuite(NodeImplTest.class); - suite.addTestSuite(GroupInheritanceMapTest.class); + suite.addTestSuite(ValidationGroupsMetadataTest.class); return suite; } }
diff --git a/user/test/com/google/gwt/validation/client/GroupInheritanceMapTest.java b/user/test/com/google/gwt/validation/client/ValidationGroupsMetadataTest.java similarity index 71% rename from user/test/com/google/gwt/validation/client/GroupInheritanceMapTest.java rename to user/test/com/google/gwt/validation/client/ValidationGroupsMetadataTest.java index a582a93..f5d7e39 100644 --- a/user/test/com/google/gwt/validation/client/GroupInheritanceMapTest.java +++ b/user/test/com/google/gwt/validation/client/ValidationGroupsMetadataTest.java
@@ -23,12 +23,12 @@ import javax.validation.groups.Default; /** - * Test case for {@link GroupInheritanceMap}. + * Test case for {@link ValidationGroupsMetadata}. */ -public class GroupInheritanceMapTest extends TestCase { +public class ValidationGroupsMetadataTest extends TestCase { - private GroupInheritanceMap createWithTestGroups() { - return GroupInheritanceMap.builder() + private ValidationGroupsMetadata createWithTestGroups() { + return ValidationGroupsMetadata.builder() .addGroup(Part1.class, MiniPart.class) .addGroup(Part2.class) .addGroup(Big.class, Part1.class, Part2.class) @@ -38,12 +38,12 @@ } public void testDefaultGroupExists() { - assertTrue(GroupInheritanceMap.builder().build().containsGroup(Default.class)); + assertTrue(ValidationGroupsMetadata.builder().build().containsGroup(Default.class)); } public void testFindAllExtendedGroups() { // should get all of the groups and all of their parents recursively - GroupInheritanceMap groupInheritanceMap = createWithTestGroups(); + ValidationGroupsMetadata groupsMetadata = createWithTestGroups(); Set<Class<?>> baseGroups = new HashSet<Class<?>>(); baseGroups.add(Part1.class); baseGroups.add(Part2.class); @@ -52,26 +52,26 @@ desired.add(Part2.class); desired.add(MiniPart.class); desired.add(SuperSmall.class); - assertEquals(desired, groupInheritanceMap.findAllExtendedGroups(baseGroups)); + assertEquals(desired, groupsMetadata.findAllExtendedGroups(baseGroups)); } public void testFindingExtendedGroupsThrowsExceptionWhenUnknown() { // should throw exception when the group has not been added to the map - GroupInheritanceMap groupInheritanceMap = GroupInheritanceMap.builder().build(); - assertFalse(groupInheritanceMap.containsGroup(MiniPart.class)); + ValidationGroupsMetadata groupsMetadata = ValidationGroupsMetadata.builder().build(); + assertFalse(groupsMetadata.containsGroup(MiniPart.class)); try { Set<Class<?>> miniPart = new HashSet<Class<?>>(); miniPart.add(MiniPart.class); - groupInheritanceMap.findAllExtendedGroups(miniPart); + groupsMetadata.findAllExtendedGroups(miniPart); fail("Expected an " + IllegalArgumentException.class); } catch (IllegalArgumentException expected) { // expected } } - public void testGetAllGroups() { - // should return all groups and their parents recursively - GroupInheritanceMap groupInheritanceMap = createWithTestGroups(); + public void testGetAllGroupsAndSequences() { + // should return all groups and their parents recursively as well as sequence groups + ValidationGroupsMetadata groupsMetadata = createWithTestGroups(); Set<Class<?>> desired = new HashSet<Class<?>>(); desired.add(Default.class); desired.add(Part1.class); @@ -79,7 +79,7 @@ desired.add(MiniPart.class); desired.add(SuperSmall.class); desired.add(Big.class); - assertEquals(desired, groupInheritanceMap.getAllGroups()); + assertEquals(desired, groupsMetadata.getAllGroupsAndSequences()); } private interface Part1 extends MiniPart {
diff --git a/user/test/org/hibernate/jsr303/tck/tests/bootstrap/CustomMessageInterpolatorGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/bootstrap/CustomMessageInterpolatorGwtTest.java index 949bc13..1ba006b 100644 --- a/user/test/org/hibernate/jsr303/tck/tests/bootstrap/CustomMessageInterpolatorGwtTest.java +++ b/user/test/org/hibernate/jsr303/tck/tests/bootstrap/CustomMessageInterpolatorGwtTest.java
@@ -17,8 +17,6 @@ import com.google.gwt.junit.client.GWTTestCase; -import org.hibernate.jsr303.tck.util.client.Failing; - /** * Wraps {@link CustomMessageInterpolatorTest} . */ @@ -30,7 +28,6 @@ return "org.hibernate.jsr303.tck.tests.bootstrap.TckTest"; } - @Failing(issue = 6663) public void testCustomMessageInterpolatorViaConfiguration() { delegate.testCustomMessageInterpolatorViaConfiguration(); }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/constraints/builtinconstraints/BuiltinValidatorOverrideGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/constraints/builtinconstraints/BuiltinValidatorOverrideGwtTest.java index 98a0952..b512308 100644 --- a/user/test/org/hibernate/jsr303/tck/tests/constraints/builtinconstraints/BuiltinValidatorOverrideGwtTest.java +++ b/user/test/org/hibernate/jsr303/tck/tests/constraints/builtinconstraints/BuiltinValidatorOverrideGwtTest.java
@@ -20,7 +20,7 @@ import org.hibernate.jsr303.tck.util.client.Failing; /** - * Test wrapper for {@link BuiltinValidatorOverrideGwtTest}. + * Test wrapper for {@link BuiltinValidatorOverrideTest}. */ public class BuiltinValidatorOverrideGwtTest extends GWTTestCase {
diff --git a/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/DefaultGroupRedefinitionGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/DefaultGroupRedefinitionGwtTest.java index 4a43b8c..09168f4 100644 --- a/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/DefaultGroupRedefinitionGwtTest.java +++ b/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/DefaultGroupRedefinitionGwtTest.java
@@ -17,8 +17,6 @@ import com.google.gwt.junit.client.GWTTestCase; -import org.hibernate.jsr303.tck.util.client.Failing; - /** * Test wrapper for {@link DefaultGroupRedefinitionTest}. */ @@ -30,12 +28,10 @@ return "org.hibernate.jsr303.tck.tests.constraints.groups.TckTest"; } - @Failing(issue = 5801) public void testRedefiningDefaultGroup() { delegate.testRedefiningDefaultGroup(); } - @Failing(issue = 5801) public void testValidatingAgainstRedefinedDefaultGroup() { delegate.testValidatingAgainstRedefinedDefaultGroup(); }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/GroupGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/GroupGwtTest.java index 36f9864..0358ab9 100644 --- a/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/GroupGwtTest.java +++ b/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/GroupGwtTest.java
@@ -17,7 +17,7 @@ import com.google.gwt.junit.client.GWTTestCase; -import org.hibernate.jsr303.tck.util.client.Failing; +import javax.validation.GroupDefinitionException; /** * Test wrapper for {@link GroupTest}. @@ -39,14 +39,18 @@ } public void testCyclicGroupSequence() { - delegate.testCyclicGroupSequence(); + try { + delegate.testCyclicGroupSequence(); + fail("Expected a " + GroupDefinitionException.class); + } catch (GroupDefinitionException expected) { + // expected + } } public void testGroups() { delegate.testGroups(); } - @Failing(issue = 5801) public void testGroupSequence() { delegate.testGroupSequence(); }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequence/SequenceResolutionGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequence/SequenceResolutionGwtTest.java index 67d7581..674b761 100644 --- a/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequence/SequenceResolutionGwtTest.java +++ b/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequence/SequenceResolutionGwtTest.java
@@ -17,7 +17,6 @@ import com.google.gwt.junit.client.GWTTestCase; -import org.hibernate.jsr303.tck.util.client.Failing; import org.hibernate.jsr303.tck.util.client.NonTckTest; import javax.validation.GroupDefinitionException; @@ -38,16 +37,10 @@ // There must be at least one passing test. } - @Failing(issue = 6291) public void testGroupSequenceContainerOtherGroupSequences() { - try { - delegate.testGroupSequenceContainerOtherGroupSequences(); - fail("Expected a " + GroupDefinitionException.class); - } catch (GroupDefinitionException expected) { - } + delegate.testGroupSequenceContainerOtherGroupSequences(); } - @Failing(issue = 6291) public void testInvalidDefinitionOfDefaultSequenceInEntity() { try { delegate.testInvalidDefinitionOfDefaultSequenceInEntity(); @@ -56,7 +49,6 @@ } } - @Failing(issue = 6291) public void testOnlyFirstGroupInSequenceGetEvaluated() { delegate.testOnlyFirstGroupInSequenceGetEvaluated(); }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/GroupSequenceIsolationGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/GroupSequenceIsolationGwtTest.java index 866b369..44fdf68 100644 --- a/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/GroupSequenceIsolationGwtTest.java +++ b/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/GroupSequenceIsolationGwtTest.java
@@ -17,7 +17,6 @@ import com.google.gwt.junit.client.GWTTestCase; -import org.hibernate.jsr303.tck.util.client.Failing; import org.hibernate.jsr303.tck.util.client.NonTckTest; /** @@ -31,29 +30,24 @@ return "org.hibernate.jsr303.tck.tests.constraints.groups.groupsequenceisolation.TckTest"; } - @Failing(issue = 6291) public void testCorrectDefaultSequenceContainedCaseWithGroupRedefinitionOnContainedEntity() { delegate .testCorrectDefaultSequenceContainedCaseWithGroupRedefinitionOnContainedEntity(); } - @Failing(issue = 6291) public void testCorrectDefaultSequenceContainedCaseWithoutGroupRedefinitionOnContainedEntity() { delegate .testCorrectDefaultSequenceContainedCaseWithoutGroupRedefinitionOnContainedEntity(); } - @Failing(issue = 6291) public void testCorrectDefaultSequenceInheritance() { delegate.testCorrectDefaultSequenceInheritance(); } - @Failing(issue = 6291) public void testCorrectDefaultSequenceInheritance2() { delegate.testCorrectDefaultSequenceInheritance2(); } - @Failing(issue = 6291) public void testCorrectDefaultSequenceInheritance3() { delegate.testCorrectDefaultSequenceInheritance3(); }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/TckTestValidatorFactory.java b/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/TckTestValidatorFactory.java index 3d78e06..58764fe 100644 --- a/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/TckTestValidatorFactory.java +++ b/user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/TckTestValidatorFactory.java
@@ -30,7 +30,8 @@ /** * Marker Interface to {@link GWT#create(Class)}. */ - @GwtValidation(value = {B1.class, B2.class, B3.class, C.class, E.class}) + @GwtValidation(value = {B1.class, B2.class, B3.class, C.class, E.class}, + groups = {Heavy.class, Minimal.class}) public static interface GwtValidator extends Validator { }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtTest.java index c7b7070..b035b1d 100644 --- a/user/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtTest.java +++ b/user/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtTest.java
@@ -17,8 +17,6 @@ import com.google.gwt.junit.client.GWTTestCase; -import org.hibernate.jsr303.tck.util.client.Failing; - /** * Wraps {@link ValidatorResolutionTest} . */ @@ -33,7 +31,6 @@ delegate.testResolutionOfMinMaxForDifferentTypes(); } - @Failing(issue = 5806) public void testResolutionOfMultipleSizeValidators() { delegate.testResolutionOfMultipleSizeValidators(); }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/metadata/ElementDescriptorGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/metadata/ElementDescriptorGwtTest.java index 8d2622b..fbf9eaf 100644 --- a/user/test/org/hibernate/jsr303/tck/tests/metadata/ElementDescriptorGwtTest.java +++ b/user/test/org/hibernate/jsr303/tck/tests/metadata/ElementDescriptorGwtTest.java
@@ -17,8 +17,6 @@ import com.google.gwt.junit.client.GWTTestCase; -import org.hibernate.jsr303.tck.util.client.Failing; - /** * Test wrapper for {@link ElementDescriptorTest}. */ @@ -50,12 +48,10 @@ delegate.testLookingAt(); } - @Failing(issue = 5932) public void testUnorderedAndMatchingGroups() { delegate.testUnorderedAndMatchingGroups(); } - @Failing(issue = 5932) public void testUnorderedAndMatchingGroupsWithDefaultGroupOverriding() { delegate.testUnorderedAndMatchingGroupsWithDefaultGroupOverriding(); }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/metadata/TckTestValidatorFactory.java b/user/test/org/hibernate/jsr303/tck/tests/metadata/TckTestValidatorFactory.java index a32aaf5..f7a1d6d 100644 --- a/user/test/org/hibernate/jsr303/tck/tests/metadata/TckTestValidatorFactory.java +++ b/user/test/org/hibernate/jsr303/tck/tests/metadata/TckTestValidatorFactory.java
@@ -34,8 +34,8 @@ @GwtValidation(value = { Account.class, Customer.class, Man.class, Order.class, Person.class, SubClass.class, SuperClass.class, UnconstraintEntity.class}, - groups = {Default.class, SuperClass.BasicGroup.class, SuperClass.InheritedGroup.class, - SuperClass.UnusedGroup.class}) + groups = {Default.class, SubClass.DefaultGroup.class, SuperClass.BasicGroup.class, + SuperClass.InheritedGroup.class, SuperClass.UnusedGroup.class}) public static interface GwtValidator extends Validator { }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/validation/graphnavigation/GraphNavigationGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/validation/graphnavigation/GraphNavigationGwtTest.java index 78f6003..e52990f 100644 --- a/user/test/org/hibernate/jsr303/tck/tests/validation/graphnavigation/GraphNavigationGwtTest.java +++ b/user/test/org/hibernate/jsr303/tck/tests/validation/graphnavigation/GraphNavigationGwtTest.java
@@ -17,8 +17,6 @@ import com.google.gwt.junit.client.GWTTestCase; -import org.hibernate.jsr303.tck.util.client.Failing; - /** * Test wrapper for {@link GraphNavigationTest}. */ @@ -43,7 +41,6 @@ delegate.testContainedSet(); } - @Failing(issue = 5946) public void testFullGraphValidationBeforeNextGroupInSequence() { delegate.testFullGraphValidationBeforeNextGroupInSequence(); }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/validation/graphnavigation/TckTestValidatorFactory.java b/user/test/org/hibernate/jsr303/tck/tests/validation/graphnavigation/TckTestValidatorFactory.java index 8938936..b26f4e9 100644 --- a/user/test/org/hibernate/jsr303/tck/tests/validation/graphnavigation/TckTestValidatorFactory.java +++ b/user/test/org/hibernate/jsr303/tck/tests/validation/graphnavigation/TckTestValidatorFactory.java
@@ -20,6 +20,9 @@ import com.google.gwt.validation.client.GwtValidation; import com.google.gwt.validation.client.impl.AbstractGwtValidator; +import org.hibernate.jsr303.tck.tests.validation.graphnavigation.Parent.ChildFirst; +import org.hibernate.jsr303.tck.tests.validation.graphnavigation.Parent.ParentSecond; + import javax.validation.Validator; import javax.validation.groups.Default; @@ -35,7 +38,7 @@ AnimalCaretaker.class, Condor.class, Elephant.class, GameReserve.class, MultiCage.class, MultiCage.class, Order.class, Parent.class, SingleCage.class, User.class, Zebra.class, Zoo.class}, - groups = {Default.class, Parent.ProperOrder.class}) + groups = {Default.class, Parent.ProperOrder.class, ChildFirst.class, ParentSecond.class}) public static interface GwtValidator extends Validator { }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/validatorfactory/CustomConstraintValidatorGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/validatorfactory/CustomConstraintValidatorGwtTest.java index 480da20..e83d4ee 100644 --- a/user/test/org/hibernate/jsr303/tck/tests/validatorfactory/CustomConstraintValidatorGwtTest.java +++ b/user/test/org/hibernate/jsr303/tck/tests/validatorfactory/CustomConstraintValidatorGwtTest.java
@@ -17,7 +17,10 @@ import com.google.gwt.junit.client.GWTTestCase; -import org.hibernate.jsr303.tck.util.client.Failing; +import org.hibernate.jsr303.tck.util.client.NotSupported; +import org.hibernate.jsr303.tck.util.client.NotSupported.Reason; + +import javax.validation.ValidationException; /** * Wraps @@ -37,13 +40,19 @@ delegate.testDefaultConstructorInValidatorCalled(); } - @Failing(issue = 5805) public void testRuntimeExceptionInValidatorCreationIsWrapped() { - delegate.testRuntimeExceptionInValidatorCreationIsWrapped(); + try { + delegate.testRuntimeExceptionInValidatorCreationIsWrapped(); + fail("Expected a " + ValidationException.class); + } catch (ValidationException expected) { + Throwable cause = expected.getCause(); + assertEquals(RuntimeException.class, cause.getClass()); + assertEquals("Runtime exception in validator creation", cause.getMessage()); + } } - @Failing(issue = 5805) + @NotSupported(reason = Reason.CONSTRAINT_VALIDATOR_FACTORY) public void testValidationExceptionIsThrownInCaseFactoryReturnsNull() { - delegate.testValidationExceptionIsThrownInCaseFactoryReturnsNull(); + fail("ConstraintValidatorFactory is not supported. GWT.create() is used in its place."); } }
diff --git a/user/test/org/hibernate/jsr303/tck/util/client/NotSupported.java b/user/test/org/hibernate/jsr303/tck/util/client/NotSupported.java index cf49ea7..13d8593 100644 --- a/user/test/org/hibernate/jsr303/tck/util/client/NotSupported.java +++ b/user/test/org/hibernate/jsr303/tck/util/client/NotSupported.java
@@ -37,7 +37,7 @@ * Constants for why a test is not supported. */ public enum Reason { - XML, IO, CALENDAR + XML, IO, CALENDAR, CONSTRAINT_VALIDATOR_FACTORY } /**