@SuppressWarnings({"rawtypes", "unchecked"}) private static <T> IDLSequence.Object<T> trimIDLSequenceObject(IDLSequence.Object<T> list) throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException { TopicDataType<T> topicDataType = list.getTopicDataType(); Class clazz = topicDataType.createData().getClass(); IDLSequence.Object<T> trimmed = new IDLSequence.Object<>(list.size(), clazz, topicDataType); Field allocatorField = trimmed.getClass().getSuperclass().getDeclaredField("allocator"); allocatorField.setAccessible(true); allocatorField.set(trimmed, null); // The allocator is a lambda that can not be recorded Field sizeField = trimmed.getClass().getSuperclass().getDeclaredField("size"); sizeField.setAccessible(true); sizeField.set(trimmed, list.size()); Field valuesField = trimmed.getClass().getSuperclass().getDeclaredField("values"); valuesField.setAccessible(true); Object[] array = list.toArray(); if (Packet.class.isAssignableFrom(clazz)) { for (int i = 0; i < array.length; i++) { array[i] = createCopyTrimmedToCurrentSize((Packet) array[i]); } } valuesField.set(trimmed, array); return trimmed; }
@SuppressWarnings("unchecked") TopicDataType<Object> type = ((IDLSequence.Object) seq).getTopicDataType(); Object childStruct = ((IDLSequence.Object) seq).get(i); type.serialize(childStruct, new JacksonInterchangeSerializer(child.addObject(), supportsArrays));
TopicDataType<Object> type = ((IDLSequence.Object) seq).getTopicDataType(); Object childStruct = ((IDLSequence.Object) seq).get(i); type.serialize(childStruct, new JacksonInterchangeSerializer(child.addObject(), supportsArrays));
TopicDataType<Object> type = ((IDLSequence.Object) seq).getTopicDataType(); Object childStruct = ((IDLSequence.Object) seq).add(); if(val.isObject())
TopicDataType<Object> type = ((IDLSequence.Object) seq).getTopicDataType(); Object childStruct = ((IDLSequence.Object) seq).add(); if(val.isObject())