/** * Get a instance factory for this type, if none is found {@link com.github.jasonruckman.sidney.core.serde.factory.DefaultInstanceFactory} */ public <T> InstanceFactory<T> get(Class<?> type) { InstanceFactory<T> factory = conf.getRegistrations().getInstanceFactories().get(type); if (factory == null) { factory = defaultFactories.get(type); if (factory == null) { factory = (InstanceFactory<T>) defaultFactory(type); defaultFactories.put(type, factory); } } return factory; } }
/** * Create a new instance of {@param type}, must have a default constructor */ public <T> T newInstance(Class<T> type) { if (type == lastClass) { return (T) lastFactory.newInstance(); } lastFactory = factories.get(type); lastClass = type; return (T) lastFactory.newInstance(); } }
public SerializerContextImpl(Configuration conf, References references) { this.conf = conf; this.references = references; registrations = conf.getRegistrations(); factories = new Factories(conf); addCustomFactories(); addPrimitiveFactories(); addArrayFactories(); addJdkDefaults(); addEntry(Collection.class, CollectionSerializer.class); addEntry(Map.class, MapSerializer.class); addEntry(Object.class, BeanSerializer.class); }
@Override public void initialize(TypeRef typeRef, SerializerContext context) { fieldSerializers = new Serializer[typeRef.getFields().size()]; for(int i = 0; i < fieldSerializers.length; i++) { fieldSerializers[i] = context.serializer(typeRef.getFields().get(i), this); } instanceFactory = getFactories().get(typeRef.getType()); }