Skip to content

Commit b7383bc

Browse files
committed
refactor(yoko-rmi-impl): add type narrowing for CORBA object deserialization
- Modified CorbaObjectReader.readCorbaObject() to perform PortableRemoteObject.narrow() when a target type is provided - Updated CorbaObjectFieldDescriptor to pass field type to readCorbaObject() instead of null - Added convenience method readCorbaObject() without parameters in ObjectReader - Simplified ValueMemberFieldDescriptor to use method reference for CORBA object reading - Substantive lines added: 7, lines removed: 4 Co-authored-by-AI: IBM Bob 1.0.4
1 parent 4cb80ca commit b7383bc

4 files changed

Lines changed: 8 additions & 5 deletions

File tree

yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/CorbaObjectReader.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2017 IBM Corporation and others.
2+
* Copyright 2026 IBM Corporation and others.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -175,7 +175,8 @@ public Object readValueObject(Class<?> clz) {
175175
}
176176

177177
public org.omg.CORBA.Object readCorbaObject(Class<?> type) {
178-
return in.read_Object();
178+
org.omg.CORBA.Object obj = in.read_Object();
179+
return (null == type) ? obj : (org.omg.CORBA.Object)PortableRemoteObject.narrow(obj, type);
179180
}
180181

181182
public Remote readRemoteObject(Class<?> type) {

yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/FieldDescriptor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1027,12 +1027,12 @@ public void resolve(Object value) {
10271027
}
10281028

10291029
void read(ObjectReader reader, Object obj) throws IOException {
1030-
Object value = reader.readCorbaObject(null);
1030+
Object value = reader.readCorbaObject(type);
10311031
set(obj, value);
10321032
}
10331033

10341034
void readFieldIntoMap(ObjectReader reader, Map<String, Object> map) {
1035-
Object value = reader.readCorbaObject(null);
1035+
Object value = reader.readCorbaObject(type);
10361036
map.put(java_name, value);
10371037

10381038
}

yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ObjectReader.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ abstract class ObjectReader extends ObjectInputStream {
4747

4848
@Override
4949
protected abstract Object readObjectOverride() throws IOException, ClassNotFoundException;
50+
51+
final org.omg.CORBA.Object readCorbaObject() { return readCorbaObject(null); }
5052
}
5153

5254
abstract class ObjectReaderBase extends ObjectReader {

yoko-rmi-impl/src/main/java/org/apache/yoko/rmi/impl/ValueMemberFieldDescriptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ private enum TypeReaders {
122122
READERS[_tk_wstring] = ObjectReader::readValueObject;
123123
READERS[_tk_any] = ObjectReader::readAny;
124124
READERS[_tk_abstract_interface] = ObjectReader::readAny;
125-
READERS[_tk_objref] = reader -> reader.readCorbaObject(null);
125+
READERS[_tk_objref] = ObjectReader::readCorbaObject;
126126
READERS[_tk_value] = ObjectReader::readValueObject;
127127
READERS[_tk_value_box] = ObjectReader::readValueObject;
128128
READERS[_tk_sequence] = ObjectReader::readValueObject;

0 commit comments

Comments
 (0)