package serializers;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
public final class TestGroup<J>
{
public final Map<String,Entry<J,Object>> entries = new LinkedHashMap<String,Entry<J,Object>>();
public final Map<String,Entry<J,Object>> extensionHandlers = new HashMap<String,Entry<J,Object>>();
public <S> void add(Transformer<J,S> transformer, Serializer<S> serializer)
{
add(transformer,serializer,(SerFeatures)null);
}
public <S> void add(Transformer<J,S> transformer, Serializer<S> serializer, SerFeatures features)
{
if ( features != null )
serializer.setFeatures(features);
add_(transformer, serializer);
}
public <S> Entry<J,Object> add_(Transformer<J,S> transformer, Serializer<S> serializer)
{
Entry<J,S> entry = new Entry<J,S>(transformer, serializer);
@SuppressWarnings("unchecked")
Entry<J,Object> entry_ = (Entry<J,Object>) entry;
String name = entry_.serializer.getName();
Object displaced = entries.put(name, entry_);
if (displaced != null) {
throw new AssertionError("duplicate serializer name \"" + name + "\"");
}
return entry_;
}
public <S> void addExtensionHandler(String extension, Transformer<J,S> transformer, Serializer<S> serializer)
{
Entry<J,S> entry = new Entry<J,S>(transformer, serializer);
@SuppressWarnings("unchecked")
Entry<J,Object> entry_ = (Entry<J,Object>) entry;
Object displaced = extensionHandlers.put(extension, entry_);
if (displaced != null) {
throw new AssertionError("duplicate handler for extension \"" + extension + "\"");
}
}
public static final class Entry<J,S>
{
public final Transformer<J,S> transformer;
public final Serializer<S> serializer;
public Entry(Transformer<J,S> transformer, Serializer<S> serializer)
{
this.transformer = transformer;
this.serializer = serializer;
}
}
}