org.apache.pulsar.client.internal.PulsarClientImplementationBinding 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 org.apache.pulsar.client.internal;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.sql.Time;
import java.sql.Timestamp;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Date;
import java.util.Map;
import java.util.function.Supplier;
import org.apache.pulsar.client.api.Authentication;
import org.apache.pulsar.client.api.BatcherBuilder;
import org.apache.pulsar.client.api.ClientBuilder;
import org.apache.pulsar.client.api.MessageId;
import org.apache.pulsar.client.api.MessagePayloadFactory;
import org.apache.pulsar.client.api.PulsarClientException;
import org.apache.pulsar.client.api.Schema;
import org.apache.pulsar.client.api.TopicMessageId;
import org.apache.pulsar.client.api.schema.GenericRecord;
import org.apache.pulsar.client.api.schema.GenericSchema;
import org.apache.pulsar.client.api.schema.RecordSchemaBuilder;
import org.apache.pulsar.client.api.schema.SchemaDefinition;
import org.apache.pulsar.client.api.schema.SchemaDefinitionBuilder;
import org.apache.pulsar.common.schema.KeyValue;
import org.apache.pulsar.common.schema.KeyValueEncodingType;
import org.apache.pulsar.common.schema.SchemaInfo;
import org.apache.pulsar.common.schema.SchemaInfoWithVersion;
import org.apache.pulsar.common.schema.SchemaType;
/**
* Helper class for class instantiations and it also contains methods to work with schemas.
* This interface allows you to not depend on the Implementation classes directly.
* The actual implementation of this class is loaded from {@link DefaultImplementation}.
*/
public interface PulsarClientImplementationBinding {
SchemaDefinitionBuilder newSchemaDefinitionBuilder();
ClientBuilder newClientBuilder();
MessageId newMessageId(long ledgerId, long entryId, int partitionIndex);
MessageId newMessageIdFromByteArray(byte[] data) throws IOException;
MessageId newMessageIdFromByteArrayWithTopic(byte[] data, String topicName) throws IOException;
Authentication newAuthenticationToken(String token);
Authentication newAuthenticationToken(Supplier supplier);
Authentication newAuthenticationTLS(String certFilePath, String keyFilePath);
Authentication createAuthentication(String authPluginClassName, String authParamsString)
throws PulsarClientException.UnsupportedAuthenticationException;
Authentication createAuthentication(String authPluginClassName, Map authParams)
throws PulsarClientException.UnsupportedAuthenticationException;
Schema newBytesSchema();
Schema newStringSchema();
Schema newStringSchema(Charset charset);
Schema newByteSchema();
Schema newShortSchema();
Schema newIntSchema();
Schema newLongSchema();
Schema newBooleanSchema();
Schema newByteBufferSchema();
Schema newFloatSchema();
Schema newDoubleSchema();
Schema newDateSchema();
Schema