An apparatus and method for obtaining a string representation of objects in a displayed hierarchical structure are provided. With the apparatus and method, a list having separators may be converted into a path equivalent for a specified hierarchical structure. In order to convert the separated list into a textual representation for an object in a hierarchical structure, an input string having separators is received and the cell renderer for a hierarchical structure is identified. Comparisons between portions of the separated list are compared to string representations for objects in the hierarchical structure in order to identify matches and ultimately, a path in the hierarchical structure corresponding to the separated list. The string representations for the objects are obtained by identifying the cell renderer component that is used to paint the object on a display.
|
1. A method for obtaining a string representation of a graphical user interface object, comprising:
associating a first graphical user interface (gui) object, from a set of gui objects arranged in hierarchical structure, with a respective first rendering process used to render the first gui object on a display;
requesting a first component object from the first rendering process;
determining if the first component object includes a method for obtaining a string representation of the gui object;
calling the method in the first component object to obtain the string representation if the first component object includes the method for obtaining the string representation of the gui object;
receiving an input string having a plurality of portions separated by a separator;
identifying a current portion of the input string;
comparing the string representation to the current portion of the input string to determine if the string representation matches the current portion of the input string, wherein if the string representation matches the current portion of the input string, the method further comprises:
identifying a next gui object in the set of gui objects if the string representation matches the current portion of the input string;
identifying a next portion of the input string as the current portion of the input string;
associating the next gui object with a respective second rendering process used to render the next gui object on a display;
requesting a second component object from the second rendering process;
calling a method in the second component object to obtain a second string representation;
comparing the second string representation to the current portion of the input string; and
determining if the second string representation matches the current portion of the input string.
17. An apparatus for obtaining a string representation of a graphical user interface object, comprising:
means for associating a first graphical user interface (gui) object, from a set of gui objects arranged in a hierarchical structure, with a respective first rendering process used to render the first gui object on a display;
means for requesting a first component object from the first rendering process;
means for determining if the first component object includes a method for obtaining a string representation of the gui object;
means for calling the method in the first component object to obtain the string representation if the first component object includes the method for obtaining the string representation of the gui object;
means for receiving an input string having a plurality of portions separated by a separator;
means for identifying a current portion of the input string;
means for comparing the string representation to the current portion of the input string to determine if the string representation matches the current portion of the input string;
means for identifying a next gui object in the set of gui objects if the string representation matches the current portion of the input string;
means for identifying a next portion of the input string as the current portion of the input string;
means for associating the next gui object with a respective second rendering process used to render the next gui object on a display;
means for requesting a second component object from the second rendering process;
means for calling a method in the second component object to obtain a second string representation;
means for comparing the second string representation to the current portion of the input string; and
means for determining if the second string representation matches the current portion of the input string.
9. A tangible computer program product in a tangible computer readable medium for obtaining a string representation of a graphical user interface object, comprising:
first instructions for associating a first graphical user interface (gui) object, from a set of gui objects arranged in a hierarchical structure, with a respective first rendering process used to render the first gui object on a display;
second instructions for requesting a first component object from the first rendering process;
third instructions for determining if the first component object includes a method for obtaining a string representation of the gui object;
fourth instructions for calling the method in the first component object to obtain the string representation if the first component object includes the method for obtaining the string representation of the gui object;
fifth instructions for receiving an input string having a plurality of portions separated by a separator;
sixth instructions for identifying a current portion of the input string;
seventh instructions for comparing the string representation to the current portion of the input string to determine if the string representation matches the current portion of the input string; instructions for identifying next gui object in the set of gui objects if the string representation matches the current portion of the in string;
instructions for identifying next portion of the input string as the current portion of the input string;
instructions for associating the next gui object with a respective second rendering process use to render the next gui object on a display;
instructions for requesting a second component object from the second rendering process;
instructions for calling a method in the second component object to obtain a second string representation;
instructions for comparing the second string representation to the current portion of the input string; and
instructions for determining if the second string representation matches the current portion of the input string.
2. The method of
adding the object to a path object for the input string if the string representation matches the current portion of the input string.
3. The method of
determining if the current portion of the input string is a last portion of the input string; and
outputting the path object if the current portion of the input string is a last portion of the input string.
5. The method of
6. The method of
determining if the first component object is a container object if the first component object does not include a method for obtaining the string representation of the gui object, wherein the container object comprises an image object an a text label object.
7. The method of
searching the first component object for an alternative object derived from an object used to render text if the first component object is a container object; and
using the alternative object to generate the string representation.
8. The method of
using a default method of converting a gui object to a string representation if the first component does not include a method for obtaining a string representation of the gui object and the first component object is not a container object.
10. The computer program product of
11. The computer program product of
ninth instructions for determining if the current portion of the input string is a last portion of the input string; and
tenth instructions for outputting the path object if the current portion of the input string is a last portion of the input string.
13. The computer program product of
14. The computer program product of
instructions for determining if the first component object is a container object if the first component object does not include method for obtaining the string representation of the gui object, wherein the container object comprises an image object and a text label object.
15. The computer program product of
instructions for searching the first component object for an alternative object derived from an object used to render text if the first component object is a container object; and
instructions for using the alternative object to generate the string representation.
16. The computer program product of
instructions for using a default method of converting a gui object to a string representation if the first component does not include a method for obtaining a string representation of the gui object and the first component object is not a container object.
18. The apparatus of
19. The apparatus of
means for determining if the current portion of the input string is a last portion of the input string; and
means for outputting the path object if the current portion of the input string is a last portion of the input string.
21. The apparatus of
22. The apparatus of
means for determining if the first component object is a container object if the first component object does not include a method for obtaining the string representation of the gui object, wherein the container object comprises an image object and a text label object.
23. The apparatus of
means for searching the first component object for an alternative object derived from an object used to render text if the first component object is a container object; and
means for using the alternative object to generate the string representation.
24. The apparatus of
means for using a default method of converting a gui object to a string representation if the first component does not include a method for obtaining a string representation of the gui object and the first component object is not a container object.
|
1. Technical Field
The present invention is generally directed to an improved computing system. More specifically, the present invention is directed to an apparatus and method for obtaining string representations of nodes in displayed hierarchical structures.
2. Description of Related Art
To ensure that applications perform and operate as expected, they need to be tested prior to release. Such testing involves the adoption of a test management strategy followed by the performance of load testing and functional testing on the applications. Load testing involves the emulation of multiple users interacting with an application infrastructure to ascertain where any bottlenecks may exist. Functional testing involves automatically capturing, verifying and replaying user interactions to determine if the applications function as expected.
A known mechanism for performing functional tests on applications is the WinRunner program available from Mercury Interactive. With the WinRunner program, test scripts are generated by recording a user's interaction with a particular version of an application's graphical user interface (GUI). The recording is then later replayed to test the application, or other versions of the application, with different data sets. Reports are generated indicating the events occurring during the test and any errors that may occur.
A problem with GUI test harnesses, such as WinRunner, is the representation of nodes of hierarchical structures, such as tree and list structures, in such a way that a user may specify an appropriate string in a test script for selecting the node that they see on the screen. This is a significant problem because the tree nodes and list items may be arbitrary objects, making it extremely difficult to convert what the user sees on the screen to a string representation that they can use to specify which tree node or list item they wish to select.
Typically, in order to obtain a string representation of the node in a tree or list structure in an object oriented environment, such as a Java JTree or JList a call to the method toString( ) on the node itself is used. However, with complex objects, i.e. objects whose toString( ) does not return what is seen on the screen such as a container object which contains an image object and a text label object, the string returned by this method does not bear any resemblance to the object depicted in the tree or list structure. As a result, if the user were to try and correlate the string returned by toString( ) with the tree or list at a later time, it would be very difficult to identify which node in the tree or list corresponds to this string.
For example, assume that there is a tree structure having the following organization:
Hostname
Directory 1
Directory 2
SubDirectory 1
When generating a test script for a testing harness by recording the user's interaction with the GUI, when the user selects the SubDirectory 1 from the tree structure, it is necessary to convert the displayed object, i.e. node, into a string representation of the object. Using known mechanisms to obtain this string representation, e.g., using the toString( ) method call on the SubDirectory 1 node, a string representation is returned that bears no likeness to the tree structure shown above. For example, a string such as the following may be returned:
Hostname: implicit method call getHost|_Directory: level 2 implicit Call 5|_Directory:Level 2 implicit Call 5
where the symbol “|_” is a separator that indicates traversing down into the tree structure. It is clear from the above, that if a user, at a later time, attempts to resolve this string to a displayed node in the tree structure, it would be very difficult for that user to identify which node in the tree structure corresponds to the string.
Thus, it would be beneficial to have an apparatus and method that is capable of automatically identifying a selected tree or list object with a string representation that resembles the displayed node in its tree or list structure.
The present invention provides an apparatus and method for obtaining a string representation of objects in a displayed hierarchical structure. This string representation may then be used to reference the object at a later time, e.g., in test scripts and the like.
With the apparatus and method of the present invention, a list having separators, such as “|_” or “/”, may be converted into a path equivalent, such as a TreePath, for a specified hierarchical structure, such as a JTree. The path may then be used to reference objects in a display of the hierarchical structure. The path may also be used to render the objects in the hierarchical structure.
In order to convert the separated list into a textual representation for an object in a hierarchical structure, an input string having separators is received and the cell renderer for a hierarchical structure is identified. The first string portion of the input string (portions being delimited by the separators), is identified and a search of the hierarchical structure is performed to find an object in the hierarchical structure matching the first string portion.
The search of the hierarchical structure involves taking an object, or node, at a row, i.e. level of the hierarchical structure, obtaining a text representation for the object, and comparing the text representation for the object to the input string portion. If there is not a match, the next object, or node, in the hierarchical structure is checked and so on until the end of the hierarchical structure is encountered. If the end of the hierarchical structure is encountered and there are still portions of the input string for which a matching node in the hierarchical structure is not found, then the present invention terminates with a failure indication.
If the text representation for the object matches the input string portion, the next input string portion is checked against a text representation for the next node in the hierarchical structure. This process continues until either the end of the hierarchical structure is encountered or there are no more input string portions to process. If there are no more input string portions to process, then the hierarchical structure path identified by the matching is output.
The present invention obtains the textual representation for a hierarchical structure object or node by identifying the renderer component for the object or node and determining if the renderer component contains a valid string method that may be used to extract the string representation from the object or node. If so, the valid string method is called to obtain the string representation which is then compared against the input string portion. If the renderer component is a null object, then a default method of converting the hierarchical structure object or node into a textual representation is used to generate the string for the comparison, e.g., the toString( ) method may be utilized.
If the renderer component does not include a valid string method and the renderer component is not null, then a determination is made as to whether or not the renderer component is a container. If not, again the default method of converting the object or node to a string is utilized. If the renderer component is a container, the renderer component is search for an object that derives from a label or text component object. This indicates that the object is used to represent text on a display and is likely to have methods for obtaining the textual representation. The identified object is then used to determine if a valid string method exists, and if so, the valid string method is used to obtain the textual representation for the hierarchical structure object or node.
These and other features and advantages of the present invention will be described in, or will become apparent to those of ordinary skill in the art in view of, the following detailed description of the preferred embodiments.
The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
The present invention provides an apparatus and method for generating string representations of objects in a hierarchical structure, such as a tree or list structure. The present invention may be implemented in any known or later developed computing system.
With reference now to the figures and in particular with reference to
Although the depicted representation shows a computer, other embodiments of the present invention may be implemented in other types of data processing systems, such as a network computer. Computer 100 also preferably includes a graphical user interface (GUI) that may be implemented by means of systems software residing in computer readable media in operation within computer 100.
With reference now to
Processor 202 and main memory 204 are connected to PCI local bus 206 through PCI bridge 208. PCI bridge 208 also may include an integrated memory controller and cache memory for processor 202. Additional connections to PCI local bus 206 may be made through direct component interconnection or through add-in boards.
In the depicted example, local area network (LAN) adapter 210, small computer system interface SCSI host bus adapter 212, and expansion bus interface 214 are connected to PCI local bus 206 by direct component connection. In contrast, audio adapter 216, graphics adapter 218, and audio/video adapter 219 are connected to PCI local bus 206 by add-in boards inserted into expansion slots. Expansion bus interface 214 provides a connection for a keyboard and mouse adapter 220, modem 222, and additional memory 224. SCSI host bus adapter 212 provides a connection for hard disk drive 226, tape drive 228, and CD-ROM drive 230. Typical PCI local bus implementations will support three or four PCI expansion slots or add-in connectors.
An operating system runs on processor 202 and is used to coordinate and provide control of various components within data processing system 200 in
Those of ordinary skill in the art will appreciate that the hardware in
For example, data processing system 200, if optionally configured as a network computer, may not include SCSI host bus adapter 212, hard disk drive 226, tape drive 228, and CD-ROM 230. In that case, the computer, to be properly called a client computer, includes some type of network communication interface, such as LAN adapter 210, modem 222, or the like. As another example, data processing system 200 may be a stand-alone system configured to be bootable without relying on some type of network communication interface, whether or not data processing system 200 comprises some type of network communication interface. As a further example, data processing system 200 may be a personal digital assistant (PDA), which is configured with ROM and/or flash ROM to provide non-volatile memory for storing operating system files and/or user-generated data.
The depicted example in
The present invention provides a method and apparatus for obtaining a textual representation of an object in a hierarchical structure, such as a tree or list. As set forth hereafter, the preferred embodiments of the present invention are described in terms of a Java implementation, however the present invention is not limited to such. Rather, the present invention may be implemented in any object-oriented environment in which hierarchical structures of objects are displayed using graphical user interfaces (GUIs). The preferred embodiments will be described in terms of a tree hierarchical structure, however the present invention may be applied to any hierarchical structure including lists of objects, and the like.
The class JTree in Java, is a control that displays a set of hierarchical data as an outline. A specific node, i.e. an object that may be a file, a folder, a portion of data, etc., in the tree can be identified by a TreePath (an object that encapsulates a node and all of its ancestors), or by its display row, where each row in the display area displays one node. An expanded node is a node that displays its children. A collapsed node is a node that hides its children. A hidden node is a node that is under a collapsed ancestor node. All of a viewable node's parent nodes are expanded, but may or may not be displayed. A displayed node is both viewable and is in the display area where it can be seen by a user.
When a tree structure is rendered in the Java environment, for every node in the JTree, a tree cell renderer is called to render the display of that node in the displayed JTree. The tree cell renderer may be a custom tree cell renderer or may be a default one. When the tree is rendered, the tree cell renderer for each node is asked to return a JComponent that the tree will use to paint the tree cell.
With the present invention, a request is sent to the JTree requesting the JComponent that the JTree uses to paint a selected object on the screen. Since this JTree component is used to paint the object, the JTree component typically includes methods for obtaining text that is painted on the screen to represent the object.
Once the JComponent is identified by requesting it from the JTree, reflection is performed on the JComponent to request its string representation. Reflection is an Application Program Interface in Java that allows an executing Java program to examine or “introspect” upon itself, and manipulate internal properties of the program. For example, it is possible for a Java class to obtain the names of all its members and display them.
Since most JComponents include the method calls getText( ) and getLabel( ), the use of reflection on the Jcomponent has a high likelihood of returning a string representation that resembles the actual object displayed in the JTree. Through the use of reflection, essentially the getText( ) and/or getLabel( ) methods are called to obtain the textual representation of the object that is painted by the Jcomponent.
In particular, with the apparatus and method of the present invention, a textual list having separators, such as “|_” or “/”, may be converted into a path equivalent, such as a TreePath, for a specified hierarchical structure, such as a JTree. The TreePath may then be used to reference objects in a display of the JTree. The TreePath may also be used to render the objects in the JTree.
In order to convert a separated list, e.g., Root|_Subnode1 |_Subnode2 |_Subnode3, into a textual representation for a corresponding object in a JTree, it is first necessary to match the separated list to an object in the JTree. To do this, an input string having separators is received and the cell renderer for JTree is identified. The first string portion of the input string (portions being delimited by the separators), is identified and a search of the JTree is performed to find an object in the JTree matching the first string portion.
The search of the JTree involves taking an object, or node, at a row, i.e. level of the JTree, obtaining a text representation for the object, and comparing the text representation for the object to the input string portion. If there is not a match, the next object, or node, in the JTree is checked and so on until the end of the JTree is encountered. If the end of the JTree is encountered and there are still portions of the input string for which a matching node in the JTree is not found, then the present invention terminates with a failure indication.
If the text representation for the object matches the input string portion, the next input string portion is checked against a text representation for the next node in the JTree. This process continues until either the end of the JTree is encountered or there are no more input string portions to process. If there are no more input string portions to process, then the JTree path identified by the matching is output.
The present invention obtains the textual representation for a JTree object or node by identifying the tree cell renderer component for the object or node and determining if the tree cell renderer component contains a valid string method, such as getText( ) or getLabel( ), that may be used to extract the string representation from the object or node. If so, the valid string method is called, e.g., through reflection, to obtain the string representation which is then compared against the input string portion. If the tree cell renderer component is a null object, then a default method of converting the JTree object or node into a textual representation is used to generate the string for the comparison, e.g., the toString( ) method may be utilized.
If the tree cell renderer component does not include a valid string method and the tree cell renderer component is not null, then a determination is made as to whether or not the tree cell render component is a container. If not, again the default method of converting the object or node to a string is utilized. If the tree cell renderer component is a container, the tree cell renderer component is search for an object that derives from a label or text component object, such as JLabel or JTextComponent. This indicates that the object is used to represent text on a display and is likely to have methods for obtaining the textual representation. The identified text component object is then used to determine if a valid string method exists, e.g., if the text component object includes a valid string method. If so, the valid string method is used to obtain the textual representation for the hierarchical structure object or node.
Thus, using the mechanism described above, the present invention is able to obtain a string representation of an object in a hierarchical structure that resembles the display of the object. For example, the string representation may take the form:
Node|_subNode1|_subNode2
which is similar and resembles the way that the tree levels would be displayed to the user. In this way, a user may specify a tree node to select/expand using this type of format in a test script so that it can later be compared to the JTree's internal representation to determine exactly which node is being referenced by the user.
Root|_Subnode1|_Subnode2|_Subnode3
With the present invention, the tree cell renderer for the JTree shown in
Assume that the JComponent includes the method getText( ). As a result, the method getText( ) in the JComponent is called, through reflection, on the Root Object to obtain the textual representation “Root.” This textual representation “Root” is then compared to the first string portion of the input string. The result is a match. Since there is a match, the next portion of the input string is identified and the next node in the JTree below the Root Object is identified, i.e. the node corresponding to Object 1 in row 2 of the JTree.
The same process is performed on Object 1 and the textual representation “Subnodel” is obtained from the getText( ) or getLabel( ) method of the JComponent for Object 1. Again the comparison is performed and a match is identified.
This same process is repeated for rows 3 and 4 of the JTree. Each time, a match is identified. Once there are no longer any more portions of the input string to be processed, the resulting TreePath object is output for use in later identifying the object represented by the input string. Such information may then be stored in a data structure for future reference, for example, in generating test scripts or otherwise referencing the object using the input string.
A determination is made as to whether the JComponent obtained from the call of the getTreeCellRenderer Component( ) includes a valid string method (step 410). If so, the valid string method is used to obtain a string representation for the node of the tree (step 412). If a valid string method is not part of the JComponent, a determination is made as to whether the JComponent is a container (step 422). If so, a search within the JComponent for an object that derives from JLabel or JTextComponent is performed (step 426) and this identified Object is used as a basis for obtaining the string representation (return to step 410). If the Jcomponent is not a container, or if the Jcomponent is a null object, a default method is used to obtain the string representation for the node (step 424).
Once a string representation is obtained for the node in the JTree, a determination is made as to whether the string representation matches the current portion of the input string (step 414). If not, the operation goes to the next node in the JTree (step 415) and returns to step 408. If there is a match, a determination is made as to whether this is the last node in the tree (step 416). If so, the operation terminates with a failure (step 417).
If this is not the last node in the tree, a determination is made as to whether this is the last node in the input string (step 418). If so, the tree path obtained from the matching operation is output (step 419). If this is not the last node in the string or this is not the last node in the tree, the operation advances to the next node in the string and/or tree (step 420) and the operation returns to step 408.
Thus, the present invention provides a mechanism that allows a textual representation of an object in a hierarchical structure to be generated that resembles the visual depiction of the object. As a result, the present invention provides a more user friendly and user recognizable string representation for an object in a hierarchical structure.
It is important to note that while the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of the present invention are capable of being distributed in the form of a computer readable medium of instructions and a variety of forms and that the present invention applies equally regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer readable media include recordable-type media, such as a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, and transmission-type media, such as digital and analog communications links, wired or wireless communications links using transmission forms, such as, for example, radio frequency and light wave transmissions. The computer readable media may take the form of coded formats that are decoded for actual use in a particular data processing system.
The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiments described above were chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.
Patent | Priority | Assignee | Title |
10698702, | Nov 21 2002 | Siemens Industry Software Inc | Automating interactions with software user interface |
8935669, | Apr 11 2007 | Microsoft Technology Licensing, LLC | Strategies for performing testing in a multi-user environment |
9740506, | Nov 21 2002 | Siemens Industry Software Inc | Automating interactions with software user interfaces |
Patent | Priority | Assignee | Title |
5115504, | Nov 01 1988 | International Business Machines Corporation | Information management system |
5509116, | Mar 30 1990 | International Business Machines Corporation | Graphical user interface management system |
5781720, | Nov 19 1992 | Borland Software Corporation | Automated GUI interface testing |
5977967, | May 01 1996 | Hewlett Packard Enterprise Development LP | Object-oriented business object interface framework and method |
6112207, | Oct 31 1997 | Oracle International Corporation | Apparatus and method which features linearizing attributes of an information object into a string of bytes for object representation and storage in a database system |
6128016, | Dec 20 1996 | NEC Corporation | Graphic user interface for managing a server system |
6145077, | May 17 1995 | Apple Inc | Manipulation of data |
6496202, | Jun 30 1997 | Oracle America, Inc | Method and apparatus for generating a graphical user interface |
6594708, | Mar 26 1998 | Oracle America, Inc | Apparatus and method for object-oriented memory system |
6678867, | Dec 23 1997 | Ricoh Corporation | Method and apparatus for providing a graphical user interface for creating and editing a mapping of a first structural description to a second structural description |
6701513, | Jan 14 2000 | National Instruments Corporation | Program-development environment for use in generating application programs |
6772408, | Nov 22 2000 | Oracle International Corporation | Event model using fixed-format text strings to express event actions |
6810414, | Feb 04 2000 | System and methods for easy-to-use periodic network data capture engine with automatic target data location, extraction and storage | |
6922813, | Apr 20 2000 | MORGAN STANLEY SERVICES GROUP INC | Page prerequisite control mechanism |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jun 28 2002 | International Business Machines Corporation | (assignment on the face of the patent) | / | |||
Jun 28 2002 | PATTERSON, BRET | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 013072 | /0215 | |
May 03 2011 | International Business Machines Corporation | Google Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 026664 | /0866 | |
Sep 29 2017 | Google Inc | GOOGLE LLC | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 044142 | /0357 |
Date | Maintenance Fee Events |
Jun 29 2006 | ASPN: Payor Number Assigned. |
Apr 25 2011 | REM: Maintenance Fee Reminder Mailed. |
Jun 15 2011 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Jun 15 2011 | M1554: Surcharge for Late Payment, Large Entity. |
May 01 2015 | REM: Maintenance Fee Reminder Mailed. |
Sep 18 2015 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Sep 18 2010 | 4 years fee payment window open |
Mar 18 2011 | 6 months grace period start (w surcharge) |
Sep 18 2011 | patent expiry (for year 4) |
Sep 18 2013 | 2 years to revive unintentionally abandoned end. (for year 4) |
Sep 18 2014 | 8 years fee payment window open |
Mar 18 2015 | 6 months grace period start (w surcharge) |
Sep 18 2015 | patent expiry (for year 8) |
Sep 18 2017 | 2 years to revive unintentionally abandoned end. (for year 8) |
Sep 18 2018 | 12 years fee payment window open |
Mar 18 2019 | 6 months grace period start (w surcharge) |
Sep 18 2019 | patent expiry (for year 12) |
Sep 18 2021 | 2 years to revive unintentionally abandoned end. (for year 12) |