if ("null@null".equals(key)) {
return null;
}
final int idx = key.indexOf('@');
if (idx < 0) {
throw new StreamException("Not a valid key: " + key);
}
final Class<?> type = getMapper().realClass(key.substring(0, idx));
final Converter converter = getConverterLookup().lookupConverterForType(type);
if (converter instanceof SingleValueConverter) {
final SingleValueConverter svConverter = (SingleValueConverter)converter;
@SuppressWarnings("unchecked")
final K k = (K)svConverter.fromString(key.substring(idx + 1));
return k;
} else {
throw new StreamException("No SingleValueConverter for type " + type.getName() + " available");
}
}