All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hazelcast.internal.serialization.impl.InternalGenericRecord Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2008-2024, Hazelcast, Inc. All Rights Reserved.
 *
 * Licensed 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 com.hazelcast.internal.serialization.impl;

import com.hazelcast.nio.serialization.HazelcastSerializationException;
import com.hazelcast.nio.serialization.genericrecord.GenericRecord;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.OffsetDateTime;

/**
 * Additionally to GenericRecord, this one has more methods to be used in Query.
 *
 *  GenericRecordQueryReader
 * InternalGenericRecord implementations should not deserialize the passed content completely in their constructor when
 * they are created, because they will be used to query a couple of fields from a big object. And deserializing the
 * whole content in the constructor will be a redundant work.
 *  CompactInternalGenericRecord
 *  PortableInternalGenericRecord
 * 

* read*FromArray methods will return `null` * 1. if the array is null or empty * 2. there is no data at given index. In other words, the index is bigger than the length of the array *

*

* GenericRecord inheritance hierarchy: * GenericRecord * - { InternalGenericRecord} -> Interface for Query Related Methods * -- { AbstractGenericRecord} -> common methods. toString getAny equals hashCode * --- { CompactGenericRecord} -> Abstract class implementing getSchema toString for Compact * ---- { CompactInternalGenericRecord} -> concrete class used in query { GenericRecordQueryReader} * ----- { DefaultCompactReader} -> Adaptor to make CompactInternalGenericRecord usable as { CompactReader} * ---- { DeserializedGenericRecord} -> concrete class passed to the user * --- { PortableGenericRecord} -> Abstract class implementing getClassDefinition toString for Portable * ---- { DeserializedPortableGenericRecord} -> concrete class used in query { GenericRecordQueryReader} * ---- { PortableInternalGenericRecord} -> concrete class passed to the user */ public interface InternalGenericRecord extends GenericRecord { /** * @param fieldName the name of the field * @return true if field exists in the schema/class definition. Note that * returns true even if the field is null. */ boolean hasField(@Nonnull String fieldName); /** * @param fieldName the name of the field * @return the value of the field * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable InternalGenericRecord getInternalGenericRecord(@Nonnull String fieldName); /** * @param fieldName the name of the field * @return the value of the field * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable InternalGenericRecord[] getArrayOfInternalGenericRecord(@Nonnull String fieldName); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable Boolean getBooleanFromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable Character getCharFromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable Byte getInt8FromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable Short getInt16FromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable Integer getInt32FromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable Long getInt64FromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable Float getFloat32FromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable Double getFloat64FromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable String getStringFromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable GenericRecord getGenericRecordFromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable InternalGenericRecord getInternalGenericRecordFromArray(@Nonnull String fieldName, int index); /** * Reads same value { InternalGenericRecord#getGenericRecord(String)} }, but in deserialized form. * This is used in query system when the object is leaf of the query. * * @param fieldName the name of the field * @param index array index to read from * @return a nested field as a concrete deserialized object rather than generic record * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable T getObjectFromArray(@Nonnull String fieldName, int index); /** * Reads same value { GenericRecord#getArrayOfGenericRecord(String)} (String)}, but in deserialized form. * This is used in query system when the object is leaf of the query. * * @param fieldName the name of the field * @return a nested field as array of deserialized objects rather than array of the generic records * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable T[] getArrayOfObject(@Nonnull String fieldName, Class componentType); /** * Reads same value { GenericRecord#getGenericRecord(String)} }, but in deserialized form. * This is used in query system when the object is leaf of the query. * * @param fieldName the name of the field * @return a nested field as a concrete deserialized object rather than generic record * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable T getObject(@Nonnull String fieldName); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable BigDecimal getDecimalFromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable LocalTime getTimeFromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable LocalDate getDateFromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable LocalDateTime getTimestampFromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable OffsetDateTime getTimestampWithTimezoneFromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable Boolean getNullableBooleanFromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable Byte getNullableInt8FromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable Short getNullableInt16FromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable Integer getNullableInt32FromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable Long getNullableInt64FromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable Float getNullableFloat32FromArray(@Nonnull String fieldName, int index); /** * @param fieldName the name of the field * @return the value from the given index, returns null if index is larger than the array size or if array itself * is null * @throws HazelcastSerializationException if the field name does not exist in the class definition/schema or * the type of the field does not match the one in the class definition/schema. */ @Nullable Double getNullableFloat64FromArray(@Nonnull String fieldName, int index); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy