Changeset 19:2d6068839185 in rrlib_serialization-java


Ignore:
Timestamp:
14.08.2014 00:25:50 (5 years ago)
Author:
Max Reichardt <mreichardt@…>
Branch:
default
Children:
20:4aec402bfbab, 22:703c37fd89b8
Phase:
public
Message:

Modified DataTypeBase.findType() to avoid ambiguities in Java-Class => DataTypeBase lookup

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • PortDataListImpl.java

    r17 r19  
    6464                    continue; 
    6565                } 
    66                 os.writeType(DataTypeBase.findType(wrapped.get(i).getClass())); 
     66                os.writeType(DataTypeBase.findType(wrapped.get(i).getClass(), elementType)); 
    6767            } 
    6868            wrapped.get(i).serialize(os); 
  • rtti/DataTypeBase.java

    r18 r19  
    203203 
    204204    /** 
    205      * Lookup data type for class c 
    206      * 
    207      * @param c Class 
     205     * Lookup data type for Java class c. 
     206     * Note that this lookup can be ambiguous (e.g. for remote enums). 
     207     * Therefore, an expected type can be specified in order to resolve these cases. 
     208     * 
     209     * @param c Java class 
     210     * @param expected Expected type 
    208211     * @return Data type object - null if there's none 
    209212     */ 
    210     static public DataTypeBase findType(Class<?> c) { 
    211         for (DataTypeBase db : types) { 
    212             if (db.javaClass == c) { 
    213                 return db; 
     213    static public DataTypeBase findType(Class<?> c, DataTypeBase expected) { 
     214        if (c == null) { 
     215            return null; 
     216        } 
     217        if (expected != null && c.equals(expected.javaClass)) { 
     218            return expected; 
     219        } 
     220        for (int i = 0; i < types.size(); i++) { 
     221            DataTypeBase type = types.get(i); 
     222            if (type.javaClass == c) { 
     223                return type; 
    214224            } 
    215225        } 
Note: See TracChangeset for help on using the changeset viewer.