
io.floodplain.replication.factory.ReplicationFactory Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package io.floodplain.replication.factory;
import io.floodplain.immutable.api.ImmutableMessage;
import io.floodplain.immutable.api.ImmutableMessage.ValueType;
import io.floodplain.replication.api.ReplicationMessage;
import io.floodplain.replication.api.ReplicationMessageParser;
import io.floodplain.replication.impl.ReplicationImmutableMessageImpl;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
public class ReplicationFactory {
private static ReplicationMessageParser instance;
private static final Runnable noopCommit = () -> {
};
public static ReplicationMessageParser getInstance() {
return ReplicationFactory.instance;
}
public static void setInstance(ReplicationMessageParser parser) {
ReplicationFactory.instance = parser;
}
public static ReplicationMessage createReplicationMessage(Optional source, Optional partition, Optional offset, final String transactionId, final long timestamp,
final ReplicationMessage.Operation operation, final List primaryKeys, Map types,
Map values, Map subMessageMap,
Map> subMessageListMap, Optional commitAction, Optional paramMessage) {
return new ReplicationImmutableMessageImpl(source, partition, offset, transactionId, operation, timestamp, values, types, subMessageMap, subMessageListMap, primaryKeys, commitAction, paramMessage);
}
public static ReplicationMessage createReplicationMessage(Optional source, Optional partition, Optional offset, final String transactionId, final long timestamp,
final ReplicationMessage.Operation operation, final List primaryKeys, ImmutableMessage message, Optional commitAction, Optional paramMessage) {
return new ReplicationImmutableMessageImpl(source, partition, offset, transactionId, operation, timestamp, message, primaryKeys, commitAction, paramMessage);
}
public static ReplicationMessage fromMap(String key, Map values, Map types) {
List keys = key == null ? Collections.emptyList() : Collections.singletonList(key);
return ReplicationFactory.createReplicationMessage(Optional.empty(), Optional.empty(), Optional.empty(), null, System.currentTimeMillis(), ReplicationMessage.Operation.NONE, keys, types, values, Collections.emptyMap(), Collections.emptyMap(), Optional.of(noopCommit), Optional.empty());
}
public static ReplicationMessage create(Map values, Map types) {
return ReplicationFactory.createReplicationMessage(Optional.empty(), Optional.empty(), Optional.empty(), null, System.currentTimeMillis(), ReplicationMessage.Operation.NONE, Collections.emptyList(), types, values, Collections.emptyMap(), Collections.emptyMap(), Optional.of(noopCommit), Optional.empty());
}
public static ReplicationMessage create(Map dataMap) {
return new ReplicationImmutableMessageImpl(dataMap);
}
public static ReplicationMessage empty() {
return ReplicationFactory.createReplicationMessage(Optional.empty(), Optional.empty(), Optional.empty(), null, System.currentTimeMillis(), ReplicationMessage.Operation.NONE, Collections.emptyList(), Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap(), Optional.of(noopCommit), Optional.empty());
}
public static ReplicationMessage createErrorReplicationMessage(Throwable t) {
return new ReplicationImmutableMessageImpl(t);
}
public static ReplicationMessage standardMessage(ImmutableMessage msg) {
return new ReplicationImmutableMessageImpl(Optional.empty(), Optional.empty(), Optional.empty(), null, ReplicationMessage.Operation.NONE, -1L, msg, Collections.emptyList(), Optional.empty(), Optional.empty());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy