@Override public Object readObject(Unmarshaller input) throws IOException, ClassNotFoundException { int readerIndex = input.readUnsignedByte(); int foreignId = -1; if (readerIndex == MAX_ID) { // User defined externalizer foreignId = UnsignedNumeric.readUnsignedInt(input); readerIndex = generateForeignReaderIndex(foreignId); } else { Integer legacyId = LegacyIds.LEGACY_MAP.get(readerIndex); if (legacyId != null) readerIndex = legacyId; } ExternalizerAdapter adapter = readers.get(readerIndex); if (adapter == null) { if (foreignId > 0) throw log.missingForeignExternalizer(foreignId); throw log.unknownExternalizerReaderIndex(readerIndex); } return adapter.externalizer.readObject(input); }
@Override public Object readObject(ObjectInput input) throws IOException, ClassNotFoundException { int index = input.read(); AdvancedExternalizer ext; switch (index) { case 0: ext = idViaConfigObjExt; break; case 1: ext = idViaAnnotationObjExt; break; case 2: ext = idViaBothObjExt; break; default: throw new CacheException(String.format( "Unknown index (%d) for externalizer %s", index, this.getClass().getName())); } return ext.readObject(input); }