/** Returns the best matching serializer for a class. This method can be overridden to implement custom logic to choose a * serializer. */ public Serializer getDefaultSerializer (Class type) { if (type == null) throw new IllegalArgumentException("type cannot be null."); if (type.isAnnotationPresent(DefaultSerializer.class)) { DefaultSerializer defaultSerializerAnnotation = (DefaultSerializer)type.getAnnotation(DefaultSerializer.class); return ReflectionSerializerFactory.makeSerializer(this, defaultSerializerAnnotation.value(), type); } for (int i = 0, n = defaultSerializers.size(); i < n; i++) { DefaultSerializerEntry entry = defaultSerializers.get(i); if (entry.type.isAssignableFrom(type)) { Serializer defaultSerializer = entry.serializerFactory.makeSerializer(this, type); //Remember that it is a default serializer set internally by Kryo if(i > n - lowPriorityDefaultSerializerCount) defaultSerializer.setDefaultSerializer(true); return defaultSerializer; } } return newDefaultSerializer(type); }
public Serializer<?> getSerializer(Kryo kryo) { switch (serializerDefinitionType) { case UNSPECIFIED: return null; case CLASS: return ReflectionSerializerFactory.makeSerializer(kryo, serializerClass, registeredClass); case INSTANCE: return serializableSerializerInstance.getSerializer(); default: // this should not happen; adding as a guard for the future throw new IllegalStateException( "Unrecognized Kryo registration serializer definition type: " + serializerDefinitionType); } }
protected Serializer getDefaultSerializerForAnnotatedType(Class type) { if (type.isAnnotationPresent(DefaultSerializer.class)) { DefaultSerializer defaultSerializerAnnotation = (DefaultSerializer)type.getAnnotation(DefaultSerializer.class); return ReflectionSerializerFactory.makeSerializer(this, defaultSerializerAnnotation.value(), type); } return null; }
/** Sets the serializer to use when no {@link #addDefaultSerializer(Class, Class) default serializers} match an object's type. * Default is {@link FieldSerializer}. * @see #newDefaultSerializer(Class) */ public void setDefaultSerializer (Class<? extends Serializer> serializer) { if (serializer == null) throw new IllegalArgumentException("serializer cannot be null."); defaultSerializer = new ReflectionSerializerFactory(serializer); }