- /**
- * KryoNamespace builder.
- */
- private static final class Builder implements JournalSerdes.Builder {
- private final int blockHeadId = INITIAL_ID;
- private final List<Entry<Class<?>[], EntrySerializer<?>>> types = new ArrayList<>();
- private final List<RegistrationBlock> blocks = new ArrayList<>();
- private ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-
- @Override
- public Builder register(final EntrySerdes<?> serdes, final Class<?>... classes) {
- types.add(Map.entry(classes, new EntrySerializer<>(serdes)));
- return this;
- }
-
- @Override
- public Builder setClassLoader(final ClassLoader classLoader) {
- this.classLoader = requireNonNull(classLoader);
- return this;
- }
-
- @Override
- public JournalSerdes build() {
- return build(NO_NAME);
- }
-
- @Override
- public JournalSerdes build(final String friendlyName) {
- if (!types.isEmpty()) {
- blocks.add(new RegistrationBlock(blockHeadId, types));
- }
- return new Namespace(blocks, classLoader, friendlyName);
- }
- }
-
- /**
- * Creates a new {@link Namespace} builder.
- *
- * @return builder
- */
- public static JournalSerdes.Builder builder() {
- return new Builder();
- }
-