Document Number ptc/2003-01-01
Document Numbers:
The following 2 tables give the detailed results of each of the two votes in this report. The results of the interim report are not included here (see ptc/02-06-12.html). The symbols used are as follows:
| Results of Vote 4 | |||||||||||
| Member | Organization | Status | 4710 | 4945 | 5465 | 5468 | 5586 | 5595 | 5638 | 5693 | 5694 |
| Andy Piper | BEA | charter | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Cuie Zhao | Borland | charter | Y | Y | A | Y | Y | Y | Y | Y | Y |
| Mitchel Sanders | 2AB | charter | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Yoshitaka Honishi | Fujitsu | charter | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Jishnu Mukerji | HP | charter | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Ann Dalton | IBM | charter | Y | Y | N | Y | Y | Y | Y | Y | Y |
| Eoghan Glynn | Iona | charter | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Victor Giddings | OIS | added after interim report | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Jeff Mischkinsky | Oracle | charter | A | A | A | A | A | A | A | A | A |
| Ken Cavanaugh (chair) | Sun Microsystems | charter | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Results of Vote 5 | ||||||||||
| Member | Organization | Status | 2889 | 3633 | 3995 | 4010 | 5696 | 5728 | 5782 | 5783 |
| Andy Piper | BEA | charter | Y | Y | Y | Y | Y | Y | Y | Y |
| Cuie Zhao | Borland | charter | A | A | A | A | A | A | A | A |
| Mitchel Sanders | 2AB | charter | Y | Y | Y | Y | Y | Y | Y | Y |
| Yoshitaka Honishi | Fujitsu | charter | Y | Y | Y | Y | Y | Y | Y | Y |
| Jishnu Mukerji | HP | charter | Y | Y | Y | Y | Y | Y | Y | Y |
| Ann Dalton | IBM | charter | Y | Y | Y | N | Y | Y | Y | Y |
| Eoghan Glynn | Iona | charter | Y | Y | Y | Y | Y | Y | Y | Y |
| Victor Giddings | OIS | added after interim report | NV | NV | NV | NV | NV | NV | NV | NV |
| Jeff Mischkinsky | Oracle | charter | A | A | A | A | A | A | A | A |
| Ken Cavanaugh (chair) | Sun Microsystems | charter | Y | Y | Y | Y | Y | Y | Y | Y |
| Disposition | Number of Occurrences | Meaning of Disposition |
| Unresolved | 2 | TF has not resolved issue yet |
| Transferred | 1 | Transferred to another TF |
| Accepted (Changed and Closed) | 10 | Change made as requested |
| Rejected (Close, No Change) | 6 | RTF / FTF agreed NOT to do what was requested, or anything like it |
| Duplicate | 0 | Duplicate of another issue |
Issue 3068 (archive):
Messaging sendc and sendp missing from portability interfaces
Issue 5108 (archive): J2EE ORB
Socket Factory API
Issue 4945: IOR processing performance
Issue 4010: Should valuetype helper insert/extract
make copies?
Issue 4710: Mapping for character and
string types
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 5638:
Typo on getRaises and setRaises
Issue 5693: POA
changes missing in Java source archive
Issue 5694:
What is the IDL for ServiceInformation and/or what is the correct Java
mapping?
Issue 5782: Missing methods on
org.omg.CORBA.Object
Issue 5783: Stub handling of
UnknownException
Issue 2889: Should Any.extract_string work for
bounded strings?
Issue 3633: Request clarification
for use of alias typecodes in typedef helper classes
Issue 3995: Copying boxed valuetypes on local calls
Issue 5595:Should javadoc statement be removed or should
method be removed?
Issue 5696: Name mangling for
module names that are not valid Java identifiers
Issue
5728: Missing methods for fixed
In the specification:
In the source archive:
Click here for this
issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
It is not clear from the OMG specs or from looking at existing Java ORB products what behavior is intended for the following case:
I have tried this on two Java ORBs and it fails in both cases. It works when the Any's TypeCode is for an unbounded string. The spec is silent on whether or not this should work. The only relevant statement in the spec is the following from section 1.16:
Resolution: Close no change.
Revised Text:
Actions
taken:
September 15, 1999: received issue
Discussion:
I
can't see any reason why this should not work. It works in the current Sun ORB.
I also do not see any place in the mapping spec or in the core spec where this
question is addressed. It seems that this issue really has more to do with the
core CORBA architecture than the Java mapping. As no one has made any comment on
this issue in over 3 years, I propose that we close it no change.
Click here for this
issue's archive.
Nature: Clarification
Severity:
Summary:
I've noticed that there appears to be a lack of consistency between ORB vendors when it comes to the use of alias typecodes in Java helper classes generated for IDL typedefs.
Specifically, both Visibroker 4 and Orbix 2000 return an appropriate alias typecode from the helper class's type () method. However, the Visibroker 4 generated helper class does not use it in either the insert or extract methods, whilst the Orbix 2000 helper class uses it to set the typecode of the Any passed to the insert method and to check that the Any passed to the extract method is of the correct type.
Would it be possible to clarify which of these approaches is correct? From the specification of the IDL to Java mapping, it appears that typedef types are intended to be 'unwound' to the first non-typedef type, which would suggest that the first approach is OK. However, if this is the case, for what purpose is the alias typecode produced, if not for the setting/checking of typecodes of Anys containing instances of the associated type?
Resolution:Close no change.
Revised Text:
Actions
taken:
May 19, 2000: received issue
Discussion:
Either approach appears to be valid, especially since the typecode equality semantics simply unwind tk_alias typecodes until they reach a non-tk_alias typecode. I think no change is needed here.
Click here for this
issue's archive.
Source: International Business Machines (Mr.
Simon C. Nash, nash@hursley.ibm.com)
Nature:
Uncategorized Issue
Severity:
Summary:
In section 1.12.2 of the IDL to Java mapping spec, the second bullet should be clarified to state that the copying it describes applies only to non-boxed valuetypes and not to boxed valuetypes.
Valuetypes need to be copied (unlike structs, which aren't copied) because the methods of a valuetype can modify its state and it is not reasonable to require the callee to know whether or not calling a valuetype method has resulted in a change to the valuetype's state.
This does not apply to boxed valuetypes, which cannot have methods. Therefore, with respect to this copying, they should be treated like IDL constructed types, which are not copied.
Resolution:Close no change.
Revised Text:
Actions
taken:
October 25, 2000: received issue
Discussion:
As was
noted in the discussion 2 years ago on this issue, the situation is not quite as
simple as the issue originally supposed. For IDL, copying comes done to the
following simple idea:
In addition, all aliasing must be preserved, both within a single value, and between different arguments to the same invocation. In situations where a boxed value type can indirectly reference a value that is passed in the same call in a different argument, the boxed value type must be copied so that it refers to the same copy of the value that is used elsewhere in the call.
However, I am not sure that this is the only problem here. Simon makes reference to the idea that any type that refers to a non-boxed valuetype must be copied when passed as an in parameter, so for example a struct S containing a reference to a valuetype V must also be copied. But this directly directly contradicts the first bullet in section 1.12.2, which implies that non-valuetypes (like S) are not copied. Clearly if an instance s1 of S that refers to an instance v1 of V is created, and s1 and v1 are both passed in the same call, we would expect that sharing would be preserved. But that would require copying s1.
Given this problem, which is independent of whether we are considering boxed valuetypes or not, and the fact that no one has worked on this issue for over 2 years, I would like to close this issue in the current RTF. I would rather see an issue created to deal with defects in the copying of parameters than just address the narrow boxed valuetype question.
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 adopted resolution for issue 2531 has clarified that the Any.insert_Value and Any.extract_Value methods don't make copies of the Serializable parameter passed to insert_Value. Should the same be true for the valuetype helper's insert and extract methods? The IDL to Java mapping spec does not say anything about the copying semantics of helper insert and extract methods.
Resolution: Incorporate change and close issue.
Revised
Text:
Add the following sentence at the end of the first paragraph of
section 1.5.2:
"The Any insert and extract operations for Valuetype
helper classes do not copy their arguments: they implement reference semantics
just like Any.insert_Value and Any.extract_Value."
Actions
taken:
November 1, 2000: received issue
Click here for this
issue's archive.
Source: International Business Machines (Ms. Anne
E. Dalton, ann_dalton@uk.ibm.com)
Nature:
Uncategorized Issue
Severity:
Summary:
Sections 1.4.3 and 1.4.5 of the IDL to Java spec state that character and string range and bounds checking should be performed at marshal time. Since it is possible to receive IDL characters, e.g UTF16 surrogate pairs, that cannot, at present, be mapped to Java characters, could we clarify that this checking should be performed at both marshaling and demarshaling time, per section 4.11.3.25 DATA_CONVERSION of the CORBA 2.5 spec which states:-
This exception is raised if an ORB cannot convert the representation of data as marshaled into its native representation or vice-versa.
Also, could anyone please comment on the meaning of the term "character set" in the sentence beginning "If the char falls outside the range defined by the character set,..." in section 1.4.3. Does this refer to the TCS, NCS or both?
Resolution: Incorporate changes and close issue.
Revised
Text:
replace old 1.4.3:
IDL characters are 8-bit quantities representing elements of a character set while Java characters are 16-bit unsigned quantities representing Unicode characters. In order to enforce type-safety, the Java CORBA runtime asserts range validity of all Java chars mapped from IDL chars when parameters are marshaled during method invocation. If the char falls outside the range defined by the character set, a CORBA::DATA_CONVERSION exception shall be thrown.
The IDL wchar maps to the Java primitive type char. If the wchar falls outside the range defined by the character set, a CORBA::DATA_CONVERSION exception shall be thrown.
with new 1.4.3:
IDL characters are 8-bit quantities representing elements of a character set while Java characters are 16-bit unsigned quantities representing Unicode characters. In order to enforce type safety, the Java CORBA runtime asserts range validity of all Java chars mapped to or from IDL chars when parameters are marshaled or unmarshaled during method invocation.
Assume that a Java ORB has a particular native character set (NCS) and some transmission character set (TCS) has been negotiated for a particular object reference. The following rules apply for reporting errors in character encoding during data marshalling and unmarshalling in a method invocation on that object reference:
Similarly, the following rules apply for reporting errors in wchar encoding during data marshalling and unmarshalling in a method invocation on that object reference:
Replace section 1.4.5:
The IDL string, both bounded and unbounded variants, are mapped to java.lang.String. Range checking for characters in the string as well as bounds checking of the string is done at marshal time. Character range violations cause a CORBA::DATA_CONVERSION exception to be raised. Bounds violations cause a CORBA::BAD_PARAM exception to be raised. The IDL wstring, both bounded and unbounded variants, are mapped to java.lang.String. Bounds checking of the string is done at marshal time. Character range violations cause a CORBA::DATA_CONVERSION exception to be raised. Bounds violations cause a CORBA:: BAD_PARAM exception to be raised.
with the new section 1.4.5:
The IDL string type, in both the bounded and unbounded variants, is mapped to java type java.lang.String. Range checking for characters in the string as well as bounds checking of the string is done at marshal time. Character range violations cause a CORBA::DATA_CONVERSION exception to be raised as described in section 1.4.3, "Character Types". Bounds violations cause a CORBA::BAD_PARAM exception to be raised. The IDL wstring type, in both the bounded and unbounded variants, is mapped to java type java.lang.String. Bounds checking of the string is done at marshal time. Character range violations cause a CORBA::DATA_CONVERSION exception to be raised as described in section 1.4.3, "Character Types". Bounds violations cause a CORBA:: BAD_PARAM exception to be raised.
Actions taken:Incorporated revised text and closed
issue.
November 21, 2001: received issue
Click here for this
issue's archive.
Source: International Business Machines (Ms. Anne
E. Dalton, ann_dalton@uk.ibm.com)
Nature:
Uncategorized Issue
Severity:
Summary:
The overhead of processing TaggedComponents within an IOR becomes significant when done many times, as in the case of J2EE implementations where multiple request interceptors are used. IOR access and creation performance could be improved by making better use of Java facilities to provide access to an IOR's components without the overhead of CDR encoding, and by recognising that many of the constituent parts of an IOR are identical for all objects within an object adapter.
I would like to propose that we introduce a Java API for IOR, along the following lines:-
An abstract model of an IOR could be defined as follows:
It should be possible to manipulate IOR TaggedProfiles and IIOPProfileTemplate TaggedComponents using all of the facilities in the Java collections framework.
Templates can be used to create IIOPProfile and ObjectKey because the basic object adapter model for object creation is to establish all properties of an IOR (except for type and object ID) when the object adapter is created. This has been present for the POA essentially from the beginning, since policies can only be passed to create_POA, and cannot be changed on an existing POA. The Portable Interceptors work has also made this clear, since the IOR interceptor runs only when an object adapter is created, which is the only time that user code can add tagged components to an IOR.
TaggedComponent is a framework that may be extended to support application defined TaggedComponents. It would be necessary to be able to register TaggedComponentFactory instances with an ORB, in which case any IOR unmarshalled by that ORB instance would use the registered TaggedComponentFactory to unmarshal the TaggedComponent.
In order to use the IOR API, a method would be needed, probably on ORB, to obtain an abstract IOR from an object reference.
Resolution:
A long discussion in the RTF concluded that this issue
was language indepedent, and so belonged in the core RTF (see core issue 5439).
Revised Text:
Actions taken:
March 6, 2002: received
issue
Issue transferred to core RTF by the Java RTF
Click here for this
issue's archive.
Source: BEA Systems (Dr. Andrew Piper, andyp@bea.com)
Nature: Uncategorized
Issue
Severity:
Summary:
On page 133, bullet 3 reads:
It is unfortunate that there is no recommended default since for RMI-IIOP at least, the second option is by far to be preferred.
I would like to change it therefore to add the text:
"In order to preserve RMI semantics ORBs implementing the RMI-IIOP protocol should always translate it to the nested exception that the UnknownException contains"
Resolution:Incorporate revised text and close issue.
Revised
Text:
Add the following paragraph after the third bullet
mentioned above in the summary:
In order to preserve RMI semantics ORBs implementing the RMI-IIOP protocol
must always translate the UnknownException to the nested exception given by
UnknownException.originalEx.
Actions taken:
July 12, 2002:
received issue
Click here for this
issue's archive.
Source: International Business Machines (Ms. Anne
E. Dalton, ann_dalton@uk.ibm.com)
Nature:
Uncategorized Issue
Severity:
Summary:
The IDL to Java spec is very clear about what methods can (and by implication what methods can't) be used with the singleton ORB and one of those is create_any(), however it does not mention any restrictions on the use of Anys obtained in this way. I think this leads to some inconsistencies and potential problems, for example:
There may be similar problems writing and reading other types to these streams.
I feel the spec should state explicitly that operations on an Any created using the singleton ORB will be limited by the restrictions applicable to the singleton ORB.
I don't think this would affect the intended use of Anys from the singleton, which is stated as being to describe union labels when creating a union TypeCode.
Resolution: Incorporate text and close issue.
Revised Text:
Add the following sentence to the end of the
subsection "Default initialization" in section 1.21.9.3 ORB Initialization
Methods in the IDL to Java spec:
Operations on an Any created using
the singleton ORB will be limited by the restrictions applicable to the
singleton ORB; those which require the use of a fully functional ORB will result
in a NO_IMPLEMENT system exception.
Actions taken:
July 9, 2002:
received issue
Click here for this
issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
The two files org/omg/CORBA/DataInputStream.java and org/omg/CORBA/DataOutputStream.java contain interfaces that do not extend org.omg.CORBA.portable.ValueBase.
The CORBA IDL shows:
abstract valuetype DataInputStream { ...
abstract valuetype DataOutputStream { ...
and the IDL to Java mapping spec states that abstract value types map to a Java interface that extends ValueBase. Which is correct?
Resolution: Incorporate changes and close issue.
Revised
Text:
Modify the two interfaces org.omg.CORBA.DataInputStream and
org.omg.CORBA.DataOutputStream so that the extend
org.omg.CORBA.portable.ValueBase in the zip archive.
Actions
taken:
August 20, 2002: received issue
Click here for this
issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
The org/omg/CORBA/Object.java file includes:
/** *@deprecated Deprecated by CORBA 2.3 */ org.omg.CORBA.InterfaceDef _get_interface();
Which causes the the application code:
public abstract class x extends org.omg.CORBA.LocalObject implements xl {}
public interface xl extends org.omg.CORBA.LocalInterface, org.omg.CORBA.portable.IDLEntity {}
to compile with a warning:
x.java:1: warning: _get_interface() in org.omg.CORBA.Object has been deprecated
I'm wondering whether the javadoc statement should be removed or whether the method should be removed?
Resolution: Close issue.
Actions taken:
August 26, 2002:
received issue
Click here for this
issue's archive.
Source: Laboratoire d`Informatique Fondamentale
de Lille (Dr. Philippe Merle, merle@lifl.fr)
Nature: Uncategorized
Issue
Severity:
Summary:
In the IDL to Java Language Mapping Specification Version 1.2 (formal/2002-08-05), at pages 1-29 and 1-40, all occurrences of getRaises and setRaises must be replaced respectively by getraises and setraises according to the Chapter 3 of the CORBA Specification Version 3.0 (formal/02-06-01).
getRaises and setRaises were replaced by getraises and setraises during the CORBA Components December 2000 FTF (see final report ptc/01-11-02).
Resolution: Incorporate changes and close issue.
Revised
Text:
Replace all occurrences of "getRaises" and "setRaises" with
"getraises" and "setraises", respectively.
Actions taken:
August
29, 2002: received issue
Click here for this
issue's archive.
Source: Objective Interface Systems (Mr. Victor
Giddings, victor.giddings@ois.com)
Nature:
Uncategorized Issue
Severity:
Summary:
The following CORBA 2.4 additions to the PortableServer module are missing from the latest Java source archive (http://cgi.omg.org/cgi-bin/doc?ptc/02-06-14):
I believe all changes should be binary compatible with the existing distribution. Therefore, no PortableServer_2_4 package should be necessary. It should be sufficient to apply these patches to the next distribution:
diff -r1.1 CurrentOperations.java 7a8,9 > import org.omg.CORBA.Object; > 13a16,20 > > public Object get_reference() throws org.omg.PortableServer.CurrentPackage.NoContext; > > public Servant get_servant() throws org.omg.PortableServer.CurrentPackage.NoContext; > diff -r1.1 ThreadPolicyValue.java 33a34,37 > public static final int _MAIN_THREAD_MODEL = 2; > public static final ThreadPolicyValue MAIN_THREAD_MODEL = > new ThreadPolicyValue(_MAIN_THREAD_MODEL); > 44a49,50 > case _MAIN_THREAD_MODEL: > return MAIN_THREAD_MODEL;
Resolution: Incorporate changes and close issue.
Revised
Text:
Add the following methods to
org.omg.PortableServer.CurrentOperations:
public org.omg.CORBAObject get_reference()
throws org.omg.PortableServer.CurrentPackage.NoContext;
public Servant get_servant()
throws org.omg.PortableServer.CurrentPackage.NoContext;
Add the following static data members to org.omg.PortableServer.ThreadPolicyValue:
public static final int _MAIN_THREAD_MODEL = 2;
public static final ThreadPolicyValue MAIN_THREAD_MODEL =
new ThreadPolicyValue(_MAIN_THREAD_MODEL);
Add the following to the org.omg.PortableServer.ThreadPolicyValue.from_int(int) method, just before the default label in the switch statement:
case _MAIN_THREAD_MODEL:
return MAIN_THREAD_MODEL;
Actions taken:
October 21, 2002: received issue
Click here for this
issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Are both of these correct? [It seems like the Java maps "sequence<int> service_details" instead of "sequence<ServiceDetail> service_details"]
from formal/02-06-33 "CORBA 3.0 full specification ":
typedef unsigned long ServiceOption;
typedef unsigned long ServiceDetailType;
struct ServiceDetail {
ServiceDetailType service_detail_type;
sequence service_detail;
};
struct ServiceInformation {
sequence service_options;
sequence service_details;
};
from ptc/02-09-09 "Revision of the interim Java RTF Java .zip archive":
package org.omg.CORBA;
public final class ServiceInformation implements
org.omg.CORBA.portable.IDLEntity {
public int[] service_options;
public int[] service_details;
public ServiceInformation() {
}
public ServiceInformation (int[] service_options, int[] service_details) {
this.service_options = service_options;
this.service_details = service_details;
}
}
Resolution: Incorporate changes and close issue.
Revised
Text:
In class org.omg.CORBA.ServiceInformation in the zip file,
change
public int[] server_details
to
public org.omg.CORBA.ServiceDetail[] service_details
Also, change
public ServiceInformation (int[] service_options, int[] service_details) {
to
public ServiceInformation (org.omg.CORBA.ServiceDetail[] service_options,
int[] service_details) {
Actions taken:
October 21, 2002: received issue
Click here for this
issue's archive.
Source: IONA (Mr. Michi Henning, michi@triodia.com
michi.henning@iona.com)
Nature: Uncategorized
Issue
Severity:
Summary:
This is an issue for the Java RTF. Related issue in Core RTF is Issue 5327.
Originally from Michi Henning:
suppose the following [pseudo-]idl:
#pragma prefix "2abc.def"
module xyz {
interface q {...};
};
It would generate a Java class 'q' within package 'def.2abc.xyz'. The package name '2abc' is not that popular with the java compiler since it starts with a digit.
Discussion from Jishnu Mukerji:
It seems to me that this is more of a language mapping issue. I don't think that the Repository Ids have any requirement to be of the same shape as a valid IDL identifier. It would be kind of hard to have GUIDs as RepId if that were the case.
But even for IDL type RepIds 12345.com seems to be a perfectly good domain name as is 2ab.com. I don't see why these perfectly valid domain names should be disallowed because the Java language mapping is unable to deal with them.
Further discussion from Michi Henning:
One way to fix it would be to state that:
Further discussion from Jishnu Mukerji:
Item 1 in Michi's list needs to be handled by the IDL-Java RTF. This message to issues@omg.org is requesting the creation of an issue covering this item for the Java RTF.
Item 2 can be taken care of in the resolution for Core Issue 5327.
Resolution: Close no change.
Revised Text:
Actions
taken:
October 23, 2002: received issue
Discussion:
#pragma prefix affects only the repository ID, not the actual package into which the interface is placed. In fact, there are no #pragmas defined in the IDL to Java mapping. Various IDL to Java compilers include mechanisms to map IDL types into specific Java packages. For example, Sun's idlj supports a flag
-pkgPrefix <t> <prefix>
which puts the <prefix> in front of the normal mapping of <t>. Since all such mechanisms are proprietary, no spec change is needed here.
Click here for this
issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
From the OMG mapping specs:
org.omg.CORBA.portable.OutputStream [as of formal/01-06-06] defines:
public void write_fixed(java.math.BigDecimal value, short digits, short scale) {
throw new org.omg.CORBA.NO_IMPLEMENT();
}
org.omg.CORBA.portable.OutputStream [as of formal/01-06-06] defines:
public java.math.BigDecimal read_fixed(short digits, short scale) {
throw new org.omg.CORBA.NO_IMPLEMENT();
}
JDK 1.4 (and prior versions) do not implement the first two items, so no portable bindings could be used for these.
Should there have been an org.omg.CORBA_2_4.portable.OutputStream and org.omg.CORBA_2_4.portable.InputStream that inherit from org.omg.CORBA_2_3.portable.In/OutStream and add these?
Resolution: Close no change.
Revised Text:
Actions
taken:
October 28, 2002: received issue
Discussion:
Both the
IDL to Java mapping specification and the .zip archive have the correct methods,
so there is no OMG specification change required here. However, the two methods
are indeed missing in J2SE 1.4, and so the originator of this issue should file
a bug against the J2SE 1.4 CORBA implementation. (Wearing my Sun hat for a
minute, I'll tell you that this error cannot be fixed until J2SE 1.5, since it
requires adding new methods to a public interface).
Click here for this
issue's archive.
Source: Sun Microsystems (Mr. Ken Cavanaugh, kcavanaugh@acm.org)
Nature:
Uncategorized Issue
Severity:
Summary:
While reviewing the latest CORBA 3.1 draft, I noticed that a number of methods recently added to CORBA::Object are missing from org.omg.CORBA.Object. The list of missing methods is:
A group of related issues in the core RTF (core issues 3403/3772/3793/3322) are all centered on questions about access to ORB operations. The solution to this problem has converged on making the ORB available on every object reference. I am including this change in this issue as well. It turns out that the Java mapping requires updating 4 separate standard classes for every new method that is added to CORBA::Object. 2 of the 4 classes in the mapping already have an ORB accessor. The main change required to support access to the ORB is in the LocalObject implementation.
Resolution: Incorporate changes and close issue.
Revised
Text:
Clearly we need to map these operations into the Object interface.
Note that LocalObject, org.omg.CORBA.portable.ObjectImpl, and
org.omg.CORBA.portable.Delegate are also affected by these methods.
In the case of get_orb, note that ObjectImpl and Delegate already have an ORB accessor method (_orb() and orb() respectively). For consistency with the rest of the mapping, we will map CORBA::Object.get_orb() to the java method orb.omg.CORBA.Object._get_orb(). This then makes the ORB available to all org.omg.CORBA.Object instances without needing to access the underlying ObjectImpl or LocalObject that implements the interface. We will also need to extend LocalObject with an additional constructor that allows setting of a private transient ORB data member.
Note that all of these changes described for the spec must also be applied to the corresponding classes in the source file archive:
Changes required:
In section 1.19.11, add the following methods at the end of org.omg.CORBA.Object:
Policy _get_client_policy( int type ) ;
PolicyList _get_policy_overrides( int[] types ) ;
boolean _validate_connection( PolicyListHolder inconsistent_policies ) ;
org.omg.CORBA.Object _get_component() ;
org.omg.CORBA.ORB _get_orb() ;
In section 1.20.2.1, add the following data member at the start of the class:
private transient org.omg.CORBA.ORB orb = null ;
add the following constructor immediately following LocalObject():
public LocalObject( ORB orb )
{
this.orb = orb ;
}
add the following methods at the end of LocalObject:
public Policy _get_client_policy( int type )
{
throw new NO_IMPLEMENT() ;
}
public PolicyList _get_policy_overrides( int[] types )
{
throw new NO_IMPLEMENT() ;
}
public boolean _validate_connection( PolicyListHolder inconsistent_policies )
{
throw new NO_IMPLEMENT() ;
}
public org.omg.CORBA.Object _get_component()
{
throw new NO_IMPLEMENT() ;
}
public ORB _get_orb()
{
if (orb == null)
throw new OBJECT_NOT_EXIST( TBD, CompletionStatus.COMPLETED_NO ) ;
return orb ;
}
where TBD is the standard OMG minor code signifying that no ORB is associated with the local object.
In section 1.21.6.3, add the following methods at the end of org.omg.CORBA.portable.ObjectImpl:
Policy _get_client_policy( int type )
{
return _get_delegate().get_client_policy( type ) ;
}
PolicyList _get_policy_overrides( int[] types )
{
return _get_delegate().getPolicy_overrides( types ) ;
}
boolean _validate_connection( PolicyListHolder inconsistent_policies )
{
return _get_delegate().validate_connection( inconsistent_policies ) ;
}
org.omg.CORBA.Object _get_component()
{
return _get_delegate().get_component() ;
}
In section 1.21.7, add the following methods to abstract class Delegate after the set_policy_override method:
public Policy _get_client_policy( int type )
{
throw new NO_IMPLEMENT() ;
}
public PolicyList _get_policy_overrides( int[] types )
{
throw new NO_IMPLEMENT() ;
}
public boolean _validate_connection( PolicyListHolder inconsistent_policies )
{
throw new NO_IMPLEMENT() ;
}
public org.omg.CORBA.Object _get_component()
{
throw new NO_IMPLEMENT() ;
}
In the section titled "local interfaces" of section 1.12.1, add the following after item 3. in the numbered list:
4. The _<typename>LocalBase class has 2 public constructors defined as follows:
public _<typename>LocalBase()
{
super() ;
}
public _<typename>LocalBase( ORB orb )
{
super( orb ) ;
}
In the section titled "local interfaces" of section 1.12.1, replace the phrase "and an instance would be created using the usual Java language construct:" with:
and an instance would be created using the usual Java language construct
<typename>Impl ti = new <typename>Impl( ... ) ;
The constructor(s) defined in <typename>Impl may pass an ORB parameter to the super class constructor using an explicit constructor invocation such as super( orb ). If this is done, the orb passed in the constructor is returned by the _get_orb() method on the local object instance. If the <typename>Impl() constructor is used, a call to _get_orb() will result in an OBJECT_NOT_EXIST exception with a standard minor code of TBD.
Actions taken:
December 2, 2002: received issue
Click here for this
issue's archive.
Source: International Business Machines (Ms. Anne
E. Dalton, ann_dalton@uk.ibm.com)
Nature:
Uncategorized Issue
Severity:
Summary:
Following resolution of issue 5465 in vote 4, Section 1.21.6.3 "Streaming Stub APIs" 3rd main bullet reads as follows:
I think there are problems with the new final paragraph:
Resolution: Incorporate change and close issue.
Revised
Text:
Replace Section 1.21.6.3 "Streaming Stub APIs" 3rd main bullet
with the following:
If the CORBA system exception
org.omg.CORBA.portable.UnknownException is thrown, the stub translates it to the
nested exception that the UnknownException contains, if possible. If this is not
possible, the stub passes the UnknownException on directly to the
user
Actions taken:
December 3, 2002: received issue