Issues for Java to IDL RTF Discussion Mailing List

To comment on any of these issues, send email to java2idl-rtf@omg.org. (Please include the issue number in the Subject: header, thusly: [Issue ###].) To submit a new issue, send email to issues@omg.org.

List of Open Issues. Other options: All Issues; Closed Issues.

(red=unresolved; yellow=pending Board vote)

Issue 5853: ORB shutdown should be configurable
Issue 5879: Custom Marshaling Format Clarification
Issue 5891: Guidance on RepositoryIDs for primitive types
Issue 7595: No wire format defined for java.lang.reflect.Proxy classes

Issue 1578: Public method declarations in ResponseHandler interface (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: This item affects the Java-to-IDL spec, but is also of concern to the
 IDL-to-Java RTF because it relates to the new portability stub APIs.
 
 Section 7.2.2 of the Java to IDL mapping specifies a new interface
 ResponseHandler with methods createReply and createExceptionReply.
 These methods are declared as public.
 
 Section 9.4 of the Java Language Specification states that "Every
 method declaration in the body of an interface is implicitly public.
 It is permitted, but strongly discouraged as a matter of style, to
 redundantly specify the public modifier for interface methods."
 
 I propose that the public modifier be removed from these method
 declarations.
 

Resolution:
Revised Text:
Actions taken:
June 24, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1589: orb() method on InputStream (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: This item affects the Java-to-IDL spec, but is also of concern to the
 IDL-to-Java RTF because it relates to the new portability stub APIs.
 
 An orb() method is needed on org.omg.CORBA.portable.InputStream for
 SerializationInputStream to call to find which ORB to use for 
 lookup_value_factory during execution of read_Value.
 
 I propose adding an orb() method to org.omg.CORBA.portable.InputStream.
 

Resolution:
Revised Text:
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1590: Marshalling of Any, Context, Principal, and TypeCode (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: This item arises from the Java-to-IDL Mapping RFP, but is also of 
 concern to the IDL-to-Java RTF because it affects the IDL-to-Java
 mapping.
 
 How do SerializationInputStream and SerializationOutputStream marshal
 Any, Context, Principal, and TypeCode objects?  Is the same mechanism
 used as for user-defined IDL types, i.e., look for the IDLEntity
 marker interface and call the implementation helper class"s write
 or read method?  If so, we need to clarify that vendor implementation
 of these types must implement IDLEntity and provide a Helper class.
 
 I propose that we state in the spec that vendor implementations	of 
 these types must implement IDLEntity and provide a Helper class.
 

Resolution:
Revised Text:
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1591: Default Constructor for Stubs (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: This item arises from the Java-to-IDL Mapping RFP, but is also of 
 concern to the IDL-to-Java RTF because it affects the IDL-to-Java
 mapping.
 
 When adding support for idlToJava generated Stubs to 
 "InputStream.read_Object(java.lang.Class clz)" we ran into a small 
 problem while writing the code.  Initially we used "clz.newInstance()"
 to create an instance of the Stub object.  The problem here is the 
 Stub does not have a default constructor, so newInstance throws an
 exception.  We added a default constructor to the stub and everything
 worked fine.  The question is: should we add a default constructor to
 the stubs generated by idlToJava or should we use reflection(cost??) to
 invoke the one constructor that is already a member of the stub class?
 
 I propose that we state in the spec that a default constructor is
 required on all generated Stubs.
 
 

Resolution:
Revised Text:
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1592: How to make IDLEntity types serializable (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: This item arises from the Java-to-IDL Mapping RFP, but is also of 
 concern to the IDL-to-Java RTF because it affects the IDL-to-Java
 mapping.
 
 The Java to IDL mapping spec states that Java types produced by
 the direct mapping should implement IDLEntity and be serializable.
 This could be accomplished by having IDLEntity extend 
 Java.io.Serializable, or by having the generated types extend
 both IDLEntity and java.io.Serializable.  The spec should
 specify which of these approaches is to be used.
 

Resolution:
Revised Text:
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1594: SerializationInputStream and SerializationOutputStream (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: This item arises from the Java-to-IDL Mapping RFP, but is also of 
 concern to the Objects By Value RTF because it affects the Java
 ORB implementation of Objects By Value.
 
 The currently specified delegation relationship between 
 SerializationInputStream and SerializationOutputStream and their
 underlying ORB stream classes is inefficient and awkward.
 It is awkward because it requires the ORB implementation of the
 underlying streams to know about their "wrapper" serialization
 streams and to be careful to always pass out a reference to the
 wrapper instead of a "this" pointer.  It is inefficient because
 all items (even primitives) that are written to these streams 
 need to go through an extra delegation step through the wrapper 
 class as the underlying stream does not know whether it can
 safely bypass the wrapper method.
 

Resolution:
Revised Text:
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1595: Unicode example needs fixing (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary:  The Unicode example given in the spec (5.2.4) is x\u22aBy
     javac diagnoses \u22aB as an invalid character in an identifier.
 
     A Java identifier may only consist of Unicode characters that denote a
     letter or a digit in a language. \u22aB (apparently) does not.
 
     Try \u03bC instead. According to 8.2.1 it"s a Greek mu. javac is happy
     with it.
 
     Proposed resolution: fix example
 

Resolution:
Revised Text:
Actions taken:
June 29, 1998: received issue
February 23, 1999: close issue

Discussion:


Issue 1596: Mapping for nested sequences --- fix example (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary:  mapping for nested sequences:
     - error in section 5.6 sequence<seq_Y>
     - no occurrence of >> so no need for white space
 
     Proposed resolution: fix example in section 5.6
 

Resolution:
Revised Text:
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:
 resolved, close issue


Issue 1597: Need to emit ID pragmas after declarations (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 10. Need to emit ID pragmas after declarations
 

Resolution:
Revised Text: resolved, close issue
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1598: Lexigraphic sort for field names is before mangling (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: Lexigraphic sort for field names is before mangling
 
     Proposed resolution: clarify section 5.5.6
 

Resolution:
Revised Text: clarify section 5.5.6
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1599: Narrow signature does not allow use for abstract interfaces (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 12. Narrow signature does not allow use for abstract interfaces
 
     Proposed resolution: return java.lang.Object
 

Resolution:
Revised Text: return java.lang.Object
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1600: Section 5.7.4 : mapped IDL issue (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: In section 5.7.4 the mapped IDL for Thrower includes:
        FruitbatException getLastException();
     It should be
        readonly attribute ::omega::FruitbatException lastException;
 

Resolution:
Revised Text:
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:
 In section 5.7.4, example IDL, change



Issue 1601: Can toStub take a stub? (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary:  Can toStub take a stub?
 
     Proposed resolution: yes, in which case it"s a no-op.
 

Resolution:
Revised Text: yes, in which case it"s a no-op.
Actions taken:
June 29, 1998: received issue
February 24, 1999: closed issue

Discussion:


Issue 1602: Does toStub return most derived stub? (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 15. does toStub return most derived stub, or iterate looking for one?
 

Resolution:
Revised Text: resolved, close issue
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:
 received issue


Issue 1603: Clarify rules for mapping server-side errors and exceptions (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 17. Need to clarify rules for mapping server-side errors and runtime
     exceptions back to client exceptions.
 
     Proposed resolution: use omg.omg.CORBA.UNKNOWN
 
 

Resolution:
Revised Text:
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:
 issue resolved and fixed


Issue 1604: The generated IDL in A2 needs to be changed (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: The generated IDL in A2 needs to be changed.
 
     In particular, forward declares for fred.Test2 and fred.Stuff must
     appear before #includes, before sequence defs and before the module
     definition. Their #includes must appear at the end. In fact, just follow
     the file layout rules described at the beginning of the appendix. 
 
     If this is not done, there is a danger that circular references will
     lead to undeclared types when the IDL is compiled.
 
     Proposed resolution: fix example
 

Resolution:
Revised Text:
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1606: mangling rule for name clashes in IDL needs to be defined (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: Need to define a mangling rule for name clashes in IDL between 
     constant/method/attribute.
 

Resolution:
Revised Text:
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1607: Do we need to protect non-generated IDL files against multiple inclusion? (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: Do we need to protect non-generated IDL files against multiple
     inclusion?
 
     Proposed resolution: no protection
 
 

Resolution:
Revised Text:
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:
 No.--close issue


Issue 1608: Rules in section 7.4.4 for toStub IIOP/JRMP search not correct (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: Rules in section 7.4.4 for toStub IIOP/JRMP search aren"t quite correct.
     If the object has been exported as IIOP (i.e., an IIOP Tie exists),
     no attempt will be made to create a JRMP stub even if there is no IIOP
     stub class.
 
     Proposed resolution: clarify spec
 
 

Resolution:
Revised Text:
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1609: Should exportObject throw exceptions? (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 25. Should exportObject throw exceptions?
 

Resolution:
Revised Text: resolved, close issue
Actions taken:
June 29, 1998: received issue
February 23, 1999: closed issue

Discussion:
 received issue


Issue 1610: PortableRemoteObject toStub should throw NoSuchObject Exception (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary:  PortableRemoteObject.toStub should throw NoSuchObjectException if object
     has not been exported.
 

Resolution:
Revised Text:
Actions taken:
June 29, 1998: received issue

Discussion:
 received issue


Issue 1619: Abstract Interfaces issue (java2idl-rtf)

Click
here for this issue's archive.
Nature: Revision
Severity:
Summary:
Summary: The current Java to IDL mapping spec does not fully address support
 for abstract interfaces.  There is support for these in the
 Portability Interfaces chapter, but not in the RMI/IDL Subset or
 IDL Mapping chapters. 
 

Resolution:
Revised Text:
Actions taken:
June 30, 1998: received issue
February 24, 1999: closed issue

Discussion:


Issue 1620: Omission in section 5.4.5 (java2idl-rtf)

Click
here for this issue's archive.
Nature: Revision
Severity:
Summary:
Summary: The text in section 5.4.5 has no mention of String constants.
 This seems to be an accidental omission.  I propose replacing
 the text in this section by the text in section 5.5.5, with
 "value type" changed to "interface".
 

Resolution:
Revised Text:
Actions taken:
June 30, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1621: Stub methods for hashCode, equals and toString (java2idl-rtf)

Click
here for this issue's archive.
Nature: Revision
Severity:
Summary:
Summary: RMI/JRMP stubs provide overridden implementations for the
 hashCode, equals, and toString methods of java.lang.Object.
 
 The stub hashCode method returns the same hash code for
 different stubs that refer to the same remote object.
 The stub equals method returns true when stubs that refer
 to the same remote object are compared.  These methods allow
 remote objects to be held in Java collections.
 
 The stub toString method returns a string containing information
 about the remote object, not the local stub.
 
 RMI/IIOP stubs should provide equivalent methods.  The easiest
 way to do this is to add implementations of these three methods
 to the javax.rmi.CORBA.Stub base class.
 
 I propose that the definition of javax.rmi.CORBA.Stub in
 section 7.2.5 be modified to add these methods.
 

Resolution:
Revised Text:
Actions taken:
June 30, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1640: Should Portability APIs throw SystemException? (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: This item arises from the Java-to-IDL Mapping RFP, but is also of 
 concern to the IDL-to-Java RTF because it affects the IDL-to-Java
 mapping.
 
 Three of the new portability APIs intorduced by the Java to IDL mapping
 are declared as throwing org.omg.CORBA.SystemException.  These are
 the _invoke methods of ObjectImpl and Delegate and the _invoke method
 of InvokeHandler.  I don"t think this exception hould be declared
 explicitly, since it is a subclass of java.lang.RuntimeException and so 
 is always implictly throwable whether it is declared or not.  Also, 
 other portability APIs can throw this exception even though they do not 
 declare it explicitly.  This inconsistency makes it very difficult for
 the reader of the spec to determine which of the portability APIs can
 throw CORBA system exceptions, and is likely to cause confusion.
 
 I propose that org.omg.CORBA.SystemException be removed from the throws
 clause of the above-mentioned APIs.
 

Resolution:
Revised Text:
Actions taken:
July 8, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1641: Mapping of Java names that are IDL keywords (java2idl-rtf)

Click
here for this issue's archive.
Nature: Revision
Severity:
Summary:
Summary: The Java to IDL mapping spec says that a Java name that is an IDL
 keyword is mapped to a mangled name consisting of the IDL keyword 
 followed by a trailing underscore.  Now that the Objects By Value
 RTF has adopted escaped identifiers with keading underscores, we
 should revise this mapping to use escaped identifiers.
 I propose that section 5.2.2 of the Java to IDL mapping spec be
 changed to state that Java names that collide with IDL keywords 
 are mapped to IDL by adding a leading underscore, so that typedef
 would be mapped to _typedef.
 

Resolution:
Revised Text:
Actions taken:
July 8, 1998:
February 23, 1999: closed issue

Discussion:


Issue 1642: Java to IDL identifier mapping (java2idl-rtf)

Click
here for this issue's archive.
Nature: Revision
Severity:
Summary:
Summary: orbos/98-02-01 says:
 
 	We have provided name manglings to work around [the limitations],
 	but we recommend that OMG consider extending the definitions of
 	IDL identifiers so that a wider range of unicode characters can
 	be supported and so that case is significant in distinguishing
 	identifiers.
 
 I would suggest to remove this recommendation because it is pragmatically
 unimplementable for implementation languages that do not support
 extended character sets. If the OMG were to take this step, it would
 effectively alienate CORBA from all such implementation languages, which
 I believe would be detrimental to the success of CORBA.
 
 	Because overloaded methods are a popular feature in object-oriented
 	programming languages we recommend that OMG considers extending
 	IDL to allow overloaded methods.
 
 Again, I suggest to remove the recommendation because it is pragmatically
 unimplementable. Steve Vinoski recently posted an interesting article
 on this topic in comp.object.corba -- I have attached a copy below.
 

Resolution:
Revised Text:
Actions taken:
July 8, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1662: read_AbstractObject and write_AbstractObject (java2idl-rtf)

Click
here for this issue's archive.
Nature: Revision
Severity:
Summary:
Summary: In section 7.1.2, there is a method called read_AbstractObject(clz).
 I propose that we change its name to read_Abstract to bring it
 into line with the read_Abstract() method introduced in section
 8.7.1 of the OBV spec.  This is consistent with having methods
 called read_Object() and read_Object(clz).
 
 There"s also a typo in section 7.2.6.  It says that 
 Util.write_AbstractObject calls OutputStream.write_AbstractObject.
 This should say OutputStream.write_Abstract.
 
 
 

Resolution:
Revised Text:
Actions taken:
July 10, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1780: JTS exceptions (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: The Java-to-IDL spec says in section 6.6.1 that certain CORBA system
 exceptions are mapped to the Java exceptions
   javax.jts.TransactionRequiredException
   javax.jts.TransactionRolledBackException
   javax.jts.InvalidTransactionException
 
 The names above are obsolete (since Sun revised the JTS/JTA specs),
 so the Java-to-IDL spec needs to be changed.  Possible mappings are:
  1. javax.transaction.<the_same_names_as_above>
       (as listed in the JTA spec)
  2. java.rmi.RemoteException
  3. No mapping (leave them as CORBA system exceptions) 
 
 Option 1 implies a dependency of the RMI-IIOP runtime on these
 JTA exception classes.  
 
 

Resolution:
Revised Text:
Actions taken:
August 6, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1894: Value methods not mapped in spec examples (java2idl-rtf)

Click
here for this issue's archive.
Nature: Revision
Severity:
Summary:
Summary: The Java to IDL mapping spec specifies rules for how value
 methods are mapped to IDL.  However, none of the examples
 shows any of these methods actually being mapped.  Although
 this is legal according to the spec, it has led to some
 confusion as to which methods would normally be expected to
 be mapped, such as the writeObject method in section 5.5.9.
 
 

Resolution:
Revised Text:
Actions taken:
August 27, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1957: Mapping of non-public types (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: The spec needs to say what happens if a Java public RMI/IDL
 value class has data members whose types are not public.
 
 Options: Either a) restrict all uses of non-public types, or 
 b) map all non-public types to public in IDL.
 
 Inprise have proposed that we adopt option b).  Comments?
 

Resolution:
Revised Text:
Actions taken:
September 15, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1958: Mapping of java.rmi remoteException superclasses (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: There is an issue with the currently specified mapping for Java
 remote and abstract interfaces containing methods that throw 
 superclasses of java.rmi.RemoteException but do not throw
 java.rmi.RemoteException.  In Java 1.1, these are not recognized
 as RMI remote interfaces.  In Java 1.2, these are recognized as
 RMI remote interfaces. 
 
 I propose that throwing these superclass exceptions be treated by
 the Java to IDL mapping as semantically equivalent to throwing
 both RemoteException and the superclass exception.  This means
 that the section 4.3 rules for RMI/IDL remote interfaces would 
 be changed to include this case (in point 3), with similar changes
 elsewhere in the spec.
 

Resolution:
Revised Text:
Actions taken:
September 15, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1960: Mapping of Java arrays (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: Generated names in the ::org::omg::sequences module can clash.
 For example, a Java array of type foo[][] and a Java array of type
 seq_foo[] both map to ::org::omg::sequences::seq_seq_foo.
 
 I propose that instead of using repeated "seq_" prefixes for the 
 array dimensions, a single prefix "seq<n>_", where <n> is the
 number of dimensions, should be used.  This ensures no clashes.
 In the example above, these Java types would map to seq2_foo and 
 seq1_seq_foo.
 

Resolution:
Revised Text: :org::omg::sequences::seq_seq_foo.
Actions taken:
September 16, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 1965: Eliminating server wait code (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: An RMI-JRMP server creates and exports server objects and then
 returns.  A non-daemon thread created by the JRMP runtime keeps the
 server process alive until there are no more objects exported.
 For code portability, an RMI-IIOP server needs to work in a similar
 way.  It is not acceptable to require a call to ORB.run() or the
 use of application "wait" code to keep the server process alive.
 
 I propose that the specification of PortableRemoteObject.exportObject
 be updated to say that the first call to this creates a non-daemon
 thread which keeps the JVM alive until all exported objects have
 been unexported by calls to PortableRemoteObject.unexportObject.
 

Resolution:
Revised Text:
Actions taken:
September 16, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 2082: Mapping of RuntimeException (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: If a Java method explictly declares that it throws RuntimeException or
 some subclass, the current spec says that these should be retained in
 the mapping to IDL.  I think this is wrong; they should be dropped
 when mapping to IDL.  The reasoning is along the same lines as dropping
 subclasses of RemoteException.
 

Resolution:
Revised Text:
Actions taken:
October 14, 1998: received issue
February 23, 1999: closed issue

Discussion:
 issue resolved and closed


Issue 2088: The mapping of java.lang.Class to IDL is not specified (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: The mapping of java.lang.Class to IDL is not specified.  An
 interesting subquestion is whether it"s possible to transmit a
 Class that has not previously been mapped to IDL.
 

Resolution:
Revised Text:
Actions taken:
October 16, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 2090: Mapping of Object, Serializable and Externalizable (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: The proposal here is to map Object, Serializable and Externalizable
 to distinct entities, rather than just to an any.
 
 These entities are
 module java {
     module lang {
        typedef any _Object;
     };
     module io {
         typedef any Serializable;
         typedef any Externalizable;
     };
 };
 
 and so
 java.lang.Object will map to ::java::lang::_Object,
 java.io.Serializable will map to ::java::io::Serializable, and
 java.io.Externalizable will map to ::java::io.Externalizable
 

Resolution:
Revised Text:
Actions taken:
October 16, 1998: received issue
February 23, 1999: closed issue

Discussion:


Issue 2091: Support for serialPersistentFields (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: Moving forward to JDK 1.2, the IDL value type data mapping needs
 to factor in the new serialPersistentFields declaration.  And there"s
 an interesting question whether the existence of a writeReplace method
 should influence the decision to map to a custom value.
 

Resolution:
Revised Text:
Actions taken:
October 16, 1998: received issue
May 16, 2006: closed issue

Discussion:
 Adopted proposal:



Issue 2552: Treatment of classes with writeReplace/readResolve methods (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: We should consider whether a Java class that has a writeReplace or a
 readResolve method (with the appropriate signature for use by object
 serialization) should map to a custom valuetype in IDL instead of
 a normal valuetype.  We should also think harder about the impact
 of writeReplace/readResolve semantics on non-Java ORBs: can non-Java
 implementations properly receive and send instances of such classes,
 maintaining all the proper sharing, without running into type checking
 problems, and without any additions to non-Java ORBs?
 

Resolution:
Revised Text: Add the following text at the end of section 1.3.5.6: An RMI/IDL value type that has a writeReplace or readResolve method is mapped to an OMG IDL valuetype using the same mapping rules that apply to other RMI/IDL value types.
Actions taken:
March 19, 1999: received issue
July 30, 2007: closed issue

Discussion:
Closed, no change. See revised text below.


Issue 2565: Mapping of Java constructors to init is broken (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: The Java to IDL mapping specifies that Java constructors are
 mapped to IDL initializers.  Now that core RTF issue 1981 has
 replaced IDL initializers by factory methods, this mapping is
 broken and inconsistent with the core chapters.
 

Resolution:
Revised Text:
Actions taken:
March 31, 1999: received issue
May 16, 2006: closed issue

Discussion:


Issue 2805: (java2idl-rtf)

Click
here for this issue's archive.
Nature:
Severity:
Summary:

Resolution:
Revised Text:
Actions taken:
July 16, 1999: received issue

Discussion:


Issue 2806: (java2idl-rtf)

Click
here for this issue's archive.
Nature:
Severity:
Summary:

Resolution:
Revised Text:
Actions taken:
July 16, 1999: received issue

Discussion:


Issue 2807: (java2idl-rtf)

Click
here for this issue's archive.
Nature:
Severity:
Summary:

Resolution:
Revised Text:
Actions taken:
July 16, 1999: received issue

Discussion:


Issue 2808: (java2idl-rtf)

Click
here for this issue's archive.
Nature:
Severity:
Summary:

Resolution:
Revised Text:
Actions taken:
July 16, 1999: received issue

Discussion:


Issue 2809: (java2idl-rtf)

Click
here for this issue's archive.
Nature:
Severity:
Summary:

Resolution:
Revised Text:
Actions taken:
July 16, 1999: received issue

Discussion:


Issue 2813: (java2idl-rtf)

Click
here for this issue's archive.
Nature:
Severity:
Summary:

Resolution:
Revised Text:
Actions taken:
July 13, 1999: received issue

Discussion:


Issue 2815: (java2idl-rtf)

Click
here for this issue's archive.
Nature:
Severity:
Summary:

Resolution:
Revised Text:
Actions taken:
July 21, 1999: received issue

Discussion:


Issue 2894: Security problem in JavaToIDL mapping (java2idl-rtf)

Click
here for this issue's archive.
Nature: Revision
Severity:
Summary:
Summary: We have a security hole in the reverse mapping that can be fixed by a
 straight forward spec change.
 
 The Java-to-IDL mapping spec 99-03-09 defines in paragraph 28.4.9.5 that
 rmi-iiop offer a method
 
 
 >     Util.loadClass(String className, String remoteCodebase, Class
 loadingContext)
 >         throws ClassNotFoundException { ... }
 >
 
 
 which does the following if everything else fails to load the desired
 class (on both JDK 1.1 and 1.2)
 
 
 > If a class was not successfully loaded by step 1, 2, or 3, and
 loadingContext
 > and loadingContext.getClassLoader() are both non-null, then call
 > loadingContext.getClassLoader().loadClass(className)
 
 
 By virtue of being a "public" core method as part of the rmi-iiop
 standard extension this mechanism essentially bypasses the "caller class
 loader" security check from Class.getClassLoader() by allowing arbitrary
 code to load a class using the class loader of any other class. The
 ClassLoader javadoc says to this effect.
 
 > Class loaders may typically be used by security managers to indicate
 > security domains.
 
 The fix for this situation is to change the signature of the above
 method to
 
 
 >     Util.loadClass(String className, String remoteCodebase,
 ClassLoader loader)
 >         throws ClassNotFoundException { ... }
 >
 
 so that the caller has to perform the necessary
 loadingContext.getClassLoader() call before calling this method. This
 way the callers security permissions are checked properly by the
 getClassLoader mechanism.
 
 So code that uses this API right now has to change from
 
 Util.loadClass(className, remoteCodebase, loadingContext)
 
 to
 
 Util.loadClass(className, remoteCodebase,
 loadingContext.getClassLoader())
 
 after this spec change.
 

Resolution:
Revised Text:
Actions taken:
September 20, 1999: received issue

Discussion:


Issue 3093: PortableRemoteObject.narrow(null) (java2idl-rtf)

Click
here for this issue's archive.
Source: International Business Machines (Mr. Simon C. Nash, nash@hursley.ibm.com)
Nature: Uncategorized Issue
Severity:
Summary:
The spec does not define what happens when a null object reference is passed to 
PortableRemoteObject.narrow().  For consistency with xxxHelper.narrow(), I think
it should return null.

Resolution:
Revised Text:
Actions taken:
December 7, 1999: received issue
May 16, 2006: closed issue

Issue 3118: Boolean attributes (java2idl-rtf)

Click
here for this issue's archive.
Source: Borland Software Corporation (Mr. Vijaykumar Natarajan, Vijaykumar.Natarajan@borland.com)
Nature: Uncategorized Issue
Severity:
Summary:
Thought I would raise this as a formal issue.

The spec is ambiguous about mapping boolean accessors when in the following cases


boolean isFoo ();
void setFoo(boolean x);


and

boolean getBar();
boolean isBar();
void setBar(boolean x);

According to the spec, both of the above get mapped to attributes. But, an attribute has only one getter and one setter.
So, the question is what is isBar represented as on the wire? And how is the distinction made between isBar and getBar?

Two ideas I can think of are
1. Drop isBar from being recognized as a getter for attribute bar.
2. Have isBar be represented on the wire as _get_bar. This has the effect of the two methods collapsing into
one on the receiving context, which is probably OK because they should semantically be equivalent anyway.

Resolution:
Revised Text:
Actions taken:
December 15, 1999: received issue
May 16, 2006: closed issue

Issue 3160: Definition of serialVersionUID field (java2idl-rtf)

Click
here for this issue's archive.
Source: International Business Machines (Mr. Simon C. Nash, nash@hursley.ibm.com)
Nature: Uncategorized Issue
Severity:
Summary:
Does the serialVersionUID field need to be private, static, and final,
or just static and final?  The Java to IDL spec says private, static,
and final, but as far as I can tell, regular Java serialization just
uses static and final.  This has been a source of confusion for a number
of users.

Resolution:
Revised Text:
Actions taken:
December 22, 1999: received issue
May 16, 2006: closed issue

Issue 3200: Container/member name clashes (java2idl-rtf)

Click
here for this issue's archive.
Source: International Business Machines (Mr. Simon C. Nash, nash@hursley.ibm.com)
Nature: Uncategorized Issue
Severity:
Summary:
There is a commonly occurring name collision that is not covered by the 
current name mangling rules.  This is demonstrated by the Java to IDL mapping
of java.util.Date.  The IDL generated gives a custom valuetype "Date" which 
contains an attribute "date", which is illegal in IDL.  This problem is not
unique to java.util.Date.

More generally, this collision occurs whenever a Java interface or class
being mapped to IDL contains a method or data member with the same name
as the interface or class (using a case-insensitive comparison).  For example,
the following Java definitions cause this problem:

Resolution:
Revised Text:
Actions taken:
January 9, 2000: received issue
May 16, 2006: closed issue

Issue 5853: ORB shutdown should be configurable (java2idl-rtf)

Click
here for this issue's archive.
Source: BEA Systems (Dr. Andrew Piper, andyp@bea.com)
Nature: Uncategorized Issue
Severity:
Summary:
Section 1.6.1 states:


"A call to exportObject with no objects exported creates a non-daemon thread that
keeps the Java virtual machine alive until all exported objects have been unexported by
calling unexportObject."


However, there is no implicit way to unexport objects and so this places the burden on the users to do so. It may be that users are not exporting objects themselves but using some layered product that does so - in this case they would have to call a shutdown API in order  for their program to exit. All of these solutions are non-intuitive and not helpful to the user who forgets to call the requied API - their program just does not exit.


I would like to suggest that this behavior be configurable in some way, either via exportObject or via properties so that users and implementors can choose whether or not a particular exported object should cause the VM to stay alive.

Resolution:
Revised Text:
Actions taken:
February 7, 2003: received issue

Issue 5879: Custom Marshaling Format Clarification (java2idl-rtf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Consider the following Java classes:

    public class A implements java.io.Serializable {
        // This is a non custom class
         // A's data -- omitted
        // A's constructors - omitted
        // A's methods -- omitted
    }

    public class B extends A {
        // B's data -- omitted here
        // B's cobstructors -- omitted here

        // This is a custom class    
        private void writeObject(java.io.ObjectOutputStream s) { .... }

        // Other methods omitted
    }

    public class C extends B {
        // This is a non-custom class
         // C's data -- omitted
        // C's constructors - omitted
       // C's methods -- omitted
    }

    public class D extends C {
        // D's data -- omitted here
        // D's cobstructors -- omitted here
 
        // This is a custom class
        private void writeObject(java.io.ObjectOutputStream s) { .... }

        // Other methods omitted
    }

Here we have a class inheritance hierarchy as D:C:B:A with A and C as non-custom classes, B and D as custom classes. What is the rmi-iiop data  layout on the wire when an instance of D is marshaled in terms of customer header and data w.r.t. to each of the super classes? Which one of the following layout is correct? 

     -----------------------------------------------------------------------------------------
a.  |    A-Data    |    B-FV   B-DWO  B-Data    |     CData    |     FV-D DWO-D DData    |
     -----------------------------------------------------------------------------------------

     --------------------------------------------------------------------------------------------------------------------------------
b.  |    A-FV   A-DWO  A-Data    |    B-FV   B-DWO  B-Data    |     C-FV   C-DWO  C-Data    |     D-FV D- DWO DData    |
     -------------------------------------------------------------------------------------------------------------------------------

     ----------------------------------------------------------------------------
c.  |    A-FV   A-DWO  A-Data    |     B-Data    |      C-Data    |      DData    |
     ---------------------------------------------------------------------------

Terms used for illustration purpose here:

A-FV    ------ means the Format version octet for class A
A-DWO ------ means the defaultWriteObject boolean flag for class A
A-Data  -----  means the data fields of class A.

B-FV    ------ means the Format version octet for class B
B-DWO ------ means the defaultWriteObject boolean flag for class B
B-Data  -----  means the data fields of class B

C-FV    ------ means the Format version octet for class C
C-DWO ------ means the defaultWriteObject boolean flag for class C
C-Data  -----  means the data fields of class C.

D-FV    ------ means the Format version octet for class D
D-DWO ------ means the defaultWriteObject boolean flag for class D
D-Data  -----  means the data fields of class D.

Resolution:
Revised Text:
Actions taken:
March 7, 2003: received issue

Issue 5891: Guidance on RepositoryIDs for primitive types (java2idl-rtf)

Click
here for this issue's archive.
Source: BEA Systems (Dr. Andrew Piper, andyp@bea.com)
Nature: Uncategorized Issue
Severity:
Summary:
I have noticed that the Sun ORB generates RepositoryIds for primitive types when generating a FullValueDescription that looks like this:


RMI:int:000000000000000000


Now you could argue that the type of int is Integer.TYPE and the function getName() on this class does indeed return "int" however there are explicit mappings for primitive types (int -> IDL long) and this just seems wrong to me.


Should the repid be null or something else? Does it matter?

Resolution:
Revised Text:
Actions taken:
March 18, 2003: received issue

Issue 5991: Request clarification on copyObject(s) semantics (java2idl-rtf)

Click
here for this issue's archive.
Source: Sun Microsystems (Mr. Ken Cavanaugh, kcavanaugh@acm.org)
Nature: Uncategorized Issue
Severity:
Summary:
Questions have come up recently about copyObject behavior, both within Sun and from customers.
The main question is whether it is necessary to actually copy immutable objects, or can copyObject( obj ) 
simply return obj for immutable objects.  The standard immutable
objects in question are String and the primitive type wrappers (Integer etc.).


Looking at ptc/02-01-12, the main part of the specification that is relevant is section 1.5.1.6,
on the bottom of page 1-52.  The statement is made here that "(copyObject and copyObjects) observe
copy semantics for value objects that are equivalent to marshalling, ...".  What exactly does
equivalent mean here?


It seems to me that the most important property here is that any sequence of method invocations 
made by the "client" do not affect the results of any sequence of method invocations made by
the "server" (or vice-versa).  This is normally the case for immutable objects that are copied by reference.  
However, locking of an object passed by reference is possibly observable.  Normally, the
"client" and the "server" in the colocated case are actually running on the same thread, but
each role could pass object obj and copyObject(obj) to a different thread.  Different results 
are then possible for the copy/non-copy case, depending on the locking behavior of the threads.


There are old parts of the rmic -iiop code and the Sun ORB, dating from the days when Sun and IBM
were jointly developing RMI-IIOP, that show evidence of both possible interpretations.  For
example, StubGenerator.mustCopy( TYPE_STRING ) returns false, so that a method that takes 
only one or more String arguments would not have a call to copyObject(s) generated in the stub.
However, the implementation of Util.copyObject(s) always copies String instances.


I would like to see the text clarified in the specification to explicitly state whether immutable
objects need to be copied or not.

Resolution:
Revised Text: In section 1.5.1.6, paragraph starting "The copyObject and ...", change the last sentence to: For non-immutable parameters, results and exceptions (including remote objects), stubs must either call these methods or generate inline code to provide equivalent semantics. In section 1.5.2.2, after the following paragraph: Local stubs are responsible for performing copying of method parameters, results and exceptions, and handling remote objects correctly in order to provide remote/local transparent RMI/IDL semantics. add the following: Local stubs are not required to copy immutable objects.
Actions taken:
July 7, 2003: received issue
July 30, 2007: closed issue

Discussion:
Resolution:
Closed, accepted. The spec already states clearly in section 1.5.1.6 that these methods do make physical copies. Clarify the spec to say that if the stub wants to optimize out the copying (which is legal), then it should omit calls to these methods. See revised text below.


Issue 6410: Custom marshalled abstract interfaces and Java/IDL (java2idl-rtf)

Source: BEA Systems (Dr. Andrew Piper,
andyp@bea.com)
Nature: Clarification
Severity:
Summary:
We currently are having a problem implementing abstract interface behaviour in C++ for valuetypes marshaled according to the Java/IDL spec. For custom marshaled objects the spec says:


"Other Java objects are marshaled in the form of an
IDL abstract interface (i.e., a union with a boolean discriminator containing either an
object reference if the discriminator is true or a value type if the discriminator is false)."


However, the Java/IDL spec does not mandate that _all_ Java objects of this type be mapped to IDL that has an abstract interface as a supertype. Thus we are left in the position for IDL that objects marshaled as abstract interfaces are not truly abstract interfaces as defined in the CORBA spec section 6.2. Moreover the generated C++ for these types will not include inheritance from AbstractBase, so how should these types be handled? In particular should DataInputStream::read_Abstract() work at all for these types? You could imagine making this work by having read_Abstract() return some container class that held the actual object (valuetype or object reference), but its not clear that this is actual legal wrt 6.2.


Clarification appreciated.

Resolution:
Revised Text: In section 1.4.10, paragraph starting "Primitive Java types ...", change last sentence to: Other Java objects are marshaled in the form of a union with a boolean discriminator containing either an object reference if the discriminator is true or a value type if the discriminator is false. [footnote: This marshaling format happens to be the same as that used for OMG IDL abstract interface types. Despite this similarity, these objects are not mapped to OMG IDL abstract interface types and they should not be treated as abstract interface types when they are unmarshaled.]
Actions taken:
November 3, 2003: received issue
July 30, 2007: closed issue

Discussion:
Resolution: Closed, no change. See revised text below.


Issue 6411: Custom marshalled abstract interfaces and Java/IDL (java2idl-rtf)

Click
here for this issue's archive.
Source: BEA Systems (Dr. Andrew Piper, andyp@bea.com)
Nature: Uncategorized Issue
Severity:
Summary:
We currently are having a problem implementing abstract interface behaviour in C++ for valuetypes marshaled according to the Java/IDL spec. For custom marshaled objects the spec says:


"Other Java objects are marshaled in the form of an
IDL abstract interface (i.e., a union with a boolean discriminator containing either an
object reference if the discriminator is true or a value type if the discriminator is false)."


However, the Java/IDL spec does not mandate that _all_ Java objects of this type be mapped to IDL that has an abstract interface as a supertype. Thus we are left in the position for IDL that objects marshaled as abstract interfaces are not truly abstract interfaces as defined in the CORBA spec section 6.2. Moreover the generated C++ for these types will not include inheritance from AbstractBase, so how should these types be handled? In particular should DataInputStream::read_Abstract() work at all for these types? You could imagine making this work by having read_Abstract() return some container class that held the actual object (valuetype or object reference), but its not clear that this is actual legal wrt 6.2.


Clarification appreciated

Resolution:
Revised Text:
Actions taken:
November 3, 2003: received issue
July 30, 2007: closed issue

Discussion:
Closed as duplicate of issue 6410.


Issue 6992: defaultWriteObject clarification (java2idl-rtf)

Click
here for this issue's archive.
Source: BEA Systems (Dr. Andrew Piper, andyp@bea.com)
Nature: Clarification
Severity:
Summary:
We have recently found an interop problem with another Vendor's orb and wanted some clarification on the customer marshaling format wrt defaultWriteObject. 1.4.10 says:


For serializable objects with a writeObject method:
b. boolean - True if defaultWriteObject was called, false otherwise.


However it is mute on the subject of writeFields and readFields. The Java serialization spec indicates that defaultWriteObject and writeFields are somewhat equivalent, so (a) one could argue that the boolean should be true if writeFields has been called. (b) One could also argue that the spec doesn't say this and so the boolean should be false.  My feeling is that (a) is correct (and this is what the other orb does) but that it should be called out explicitly in the spec.


Comments appreciated

Resolution:
Revised Text: In section 1.4.10, change the text quoted above to: For serializable objects with a writeObject method: b. boolean - True if defaultWriteObject or writeFields was called, false otherwise.
Actions taken:
February 17, 2004: received issue
July 30, 2007: closed issue

Discussion:
Closed, accepted. See revised text below.


Issue 7217: Mapping CORBA activity exceptions to Java (java2idl-rtf)

Click
here for this issue's archive.
Source: International Business Machines (Mr. Simon C. Nash, nash@hursley.ibm.com)
Nature: Uncategorized Issue
Severity:
Summary:
The CORBA activity specification (Additional Structuring Mechanisms for
the OTS, v1.0, OMG document formal/02-09-03) introduced three new system
exceptions (INVALID_ACTIVITY, ACTIVITY_COMPLETED, and ACTIVITY_REQUIRED)
that were incorporated into CORBA 3.0.


The JCP J2EE Activity Service for Extended Transactions (JSR 95) adds
three equivalent exceptions
 javax.activity.InvalidActivityException
 javax.activity.ActivityCompletedException
 javax.activity.ActivityRequiredException
to the Java platform.


The Java to IDL mapping should be extended to map these CORBA exceptions
to the equivalent Java activity exceptions, just as the three CORBA
transaction system exceptions are currently mapped to the equivalent
JTA exceptions in the javax.transaction package.


Proposal:


In section 1.4.8, add the following rows to table 1-2:


CORBA Exception     RMI Exception
---------------     -------------
INVALID_ACTIVITY    javax.activity.InvalidActivityException
ACTIVITY_COMPLETED  javax.activity.ActivityCompletedException
ACTIVITY_REQUIRED   javax.activity.ActivityRequiredException

Resolution:
Revised Text: In section 1.4.8, add the following rows to table 1-2: CORBA Exception RMI Exception --------------- ------------- INVALID_ACTIVITY javax.activity.InvalidActivityException ACTIVITY_COMPLETED javax.activity.ActivityCompletedException ACTIVITY_REQUIRED javax.activity.ActivityRequiredException
Actions taken:
April 2, 2004: received issue
July 30, 2007: closed issue

Discussion:
Closed, accepted. See revised text below


Issue 7595: No wire format defined for java.lang.reflect.Proxy classes (java2idl-rtf)

Click
here for this issue's archive.
Source: BEA Systems (Dr. Andrew Piper, andyp@bea.com)
Nature: Uncategorized Issue
Severity:
Summary:
Java serialization supports the serialization of proxy classes explicitly. It does this by essentially marshaling into the stream the list of interfaces that the proxy implements and on the other end calling Proxy.getProxyClass() with those interfaces. In RMI-IIOP the proxy class ends up coming across the wire with a repository ID of RMI:\U0024Proxy0:2D4A76C198E9D8DA:0000000000000000 (i.e. $Proxy) which is not a real class and cannot be loaded by the client.


I think we probably need to mandate specific behaviour for proxy classes along the lines of the java serialization spec. A simple approach might be to mandate that the valuetype contain a list of repids, the first being the pseudo-repid for the proxy itself and the other being the repids of the interfaces the proxy supports. The actual data would be that of the proxy itself which is basically the InvocationHandler.

Resolution:
Revised Text:
Actions taken:
July 20, 2004: received issue

Issue 10336: Section: 1.3, Page: 1-21 (java2idl-rtf)

Click
here for this issue's archive.
Nature: Enhancement
Severity: Critical
Summary:
Java to IDL Language Mapping Specification doesn't cover the mapping for Java enum from JDK 1.5. We propose the following mapping to be included in the specification. Mapping for Enumeration: When used as a parameter, return type or member variable, Java enum in JDK 1.5 is mapped to the OMG IDL type ::javax::rmi::CORBA::EnumDesc. The corresponding representation in Java class is: package javax.rmi.CORBA; public class EnumDesc implements java.io.Serializable { // Holds the value of enum public String value; // Name of enum class public String className; static final long serialVersionUID = ...; } The mapping in IDL will be: module javax { module rmi { module CORBA { valuetype EnumDesc { public ::CORBA::WStringValue value; #pragma ID value "RMI:EnumDesc/value:xxxxx" public ::CORBA::WStringValue className; #pragma ID className "RMI:EnumDesc/className:xxxxx" }; #pragma ID EnumDesc "RMI:EnumDesc:aaaaaa:xxxxxxxxx" }; }; }; 

Resolution:
Revised Text: In section 1.3.5: ----------------- Change ... and java.lang.Class (see Section 1.3.5.12, “Mapping for java.lang.Class,” on page 1-21). to ..., java.lang.Class (see Section 1.3.5.12, “Mapping for java.lang.Class,” on page 1-21), java.lang.Enum (see Section 1.3.5.13, “Mapping for java.lang.Enum,” on page 1-xx), and all Java enum types (see Section 1.3.5.14, “Mapping for Java enum types,” on page 1-xx). Add new section 1.3.5.13: ------------------------- Mapping for java.lang.Enum The class java.lang.Enum is mapped to OMG IDL following the rules for mapping RMI/IDL value types defined in previous sections, with the exception that the ordinal field is not mapped to an OMG IDL data member. For example, this class could be mapped to the following OMG IDL: // IDL module java { module lang { valuetype _Enum: ::java::lang::Comparable { private ::CORBA::WStringValue name_; ::CORBA::WStringValue name( ); }; #pragma ID _Enum "RMI:java.lang.Enum:CA9967EE1176F5B3:0000000000000000" }; }; Add new section 1.3.5.14: ------------------------- Mapping for Java enum types Java enum types are mapped to OMG IDL following the rules for mapping RMI/IDL value types defined in previous sections, with the exception that their fields are not mapped to OMG IDL data members. For example, the Java enum public enum Direction { NORTH (0), SOUTH (180), EAST (90), WEST (270); public final int bearing; Direction(int bearing) { this.bearing = bearing; } } could be mapped to the following OMG IDL: // IDL valuetype Direction: ::java::lang::_Enum { }; #pragma ID Direction "RMI:Direction:332C04E72E3DB2A1:0000000000000000" Changes to section 1.5.1.5 -------------------------- At the end of the description of the readValue method, add the following: If clz is an enum class, readValue returns the singleton enum constant that is the result of calling the java.lang.Enum.valueOf() method passing clz and the string name of the enum constant unmarshaled from the mapped enum valuetype in the stream. At the end of the description of the getRMIRepositoryID method, add the following: If clz is an anonymous class for an enum constant with a class body (i.e., its superclass is not java.lang.Enum), then the getRMIRepositoryID method returns the RMI-style repository ID string for the named superclass of clz.
Actions taken:
September 5, 2006: received issue
July 30, 2007: closed issue

Discussion:
Resolution: Closed, accepted. See revised text below



Discussion:
Resolution: Closed, accepted. See revised text below