Source: http://www.google.com/patents/US5949998
Timestamp: 2015-04-26 22:04:48
Document Index: 387596403

Matched Legal Cases: ['art. 2', 'art. 3', 'art. 8', 'art. 9', 'art. 19', 'art. 20', 'art. 25', 'art. 26', 'art 650', 'art 658', 'art 658', 'art 650']

Patent US5949998 - Filtering an object interface definition to determine services needed and ... - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inAdvanced Patent SearchPatentsA distributed object application builder apparatus filters an object definition to determine both information needed (plugs) and provided (sockets) by an object. Each part (a run-time instance of an object) in the builder has plugs and sockets interconnected to other parts to define a distributed object...http://www.google.com/patents/US5949998?utm_source=gb-gplus-sharePatent US5949998 - Filtering an object interface definition to determine services needed and providedAdvanced Patent SearchPublication numberUS5949998 APublication typeGrantApplication numberUS 08/675,094Publication dateSep 7, 1999Filing dateJul 3, 1996Priority dateJul 3, 1996Fee statusPaidAlso published asEP0817034A2, EP0817034A3, US6083277Publication number08675094, 675094, US 5949998 A, US 5949998A, US-A-5949998, US5949998 A, US5949998AInventorsBrad G. Fowlow, Gregory B. Nuyens, Hans E. MullerOriginal AssigneeSun Microsystems, Inc.Export CitationBiBTeX, EndNote, RefManPatent Citations (15), Non-Patent Citations (5), Referenced by (29), Classifications (13), Legal Events (5) External Links: USPTO, USPTO Assignment, EspacenetFiltering an object interface definition to determine services needed and provided
US 5949998 AAbstract
1. In a distributed object application builder apparatus having a graphical user interface in which parts having plugs and sockets are interconnected to define distributed object application programs, said parts corresponding to components and representing distributed objects, a computer-implemented method of determining the plugs of a first part using said graphical user interface, said method comprising the steps of:identifying the first part by performing a selection action on the first part, said first part being represented by a graphical representation; retrieving an interface for a first component that corresponds to the first part; determining at least one attribute from the retrieved interface, each determined attribute having an associated attribute type; determining at least one operation from the retrieved interface, each determined operation having an associated operation type; retrieving a factory argument list from a factory method associated with said first component; identifying at least one input argument from the retrieved factory argument list, each identified input argument having an associated input argument type; and indicating visually that said at least one attribute, said at least one operation and said at least one input argument are the determined plugs of the first part. 2. A method as recited in claim 1 further comprising the steps of:identifying a second part; choosing a socket associated with the second part; determining whether the chosen socket of the second part is compatible with a determined plug of said first part; and indicating that the chosen socket of the second part is compatible with said determined plug of the first part when the chosen socket of the second part is determined to be compatible with said determined plug of said first part. 3. A method as recited in claim 2 wherein determining whether the chosen socket of the second part is compatible with a determined plug is performed by determining whether the plug type of a determined plug is one of the following: a CORBA object, the type of the chosen socket or the type of a class from which the chosen socket inherits.
7. In a distributed object application builder apparatus having a graphical user interface in which parts having plugs and sockets are interconnected to define distributed object application programs, said parts corresponding to components and representing distributed objects, a computer-implemented method of determining the sockets of a first part using said graphical user interface said method comprising the steps of:identifying the first part by performing a selection action on the first part, said first part being represented by a graphical representation; retrieving an interface for a first component that corresponds to the first part; determining each attribute from the retrieved interface, each determined attribute having an associated attribute type; determining each operation from the retrieved interface that returns an operation result, each determined operation having an associated operation result type; and indicating visually that said determined attributes and said determined operations are the determined sockets of the first part. 8. A method as recited in claim 7 further comprising the steps of:identifying a second part; choosing a plug associated with the second part; determining whether the chosen plug of the second part is compatible with a determined socket of said first part; and indicating that the chosen plug of the second part is compatible with said determined socket of the first part when the chosen plug of the second part is determined to be compatible with said determined socket of said first part. 9. A method as recited in claim 8 wherein determining whether the chosen plug of the second part is compatible with a determined socket is performed by determining whether the socket type of a determined socket is one of the following: the type of the chosen plug or the type of a class from which the chosen plug inherits.
13. A method as recited in claim 7 further comprising the steps of:choosing one of the indicated determined sockets of the first part; retrieving a chosen interface for a chosen component that corresponds to the chosen socket; determining each attribute from the chosen interface having an associated attribute type; determining each operation from the chosen interface that returns an operation result having an associated operation result type, together the determined attributes and the determined operation results constituting the sockets of the chosen socket; and indicating the determined sockets of the chosen socket. 14. A method as recited in claim 13 wherein the sockets are determined in a recursive manner and are displayed visually in a hierarchical order.
15. In a distributed object application builder apparatus in which parts having plugs and sockets are interconnected to define distributed object application programs, said parts corresponding to components and representing distributed objects, said components being located in a component catalog, a computer-implemented method of creating a distributed object application program comprising the steps of:choosing a first component from said component catalog; creating a first part corresponding to said first component; retrieving a first interface for said first component that corresponds to said first part; filtering said first interface in order to produce a list of plugs and sockets for said first part; choosing a second component from said component catalog; creating a second part corresponding to said second component; retrieving a second interface for said second component that corresponds to said second part; filtering said second interface in order to produce a list of plugs and sockets for said second part; and connecting a first plug from said first part to a first socket of said second part to form a connection in order to at least partially define said distributed object application program, whereby when said distributed object application program is executing said second part is arranged to pass information to said first part through said connection. 16. A method as recited in claim 15 wherein said distributed object application builder apparatus has a graphical user interface and said steps of choosing a first component and connecting a first plug are performed in said graphical user interface by selection gestures.
18. A computer program product comprising a computer-usable medium having computer-readable program code embodied thereon for determining the plugs of a first part using a graphical user interface of a distributed object application builder apparatus in which parts having plugs and sockets are interconnected to define distributed object application programs, said parts corresponding to components and representing distributed objects, the computer program product comprising computer-readable program code for effecting the following steps within a computer system:identifying the first part by performing a selection action on the first part, said first part being represented by a graphical representation; retrieving an interface for a first component that corresponds to the first part; determining at least one attribute from the retrieved interface, each determined attribute having an associated attribute type; determining at least one operation from the retrieved interface, each determined operation having an associated operation type; retrieving a factory argument list from a factory method associated with said first component; identifying at least one input argument from the retrieved factory argument list, each identified input argument having an associated input argument type; and indicating visually that said at least one attribute, said at least one operation and said at least one input argument are the determined plugs of the first part. 19. A computer program product as recited in claim 18 further comprising program code for:identifying a second part; choosing a socket associated with the second part; determining whether the chosen socket of the second part is compatible with a determined plug of said first part; and indicating that the chosen socket of the second part is compatible with said determined plug of the first part when the chosen socket of the second part is determined to be compatible with said determined plug of said first part. 20. A computer program product as recited in claim 19 wherein the program code for determining whether the chosen socket of the second part is compatible with a determined plug includes program code for determining whether the plug type of a determined plug is one of the following: a CORBA object, the type of the chosen socket or the type of a class from which the chosen socket inherits.
24. A computer program product comprising a computer-usable medium having computer-readable program code embodied thereon for determining the sockets of a first part using a graphical user interface of a distributed object application builder apparatus in which parts having plugs and sockets are interconnected to define distributed object application programs, said parts corresponding to components and representing distributed objects, the computer program product comprising computer-readable program code for effecting the following steps within a computer system:identifying the first part; retrieving an interface for a first component that corresponds to the first part; determining each attribute from the retrieved interface, each determined attribute having an associated attribute type; determining each operation from the retrieved interface that returns an operation result, each determined operation having an associated operation result type; and indicating said determined attributes and said determined operations as being the determined sockets of the first part. 25. A computer program product as recited in claim 24 further comprising program code for effecting the following steps:identifying a second part; choosing a plug associated with the second part; determining whether the chosen plug of the second part is compatible with a determined socket of said first part; and indicating that the chosen plug of the second part is compatible with said determined socket of the first part when the chosen plug of the second part is determined to be compatible with said determined socket of said first part. 26. A computer program product as recited in claim 25 wherein determining whether the chosen plug of the second part is compatible with a determined socket is performed by determining whether the socket type of a determined socket is one of the following: the type of the chosen plug or the type of a class from which the chosen plug inherits.
30. A computer program product as recited in claim 24 further comprising program code for effecting the steps of:choosing one of the indicated determined sockets of the first part; retrieving a chosen interface for a chosen component that corresponds to the chosen socket; determining each attribute from the chosen interface having an associated attribute type; determining each operation from the chosen interface that returns an operation result having an associated operation result type, together the determined attributes and the determined operation results constituting the sockets of the chosen socket; and indicating the determined sockets of the chosen socket. 31. A computer program product as recited in claim 30 wherein the sockets are determined in a recursive manner and are displayed visually in a hierarchical order.
32. A computer program product comprising a computer-usable medium having computer-readable program code embodied thereon for creating a distributed object application program in a distributed object application builder apparatus in which parts having plugs and sockets are interconnected to define distributed object application programs, said parts corresponding to components and representing distributed objects, said components being located in a component catalog, the computer program product comprising computer-readable program code for effecting the following steps within a computer system:choosing a first component from said component catalog; creating a first part corresponding to said first component; retrieving a first interface for said first component that corresponds to said first part; filtering said first interface in order to produce a list of plugs and sockets for said first part; choosing a second component from said component catalog; creating a second part corresponding to said second component; retrieving a second interface for said second component that corresponds to said second part; filtering said second interface in order to produce a list of plugs and sockets for said second part; and connecting a first plug from said first part to a first socket of said second part to form a connection in order to at least partially define said distributed object application program, whereby when said distributed object application program is executing said second part is arranged to pass information to said first part through said connection. 33. A computer program product as recited in claim 32 wherein said distributed object application builder apparatus has a graphical user interface and said steps of choosing a first component and connecting a first plug are performed in said graphical user interface by selection gestures.
35. A computer apparatus for use in visually determining the sockets of a first part in a distributed object application builder apparatus in which parts having plugs and sockets are interconnected to define distributed object application programs, said parts corresponding to components and representing distributed objects, the computer apparatus comprising:a graphical user interface; a processing unit; an input/output device coupled to the processing unit; a storage device in communication with the processing unit, the storage device including,program code for identifying the first part by performing a selection action on the first part, said first pa being represented by a graphical representation, program code for retrieving an interface for a first component that corresponds to the first part, program code for determining each attribute from the retrieved interface, each determined attribute having an associated attribute type; program code for determining each operation from the retrieved interface that returns an operation result, each determined operation having an associated operation result type, and program code for indicating visually that said determined attributes and said determined operations are the determined sockets of the first part. Description
Shown within the composition builder 58 is an inserted Part A 80 that corresponds to component A 70. This Part A has defined upon it an Operation 1 and an Attribute Y. The argument to Operation 1 is Argument X that constitutes one possible plug 82 of Part A 80. Operation 1 returns a value that constitutes one possible socket 84 of part A. Also, Attribute Y needs a value as shown by plug 86. And once Attribute Y has a value, it becomes a socket 88 of part A. Of course, many other plugs and sockets for Part A are possible. This Part A used at development time represents the run-time Object A 90 as indicated by dashed arrow 89. In other words, at run-time this Part A will be instantiated as Object A and used in the execution of the application program. The arguments, operation results and attributes of an object will have real values at run-time. By way example, for Object A the Argument X for Operation 1 is the document "Letter-- 12/15/95" indicating that this argument is a file containing a letter written on Dec. 15, 1995. Likewise, the Attribute Y has the value of "15". It is also contemplated that values for the arguments and attributes of a part may be set within the builder 58 by way of a user interface as explained below with reference to FIG. 4.
FIGS. 8 and 9 illustrate different aspects of the inspector according to embodiments of the present invention. In FIG. 8 the inspector is used to choose a socket, while in FIG. 9 the inspector is used to choose a socket after a plug has been chosen. Accordingly, the inspector 206 as shown in FIG. 5 will now be described. This view of the inspector relates to the sequence of steps shown in FIG. 9, although it will be apparent from the explanation below that a similar version of the inspector is applicable to FIG. 8. The inspector 206 includes column headings 602 and the contents of the columns at 604. Although only three columns are shown, it should be appreciated that any number of columns may be present in the inspector as a socket may be associated with additional other sockets. For example, if an operation is chosen for the socket of a part, that operation may in turn require arguments that receive values from other sockets. These other sockets are also listed within the inspector in a different column. And recursively, these other sockets may in turn receive services from additional sockets that will be listed in yet another column. Thus, numerous columns may be presented. Such a relationship among sockets will also be referred to herein as "tunneling". The inspector shown has a first column 630 that indicates all of the plugs of the part 650. Shown in particular are the plugs "accumulate" and "set-reporter" for the part "accumulator". These plugs may be viewed by selecting the plug icon 654. The plug "accumulate" is highlighted to indicate that it has been chosen for making a connection. Next, is a second column 606 that indicates the sockets of a particular part. Shown in particular is the part 658 "naming context" that has sockets "itself" and "new-- contex". These sockets may be viewed by selecting the socket icon 660. The socket "new-- context" is highlighted to indicate that it has been chosen for making a connection. Once a socket is chosen from the second column, it may reference further sockets that will then appear in a third column 608. Thus, this third column is labeled "new-- context", and its sockets appear below. This is due to the "tunneling" relationship described above.
Step 708 now checks whether the user has chosen an element from a list of sockets in one of the columns of the inspector. If this is the first pass through this procedure and Current Interface is the supported interface, then all of the above-identified sockets for this part will appear in a first column of the inspector. Thus, the user might choose the element "itself", or may choose one of the determined attributes or operations. By way of example, FIG. 5 shows a situation in which the developer has chosen the highlighted socket "new-- context" from the part "naming context". If, however, the developer does not choose an element, control moves to step 714 that will be explained below. However if the developer does choose another element then control moves to step 709.
In step 709 the variable Current Path is reassigned to the previous value of the variable Current Path plus the element chosen by the developer. By way of example, FIG. 5 shows a situation in which the variable Current Path is set to "naming context, new-- context". Next, in step 710 the interface for that recently chosen socket is retrieved. In addition, the variable Current Interface is updated to be set equal to this newly retrieved interface. Next, this recently retrieved interface must be processed as above in order to determine which sockets it provides. Accordingly, steps 704 and 706 will be repeated in order to determine these new sockets. Therefore, in step 712 a new column for the inspector is initialized and displayed in order to hold the new sockets that will be determined from the Current Interface. By way of example, FIG. 5 shows a situation in which a new third column 608 entitled "new-- context" has been initialized and displayed. The column is entitled "new-- context" because it will display all of the sockets for the "new-- context" socket of "naming context" as shown in the second column.
From step 712 control loops back to step 704 in which the sockets for this Current Interface will be determined and the developer will be allowed to choose one of these sockets. By way of example, FIG. 5 shows a situation in which the interface for the object "new-- context" has been filtered and its determined sockets have been displayed in the third column. Shown are the sockets "itself" and "new-- context" of the object "new-- context". Note that although these new sockets are displayed, the developer has elected not to choose one of these new sockets (as indicated by a lack of highlighting), and has remained with the highlighted socket "new-- context" from the second column. Depending upon the nature of a socket and its interface, it is conceivable that this procedure may be repeated indefinitely. However, based upon a particular implementation of an interface, at some point in step 708 the developer will not choose another socket and control will move to step 714.
In step 714, because no new socket has been chosen from the third column, the socket that is currently highlighted will be named by the value of the Current Path. By way of example, the inspector 206 of FIG. 5 shows a situation in which the final value of Current Path is "naming context, new-- context". If the developer had chosen the socket "itself" from the third column, then the final value of Current Path would be "naming context, new-- context, itself". This socket may now be used by the developer to establish a connection to the previously selected plug of another part. By way of example, FIG. 5 shows a situation in which the chosen socket is "new-- context" of part 658 "naming context" that is desired to be connected to the plug "accumulate" of part 650.
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS5261098 *Aug 28, 1991Nov 9, 1993Sun Microsystems, Inc.Method and apparatus for deriving object type and obtaining object type attribute valuesUS5339419 *Jun 25, 1990Aug 16, 1994Hewlett-Packard CompanyANDF compiler using the HPcode-plus compiler intermediate languageUS5339433 *Nov 19, 1992Aug 16, 1994Borland International, Inc.Symbol browsing in an object-oriented development systemUS5392448 *Dec 14, 1993Feb 21, 1995Spectron Microsystems, Inc.Real-time operating system and virtual digital signal processor for the control of a computerUS5414806 *Aug 12, 1993May 9, 1995International Business Machines CorporationPalette and parts view of a composite object in an object oriented computer systemUS5446902 *Jul 14, 1993Aug 29, 1995Sun Microsystems, Inc.Method for implementing computer applications in an object oriented manner using a traditional non-object oriented programming languageUS5450583 *Jun 22, 1992Sep 12, 1995Fujitsu LimitedObject-oriented language processing systemUS5475817 *Nov 30, 1993Dec 12, 1995Hewlett-Packard CompanyObject oriented distributed computing system processing request to other object model with code mapping by object managers located by manager of object managersUS5524246 *Jun 6, 1995Jun 4, 1996At&T Corp.Method and apparatus for configuring computer programs from available subprogramsUS5659735 *Dec 9, 1994Aug 19, 1997Object Technology Licensing Corp.Object-oriented system for program version and history database management system for various program componentsUS5671415 *Jun 1, 1994Sep 23, 1997The Dow Chemical CompanySystem and method for facilitating software developmentUS5692183 *Mar 31, 1995Nov 25, 1997Sun Microsystems, Inc.Computer-implemented methodUS5699310 *Jan 26, 1994Dec 16, 1997Dynasty Technologies, Inc.Method and apparatus for a fully inherited object-oriented computer system for generating source code from user-entered specificationsUS5721911 *Jun 25, 1996Feb 24, 1998International Business Machines CorporationIn a computing systemUS5724589 *Oct 13, 1995Mar 3, 1998Borland International, Inc.In a computer system* Cited by examinerNon-Patent CitationsReference1 *Al Salquant et al., Media Wave: A Distributed Multimedia Environment with Interopenability, Enabling Technologies, 1995 Workshop, pp. 128 137 Apr. 1995.2Al-Salquant et al., Media Wave: A Distributed Multimedia Environment with Interopenability, Enabling Technologies, 1995 Workshop, pp. 128-137 Apr. 1995.3 *Cobra Specification, Revision 2.0, Jul. 1995. Object Management Group, Inc., entire document Jul. 1995.4 *Gamma et al., Factory Method Design Patterns Elements of Reusable Object Oriented Software, pp. 107 116 Dec. 1994.5Gamma et al., Factory Method Design Patterns-Elements of Reusable Object--Oriented Software, pp. 107-116 Dec. 1994.* Cited by examinerReferenced byCiting PatentFiling datePublication dateApplicantTitleUS6083277 *Jun 29, 1999Jul 4, 2000Sun Microsystems, Inc.Filtering an object interface definition to determine services needed and providedUS6189138 *Sep 21, 1999Feb 13, 2001Sun Microsystems, Inc.Visual composition tool for constructing application programs using distributed objects on a distributed object networkUS6292827 *Jun 20, 1997Sep 18, 2001Shore Technologies (1999) Inc.Information transfer systems and method with dynamic distribution of data, control and management of informationUS6345316 *Jun 9, 1998Feb 5, 2002International Business Machines CorporationApparatus, method and computer program product for client/server computing with the ability to select which servers are capable of creating transaction state dataUS6389540Mar 30, 2000May 14, 2002Sun Microsystems, Inc.Stack based access control using code and executor identifiersUS6427230 *Nov 9, 1998Jul 30, 2002Unisys CorporationSystem and method for defining and managing reusable groups software constructs within an object management systemUS6499049Sep 19, 2001Dec 24, 2002Sun Microsystems, Inc.Lease renewal serviceUS6567820Nov 21, 2000May 20, 2003Sun Microsystems, Inc.Method and system for in-place modifications in a databaseUS6581094 *Nov 2, 1999Jun 17, 2003Sun Microsystems, Inc.Apparatus and method for identifying a digital device based on the device's uniform device descriptor file that specifies the attributes of the device in a XML document in a networked environmentUS6637019 *Apr 10, 2000Oct 21, 2003International Business Machines CorporationSoftware modeling of computer hardwareUS6785882 *May 24, 1999Aug 31, 2004Unisys CorporationProcess-driven tool interface for an object management systemUS6829632 *Jun 9, 1998Dec 7, 2004International Business Machines CorporationApparatus, method and computer program product for client/server computing with timing of creation of coordinator transaction state object being based on triggering eventsUS6845393Nov 17, 1999Jan 18, 2005Sun Microsystems, Inc.Lookup discovery service in a distributed system having a plurality of lookup services each with associated characteristics and servicesUS6996816 *Oct 2, 2000Feb 7, 2006Hewlett-Packard Development Company, L.P.Utilization of third party legacy data listUS7003777 *Jun 20, 2001Feb 21, 2006Intel CorporationCoordination-centric framework for software design in a distributed environmentUS7039673 *Dec 24, 1998May 2, 2006Computer Associates Think, Inc.Method and apparatus for dynamic command extensibility in an intelligent agentUS7062749 *Dec 15, 2000Jun 13, 2006Promenix, Inc.Measuring, monitoring and tracking enterprise communications and processesUS7409443 *Nov 12, 2004Aug 5, 2008International Business Machines CorporationMethod, apparatus and article of manufacture for tracking network socket usage in a data communication networkUS7603674Apr 5, 2006Oct 13, 2009Yyz, LlcApparatus and systems for measuring, monitoring, tracking and simulating enterprise communications and processesUS7921216 *Feb 1, 2005Apr 5, 2011Microsoft CorporationSystem and method for building and using communication binding objectsUS8020149 *Aug 4, 2006Sep 13, 2011Apple Inc.System and method for mitigating repeated crashes of an application resulting from supplemental codeUS8046747Feb 17, 2006Oct 25, 2011Yyz, LlcApparatus and systems for measuring, monitoring, tracking and simulating enterprise communications and processesUS8382269Apr 13, 2010Feb 26, 2013Xerox CorporationSystem and method that enables a solid ink printer to learn a solid ink stick typeUS8407368May 30, 2008Mar 26, 2013International Business Machines CorporationTracking network socket usage in a data communication networkUS8438546Aug 9, 2011May 7, 2013Apple Inc.System and method for mitigating repeated crashes of an application resulting from supplemental codeUS8678575Dec 5, 2012Mar 25, 2014Xerox CorporationMethod that enables a solid ink printer to learn a solid ink stick typeWO2000026817A1 *Oct 26, 1999May 11, 2000Genesys Telecomm Lab IncA stored-media interface engine providing an abstract record of stored multimedia files within a multimedia communication centerWO2000039695A1 *Dec 22, 1999Jul 6, 2000Platinum Technology Ip IncMethod and apparatus for dynamic command extensibility in an intelligent agentWO2003058474A1 *Jan 6, 2003Jul 17, 2003Nokia CorpSystem and method for facilitating access to network based services* Cited by examinerClassifications U.S. Classification717/105, 717/103, 719/328International ClassificationG06F9/44, G06F9/06, G06F9/46Cooperative ClassificationY10S707/99945, Y10S715/967, Y10S715/968, G06F9/465, G06F8/34European ClassificationG06F8/34, G06F9/46MLegal EventsDateCodeEventDescriptionFeb 10, 2011FPAYFee paymentYear of fee payment: 12Feb 9, 2007FPAYFee paymentYear of fee payment: 8Feb 28, 2003FPAYFee paymentYear of fee payment: 4Apr 17, 2001CCCertificate of correctionJul 3, 1996ASAssignmentOwner name: SUN MICROSYSTEMS, INC., CALIFORNIAFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FOWLOW, BRAD G.;NUYENS, GREGORY B.;MULLER, HANS E.;REEL/FRAME:008082/0477Effective date: 19960702RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services