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

net.dongliu.prettypb.runtime.include.Extendable Maven / Gradle / Ivy

The newest version!
package net.dongliu.prettypb.runtime.include;

import java.util.List;
import java.util.Map;

/**
 * for proto message which have extensions
 *
 * @author Dong Liu
 */
public interface Extendable {

    /**
     * get extend field of this class
     *
     * @return
     */
    Extendee getExtendee();

    /**
     * all the extension this message defined
     * this is for internal use
     *
     * @return the extension ranges
     */
    default List getExtensionRangeList() {
        return getExtendee().getExtensionRangeList();
    }

    /**
     * if extension ranges contains this tag
     * this is for internal use
     *
     * @return true or false
     */
    default boolean tagInExtensions(int tag) {
        return getExtendee().tagInExtensions(tag);
    }

    /**
     * if this message have the extension
     *
     * @return true or false
     */
    default  boolean hasExtension(ExtensionField field) {
        return getExtendee().hasExtension(field);
    }

    /**
     * get the extension value
     *
     * @param field not null
     * @return extension by field. it not exists, return null
     */
    default  T getExtension(ExtensionField field) {
        return getExtendee().getExtension(field);
    }

    /**
     * get all extensions have been set
     *
     * @return all existed extensions
     */
    default Map getAllExtensions() {
        return getExtendee().getAllExtensions();
    }

    /**
     * set the extension value
     *
     * @param field not null
     * @param value the field's value
     */
    default  void setExtension(ExtensionField field, T value) {
        getExtendee().setExtension(field, value);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy