net.digitalid.utility.conversion.converters.StringConverter 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.CustomAnnotation;
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 strings.
*/
@Stateless
public class StringConverter implements Converter {
/* -------------------------------------------------- Instance -------------------------------------------------- */
public static final @Nonnull StringConverter INSTANCE = new StringConverter();
/* -------------------------------------------------- Type -------------------------------------------------- */
@Pure
@Override
public @Nonnull Class getType() {
return String.class;
}
/* -------------------------------------------------- Name -------------------------------------------------- */
@Pure
@Override
public @Nonnull @CodeIdentifier @MaxSize(63) String getTypeName() {
return "String";
}
/* -------------------------------------------------- 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.STRING, "string", ImmutableList.withElements(CustomAnnotation.with(Nonnull.class))));
@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 String string, @NonCaptured @Modified @Nonnull Encoder encoder) throws EXCEPTION {
encoder.encodeString(string);
}
/* -------------------------------------------------- Recover -------------------------------------------------- */
@Pure
@Override
public @Capturable <@Unspecifiable EXCEPTION extends ConnectionException> @Nonnull String recover(@NonCaptured @Modified @Nonnull Decoder decoder, Void provided) throws EXCEPTION {
return decoder.decodeString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy