-
Bug
-
Resolution: Fixed
-
P2
-
j2ee1.3-beta2, 1.4.0
-
fcs
-
generic
-
generic
-
Verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2049423 | 1.4.0 | Everett Anderson | P2 | Closed | Fixed | beta3 |
As part of the bug fix for 4382124, both the RMI-IIOP stubs as well as the reverse IDL code generation were changed to avoid using double slashes in front of the Unicode escape for i18n characters in repository IDs.
Unfortunately, this should have only been changed in the IDL code generation space.
The result is that the repository ID generated in a RMI-IIOP stub looks like
private static final String[] _type_ids = {
"RMI:\U98DB\U884C\U6A5FReserver:0000000000000000"
};
which is illegal Java code since the javac compiler tries to convert \uhhhh to a real Unicode char, and complains about the U being capitalized. We actually want to see
"RMI:\\u98DB\\u884C\\u6A5FReserver:000000000000"
While the lower case U is being addressed by 4531406 going forward, the slash change is a regression between J2SE 1.3 and J2SE 1.4. It prevents use of rmic -iiop with classes with internationalized names, and in the J2EE code base, prevents EJBs from having internationalized names.
This code was changed in rip-int on 01/23/01, and integrated into Merlin on 02/21/01, but the flaw was just revealed in the past two weeks through J2EE 1.3 post release i18n testing.
This should be fixed before Merlin ships if possible, and can be fixed for J2EE 1.3.1 or a patch release, if necessary.
Unfortunately, this should have only been changed in the IDL code generation space.
The result is that the repository ID generated in a RMI-IIOP stub looks like
private static final String[] _type_ids = {
"RMI:\U98DB\U884C\U6A5FReserver:0000000000000000"
};
which is illegal Java code since the javac compiler tries to convert \uhhhh to a real Unicode char, and complains about the U being capitalized. We actually want to see
"RMI:\\u98DB\\u884C\\u6A5FReserver:000000000000"
While the lower case U is being addressed by 4531406 going forward, the slash change is a regression between J2SE 1.3 and J2SE 1.4. It prevents use of rmic -iiop with classes with internationalized names, and in the J2EE code base, prevents EJBs from having internationalized names.
This code was changed in rip-int on 01/23/01, and integrated into Merlin on 02/21/01, but the flaw was just revealed in the past two weeks through J2EE 1.3 post release i18n testing.
This should be fixed before Merlin ships if possible, and can be fixed for J2EE 1.3.1 or a patch release, if necessary.
- backported by
-
JDK-2049423 REGRESSION: J2SE 1.4 rmic -iiop uses single slash for i18n chars
- Closed
- relates to
-
JDK-4531406 rmic uses capital \U for escaping i18n characters
- Closed
-
JDK-4382124 Incorrect repository ID for class name that contains illegal IDL character
- Closed