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

net.digitalid.utility.conversion.converters.BooleanConverter Maven / Gradle / Ivy

The newest version!
package net.digitalid.utility.conversion.converters;

import javax.annotation.Nonnull;

import net.digitalid.utility.annotations.generics.Unspecifiable;
import net.digitalid.utility.annotations.method.Pure;
import net.digitalid.utility.annotations.ownership.Capturable;
import net.digitalid.utility.annotations.ownership.NonCaptured;
import net.digitalid.utility.annotations.parameter.Modified;
import net.digitalid.utility.annotations.parameter.Unmodified;
import net.digitalid.utility.conversion.enumerations.Representation;
import net.digitalid.utility.conversion.exceptions.ConnectionException;
import net.digitalid.utility.conversion.interfaces.Converter;
import net.digitalid.utility.conversion.interfaces.Decoder;
import net.digitalid.utility.conversion.interfaces.Encoder;
import net.digitalid.utility.conversion.model.CustomField;
import net.digitalid.utility.conversion.model.CustomType;
import net.digitalid.utility.immutable.ImmutableList;
import net.digitalid.utility.validation.annotations.size.MaxSize;
import net.digitalid.utility.validation.annotations.string.CodeIdentifier;
import net.digitalid.utility.validation.annotations.string.DomainName;
import net.digitalid.utility.validation.annotations.type.Stateless;

/**
 * This class implements the conversion of booleans.
 */
@Stateless
public class BooleanConverter implements Converter {
    
    /* -------------------------------------------------- Instance -------------------------------------------------- */
    
    public static final @Nonnull BooleanConverter INSTANCE = new BooleanConverter();
    
    /* -------------------------------------------------- Type -------------------------------------------------- */
    
    @Pure
    @Override
    public @Nonnull Class getType() {
        return Boolean.class;
    }
    
    /* -------------------------------------------------- Name -------------------------------------------------- */
    
    @Pure
    @Override
    public @Nonnull @CodeIdentifier @MaxSize(63) String getTypeName() {
        return "Boolean";
    }
    
    /* -------------------------------------------------- Package -------------------------------------------------- */
    
    @Pure
    @Override
    public @Nonnull @DomainName String getTypePackage() {
        return "java.lang";
    }
    
    /* -------------------------------------------------- Primitive Converter -------------------------------------------------- */
    
    @Pure
    @Override
    public boolean isPrimitiveConverter() {
        return true;
    }
    
    /* -------------------------------------------------- Fields -------------------------------------------------- */
    
    private static final @Nonnull ImmutableList<@Nonnull CustomField> fields = ImmutableList.withElements(CustomField.with(CustomType.BOOLEAN, "value"));
    
    @Pure
    @Override
    public @Nonnull ImmutableList<@Nonnull CustomField> getFields(@Nonnull Representation representation) {
        return fields;
    }
    
    /* -------------------------------------------------- Convert -------------------------------------------------- */
    
    @Pure
    @Override
    public <@Unspecifiable EXCEPTION extends ConnectionException> void convert(@NonCaptured @Unmodified @Nonnull Boolean value, @NonCaptured @Modified @Nonnull Encoder encoder) throws EXCEPTION {
        encoder.encodeBoolean(value);
    }
    
    /* -------------------------------------------------- Recover -------------------------------------------------- */
    
    @Pure
    @Override
    public @Capturable <@Unspecifiable EXCEPTION extends ConnectionException> @Nonnull Boolean recover(@NonCaptured @Modified @Nonnull Decoder decoder, Void provided) throws EXCEPTION {
        return decoder.decodeBoolean();
    }
    
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy