Issue 632: Spec insufficient in section 5.2.1 - Reserved Names
Issue 799: Problems with IDL unions mapped to Java
Issue 888: Section 5.14 and 6.11 IDL/Java Language mapping
Issue 890: Add missing UnknownUserException
Issue 891: ImplementationDef should be an abstarct class
Issue 892: create_list semantics not well defined
Issue 893: delegate field in ObjectImpl should be transient
Issue 894: input/output streams should extend java.io.streams
Issue 895: _orb() is missing from ObjectImpl
Issue 896: Make all basic Holders implement Streamable
Issue 897: Fix any"s to have implement copy semantics
Issue 898: Clarify the use of return_value() before invoke() in DII
Issue 899: Clarify exact list of methods available on singleton orb
Issue 907: Current mapped incorrectly in Java language mapping
Issue 908: CORBA::DATA::CONVERSION exception for IDL types wchar/wstring
Issue 909: IDL/Java language mapping, section 5.14, 6.11
Issue 919: Problem with IDL --> Java mapping for Unions ServantBase mappings
Issue 1090: Reserved names
Issue 1142: POA_Interface bug
Issue 1143: Chapter 9.8.1 Local stubs-bug
Issue 1167: Any.insert_Object()
Issue 1242: Any"s and Exceptions
Issue 1381: No INV_NO_RESPONSE possible in Java DII
Issue 1385: Discriminated Union value issue
Issue 1536: Helper classes are only for user defined IDL types
Issue 1577: Section 7.1.3 of Java to IDL mapping
Issue 1583: org.omg.CORBA.UserException class not specified
Issue 1586: Callback issue
Issue 1672: Does object reference == ObjectImpl?
Issue 1696: Proposed change to orb.init
Issue 1701: Mapping of IDL constants to Java
Issue 1703: orb.properties file issue
Issue 1704: Proposed change sto IDL/Java mapping
Issue 1705: Add Any.extract_Streamable()
Issue 1722: New stream based stubs and location forward
Issue 1724: OutputStream semantics question
Issue 1730: Changes to Java fixed type mapping
Issue 1731: Java mapping"s use of _this()
Issue 1732: Changes to Java interface mapping
Issue 1734: Mapping of IDL names that clash with java.lang.Object methods
Issue 1737: Compiler-readable code
Issue 1738: Object._request variants are unspecified
Issue 1739: Local stubs
Issue 1741: Java RTF issue
Issue 1746: Conext support in Java
Issue 1750: 2 IDL->Java issues on the singleton ORB (02) mapping of IDL enumerations to java
Issue 1752: mapping of IDL enumerations to java
Issue 1754: Proposal to change get_value_def in Java mapping
Issue 1795: final methods on ObjectImpl
Issue 1897: Evolving the org.omg.* APIs
Issue 1941: Problem mapping "global" types in Java mapping
Issue 1942: Need overloaded write_Value method on OutputStream
Issue 1961: Java Mapping for interfaces -- Proposal
Issue 1964: Creating TypeCodes safely in java
Issue 1980: Updated proposal for the OBV Java mapping
Issue 1993: create_lname & create_lname_context Local stubs proposal
Issue 1994: Local stubs proposal
Issue 2079: Potential problem with Java Mapping ORB init for Applet
Issue 2096: Issue with Mapping for Constants within an interface
Issue 2228: typedefs in IDl when generating Java code
Issue 2233: Helper "narrow" exception clarification
Issue 2251: Java LocalStub
Issue 2255: Proposal for persistent valuetypes
Issue 2256: PSS requiremnets for the ObV/Java mapping
Issue 2462: BAD_PARAM issue
Issue 2514: PortableServer Servant issue
Issue 2517: orb.properties search should include home directory
Issue 2518: Incorrect search order for ORB implementation class name
Issue 2519: Need SerializableHolder class
Issue 2520: Standard properties should include initial host and port
Issue 2528: Mapping Messaging sendc_ (and sendp_) methods to Java
Issue 2531: Serializable objects in Anys need reference semantics
Issue 2532: Mapping of AbstractBase and abstract interfaces
Issue 2540: _servant_postinvoke
Issue 2550: Dealing with reserved suffixes (e.g. POA)
Issue 2608: Java - Mapping for Struct issue
Issue 2609: Issues with ObjectImpl implementations
Issue 2647: Modification of Constant Mapping
Issue 2661: Valuetype packages
Issue 2721: DII and SystemException semantics
Issue 2770: Java substitutability issue: value instance -> interface type
Issue 2823: Java mapping for PolicyType...
Issue 2889: Should Any.extract_string work for bounded strings?
Issue 2979: Java SystemException should contain nested exception field
Issue 3068: Messaging sendc and sendp missing from portability interfaces
Issue 3204: ORB Init problems
Issue 3209: Illegal return statement
Issue 3267: How to create marshalel data of java.lang.Throwable instance?
Issue 3320: Java language mapping: Tie classes for local interfaces.
Issue 3323: Need clarification on custructor(s) for stream-based stubs/skeletons
Issue 3410: IDL/Java: methods marked final in PortableServer.Servant
Issue 3570: org.omg.CORBA.portable.UnknownException does not have all constructors
Issue 3575: Custom marshal does not work for certain valuetypes
Issue 3633: Request clarification for use of alias typecodes in typedef helper classes
Issue 3643: Description of ORB.init parameters insufficient
Issue 3654: OMG ZIP FILE ISSUES for IDL to Java RTF (01)
Issue 3655: OMG ZIP FILE ISSUES for IDL to Java RTF (02)
Issue 3656: OMG ZIP FILE ISSUES for IDL to Java RTF (03)
Issue 3657: OMG ZIP FILE ISSUES for IDL to Java RTF (04)
Issue 3658: OMG ZIP FILE ISSUES for IDL to Java RTF (05)
Issue 3659: OMG ZIP FILE ISSUES for IDL to Java RTF (06)
Issue 3665: Java ORB Id
Issue 3668: Possible problem with IDL to Java mapping of fixed-point decimal types
Issue 3669: Enum mapping issue
Issue 3686: How can org.omg.CORBA.portable.InputStream.read_fixed possibly work?
Issue 3707: Need clarification on custructor(s) for stream-based
Issue 3750: SystemExceptionHelper missing
Issue 3794: IDLEntity interface has to be public.
Issue 3795: Incorrect method declaration in CORBA_2_3/portable/InputStream.java and Out
Issue 3801: policy_type should map to a Java int.
Issue 3818: Operations signatures include throws clauses on system exceptions.
Issue 3819: Issues with Java mapping of Typecode
Issue 3903: mapping for Request.target will not compile
Issue 3904: ptc/00-01-08: Conflict 1.15.1 paragraph 2 - 1.19.2 paragraph 2
Issue 3911: Incomplete union mapping
Issue 3912: How is an ORB to determine whether or not it is in an applet context?
Issue 3913: Vendor-specific ORB_init methods
Issue 3923: #pragma prefix issue
Issue 3946: CompletionStatus needs to implement org.omg.CORBA.portable.IDLEntity
Issue 3979: IDL to Java Spec Issue : need to add SystemExceptions introduced in CORBA 2
Issue 3994: Valuetype unmarshalling
Issue 3995: Copying boxed valuetypes on local calls
Issue 4009: Union exceptions
Issue 4010: Should valuetype helper insert/extract make copies?
Issue 4013: Usage of ExceptionDetailMessage service context
Issue 4057: Displaying SystemExceptions
Issue 4059: When to honor the servant delegate in POA?
Issue 4064: Any extract operations for tk_abstract_interface
Issue 4076: System Exceptions REBIND, TIMEOUT, BAD_QOS
Issue 4158: publication of messaging / unchecked_narrow
Issue 4271: IDL/Java issue, Mapping for IDL enum
Issue 4286: Clarification of serialization of Anys and Typecodes
Issue 4323: local interface mapping underspecified
Issue 4549: Missing elements of the local mapping
Issue 4624: support for local objects
Issue 4699: is_a support in Java for local interfaces
Issue 4701: Colocated calls in Java
Issue 4710: Mapping for Character and String Types
Issue 4741: New issue on register_initial_reference
Issue 4748: Naming issues for new ORB methods
Issue 4749: New issue: Error in resolution of issue 4699
Issue 4750: Make CORBA_2_3.ORB methods available in CORBA.ORB
Issue 4792: exceptions on valuetype initializers
Issue 4793: attribute exceptions
Issue 4794: OMG Java Language Mapping and the use of Java null
Issue 4802: Should a holder class for ProtectingEntity get generated
Issue 4804: section 1.18.2 of the OMG IDL mapping document ptc/00-01-08
Issue 4805: Java mapping changes for core issue 4337
Issue 5108: J2EE ORB Socket Factory API
Issue 5465: Default UnknownException behavior
Issue 5468: Anys obtained using the singleton ORB
Issue 5586: interfaces that do not extend org.omg.CORBA.portable.ValueBase
Issue 5595: Should javadoc statement be removed or should method be removed?
Issue 5615: Streaming Interfaces
Issue 5638: Typo on getRaises and setRaises in formal/2002-08-05
Issue 5646: Java source code for org.omg.PortableServer.POAOperations
Issue 5693: POA changes missing in Java source archive
Issue 5694: What is the IDL for ServiceInformation and/or what is correct Java mapping?
Issue 5696: Package name issue
Issue 5728: How does a Java ORB implement a write_fixed/read_fixed?
Issue 5782: Missing operations on org.omg.CORBA.Object
Issue 5783: Stub handling of UnknownException
Issue 5806: response_expected value for colocated invocations
Issue 5893: definition of FixedHolder should have been removed
Issue 7846: wrong enumeration value for SetOverrideType
Issue 9795: section 1.21.3 IDLEntity
Issue 632: Spec insufficient in section 5.2.1 - Reserved Names (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized
Severity:
Summary: Summary: Reserved words seen as IDL identifiers be prepended by an underscore. Insufficient for Holder, Helper, Package in case where two or three of these strings appear in single identifier
Resolution: Clarify the IDL Name conflict resolution rules to resolve this case. Also change the naming rules
Revised Text: Solution suggested: extend rule in section 5.2.1 to require one underscore to be prepended for each suffix on the nameAdd the following sentence to paragraph 2 in Section 25.1 "Names":
Actions taken:
July 23, 1997: received issue
May 18, 1998: deferred to other RTF
June 4, 1999: closed issue
Discussion:
Issue 799: Problems with IDL unions mapped to Java (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity: Significant
Summary: Summary: I have found a problem with the Java to IDL mapping (97-03-01) in the area of Unions. The problem is that the Java-idl mapping does not provide any means by
which the user can set the value of the union to be one of the non
branch members of the enum such as B.
Resolution: resolved/closed
Revised Text:
Actions taken:
November 28, 1997: received issue
February 19, 1999: closed issue
Discussion:
Issue 888: Section 5.14 and 6.11 IDL/Java Language mapping (java-rtf)
Click here for this issue's archive.
Nature: Clarification
Severity: Minor
Summary: Summary: In the class definition for Any there is only
insert_Streamable(...), but no
extract_Streamable(...). How do you extract
streamables?
Resolution: duplicate, issue closed
Revised Text:
Actions taken:
January 7, 1998: received issue
May 19, 1998: closed issue, duplicate of issue 909
Discussion:
Issue 890: Add missing UnknownUserException (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary:
Resolution: closed issue, resolved
Revised Text:
Actions taken:
January 12, 1998: received issue
May 19, 1998: closed issue
Discussion:
Issue 891: ImplementationDef should be an abstarct class (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary:
Resolution: closed issue, resolved
Revised Text:
Actions taken:
January 12, 1998: received issue
May 19, 1998: closed issue
Discussion:
Issue 892: create_list semantics not well defined (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: create_list semantics are not well-defined in CORE and hence Java
Language Mapping
Resolution: resolved/closed
Revised Text:
Actions taken:
January 12, 1998: received issue
May 19, 1998: closed issue
Discussion: received issue
Issue 893: delegate field in ObjectImpl should be transient (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary:
Resolution: closed issue
Revised Text:
Actions taken:
January 12, 1998: received issue
May 19, 1998: closed issue
Discussion:
Issue 894: input/output streams should extend java.io.streams (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary:
Resolution: closed issue, resolved
Revised Text:
Actions taken:
January 12, 1998: received issue
May 19, 1998: closed issue
Discussion:
Issue 895: _orb() is missing from ObjectImpl (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary:
Resolution: closed issue, resolved
Revised Text:
Actions taken:
January 12, 1998: received issue
May 19, 1998: closed issue
Discussion:
Issue 896: Make all basic Holders implement Streamable (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary:
Resolution: proposal approved, issue closed
Revised Text:
Actions taken:
January 12, 1998: received issue
February 19, 1999: closed issue
Discussion:
Issue 897: Fix any"s to have implement copy semantics (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: Issue: Fix any"s to have implement copy semantics, similar to C++
Resolution: closed
Revised Text: closed issue
Actions taken:
January 12, 1998: received issue
May 19, 1998: closed issue
Discussion: closed issue
Issue 898: Clarify the use of return_value() before invoke() in DII (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: Clarify the use of return_value() before invoke() in DII.
When using dii in Java (in portable stubs), it should be possible
to call return_value() before invoke() in order to get the Any
that will be associated with the return. It is then possible
to insert a streamable, which when combined with fixing copy
semantics for any"s, will enable a big performance improvement.
Resolution: closed
Revised Text:
Actions taken:
January 12, 1998: received issue
May 19, 1998: closed issue
Discussion:
Issue 899: Clarify exact list of methods available on singleton orb (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary:
Resolution: closed issue
Revised Text:
Actions taken:
January 12, 1998: received issue
May 19, 1998: closed issue
Discussion:
Issue 907: Current mapped incorrectly in Java language mapping (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity: Minor
Summary: Summary:
In 2.1 current became a regular IDL interface, so its mapping needs to
change.
Proposed Change:
delete section 23.16.14 on current
Resolution: closed issue
Revised Text:
Actions taken:
January 15, 1998: received issue
May 19, 1998: closed issue
Discussion: closed issue
Issue 908: CORBA::DATA::CONVERSION exception for IDL types wchar/wstring (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: This specification defines CORBA::DATA_CONVERSION exception for IDL
types char/string, but does not define same exception for IDL types
wchar/wstring. However, in the CORBA 2.1, IDL types wchar/wstring can
handle any codeset beside Unicode (see section "10.7 Code Set Conversion"
in CORBA 2.1) as well as IDL types char/string. Therefore, data
conversion error may occur between IDL types wchar/wstring and Java
types char/java.lang.String.
Resolution: closed issue
Revised Text:
Actions taken:
January 16, 1998: received issue
May 19, 1998: closed issue
Discussion:
Issue 909: IDL/Java language mapping, section 5.14, 6.11 (java-rtf)
Click here for this issue's archive.
Nature: Clarification
Severity: Minor
Summary: Summary: In the class definition for Any there is only
insert_Streamable(...), but no
extract_Streamable(...). How do you extract
streamables?
Resolution: closed issue
Revised Text:
Actions taken:
January 7, 1998: received issue
May 18, 1998: deferred to next RTF
July 30, 1998: closed issue
Discussion:
Issue 919: Problem with IDL --> Java mapping for Unions ServantBase mappings (java-rtf)
Click here for this issue's archive.
Nature: Revision
Severity:
Summary: Summary: I have found what appears to be a short coming of the IDL to Java
mapping for unions.
Reading the CORBA V2.0 (July 1995) on pages 3-23 and 3-24 it indicates
unions can have a value of the discriminator where there is not a case
that matches the discriminator. The Trader Service specification has a
great example of when this may be needed (in fact we are following this
pattern in PIDS). The Java mapping for unions does not have a method or constructor for
setting the discriminator when the discriminator does not correspond to
at least one case label.
Resolution: closed issue
Revised Text:
Actions taken:
January 23, 1998: received issue
May 19, 1998: closed issue
Discussion:
Issue 1090: Reserved names (java-rtf)
Click here for this issue's archive.
Nature:
Severity:
Summary: Summary: The list of java keywords provided is an old one.
> Should this be updated to the following list?
> abstract boolean break
> byte byvalue case cast catch char
> class const continue default do double
> else extends final finally float for
> future generic goto if implements import
> inner instanceof int interface long native
> new null operator outer package private
> protected public rest return short static
> super switch synchronized this throw throws
> transient try var void volatile while
Resolution: closed issue
Revised Text:
Actions taken:
March 20, 1998: received issue
February 19, 1999: closed issue
Discussion:
Issue 1142: POA_Interface bug (java-rtf)
Click here for this issue's archive.
Nature: Revision
Severity:
Summary: Summary: Chapter 5.2.4
class POA_<interface_name> is supposed to implement
<interface_name>Operations.
However neither specification nor the example contain any
operations method. The class also are not specified abstract.
Resolution: closed issue
Revised Text:
Actions taken:
April 16, 1998: received issue
May 18, 1998: closed issue
Discussion:
Issue 1143: Chapter 9.8.1 Local stubs-bug (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: Chapter 9.8.1
Says "Local stubs are defined to be direct base classes of remote stubs"
Does it matter? It is the opposite way as proposed in the drawing in
chapter 6.4
MORE FAR-FETCHED IDEA
What if the Operations interface would not contain the inheritance
relationship? Wouldn"t that be a step in the direction of being able
to implement independent interfaces with one class. (To be
functional this would need matching changes in the tie class)
Resolution: closed issue
Revised Text:
Actions taken:
April 16, 1998: received issue
May 18, 1998: closed issue
Discussion:
Issue 1167: Any.insert_Object() (java-rtf)
Click here for this issue's archive.
Nature: Revision
Severity:
Summary: Summary: In Section 23.13, the signature for insert_Object() is given as,
// throw excep when typecode inconsistent with value
abstract public void insert_Object(
org.omg.CORBA.Object o, org.omg.CORBA.TypeCode t)
throws org.omg.CORBA.MARSHAL;
Does this mean if an incorrect TypeCode is passed, eg. tk_short, that a
MARSHAL
Exception must be thrown or could a BAD_PARAM Exception be thrown.
Resolution: closed issue
Revised Text:
Actions taken:
April 22, 1998: received issue
May 18, 1998: closed issue
Discussion:
Issue 1242: Any"s and Exceptions (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: In Section 23.13, the signature for insert_Object() is given as,
// throw excep when typecode inconsistent with value
abstract public void insert_Object(
org.omg.CORBA.Object o, org.omg.CORBA.TypeCode t)
throws org.omg.CORBA.MARSHAL;
Does this mean if an incorrect TypeCode is passed, eg. tk_short, that a
MARSHAL Exception must be thrown or could a BAD_PARAM Exception
be thrown.
Also, I assume read_value() is meant to insert a complex IDL type into
an Any ?
If so, read_value() is supposed to throw a MARSHAL Exception if the
typecode
is inconsistent with the value. Does this mean that if a short has been
written to the
stream, but the stream is passed with a tk_sequence typecode, then an
Exception
should be thrown by read_value() ?.
Resolution: closed issue
Revised Text:
Actions taken:
April 27, 1998: received issue
May 18, 1998: closed issue
Discussion:
Issue 1381: No INV_NO_RESPONSE possible in Java DII (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: There is no Flags argument in the create_request operations
as mapped from PIDL to Java. This means that there is no
way to create a request with INV_NO_RESPONSE. Therefore,
you cannot do oneway invocations in Java DII without the ORB
having to consult the Interface Repository (clearly
unnacceptable).
Resolution: closed/resolved
Revised Text:
Actions taken:
May 18, 1998: received issue
July 30, 1998: closed issue
Discussion:
Issue 1385: Discriminated Union value issue (java-rtf)
Click here for this issue's archive.
Nature: Revision
Severity:
Summary: Summary: An IDL Discriminated Union has a discriminator of some type. The
discriminator is permitted to take any value allowed by its type -
nothing in the CORBA spec constrains the discriminator"s value to be
those of the branch labels present in the union or just one catch-all
default. For this reason, CORBA 2.2, section 3.8.2 defines a Discriminated
Union"s value as follows: <example>So, if I were to create a foo and set the discriminator to 74, someone
receiving this instance from me should be able to discern that the
discriminator"s value was set to 74.
As it stands, the IDL->Java mapping provides for discovering the value
of the discriminator, so if some other ORB sent me a foo with the
discriminator set to 74 I could discern this, but as far as I can tell
from reading the current IDL->Java mapping (CORBA 2.2 - no relevant
changes appear to be present on orbos/98-03-10) there is no way that I
could set the discriminator"s value to 74.
Resolution: closed issue
Revised Text:
Actions taken:
May 19, 1998: received issue
July 30, 1998: closed issue
Discussion:
Issue 1536: Helper classes are only for user defined IDL types (java-rtf)
Click here for this issue's archive.
Nature: Clarification
Severity: Significant
Summary: Summary: The Java Language Mapping mandates Helper classes for user defined IDL
types but does not say Helper classes are ONLY for user defined IDL types.
Please let us all know whether the ObjectHelper class is standard or not.
Resolution: closed issue
Revised Text:
Actions taken:
June 23, 1998: received issue
July 30, 1998: closed issue
Discussion:
Issue 1577: Section 7.1.3 of Java to IDL mapping (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: Section 7.1.3 of the Java to IDL mapping specifies new methods
_request, _invoke, and _releaseReply to be added to both
org.omg.CORBA.portable.ObjectImpl and org.omg.CORBA.portable.Delegate.
There is an existing convention that methods on ObjectImpl have
leading underscores but the corresponding methods on Delegate do not.
I propose that the new methods on Delegate be named request, invoke,
and releaseReply to confirm to this existing convention.
Resolution: closed issue
Revised Text:
Actions taken:
June 24, 1998: received issue
July 30, 1998: closed issue
Discussion:
Issue 1583: org.omg.CORBA.UserException class not specified (java-rtf)
Click here for this issue's archive.
Nature: Revision
Severity:
Summary: Summary: The current mapping does not specify the org.omg.CORBA.UserException
class. I propose the mapping below. All generated user exception
constructors should then pass the exception"s id to the UserException
string constructor. The toString() method on the exception will then
output the Exception"s type id.
package org.omg.CORBA;
public abstract class UserException extends java.lang.Exception
{
public UserException()
{
}
public UserException(String r)
{
super(r);
}
}
Resolution: closed issue
Revised Text:
Actions taken:
June 26, 1998: eceived issue
July 30, 1998: closed issue
Discussion:
Issue 1586: Callback issue (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: IIOP only permits requests to flow in the direction that the underlying
connection was opened. The Java sandbox only allows outbound
connections. Consequently we are left with a situation where applets can
only ever make outbound requests, callback objects can never be
registered. For any sort of asynchronous notification pattern, this is a
problem. (There is an obvious workaround with blocking calls and a
waiting thread, but this sort of interaction should never be required of
application developers.)
Most products provide a means to handle callbacks in this situation,
presumably via non-standard mechanisms, I am yet to explore how.
It would seem that, from the point of view of those involved in this
RTF, a standardised means to handle reverse calls over IIOP would be
beneficial.
Is my reasoning flawed? Is there a revision going on elsewhere to
address this? Is there interest in standardising this?
Resolution: closed issue
Revised Text:
Actions taken:
June 26, 1998: received issue
July 30, 1998: closed issue
Discussion:
Issue 1672: Does object reference == ObjectImpl? (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: The issue is whether or not code that calls the _this_object method
of the org.omg.PortableServer.Servant class (which is declared to
return an org.omg.CORBA.Object type) can assume that the result
of calling _this_object can be safely cast to ObjectImpl.
The decision of the RTF was that this is a safe assumption, but no
change is necessary to the spec because it is already clearly stated
that all stubs (object references) must be subclasses of ObjectImpl.
Resolution: closed issue
Revised Text:
Actions taken:
July 13, 1998: received issue
July 30, 1998: closed issue
Discussion:
Issue 1696: Proposed change to orb.init (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: How should ORB.init() be fixed?
ORB.init() should try to find an ORB class in the following order:
1. Try loading the class using Class.forName(String className) -- this is
to take into account the possibility that the ORB implementation class
is in the core (for example: com.sun.CORBA.iiop.ORB). If that fails,
2. Try loading the class using Class.forName(String className, boolean
initialize, ClassLoader cl), where cl ==
ClassLoader.getSystemClassLoader(). In the case of an applet, cl ==
applet.getClass().getClassLoader().
For sophisticated users who might have a well-behaved ClassLoader that knows
how to load the ORB implementation, it might be necessary to have a new
ORB.init() that takes a ClassLoader as an argument. For example:
ORB.init(String[] args, Properties props, ClassLoader cl);
In this case, ORB.init() would load the class using the class loader that
was passed by the user instead of the system class loader.
Resolution: closed issue
Revised Text:
Actions taken:
July 20, 1998: receive dissue
February 23, 1999: closed issue
Discussion:
Issue 1701: Mapping of IDL constants to Java (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: The IDL to Java mapping specifies that IDL constants are mapped
to public static final fields within a Java interface. Examples
are shown that include "public static final" modifiers for these
fields.
The Java Language Specification (Gosling/Joy/Steele) states in
section 9.3 that "Every field declaration in the body of an
interface is implicitly public, static, and final. It is permitted,
but strongly discouraged as a matter of style, to redundantly
specify any or all of these modifiers for such fields."
I propose that the text and examples be changed to remove the
explicit "public static final" modifiers.
Resolution: closed issue
Revised Text:
Actions taken:
July 20, 1998: received issue
July 30, 1998: closed issue
Discussion:
Issue 1703: orb.properties file issue (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary:
The search order followed by ORB.init when looking for the names
of the ORB and ORB singleton classes does not allow a user to
install a specified ORB as the default ORB, overriding the
hardcoded default behavior. It is possible to override the
hardcoded default by setting system properties, but this requires
running the java command with an explicit -D option every time,
which is awkward.
I propose that an additional step be added to this search order,
between "check in the System properties" and "fall back on
hardcoded default behavior".
Resolution: closed issue
Revised Text:
Actions taken:
July 20, 1998: received issue
July 30, 1998: closed issue
Discussion:
Issue 1704: Proposed change sto IDL/Java mapping (java-rtf)
Click here for this issue's archive.
Nature: Revision
Severity:
Summary: Summary: The following proposal describes changes to the IDL/Java mapping
that will allow values to be marshalled and demarshalled more
efficiently in both the "forward mapping" and "reverse mapping"
cases. It also allows other IDLEntity types to be marshalled and
demarshalled more efficiently in the reverse mapping case, and it
fixes some problems in the existing spec with marshalling and
demarshalling values and boxed strings.
Resolution: closed issue
Revised Text:
Actions taken:
July 20, 1998: received issue
July 30, 1998: closed issue
Discussion:
Issue 1705: Add Any.extract_Streamable() (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: org.omg.CORBA.portable.Streamable extract_Streamable();
As the name of the operation suggests it allows any Streamable
value inserted into an Any using insert_Streamable() to be
extracted. A BAD_INV_ORDER exception will be thrown if the
operation is invoked on an Any that doesn"t already contain a
Streamable.
The addition of this method allows for a more efficient Any
implementation especially when collocation and DII/DSI is in use.
Resolution: closed issue
Revised Text:
Actions taken:
July 20, 1998: received issue
July 30, 1998: closed issue
Discussion:
Issue 1722: New stream based stubs and location forward (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: The new portable stream-based stubs for the Java language mapping
do not properly handle location forwards properly. The ORB must
be able to give some indication to the ORB that it must remarshal
in case the ORB receives a locate forward or object forward message.
The remarshalling is required because the object key in the request
message may have changed and the alignment will be incorrect.
Resolution: closed issue
Revised Text:
Actions taken:
July 22, 1998: received issue
July 30, 1998: closed issue
Discussion:
Issue 1724: OutputStream semantics question (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: When an InputStream is created by an OutputStream, is it permitted to
continue to write anything more to the OutputStream?
If this is not permitted, we should presumably lock out the OutputStream
and throw an exception if another write_X is attempted after the
create_input_stream.
If this is permitted, we need to say whether or not the things written
to the OutputStream after the InputStream is created show up in the
InputStream or not.
Resolution: closed issue
Revised Text:
Actions taken:
July 22, 1998: received issue
July 30, 1998: closed issue
Discussion:
Issue 1730: Changes to Java fixed type mapping (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: The current mapping for fixed type was written with the intention
of supporting JDK 1.0.2 as well as JDK 1.1. Recent changes in the
Java RTF and other recently adopted submissions (Java to IDL) have
introduced a JDK 1.1 requirement in the Java mapping which make
it possible to implement certain operations on fixed types in a
type safe manner instead of the current specification.
Resolution: closed issue
Revised Text:
Actions taken:
July 24, 1998: received issue
July 30, 1998: closed issue
Discussion:
Issue 1731: Java mapping"s use of _this() (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: The current Java mapping for the POA defines semantics for _this()
(also known as _this_object()) which are consistent with the C++
mapping. However, the current specification for
org.omg.PortableServer.Servant does not support those semantics.
Resolution: closed issue
Revised Text:
Actions taken:
July 24, 1998: received issue
July 30, 1998: defer
February 22, 1999: closed issue
Discussion: Resolution is to fix the behavior of servant_to_reference by revising text as shown below
Issue 1732: Changes to Java interface mapping (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: This issue is based off of discussion with engineers at Sun.
The recent portability submission introduced changes to the
mapping for Java interfaces. This change was to generate both
a signature interface and an operations interface. The signature
interface is defined to extend the operations interface. While
the need for both interfaces is clear, it is not clear if the
relationship between the two interfaces is necessary. The change
requires additional classes to be downloaded for the remote stub
case and could potentially impact performance.
Resolution: closed issue
Revised Text:
Actions taken:
July 24, 1998: received issue
July 30, 1998: closed issue
Discussion:
Issue 1734: Mapping of IDL names that clash with java.lang.Object methods (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: It appears that the IDL to Java mapping does not remap IDL identifiers
that collide with the 9 method names defined for java.lang.Object; i.e.
"clone", "equals", "finalize", "getClass", "hashCode", "notify",
"notifyAll", "toString" and "wait"
If a CORBA/Java server attempts to implement IDL operations with these
names, it will either overload the Object operations, or give compilation
errors (for Object methods declared as "final"). In either case, it looks
like the IDL mapping should treat these names as if they were Java
reserved words.
Resolution: closed issue
Revised Text:
Actions taken:
July 25, 1998: received issue
June 4, 1999: closed issue
Discussion:
Issue 1737: Compiler-readable code (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary:
PLEASE PLEASE PLEASE resist the temptation to include consolidated Java
source code in .PDF files. At least 3 reasons exist:
- EVERY publication of the consolidated org.omg.* hierachy so far has
contained code that, even before inclusion in the PDF, simply could not
have compiled (void functions returning values, non-void functions
failing to do so, etc.). Errors of this nature arise through having an
editor have to maintain two seperate copies of the code. The need to
apply changes twice (to compiler readable and to .PDF) all but
guarantees that errors will creep in, particularly given that only the
non-.PDF version can be machine checked.
Resolution: closed issue
Revised Text:
Actions taken:
July 27, 1998: received issue
June 4, 1999: closed issue
Discussion:
Issue 1738: Object._request variants are unspecified (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: It is possible that some part of the C++ mapping is intended to apply
here, but even so, the Java mapping should stand independantly of the
C++ mapping. Requiring Java developers (of ORBs and of applications) to
know C++ and the C++ mapping seems excessive
Resolution: closed issue
Revised Text:
Actions taken:
July 27, 1998: received issue
June 4, 1999: closed issue
Discussion:
Issue 1739: Local stubs (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: - There is no example given in the mapping. I forget the exact problem,
but some guesswork was required to work out exactly what code should be
generated.
- Why should the class name be specified? Surely it is up to the Helper
to generate instances and thus decide which to create? (I note that
recent changes have altered this somewhat, with ORBs apparently now free
to bypass the Helper altogether and instantiate stubs directly. This
seems like a bad idea.)
- Why are local stubs disctinct? Given that a local stub has to deal
with the possibility of an object ceasing to be local, and that it would
be desirable for a non-local stub to discover that an object has become
local and make use of that knowledge, surely it is up to ORB
implementors to have their Helpers make whatever choices are appropriate
to instantiate appropriate stubs. The way that the mapping currently
stands, it does not seem to be possible to implement a stub that will
cope with objects moving into and out of the current JVM and still
remain compliant.
- _is_local is redundant. The success/failure of preinvoke is the acid
test. This also avoids races: if preinvoke suceeds then you know that
the object is available for a single local invocation. If _is_local
suceeds, then you know nothing of the sort, you have to invoke preinvoke
anyway, and if it fails, invoke remotely anyway.
Resolution: closed issue
Revised Text:
Actions taken:
July 27, 1998: received issue
June 4, 1999: closed issue
Discussion:
Issue 1741: Java RTF issue (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: ObjectImpl._servant_preinvoke(), how many arguments does it take? The
spec and the consolidated code in the appendix currently differ.
---
Are Helpers/Holders for SystemExceptions generated? Are they streamable?
How does one insert them into an Any?
(I gain the impression that there has been some work in this area. This
may no longer be an issue.)
---
Why are the mapped classes for structs "final" when little else is? Is
there a reason for preventing application developers from sub-typing
them?
Resolution: closed issue
Revised Text:
Actions taken:
July 27, 1998: received issue
June 4, 1999: closed issue
Discussion:
Issue 1746: Conext support in Java (java-rtf)
Click here for this issue's archive.
Nature: Revision
Severity:
Summary: Summary: Below are the proposed spec changes to support Contexts in IDL/Java.
It turns out that some type of API change will be required. As I was
investigating this further today I realized that one of the methods
on ORB we have to support Context streaming is a proprietary method
and not a standard method, so there is no way to create a Context
object given an InputStream. This makes demarshalling of contexts
impossible in the stream-based model as it exists today. The proposal
adds one new method each to InputStream and OutputStream. Also, as
requested by Simon I have text which states how the Context parameters
are used in interface method declarations.
Resolution: closed issue
Revised Text:
Actions taken:
July 27, 1998: received issue
June 4, 1999: closed issue
Discussion:
Issue 1750: 2 IDL->Java issues on the singleton ORB (02) mapping of IDL enumerations to java (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: How is an ORB to determine whether or not it is in an
applet context? The nearest that I can see is to check for the presence
of a SecurityManager. If we are in an applet context, then there is a
SecurityManager present, but the inverse (that the presence of a
SecurityManager implies that we are in an applet) is not true. It is
however the case that whenever a SecurityManager is present, potentially
untrusted code is present, so the same constraints on the singleton ORB
are probably appropriate. Therefore, I propose that the specification be
changed to state that if System.getSecurityManager() returns a non-null
result, the singeton ORB should be constrained to creating TypeCodes and
Anys.
Resolution: Close, no action
Revised Text:
Actions taken:
July 29, 1998: received issue
June 4, 1999: closed issue
Discussion:
Issue 1752: mapping of IDL enumerations to java (java-rtf)
Click here for this issue's archive.
Nature: Revision
Severity: Significant
Summary: Summary: he current mapping of IDL enumerations to Java relies on there being
one and only one instance of an enum. The instance is held as
a static variable in the enumeration class. Since there is only
one instance, identity comparisons are used in comparing enums and
the enumeration value class does not implement equality or hash
methods based on the value of the enum.
Resolution: Close, no action
Revised Text:
Actions taken:
July 29, 1998: received issue
June 4, 1999: closed issue
Discussion:
Issue 1754: Proposal to change get_value_def in Java mapping (java-rtf)
Click here for this issue's archive.
Nature: Revision
Severity:
Summary: Summary: The current support for get_value_def in Helper classes in the
Java mapping for values is currently has several problems.
1. It cannot work with the singleton ORB, which means that the API
is unusable.
2. It requires the generation of the nearly the exact same code in
every single value helper which is very wasteful.
The new proposal is to remove get_value_def from the Value helper class
and add it to the ORB class
Resolution: closed issue
Revised Text:
Actions taken:
July 30, 1998: received issue
June 4, 1999: closed issue
Discussion:
Issue 1795: final methods on ObjectImpl (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: The _get_delegate() and _set_delegate() methods on the Java class
org.omg.CORBA.portable.ObjectImpl should be marked "final" so they
can be inlined by an optimizing java compiler.
Resolution: closed issue
Revised Text:
Actions taken:
August 11, 1998: received issue
June 4, 1999: closed issue
Discussion:
Issue 1897: Evolving the org.omg.* APIs (java-rtf)
Click here for this issue's archive.
Nature: Revision
Severity:
Summary: Summary: Now that the org.omg.* APIs are built into the JDK core (from JDK 1.2
onwards), there is an issue with how these could be evolved to
support changes to the OMG spec that happen between JDK major releases.
The following is a proposal for how this could be handled.
Resolution: resolved, see revised text
Revised Text: 1. Change the IDL/Java mapping of enums so that
a. the generated Java classes are not final
b. the from_int method is not final, and
c. the constructor is protected instead of private.
Rationale:
This change has previously been discussed by this RTF. It is
needed in this context because of the need to include some Java
classes mapped from IDL enums (e.g., TCKind) in the core JDK.
If new members are added to such an enum later, there needs to be
a way to subclass the generated Java class to produce a subclass
that corresponds to the new IDL (or PIDL) enum.
2. Change the Object, ObjectImpl, and Delegate classes to
a. add new methods
org.omg.CORBA.Object _get_interface_def()
to Object and ObjectImpl and
org.omg.CORBA.Object get_interface_def(org.omg.CORBA.Object self)
to Delegate.
b. deprecate the existing methods
org.omg.CORBA.InterfaceDef _get_interface()
on Object and ObjectImpl and
org.omg.CORBA.InterfaceDef get_interface(org.omg.CORBA.Object self)
on Delegate.
Rationale:
The new methods do not refer to Interface Repository types in their
signatures. However, at runtime they still return the same IR objects
as the deprecated methods. Since this signature change is a binary
incompatible change, and since Java methods cannot be overloaded on
their return types, the new methods have different names than the
deprecated methods. This allows an easier path for user migration
than if the method signatures had been updated "in place".
Removing IR types from the signatures allows the new methods to be
included in the core JDK without also having to include all the IR
classes in the core JDK. With likely changes in this area in the near
future because of the Components RFP, it is felt to be unwise to put
the IR into core in JDK 1.2.
3. Change the ORB class to
a. add a new method
public NVList create_operation_list(org.omg.CORBA.Object oper)
b. deprecate the existing method
public NVList create_operation_list(org.omg.CORBA.OperationDef
oper)
Rationale:
The reason for this change is as for item 2 above. Since Java supports
overloading on argument types, there is no need to change the method
name in this case.
4. Move some methods needed by Objects By Value from the ORB, InputStream
and
OutputStream classes to new subclasses (that will not be part of the core
JDK 1.2). The names of these new classes are:
org.omg.CORBA_2_3.ORB
org.omg.CORBA_2_3.portable.InputStream
org.omg.CORBA_2_3.portable.OutputStream
and the methods affected are:
ORB.get_value_def
ORB.register_value_factory
ORB.unregister_value_factory
ORB.lookup_value_factory
InputStream.read_Value
InputStream.read_Abstract
OutputStream.write_Value
OutputStream.write_Abstract
OutputStream.start_block
OutputStream.end_block
Actions taken:
August 28, 1998: received issue
June 4, 1999: closed issue
Discussion:
Issue 1941: Problem mapping "global" types in Java mapping (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: The current IDL/Java mapping cannot correctly map IDL "global" types
correctly in all cases.
Resolution: Close, no action
Revised Text:
Actions taken:
September 9, 1998: received issue
June 4, 1999: closed issue
Discussion: closed issue
Issue 1942: Need overloaded write_Value method on OutputStream (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: We have come across a case in the Java-to-IDL mapping where we
need another overloaded form of the write_Value method on the
org.omg.CORBA.portable.OutputStream class.
Resolution: Close, no action
Revised Text:
Actions taken:
September 10, 1998: received issue
June 4, 1999: close dissue
Discussion:
Issue 1961: Java Mapping for interfaces -- Proposal (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: Sun would like to see the following changes to the mapping:
* Change the specification to:
*
* either not specify that object reference types extend the operations interfaces, or
*
* specify that object reference types do not inherit from the operations interface and that the operations interface is just used on the server-side for delegation-based object implementations.
*
* The convention established was that the names of all Java classes/interfaces generated for the server-side as well as those that are not visible start with an `_". We would like to stick to the convention and rename the operations interface accordingly.
Resolution:
Revised Text:
Actions taken:
September 15, 1998: received issue
June 4, 1999: closed, issue
Discussion:
Issue 1964: Creating TypeCodes safely in java (java-rtf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Summary: There are problems with creating recursive TypeCodes containing values.Our proposal is really quite simple. We want to add a new class to the
org.omg.CORBA.portable package defined as follows:
package org.omg.CORBA.portable;
final public class TypeCodeLock {
}
All generated type() methods in Helper"s could synchronize on the
TypeCodeLock"s class object to grab a global lock which is used during
TypeCode creation to guarnatee the atomicity of TypeCode creation.
Note, this is essentialy what is done in C++ where TypeCodes are typically
initialized in a global static initalizer which is done from a single
thread. We are just allowing the typecodes to be created lazily.
Resolution: Close, no action
Revised Text:
Actions taken:
September 16, 1998: received issue
June 4, 1999: closed issue
Discussion:
Issue 1980: Updated proposal for the OBV Java mapping (java-rtf)
Click here for this issue's archive.
Nature: Revision
Severity:
Summary: Summary: updated proposal for the OBV Java mapping which addresses
a number of issues which have been raised by us and others. This
proposal is based on a number of discussions and previous proposals
and current OMG submissions (thanks to Simon Nash and Bernard
Normier). As with previous poposals, these are not currently formal
proposals, just working drafts. ;-)
Here are the current issues:
1. Java valuetypes cannot unmarshal recursive references to themselves.
This is the same problem that occurs with custom valuetypes.
2. The current language mapping mixes both generated code with user
written code in the same source file. This poses a very complex "tool"
issue for IDL compilers which is unnecessarily complex.
3. Java valuetypes need a way to unmarshal the state of their base class.
4. The addition of the new Helper interface adds ~400 bytes to every
Helper class, of which there are about 250 in a typical ORB implementation.
Which is an overhead of about 100k just to support an optimization of
a corner case in RMI/IIOP where an RMI type happens to contain an IDL type.
This doesn"t even begin to address the bloat that would occur to user code
as well as any additional CORBA services. The space/time tradeoff here
appears to have gone the wrong way.
5. The ValueHelper interface contains the method get_safe_base_ids, which is
inconsistent with current OBV terminology.
6. The marshaling of boxed types should be considered carefully, because of
the special casing required for boxed strings, arrays, and sequences.
7. The compiler should provide compile time enforcement of init() declarations.
Resolution: resolved, see revised text
Revised Text: The solution is modify the mapping so as to use an easier deal with form of a 2 class mapping,
much like C++, to add facilites that will fix the bugs that don't allow recursive structures to be marshaled and unmarshaled, reduce the "bloat", handle all the boxed
values correctly, etc.
This proposal, coupled with the proposal to fix Issue 1981, which deals with the "init" portion of the issue at the IDL level, fixes all the known problems with the
OBV/Java mapping.
Revised Text:
The changes are relative to version of Chapter 25 which has had Issue 1897 Evolving the org.omg.* APIs
applied to it (available as ftp://ftp.omg.org/orbrev/drafts/idljava_2_4v1.2.pdf )
Add in section 25.4.1.4 after ObjectHolder
final public class ValueBaseHolder {
public org.omg.CORBA.portable.ValueBase value;
public ValueBaseHolder() {}
public ValueBaseHolder(org.omg.CORBA.portable.ValueBase initial) {...}
public void _read(org.omg.CORBA.portable.InputStream is) {...}
public void _write(org.omg.CORBA.portable.OutputStream os){...}
public org.omg.CORBA.TypeCode _type(){...}
}
Replace section 25.5.1 with:
25.5.1 Generic BoxedValueHelper Interface
package org.omg.CORBA.portable;
public interface BoxedValueHelper {
java.io.Serializable read_value(InputStream is);
void write_value(OutputStream os, java.io.Serializable value);
java.lang.String get_id();
}
In 25.5.2 delete the 2nd and 5th paragraphs.
In 25.5.2 delete the specification of the "generated Java helper (value types)
In 25.5.2, in the specification of the "generated Java helper (non value types):
a. delete the "(non value types)" from the comment
b. Add the following methods to the end of the generated <typename>Helper class specification:
// for each initializer in non abstract value type (see section 25.5.2.1)
public static <typename> <initializername> (org.omg.CORBA.ORB orb, [<initializer arguments>]) {...}
c. Remove the paragraph following that starts with: "For any user defined, value type ... "
Add a new section 25.5.2.1 "Value type initializer convenience functions" as follows:
For each initializer in a value type declaration, a corresponding
static convenience method is generated in the helper class for the
value type. The name of this method is the name of the initializer.
This method takes an orb instance and all the arguments
specified in the initializer argument list. The implementation of each
of these methods will locate a <typename>ValueFactory (see section
xxx) and call the identically named method on the ValueFactory passing
in the supplied arguments.
Replace all of section 25.13 Mapping for Value Type with:
25.13.1 Supporting interfaces for value types
25.13.1.1 ValueBase interface
package org.omg.CORBA.portable;
public interface ValueBase extends IDLEntity {
String[] _truncatable_ids();
}
All values implement ValueBase either directly (for boxed primitives - see section 25.14.1), or indirectly by implementing either the StreamableValue or
CustomValue interface (see below).
25.13.1.2 StreamableValue interface
package org.omg.CORBA.portable;
public interface StreamableValue extends Streamable, ValueBase {
}
All non-boxed IDL valuetypes that are not custom marshalled,
implement this interface.
25.13.1.3 CustomMarshal interface
package org.omg.CORBA;
public interface CustomMarshal {
public void marshal (org.omg.CORBA.DataOutputStream os);
public void unmarshal (org.omg.CORBA.DataInputStream is);
}
Implementors of custom marshalled values implement the above
interface to provide custom marshalling.
25.13.1.4 CustomValue interface
package org.omg.CORBA.portable;
public interface CustomValue extends ValueBase, org.omg.CORBA.CustomMarshal {
}
All custom value types generated from IDL implement this interface.
25.13.1.5 ValueFactory interface
package org.omg.CORBA.portable;
public interface ValueFactory {
java.io.Serializable read_value(InputStream is);
}
The ValueFactory interface is the native mapping for the IDL type
CORBA::ValueFactory. The ValueFactory's read_value() method is
called by the ORB runtime in the process of unmarshaling a
valuetype. A user must implement this method as part of implementing
a type specific ValueFactory. In this implementation, the user must call java.io.Serializable is.read_value(java.io.Serializable) with a blank valuetype to use for
unmarshalling. The value returned by the stream is the same value passed in with all the data unmarshalled.
25.13.2 Basics for stateful value types
A concrete value type (i.e. one that is not declared as abstract) is
mapped to an abstract Java class with the same name, and a factory Java interface
with the suffix "ValueFactory" appended to the value type name. In addition, a helper
class with the suffix "Helper" appended to the value type name and a holder
class with the suffix "Holder" appended to the value type name shall be generated.
The specification of the generated holder class is as follows:
public final class <typename>Holder implements org.omg.CORBA.portable.Streamable {
public <typename> value;
public <typename>Holder () {}
public <typename>Holder (final <typename> initial) {
value = initial;
}
public void _read (final org.omg.CORBA.portable.InputStream input) {...}
public void _write (final org.omg.CORBA.portable.OutputStream output) {...}
public org.omg.CORBA.TypeCode _type () {...}
}
The value type's mapped Java abstract class contains instance variables that correspond to the
fields in the state definition in the IDL declaration. The order and name of the
Java instance variables shall be the same as the correspondng IDL state fields. Fields that are
identified as public in the IDL are mapped to public instance variables. Fields
that are identified as private in the IDL are mapped to protected
instance variables in the mapped Java class.
The Java class for the value type extends either org.omg.CORBA.portable.CustomValue or org.omg.CORBA.portable.StreamableValue, depending on
whether it is declared as custom in IDL or not, respectively.
The generated Java class shall provide implementation of the ValueBase interface for this value type.
The value type's generated value factory interface extends
org.omg.CORBA.portable.ValueFactory and contains one method
corresponding to each initializer declared in the IDL. The name of the
method is the same as the name of the initializer, and the initializer
arguments are mapped in the same way as in parameters are for IDL operations.
The implementor shall provide a factory class with implementations for the
methods in the generated value factory interface. When
no initializers are declared in IDL, then the value type's value factory
is eliminated from the mapping and the implementor shall simply implement
org.omg.CORBA.portable.ValueFactory to provide the method body for
read_value().
The inheritance scheme and specifics of the mapped class depend upon the
inheritance and implementation characteristics of the value type and are described
in the following subsections.
The mapped Java class contains abstract method definitions which correspond to
the operations and attributes defined on the value type in IDL.
An implementor of the value type extends the generated Java class to provide
implementation for the operations and attributes declared in the IDL, including
those for any derived or supported value types or interfaces.
25.13.2.1 Inheritance from values
- Value types that do not inherit from other values or interfaces:
For non custom values, the generated Java class also implements the
StreamableValue interface and provides appropriate implementation to marshal the
state of the object. For custom values, the generated class extends CustomValue
but does not provide an implementation for the CustomMarshal methods.
- inheritance from other stateful values
The generated Java class extends the Java class to which the inherited value
type is mapped
- inheritance from abstract values
The generated Java class implements the Java interface to which the inherited
abstract value is mapped(see section 25.13.3).
- supported interfaces
The Java class implements the Operations Java interface of all the interfaces(if
any) that it supports. (Note that the operations interface for abstract
interfaces does not have the "Operations" suffix, see section 25.12.1.1). The
implementation of the supported interfaces of the value type shall use the tie
mechanism, to tie to the value type implementation.
25.13.3 Abstract Value Types
An abstract value type maps to a Java interface that implements ValueBase and contains all the operations and
attributes specified in the IDL, mapped using the normal rules for mapping operations and atttributes.
Abstract value types cannot be implemented directly. They must only be inherited by other stateful value types or abstract value types.
25.13.4 CORBA::ValueBase
CORBA::ValueBase is mapped to java.io.Serializable.
The get_value_def() operation is not mapped to any of the classes associated
with a value type in Java. Instead it appears as an operation on the ORB pseudo
object in Java(see "public static org.omg.CORBA.Object get_value_def(String
repId)" in section 25.19.10).
Note: This implies fixing up the referenced text in !too
25.19.10 to have the correct signature
25.13.5 Examples
In 25.13. 4 Example A
In the IDL
change init(in long w);
to: factory create(in long w);
Replace the generated Java by:
// generated Java
package ExampleA;
public abstract class WeightedBinaryTree implements org.omg.CORBA.portable.StreamableValue {
// instance variables
protected int weight;
protected ExampleA.WeightedBinaryTree left;
protected ExampleA.WeightedBinaryTree right;
abstract public int[] preOrder ();
abstract public int[] postOrder ();
public org.omg.CORBA.TypeCode _type () {...}
public void _read (final org.omg.CORBA.portable.InputStream _input) {
// read state information using the wire format
...
}
public void _write (final org.omg.CORBA.portable.OutputStream _output) {
....
}
public java.lang.String[] _truncatable_ids () {...}
}
public final class WeightedBinaryTreeHelper {
< ed note: put all the helper methods here>
public static WeightedBinaryTree create(ORB orb, int w) {
...
}
}
final public class WeightedBinaryTreeHolder implements org.omg.CORBA.portable.Streamable {
...
<Note: the code for this isn't changing so just leave the old code there>
}
public interface WeightedBinaryTreeValueFactory extends org.omg.CORBA.portable.ValueFactory {
public ExampleA.WeightedBinaryTree create (int w);
}
In 25.13.5 Example B
Keep the IDL and the Java mapping of the Printer interface as is.
Replace the generated Java for the WeightedBinaryTree with the following:
// generated java
package ExampleB;
public abstract class WeightedBinaryTree implements org.omg.CORBA.portable.StreamableValue, PrinterOperations {
protected int weight;
protected ExampleB.WeightedBinaryTree left;
protected ExampleB.WeightedBinaryTree right;
abstract public int[] preOrder ();
abstract public int[] postOrder ();
public org.omg.CORBA.TypeCode _type () {
...
}
public void _read (final org.omg.CORBA.portable.InputStream _input) {
...
}
public void _write (final org.omg.CORBA.portable.OutputStream _output) {
...
}
public java.lang.String[] _truncatable_ids () {
...
}
}
public final class WeightedBinaryTreeHelper {
.... // helper methods...
< ed note: put all the helper methods here>
}
public final class WeightedBinaryTreeHolder {
... <note this hasn't changed, fill in old one here>
}
// user written code for default ValueFactory
public class WeightedBinaryTreeDefaultFactory implements org.omg.CORBA.portable.ValueFactory {
public java.io.Serializable read_value (org.omg.CORBA.portable.InputStream is) {
//user implements code
}
}
Add a new 25.13.5 Example C
// IDL
typedef sequence<unsigned long> WeightedSeq;
module ExampleC {
custom valuetype WeightedBinaryTree {
private unsigned long weight;
private WeightedBinaryTree left;
private WeightedBinaryTree right;
factory create(in long w);
WeightedSeq preOrder();
WeightedSeq postOrder();
};
};
// generated Java
package ExampleC;
abstract public class WeightedBinaryTree implements org.omg.CORBA.portable.CustomValue {...}
public final class WeightedBinaryTreeHelper {...}
public final class WeightedBinaryTreeHolder {...}
[ editing note: fill in the ... as an aid to the reader ]
25.13.6 Keep as is currently in the specification
25.13.7 ValueFactory and Marshaling
Replace second bullet in factory lookup algorithm by:
- If this is not successful and the repository id is a standard IDL repository
id that starts with "IDL:",then extract the class name from the repository id by
stripping of the "IDL:" header and ":<major>.<minor>" version information
trailer and replacing all "/"s with "."s. Then attempt to load a value factory by
appending a "DefaultFactory" suffix to the above class name.
Replace third bullet in factory lookup algorithm by:
- If this is not successful and the repository id is a standard RMI repository
id that begins with "RMI:", then extract the class name from the repository id
by stripping of the "RMI:" header and the ":<hashcode>:[<suid>]" trailer and
applying all necessary conversions(see section 26.****). The ValueHandler
interface is used to read in the value, if it does not implement IDL Entity.
Replace paragraph following the bullets by:
The IDL native type ValueFactory is mapped in Java to org.omg.CORBA.portable.ValueFactory.
In 25.14 Mapping for Value Box Type, replace the 3rd paragraph with the following:
A boxed value needs to be treated differently than regular values
in Java. Boxed values don't have factories and don't implmenent
either the StreamableValue or CustomValue interfaces, so their
marshalling and unmarshalling is performed by a boxed value
helper object. In all cases, code can be generated to unmarshal
the boxed type. No user code is required for boxed values.
The BoxedValueHelper interface is implemented by all generated Helper
classes for boxed valuetypes. The inherited read_value() method is called
by the ORB runtime in the process of unmarshalling a boxed valuetype.
This is required for types that are immutable either in content (eg, string),
or size (eg, sequences). The write_value() method call is used for
marshalling the value box.
There are two general cases to consider. value boxes of primitive Java
types and value boxes for entities that are mapped to java classes.
In Section 25.14.1
Replace the first Java class <box_name> to be:
public class <box_name> implements ValueBase {
public <mapped_primitive_Java_type> value;
public <box_name>(<mapped_primitive_Java_type> initial)
{ value = initial; }
private static String[] _ids = { <box_name>Helper.id() };
public String[] _truncatable_ids()
{ return _ids; }
}
Replace the third Java class <box_name>Helper to be:
final public class <box_name>Helper implements org.omg.CORBA.portable.BoxedValueHelper {
public <box_name> read_value(InputStream is) {...}
public write_value(OutputStream is, <box_name> value) {....}
public String get_id() { ... }
.... // other helper methods
}
In Section 25.14.1.1 Primitive Type example:
Replace the MyLong class by:
public class MyLong implements ValueBase {
public int value;
public MyLong(int initial) { value = initial; }
private static String[] _ids = { MyLongHelper.id() };
public String[] _truncatable_ids() { return _ids; }
}
Replace MyLongHelper by:
final public class MyLongHelper implements org.omg.CORBA.portable.BoxedValueHelper {
public MyLong read_value(InputStream is) {...}
public write_value(OutputStream is, MyLong value) {....}
public String get_id() { ... }
.... // other helper methods
}
Add to end of paragraph on 25.14.2
//IDL
valuetype <box_name> <IDLtype>;
final public class <box_name>Helper implements org.omg.CORBA.portable.BoxedValueHelper {
public <IDLType> read_value(InputStream is) {...}
public write_value(OutputStream is, <IDLType> value) {....}
.... // other helper methods
}
final public class <box_name>Holder implements org.omg.CORBA.portable.Streamable {
public <mapped_java_class> value;
...
}
Add a new section 25.14.3 Examples
// IDL
module A {
valuetype BoxedString string;
};
// generated Java
package A;
public final class BoxedStringHelper implements org.omg.CORBA.portable.BoxedValueHelper {
private static final BoxedStringHelper _instance = new BoxedStringHelper();
public static java.lang.String read (final org.omg.CORBA.portable.InputStream _input) {
if (!(_input instanceof org.omg.CORBA_2_3.portable.InputStream)) {
throw new org.omg.CORBA.BAD_PARAM();
}
return (java.lang.String)((org.omg.CORBA_2_3.portable.InputStream)_input).read_value(_instance);
}
public static void write (final org.omg.CORBA.portable.OutputStream _output, final java.lang.String value) {
if (!(_output instanceof org.omg.CORBA_2_3.portable.OutputStream)) {
throw new org.omg.CORBA.BAD_PARAM();
}
((org.omg.CORBA_2_3.portable.OutputStream)_output).write_value(value, _instance);
}
public static void insert (org.omg.CORBA.Any any, java.lang.String value) {...}
public static java.lang.String extract (org.omg.CORBA.Any any) {...}
public static org.omg.CORBA.TypeCode type () {...}
public static java.lang.String id () {...}
public java.io.Serializable read_value (org.omg.CORBA.portable.InputStream _input) {
java.lang.String result;
result = _input.read_string();
return (java.io.Serializable)result;
}
public void write_value (org.omg.CORBA.portable.OutputStream _output, java.io.Serializable value) {
if (!(value instanceof java.lang.String)) {
throw new org.omg.CORBA.MARSHAL();
}
java.lang.String valueType = (java.lang.String)value;
_output.write_string(valueType);
}
public java.lang.String get_id () {
return id();
}
}
public final class BoxedStringHolder implements org.omg.CORBA.portable.Streamable {....}
Section 25.14.3.1 Example B
// IDL
struct idlStruct {
short x;
};
module A {
valuetype BoxedStruct idlStruct;
};
// generated Java
package A;
public final class BoxedStructHelper implements org.omg.CORBA.portable.BoxedValueHelper {
private static final BoxedStructHelper _instance = new BoxedStructHelper();
public static idlStruct read (final org.omg.CORBA.portable.InputStream _input) {
if (!(_input instanceof org.omg.CORBA_2_3.portable.InputStream)) {
throw new org.omg.CORBA.BAD_PARAM();
}
return (idlStruct)((org.omg.CORBA_2_3.portable.InputStream)_input).read_value(_instance);
}
public static void write (final org.omg.CORBA.portable.OutputStream _output, final idlStruct value) {
if (!(_output instanceof org.omg.CORBA_2_3.portable.OutputStream)) {
throw new org.omg.CORBA.BAD_PARAM();
}
((org.omg.CORBA_2_3.portable.OutputStream)_output).write_value(value, _instance);
}
public static void insert (final org.o