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

ru.progrm_jarvis.javacommons.util.UuidUtil Maven / Gradle / Ivy

package ru.progrm_jarvis.javacommons.util;

import lombok.NonNull;
import lombok.experimental.UtilityClass;
import lombok.val;

import java.nio.ByteBuffer;
import java.util.UUID;

/**
 * Utility for {@link UUID}-related functionality.
 */
@UtilityClass
public class UuidUtil {

    /**
     * Amount of bytes from which the {@link UUID} consists.
     */
    private static final int UUID_BYTES = 16;

    /**
     * Converts {@link UUID} into an array of 16 {@code byte}s.
     *
     * @param uuid UUID to convert
     * @return result of conversion as array of 16 bytes
     *
     * @see #uuidFromBytes(byte[]) for backward conversion
     */
    public byte[] uuidToBytes(final @NonNull UUID uuid) {
        val buffer = ByteBuffer.wrap(new byte[UUID_BYTES]);
        buffer.putLong(uuid.getMostSignificantBits());
        buffer.putLong(uuid.getLeastSignificantBits());

        return buffer.array();
    }

    /**
     * Converts a 16-{@code byte}s array into a {@link UUID}.
     *
     * @param bytes array of 16 bytes to convert
     * @return result of conversion as UUID
     *
     * @see #uuidToBytes(UUID) for backward conversion
     */
    public UUID uuidFromBytes(final byte @NonNull [] bytes) {
        if (bytes.length != UUID_BYTES) throw new IllegalArgumentException(
                "Length of bytes length should be " + UUID_BYTES
        );

        val buffer = ByteBuffer.wrap(bytes);
        return new UUID(buffer.getLong(), buffer.getLong());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy