![JAR search and dependency download from the Maven repository](/logo.png)
se.l4.commons.serialization.SerializerCollection Maven / Gradle / Ivy
package se.l4.commons.serialization;
import java.lang.annotation.Annotation;
import edu.umd.cs.findbugs.annotations.NonNull;
import edu.umd.cs.findbugs.annotations.Nullable;
import se.l4.commons.serialization.spi.SerializerResolver;
import se.l4.commons.serialization.spi.Type;
import se.l4.commons.types.InstanceFactory;
/**
* Collection of {@link Serializer}s and {@link SerializerResolver resolvers}.
*
* @author Andreas Holstenson
*
*/
public interface SerializerCollection
{
/**
* Get the current instance factory.
*
* @return
*/
@NonNull
InstanceFactory getInstanceFactory();
/**
* Bind a certain type automatically discovering which serializer to
* use.
*
* @param type
*/
@NonNull
SerializerCollection bind(@NonNull Class> type);
/**
* Bind a given type to the specified serializer.
*
* @param
* @param type
* @param serializer
*/
@NonNull
SerializerCollection bind(@NonNull Class type, @NonNull Serializer serializer);
/**
* Bind a given type to the specified resolver. The resolver will be
* asked to resolve a more specific serializer based on type parameters.
*
* @param
* @param type
* @param resolver
*/
@NonNull
SerializerCollection bind(@NonNull Class type, @NonNull SerializerResolver extends T> resolver);
/**
* Find a serializer suitable for the specific type.
*
* @param
* @param type
* @return
*/
@NonNull
Serializer find(@NonNull Class type);
/**
* Find a serializer suitable for the specific type.
*
* @param
* @param type
* @return
*/
@NonNull
Serializer find(@NonNull Class type, @NonNull Annotation... hints);
/**
* Find a serializer suitable for the specified type.
*
* @param type
* @return
*/
@NonNull
Serializer> find(@NonNull Type type);
/**
* Find a serializer suitable for the specified type.
*
* @param type
* @return
*/
@NonNull
Serializer> find(@NonNull Type type, @NonNull Annotation... hints);
/**
* Find a serializer based on its registered name.
*
* @param name
* @return
*/
@NonNull
Serializer> find(String name);
/**
* Find a serializer based on its registered name.
*
* @param namespace
* @param name
* @return
*/
@NonNull
Serializer> find(@NonNull String namespace, @NonNull String name);
/**
* Find a serializer using a specific {@link SerializerResolver}.
*
* @param resolver
* @param type
* @return
*/
@NonNull
Serializer findVia(
@NonNull Class extends SerializerOrResolver> resolver,
@NonNull Class type,
@NonNull Annotation... hints
);
/**
* Find a serializer using a specific {@link SerializerResolver}.
*
* @param sOrR
* @param type
* @return
*/
@NonNull
Serializer findVia(
@NonNull Class extends SerializerOrResolver> resolver,
@NonNull Type type,
@NonNull Annotation... hints
);
/**
* Get the resolver this collection would use to resolve a serializer
* for the given type.
*
* @param type
* @return
*/
@NonNull
SerializerResolver> getResolver(@NonNull Class> type);
/**
* Get if the given type can be serialized.
*
* @param type
* @return
*/
boolean isSupported(@NonNull Class> type);
/**
* Find the name of the given serializer (if any).
*
* @param serializer
* @return
*/
@Nullable
QualifiedName findName(@NonNull Serializer> serializer);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy