classpath-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cp-patches] FYI: CORBA doc update.


From: Meskauskas Audrius
Subject: [cp-patches] FYI: CORBA doc update.
Date: Tue, 09 Aug 2005 13:35:13 +0200
User-agent: Mozilla Thunderbird 1.0.2 (Windows/20050317)

2005-08-09  Audrius Meskauskas  <address@hidden>

* org/omg/CORBA/package.html: Documentation update.
* org/omg/DynamicAny/package.html: New file.

DynAny's allow to work with data structures, exact content of those is not known at the time of compilation. In this way, the conception of DynAny remebers the java reflection mechanism. DynAny usually obtain the value from the address@hidden org.omg.CORBA.Any} that, if needed, can carry highly nested data structures (like array of sequences of unions). DynAny's allow to see/modify all parts of such structures. This is especially helpful for writing generic servers (bridges, event channels supporting, filtering and so on). Similarly, DynAny's can create an Any at runtime, without having static knowledge of its type. This is helpful for writing generic clients like browsers, debuggers or user interface tools.

The API clearly states that DynAny and DynAnyFactory objects are local and cannot be transferred to remote server or client. While such methods are formally defined in the corresponding helpers, they simply always throw MARSHAL.

DynAny's are created by address@hidden DynAnyFactory}. The factory is obtaines by address@hidden org.omg.CORBA.ORB#resolve_initial_references): ORB orb = ORB.init(new String[0], null); DynAnyFactory f = DynAnyFactoryHelper.narrow(orb.resolve_initial_references("DynAnyFactory")); DynAny's are also returned by some methods, invoked on another DynAny.

The primitive types like string or char are wrapped into an ordinary DynAny. It has multiple methods for setting/getting the content like address@hidden DynAnyOperations#get_string()} or address@hidden DynAnyOperations#insert_string(String)}. The more complex types like sequences or structures are wrapped into specialised DynAny's, providing means to access the enclosed members. In this case, the DynAny has the "internal cursor", normally pointing at one of the members in the data structure. The "internal cursor" can be set to the needed position address@hidden DynAnyOperations#seek(int)} or advanced forward (address@hidden DynAnyOperations#next()}. The member under cursor is returned by address@hidden DynAnyOperations#current_component()}. For composite DynAnys the methods like address@hidden DynAnyOperations#get_string()} or address@hidden DynAnyOperations#insert_string(String)} apply to the selected member, not to the complex DynAny in general.

DynAnys are created and optimized for traversing values extracted from anys or constructing values of anys at runtime. OMG does not recommend to use them for other purposes.

@author Audrius Meskauskas, Lithuania (address@hidden)

Index: org/omg/CORBA/package.html
===================================================================
RCS file: /cvsroot/classpath/classpath/org/omg/CORBA/package.html,v
retrieving revision 1.5
diff -u -r1.5 package.html
--- org/omg/CORBA/package.html  2 Jul 2005 20:32:58 -0000       1.5
+++ org/omg/CORBA/package.html  9 Aug 2005 10:50:22 -0000
@@ -40,41 +40,59 @@
 <head><title>GNU Classpath - org.omg.CORBA</title></head>
 
 <body>
-This package provides the support of <a href="www.omg.org">OMG</a> 
-<a href="www.CORBA.org">CORBA</a>; see <a href="#overview">overview</a> 
-of the implemented functionality. CORBA is an open, vendor independent 
-system that applications use to work together over networks.  Thie purpose 
-of this package is to provide CORBA APIs to java programming language, 
-including the fully functional Object Request Broker (address@hidden 
org.omg.CORBA.ORB}). 
-
+This package provides the support of <a href="http://www.CORBA.org";>CORBA</a>;
+see <a href="#overview">overview</a> of the implemented functionality. 
+CORBA a system that applications use to work over networks. CORBA messages 
+are binary, not text oriented. They practically cary no "data wrapping" 
+information like XML &lt;opening&gt; &lt;/closing&gt; tags. Hence CORBA 
+objects much easier exchange large amounts of binary data. CORBA can work
+in such data-intensive application areas as telecommunications or radio
+broadcasting.
 <a name="overview">
 <h4>Overview of the currently implemented CORBA functionality</h4>
-<p>The CORBA implementation in the Classpath project is now a working 
prototype.
- This prototype is interoperable with Sun's implementation v 1.4, transferring 
- object references, primitive types, narrow and wide strings, arrays, 
structures 
- and trees between these two platforms. The thrown exceptions are also 
transferred 
- and handled. The support for stringified object references (IORs) is 
implemented.
- The redirection commands works, LOCATION_FORWARD_PERM changing the target 
address
- until the application is restarted and LOCATION_FORWARD redirecting for the
- current session only. Both Little and Big Endian encoded messages
- are accepted. The encoding of the sent messages is the same as used in the 
- stringified IOR reference of that object or Big Endian, if no such data
- available.
- </p>
-  <p>
- The current release supports the Value types that appeared since v 1.3 and are
- something between CORBA structures (no methods, data local) and CORBA objects
- (both methods and data remote). Value type has local data, can have
- local methods and is transferred by value, not by IOR reference. 
- </p>
- <p>
- You can use both request-oriented (based on address@hidden 
org.omg.CORBA.Request}) 
- and stream-oriented (based on address@hidden 
org.omg.CORBA.portable.ObjectImpl}) 
- invocation models. The current release includes the working examples, 
demonstrating
- the client-server communication using both methods. These examples also show, 
- how to use the Classpath naming service. The IDL compiler is not yet written, 
- but as a side effect of the required compatibility, the implementation seems 
- accepting the output of the Sun's 1.3 idlj.</p>
+The CORBA implementation in the Classpath project is now a working
+prototype. 
+<ul>
+<li>This prototype is interoperable with Sun's implementation v 1.4, 
+transferring object references, primitive types, narrow and wide strings,
+arrays, structures  and trees between these two platforms.
+</li>
+<li>The prototype provides interoperable support for the Abstract interface
+ and Value types. Those appear in 1.3, being a feature of CORBA 2.3.
+</li>
+<li>The remote exceptions are also transferred and handled as expected.
+</li>
+<li>The support for parsing stringified object references (IORs), both 
+Big and Little Endian encoded, is implemented.
+</li>
+<li>The redirection commands works, LOCATION_FORWARD_PERM changing the 
+target address until the application is restarted and LOCATION_FORWARD 
+redirecting for the current session only.
+</li>
+<li>Both Little and Big Endian encoded messages are accepted. The encoding
+of the sent messages is the same as used in the stringified IOR reference
+of that object or Big Endian, if no such data available.
+</li>
+<li>You can use both request-oriented (based on address@hidden 
org.omg.CORBA.Request}
+and stream-oriented (based on address@hidden org.omg.CORBA.portable.ObjectImpl}
+invocation models. The current release includes the working examples,
+demonstrating the client-server communication using both methods.
+</li>
+<li>These examples also show,  how to use the Classpath naming service.
+</li>
+<li>The IDL compiler is not yet written (and not even started), but as a
+ side effect of the required compatibility, the implementation seems 
+accepting the output of the Sun's idlj.
+</li>
+<li>The Portable Object Adapter is already released. For details on POA,
+see the address@hidden org.omg.PortableServer} package.</li>
+<li>We provide the implementation of the address@hidden org.omg.DynamicAny}
+package. ORB returns the working DynAnyFactory that produces working
+DynAny's as defined in OMG specification.</li>
+<li>All GNU Classpath classes in omg.org namespace are newly written using
+ the OMG .pdf document (Version 3.0.3, formal/04-03-12).
+</li>
+</ul>
  
  @author Audrius Meskauskas, Lithuania (address@hidden)
 </body>

reply via email to

[Prev in Thread] Current Thread [Next in Thread]