package de.jpaw.bonaparte.core;
import de.jpaw.bonaparte.enums.BonaNonTokenizableEnum;
import de.jpaw.bonaparte.enums.BonaTokenizableEnum;
import de.jpaw.bonaparte.pojos.meta.AlphanumericElementaryDataItem;
import de.jpaw.bonaparte.pojos.meta.BasicNumericElementaryDataItem;
import de.jpaw.bonaparte.pojos.meta.EnumDataItem;
import de.jpaw.bonaparte.pojos.meta.XEnumDataItem;
import de.jpaw.enums.XEnum;
public class EnumAsTokenComposerFilter<E extends Exception> extends DelegatingBaseComposer<E> {
public EnumAsTokenComposerFilter(MessageComposer<E> delegateComposer) {
super(delegateComposer);
}
// enums replaced by the internal token
@Override
public void addEnum(EnumDataItem di, BasicNumericElementaryDataItem ord, BonaNonTokenizableEnum n) throws E {
delegateComposer.addField(StaticMeta.ENUM_TOKEN, n == null ? null : n.name()); // toString == name for this one
}
// enum with alphanumeric expansion: delegate to Null/String
// use the existing token meta here, because the name is better, depsite the length may be too short
@Override
public void addEnum(EnumDataItem di, AlphanumericElementaryDataItem token, BonaTokenizableEnum n) throws E {
delegateComposer.addField(token, n == null ? null : n.name()); // toString == name for this one
}
// xenum with alphanumeric expansion: delegate to Null/String
@Override
public void addEnum(XEnumDataItem di, AlphanumericElementaryDataItem token, XEnum<?> n) throws E {
delegateComposer.addField(token, n == null ? null : n.name());
}
}