import com.esotericsoftware.kryo.serializers.CompatibleFieldSerializer;
import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableList;
-import io.atomix.utils.config.ConfigurationException;
import org.apache.commons.lang3.tuple.Pair;
import org.objenesis.strategy.StdInstantiatorStrategy;
import org.slf4j.Logger;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
import java.util.Objects;
return new Builder();
}
- @SuppressWarnings("unchecked")
- private static List<RegistrationBlock> buildRegistrationBlocks(NamespaceConfig config) {
- List<Pair<Class<?>[], Serializer<?>>> types = new ArrayList<>();
- List<RegistrationBlock> blocks = new ArrayList<>();
- blocks.addAll(Namespaces.BASIC.registeredBlocks);
- for (NamespaceTypeConfig type : config.getTypes()) {
- try {
- if (type.getId() == null) {
- types.add(Pair.of(new Class[]{type.getType()}, type.getSerializer() != null ? type.getSerializer().newInstance() : null));
- } else {
- blocks.add(new RegistrationBlock(type.getId(), Collections.singletonList(Pair.of(new Class[]{type.getType()}, type.getSerializer().newInstance()))));
- }
- } catch (InstantiationException | IllegalAccessException e) {
- throw new ConfigurationException("Failed to instantiate serializer from configuration", e);
- }
- }
- blocks.add(new RegistrationBlock(FLOATING_ID, types));
- return blocks;
- }
-
- public Namespace(NamespaceConfig config) {
- this(buildRegistrationBlocks(config), Thread.currentThread().getContextClassLoader(), config.isRegistrationRequired(), config.isCompatible(), config.getName());
- }
-
/**
* Creates a Kryo instance pool.
*