public <T> T readObjectData (ByteBuffer buffer, Class<T> type) {
return readObjectData(newInstance(kryo, type), buffer, type);
}
protected <T> T readObjectData (T object, ByteBuffer buffer, Class<T> type) {
Context context = Kryo.getContext();
CachedField[] fields = (CachedField[])context.getTemp(this, "schema");
if (fields == null) {
int length = IntSerializer.get(buffer, true);
if (TRACE) trace("kryo", "Reading " + length + " field names.");
String[] names = new String[length];
for (int i = 0; i < length; i++)
names[i] = StringSerializer.get(buffer);
fields = new CachedField[length];
CachedField[] allFields = this.fields;
outer: //
for (int i = 0, n = names.length; i < n; i++) {
String schemaName = names[i];
for (int ii = 0, nn = allFields.length; ii < nn; ii++) {
if (allFields[ii].field.getName().equals(schemaName)) {
fields[i] = allFields[ii];
continue outer;
}
}
if (TRACE) trace("kryo", "Ignoring obsolete field: " + schemaName);
}
context.putTemp(this, "schema", fields);
}
for (int i = 0, n = fields.length; i < n; i++) {
int dataLength = IntSerializer.get(buffer, true);