package org.uic.barcode.asn1.uper; import java.lang.annotation.Annotation; import java.lang.reflect.Field; class BooleanCoder implements Decoder, Encoder { @Override public boolean canEncode(T obj, Annotation[] extraAnnotations) { return obj instanceof Boolean; } @Override public void encode(BitBuffer bitbuffer, T obj, Annotation[] extraAnnotations) { UperEncoder.logger.debug(String.format("BOOLEAN %s", obj)); bitbuffer.put((Boolean) obj); } @Override public boolean canDecode(Class classOfT, Annotation[] extraAnnotations) { return Boolean.class.isAssignableFrom(classOfT) || boolean.class.isAssignableFrom(classOfT); } @SuppressWarnings("unchecked") @Override public T decode(BitBuffer bitbuffer, Class classOfT, Field field, Annotation[] extraAnnotations) { Boolean result = new Boolean(bitbuffer.get()); UperEncoder.logger.debug(String.format("BOOL: decoded as %s",result)); return (T) result; } @Override public T getDefault(Class classOfT, Annotation[] extraAnnotations) { throw new IllegalArgumentException("Default Boolean not yet implemented"); } }