The present application is related to U.S. patent application Ser. No. 11/086,101, entitled SYSTEM, METHOD, AND COMPUTER READABLE MEDIUM FOR INTEGRATING AN ORIGINAL APPLICATION WITH A REMOTE APPLICATION, U.S. patent application Ser. No. 11/086,211, entitled SYSTEM, METHOD, AND COMPUTER READABLE MEDIUM FOR INTEGRATING APPLICATIONS IN MULTIPLE LANGUAGES, U.S. patent application Ser. No. 11/086,120, entitled SYSTEM, METHOD, AND COMPUTER READABLE MEDIUM FOR INTEGRATING AN ORIGINAL LANGUAGE APPLICATION WITH A TARGET LANGUAGE APPLICATION, and U.S. patent application Ser. No. 11/086,102, entitled SYSTEM, METHOD, AND COMPUTER READABLE MEDIUM FOR NORMALIZING SOURCE FILES IN MULTIPLE SOFTWARE LANGUAGES, the disclosures of which are incorporated in their entirety by reference herein.
The present invention is related to integrating applications, and, more specifically to a system and method for integrating an original application with a remote application.
Various limitations are associated with integrating applications such as difficulty in sharing the structure of application data and application programming interfaces (classes). As such, it is cumbersome for an application written in one language or in an original application to access a functionality provided by an application written in a different language or a remote application. It is currently tedious to integrate these applications because a common structure must be defined in a third language (such as Extensible Markup Language, Common Object Request Broker Architecture Event Definition Language, etc.).
The present invention overcomes these problems and limitations by providing a system and method for integrating an original application with a remote application.
The present invention comprises a system, method, and computer readable medium for an original application with a remote application. In one embodiment, a method for integrating an original application with a remote application comprises generating adapter classes related to the original application, generating proxy classes related to the remote application, wherein the proxy classes are adapted to communicate with the adapter classes, generating data types related to the remote application, wherein the data types related to the remote application are equivalent to data types related to the original application, and generating streamers related to the remote application, wherein the streamers related to the remote application are adapted to be utilized by the proxy classes.
In another embodiment, a method for integrating an original application with a remote application comprises generating proxy classes related to the remote application, generating data types related to the remote application, wherein the data types related to the remote application are equivalent to data types related to an original application, and generating streamers related to the remote application, wherein the streamers related to the remote application are adapted to be utilized by the proxy classes.
In a further embodiment, a computer readable medium comprises instructions for: generating at least one proxy class related to a remote application, generating at least one data type related to the remote application, and generating at least one streamer related to the remote application, wherein the data type related to the remote application is equivalent to at least one data type related to an original application, and wherein the streamer is adapted to be utilized by the proxy class.
In yet another embodiment, a computer readable medium comprises instructions for: generating at least one of: a proxy class, a data type, and a streamer, each related to a remote application, wherein the data type related to the remote application is equivalent to at least one data type related to an original application.
In yet a further embodiment, a system for integrating an original application with a remote application comprises a first module adapted to generate adapter classes related to an original application, a second module adapted to generate proxy classes related to a remote application, wherein the first module and the second module are operably coupled, the second module adapted to generate data types related to the remote application, and the second module adapted to convert data communication between the proxy classes and the adapter classes.
In yet another embodiment, a module for integrating an original application with a remote application, wherein the module is adapted to: generate adapter classes related to an original application, wherein the adapter classes are adapted to provide access to functions of the original application, provide data from the adapter classes to a remote application, and receive converted data by the adapter class from the remote application, wherein the data is converted into a neutral data format.
In yet a further embodiment, a module for integrating an original application with a remote application, wherein the module is adapted to: generate proxy classes related to a remote application, generate data types related to the remote application, and convert data communication between the proxy classes and an original application, generate streamers related to the remote application, wherein the streamers are adapted to: convert data communicated by the proxy classes to the original application and convert data communicated by the original application to the proxy classes, wherein the data is converted into a neutral data format.
If they are not selected, the software and/or user are prompted to select the classes, methods, and other constructs in the program at step 18. If they are selected, it is determined if mapping for all complex user defined types is provided at step 20. In one embodiment, the software program verifies the selected constructs against all target languages. The software program identifies the mapping of the constructs in the original source language to the target language. If the mapping is not provided, the software and/or user are prompted to perform the mapping for all complex user defined types used in parameters, return types, and exceptions in step 22. In one embodiment, if the construct is complex in nature and has no equivalent in a target language, the software program prompts the user to provide a mapping for the construct. If the mapping is provided, it is determined if any target languages are selected at step 24. If they are not selected, the software and/or user are prompted to select the target languages at step 26. If they are selected, software is generated to connect the source language application with the target language application(s) at step 28. The generated code consists of adapters on the source language side to export existing source language application objects. The generated code consists of proxies on the target language side to provide access to source language application objects.
In one embodiment, a method for integrating an original application with a remote application comprises generating adapter classes related to the original application, generating proxy classes related to the remote application, wherein the proxy classes are adapted to communicate with the adapter classes, generating data types related to the remote application, wherein the data types related to the remote application are equivalent to data types related to the original application, and generating streamers related to the remote application, wherein the streamers related to the remote application are adapted to be utilized by the proxy classes. The communication comprises sending input parameters, related to the original application, to the adapter classes, receiving at least one of: output parameters, return values, and exceptions, related to the original application, at the proxy classes, receiving at least one of: input parameters, related to the original application, at the adapter classes, and sending at least one of: output parameters, return values, and exceptions, related to the original application, to the proxy classes.
The method further comprises providing access to functions of the original application by the adapter classes, converting data communicated by the proxy classes to the adapter classes and by the adapter classes to the proxy classes, by the streamers related to the remote application, into a neutral data format, and receiving the data by the streamers in neutral data format and converting the data to corresponding data types.
The input file 32 is imported into an application 38 (which is a software program implementing the current invention) that generates files or classes 44-48 on an original or source application side 40 and files or classes 50-58 on a remote or target application side 42. The streamer class 44 is generated for Class B which is used as the return type for the getB( ) method in Class A, while the streamer class generated for Class C is used as the type of the member in Class A. The Adapter class 48 is generated for Class A that provides target language applications to invoke the getB( ) method and access the member of original source application objects. The input file 32, the application 38, the source application side 40 and the target application side 42 may fully and/or partially reside on a client, a server, and/or a client and a server.
A proxy class 50 (related to the target language) sends a request 60 to an adapter class 48 (related to the original language), and a response 62 and an exception 64 are received by the proxy class 50. The request 60, the response 62, and the exception 64 are sent generally based on data types 52 and 54 related to the target language, streamers 56 and 58 related to the target language, and streamers 44 and 46 related to the original language. More specifically, the proxy class 50 is generated for the Class A to be used in the target language applications as a proxy for the original source application objects. The proxy class 50 contains a getB( ) method, an access for a member and a mutator for the member.
The Class B 52, is an equivalent class for Class B 34 in the original source language that forms the return type of the getB( ) method in the proxy, while the Class C 54 is an equivalent class for Class C 36 in the original source language that is used in the accessor and mutator for the member. The streamer classes 56 and 58 are streamer classes generated for the generated Class B and Class C, respectively.
The target language application 42 communicates with the source language application by invoking the getB( ) method on the proxy class. The method invocation causes the generated code to create a data packet 60 containing the intent of the target language application 42 to invoke the getB( ) method on the source language application 40 object. The packet 60 is transferred to the source language application 40. The source language application adapter 48 receives the packet 60 and invokes the method on the original source language application object. The return data of the method is returned as a response packet 62 to the target language application 42. If an exception occurs during the invocation of the method on the original source language application object, the exception data of the method is returned as a exception packet 64 to the target language application 42.
In one embodiment, a system for integrating an original application with a remote application comprises a first module adapted to generate adapter classes related to an original application, a second module adapted to generate proxy classes related to a remote application, wherein the first module and the second module are operably coupled, the second module adapted to generate data types related to the remote application, and the second module adapted to convert data communication between the proxy classes and the adapter classes, wherein the adapter classes are adapted to provide access to functions of the original application, wherein the second module is adapted to generate streamers related to the remote application, wherein the streamers related to the remote application are adapted to: convert data communicated by the proxy classes to the adapter classes, and convert data communicated by the adapter classes to the proxy classes, wherein the data is converted into a neutral data format, and wherein the streamers are adapted to receive the data in the neutral data format and convert the data to corresponding data types.
The communication comprises sending input parameters, related to the original application, to the adapter classes, receiving at least one of: output parameters, return values, and exceptions, related to the original application, at the proxy classes, receiving at least one of: input parameters, related to the original application, at the adapter classes, and sending at least one of: output parameters, return values, and exceptions, related to the original application, to the proxy classes.
Although an exemplary embodiment of the system and method of the present invention has been illustrated in the accompanied drawings and described in the foregoing detailed description, it will be understood that the invention is not limited to the embodiments disclosed, but is capable of numerous rearrangements, modifications, and substitutions without departing from the spirit of the invention as set forth and defined by the following claims. For example, the functionality performed by the input file 32, the application 38, the source application side 40 and the target application side 42, can be performed by one or more of the input file 32, the application 38, the source application side 40 and the target application side 42 in a distributed architecture and on or via any electronic device. Further, such functionality may be performed by depicted and/or un-depicted contents of the input file 32, the application 38, the source application side 40 and the target application side 42.
| Number | Name | Date | Kind |
|---|---|---|---|
| 4714995 | Materna et al. | Dec 1987 | A |
| 5465111 | Fukushima et al. | Nov 1995 | A |
| 5495533 | Linehan et al. | Feb 1996 | A |
| 5524253 | Pham et al. | Jun 1996 | A |
| 5604800 | Johnson et al. | Feb 1997 | A |
| 5675711 | Kephart et al. | Oct 1997 | A |
| 5721912 | Stepczyk et al. | Feb 1998 | A |
| 5778395 | Whiting et al. | Jul 1998 | A |
| 5812997 | Morimoto et al. | Sep 1998 | A |
| 5859911 | Angelo et al. | Jan 1999 | A |
| 5930798 | Lawler et al. | Jul 1999 | A |
| 5982891 | Ginter et al. | Nov 1999 | A |
| 6038500 | Weiss | Mar 2000 | A |
| 6055562 | Devarakonda et al. | Apr 2000 | A |
| 6065040 | Mima et al. | May 2000 | A |
| 6088689 | Kohn et al. | Jul 2000 | A |
| 6113650 | Sakai | Sep 2000 | A |
| 6134580 | Tahara et al. | Oct 2000 | A |
| 6134660 | Boneh et al. | Oct 2000 | A |
| 6154777 | Ebrahim | Nov 2000 | A |
| 6172986 | Watanuki et al. | Jan 2001 | B1 |
| 6199195 | Goodwin et al. | Mar 2001 | B1 |
| 6202060 | Tran | Mar 2001 | B1 |
| 6209124 | Vermeire et al. | Mar 2001 | B1 |
| 6230309 | Turner et al. | May 2001 | B1 |
| 6233601 | Walsh | May 2001 | B1 |
| 6256773 | Bowman-Amuah | Jul 2001 | B1 |
| 6272478 | Obata et al. | Aug 2001 | B1 |
| 6282563 | Yamamoto et al. | Aug 2001 | B1 |
| 6282697 | Fables et al. | Aug 2001 | B1 |
| 6304556 | Haas | Oct 2001 | B1 |
| 6330677 | Madoukh | Dec 2001 | B1 |
| 6343265 | Glebov et al. | Jan 2002 | B1 |
| 6349343 | Foody et al. | Feb 2002 | B1 |
| 6389462 | Cohen et al. | May 2002 | B1 |
| 6438744 | Toutonghi et al. | Aug 2002 | B2 |
| 6442537 | Karch | Aug 2002 | B1 |
| 6452910 | Vij et al. | Sep 2002 | B1 |
| 6477372 | Otting et al. | Nov 2002 | B1 |
| 6496871 | Jagannathan et al. | Dec 2002 | B1 |
| 6600430 | Minagawa et al. | Jul 2003 | B2 |
| 6600975 | Moriguchi et al. | Jul 2003 | B2 |
| 6611516 | Pirkola et al. | Aug 2003 | B1 |
| 6629032 | Akiyama | Sep 2003 | B2 |
| 6629128 | Glass | Sep 2003 | B1 |
| 6662642 | Breed et al. | Dec 2003 | B2 |
| 6671680 | Iwamoto et al. | Dec 2003 | B1 |
| 6687761 | Collins et al. | Feb 2004 | B1 |
| 6701381 | Hearne et al. | Mar 2004 | B2 |
| 6714844 | Dauner et al. | Mar 2004 | B1 |
| 6738975 | Yee et al. | May 2004 | B1 |
| 6744352 | Lesesky et al. | Jun 2004 | B2 |
| 6744358 | Bollinger | Jun 2004 | B1 |
| 6744820 | Khairallah et al. | Jun 2004 | B1 |
| 6768417 | Kuragaki et al. | Jul 2004 | B2 |
| 6816452 | Maehata | Nov 2004 | B1 |
| 6831375 | Currie et al. | Dec 2004 | B1 |
| 6851108 | Syme | Feb 2005 | B1 |
| 6862443 | Witte | Mar 2005 | B2 |
| 6876845 | Tabata et al. | Apr 2005 | B1 |
| 6879570 | Choi | Apr 2005 | B1 |
| 6895391 | Kausik | May 2005 | B1 |
| 6901588 | Krapf et al. | May 2005 | B1 |
| 6904593 | Fong et al. | Jun 2005 | B1 |
| 6931455 | Glass | Aug 2005 | B1 |
| 6931623 | Vermeire et al. | Aug 2005 | B2 |
| 6947965 | Glass | Sep 2005 | B2 |
| 6951021 | Bodwell et al. | Sep 2005 | B1 |
| 6957439 | Lewallen | Oct 2005 | B1 |
| 6963582 | Xu | Nov 2005 | B1 |
| 6981150 | Little et al. | Dec 2005 | B2 |
| 6985929 | Wilson et al. | Jan 2006 | B1 |
| 6993774 | Glass | Jan 2006 | B1 |
| 7010689 | Matyas, Jr. et al. | Mar 2006 | B1 |
| 7043522 | Olson et al. | May 2006 | B2 |
| 7047518 | Little et al. | May 2006 | B2 |
| 7055153 | Beck et al. | May 2006 | B2 |
| 7058645 | Seto et al. | Jun 2006 | B2 |
| 7062708 | Mani et al. | Jun 2006 | B2 |
| 7069551 | Fong et al. | Jun 2006 | B2 |
| 7127259 | Ueda et al. | Oct 2006 | B2 |
| 7127724 | Lewallen | Oct 2006 | B2 |
| 7146614 | Nikols et al. | Dec 2006 | B1 |
| 7146618 | Mein et al. | Dec 2006 | B1 |
| 7172113 | Olenick et al. | Feb 2007 | B2 |
| 7174533 | Boucher | Feb 2007 | B2 |
| 7197742 | Arita et al. | Mar 2007 | B2 |
| 7210132 | Rivard et al. | Apr 2007 | B2 |
| 7213227 | Kompalli et al. | May 2007 | B2 |
| 7225425 | Kompalli et al. | May 2007 | B2 |
| 7228141 | Sethi | Jun 2007 | B2 |
| 7231403 | Howitt et al. | Jun 2007 | B1 |
| 7237225 | Kompalli et al. | Jun 2007 | B2 |
| 7293261 | Anderson et al. | Nov 2007 | B1 |
| 7376959 | Warshavsky et al. | May 2008 | B2 |
| 7475107 | Maconi et al. | Jan 2009 | B2 |
| 7477897 | Bye | Jan 2009 | B2 |
| 7496637 | Han et al. | Feb 2009 | B2 |
| 7499990 | Tai et al. | Mar 2009 | B1 |
| 7502615 | Wilhoite et al. | Mar 2009 | B2 |
| 7506309 | Schaefer | Mar 2009 | B2 |
| 7519455 | Weiss et al. | Apr 2009 | B2 |
| 7566002 | Love et al. | Jul 2009 | B2 |
| 7643447 | Watanuki et al. | Jan 2010 | B2 |
| 7660777 | Hauser | Feb 2010 | B1 |
| 7660780 | Patoskie | Feb 2010 | B1 |
| 7664721 | Hauser | Feb 2010 | B1 |
| 7698243 | Hauser | Apr 2010 | B1 |
| 7702602 | Hauser | Apr 2010 | B1 |
| 7702603 | Hauser | Apr 2010 | B1 |
| 7702604 | Hauser | Apr 2010 | B1 |
| 7774789 | Wheeler | Aug 2010 | B1 |
| 7810140 | Lipari et al. | Oct 2010 | B1 |
| 7823169 | Wheeler | Oct 2010 | B1 |
| 7840513 | Hauser | Nov 2010 | B2 |
| 7844759 | Cowin | Nov 2010 | |
| 20010029526 | Yokoyama et al. | Oct 2001 | A1 |
| 20010051515 | Rygaard | Dec 2001 | A1 |
| 20010056425 | Richard | Dec 2001 | A1 |
| 20020032783 | Tuatini | Mar 2002 | A1 |
| 20020035429 | Banas | Mar 2002 | A1 |
| 20020091680 | Hatzis et al. | Jul 2002 | A1 |
| 20020115445 | Myllymaki | Aug 2002 | A1 |
| 20020116454 | Dyla et al. | Aug 2002 | A1 |
| 20020159479 | Watanuki et al. | Oct 2002 | A1 |
| 20020174222 | Cox | Nov 2002 | A1 |
| 20020196771 | Vij et al. | Dec 2002 | A1 |
| 20030009539 | Hattori | Jan 2003 | A1 |
| 20030018950 | Sparks et al. | Jan 2003 | A1 |
| 20030023573 | Chan et al. | Jan 2003 | A1 |
| 20030033437 | Fischer et al. | Feb 2003 | A1 |
| 20030046377 | Daum et al. | Mar 2003 | A1 |
| 20030046432 | Coleman et al. | Mar 2003 | A1 |
| 20030051172 | Lordermann et al. | Mar 2003 | A1 |
| 20030055898 | Yeager et al. | Mar 2003 | A1 |
| 20030070071 | Riedel et al. | Apr 2003 | A1 |
| 20030101441 | Harrison et al. | May 2003 | A1 |
| 20030177170 | Glass | Sep 2003 | A1 |
| 20030191797 | Gurevich et al. | Oct 2003 | A1 |
| 20030191969 | Katsikas | Oct 2003 | A1 |
| 20030225789 | Bussler et al. | Dec 2003 | A1 |
| 20030225935 | Rivard et al. | Dec 2003 | A1 |
| 20040003243 | Fehr et al. | Jan 2004 | A1 |
| 20040015539 | Alegria et al. | Jan 2004 | A1 |
| 20040037315 | Delautre et al. | Feb 2004 | A1 |
| 20040044985 | Kompalli et al. | Mar 2004 | A1 |
| 20040044986 | Kompalli et al. | Mar 2004 | A1 |
| 20040044987 | Kompalli et al. | Mar 2004 | A1 |
| 20040064503 | Karakashian et al. | Apr 2004 | A1 |
| 20040078423 | Satyavolu et al. | Apr 2004 | A1 |
| 20040078687 | Partamian et al. | Apr 2004 | A1 |
| 20040082350 | Chen et al. | Apr 2004 | A1 |
| 20040088369 | Yeager et al. | May 2004 | A1 |
| 20040111730 | Apte | Jun 2004 | A1 |
| 20040133656 | Butterworth et al. | Jul 2004 | A1 |
| 20040148073 | Hawig et al. | Jul 2004 | A1 |
| 20040172614 | Gallagher | Sep 2004 | A1 |
| 20040194072 | Venter | Sep 2004 | A1 |
| 20040203731 | Chen et al. | Oct 2004 | A1 |
| 20040220952 | Cheenath | Nov 2004 | A1 |
| 20040221292 | Chiang et al. | Nov 2004 | A1 |
| 20050004727 | Remboski et al. | Jan 2005 | A1 |
| 20050030202 | Tsuboi | Feb 2005 | A1 |
| 20050090279 | Witkowski et al. | Apr 2005 | A9 |
| 20050114832 | Manu | May 2005 | A1 |
| 20050141706 | Regli et al. | Jun 2005 | A1 |
| 20050144218 | Heintz | Jun 2005 | A1 |
| 20050163549 | Shima et al. | Jul 2005 | A1 |
| 20050172123 | Carpentier et al. | Aug 2005 | A1 |
| 20050246302 | Lorenz et al. | Nov 2005 | A1 |
| 20050256614 | Habermas | Nov 2005 | A1 |
| 20050256876 | Eidson | Nov 2005 | A1 |
| 20050262155 | Kress et al. | Nov 2005 | A1 |
| 20050281363 | Qi et al. | Dec 2005 | A1 |
| 20060005177 | Atkin et al. | Jan 2006 | A1 |
| 20060031850 | Falter et al. | Feb 2006 | A1 |
| 20060040640 | Thompson et al. | Feb 2006 | A1 |
| 20060041337 | Augsburger et al. | Feb 2006 | A1 |
| 20060048145 | Celli et al. | Mar 2006 | A1 |
| 20060080646 | Aman | Apr 2006 | A1 |
| 20060090103 | Armstrong et al. | Apr 2006 | A1 |
| 20060111089 | Winter et al. | May 2006 | A1 |
| 20060112183 | Corson et al. | May 2006 | A1 |
| 20060121916 | Aborn et al. | Jun 2006 | A1 |
| 20060123396 | Fox et al. | Jun 2006 | A1 |
| 20060143600 | Cottrell et al. | Jun 2006 | A1 |
| 20060149746 | Bansod et al. | Jul 2006 | A1 |
| 20060167981 | Bansod et al. | Jul 2006 | A1 |
| 20060173857 | Jackson | Aug 2006 | A1 |
| 20060190931 | Scott et al. | Aug 2006 | A1 |
| 20060200494 | Sparks | Sep 2006 | A1 |
| 20060206864 | Shenfield et al. | Sep 2006 | A1 |
| 20060220900 | Ceskutti et al. | Oct 2006 | A1 |
| 20060221901 | Yaqub et al. | Oct 2006 | A1 |
| 20060245406 | Shim | Nov 2006 | A1 |
| 20060256008 | Rosenberg | Nov 2006 | A1 |
| 20060272002 | Wightman et al. | Nov 2006 | A1 |
| 20070004432 | Hwang et al. | Jan 2007 | A1 |
| 20070015495 | Winter et al. | Jan 2007 | A1 |
| 20070026871 | Wager | Feb 2007 | A1 |
| 20070103292 | Burkley et al. | May 2007 | A1 |
| 20070112773 | Joyce | May 2007 | A1 |
| 20070223432 | Badarinath | Sep 2007 | A1 |
| 20070243880 | Gits et al. | Oct 2007 | A1 |
| 20080077667 | Hwang et al. | Mar 2008 | A1 |
| 20100161543 | Hauser | Jun 2010 | A1 |
| 20100223210 | Patoskie | Sep 2010 | A1 |
| 20100235459 | Wheeler | Sep 2010 | A1 |
| Number | Date | Country |
|---|---|---|
| 2005190103 | Jul 2005 | JP |