package ecologylab.serialization.types.scalar; import java.io.IOException; import ecologylab.serialization.ClassDescriptor; import ecologylab.serialization.ElementState; import ecologylab.serialization.FieldDescriptor; import ecologylab.serialization.ScalarUnmarshallingContext; import ecologylab.serialization.TranslationContext; import ecologylab.serialization.annotations.simpl_inherit; import ecologylab.serialization.formatenums.Format; import ecologylab.serialization.types.ScalarType; /* * This is not being used as composite are only treated as scalars in a certain context of serialization. for example bibtex * but not in XML. */ @simpl_inherit public class CompositeAsScalarType<T> extends ScalarType<T> { public CompositeAsScalarType() { super((Class<? extends T>) CompositeAsScalarType.class, null, null, null); } /** * Append the String directly, unless it needs escaping, in which case, call escapeXML. * * @param instance * @param buffy * @param needsEscaping */ @Override public void appendValue(T instance, StringBuilder buffy, boolean needsEscaping, TranslationContext serializationContext) { if(instance instanceof ElementState) { ClassDescriptor compositeElement = ClassDescriptor.getClassDescriptor(instance); FieldDescriptor scalarValueFD = compositeElement.getScalarValueFieldDescripotor(); if(scalarValueFD != null) { try { scalarValueFD.getScalarType().appendValue(buffy, scalarValueFD, instance); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } /** * Append the String directly, unless it needs escaping, in which case, call escapeXML. * * @param instance * @param appendable * @param needsEscaping * @throws IOException */ @Override public void appendValue(T instance, Appendable appendable, boolean needsEscaping, TranslationContext serializationContext, Format format) throws IOException { if(instance instanceof ElementState) { ClassDescriptor compositeElement = ClassDescriptor.getClassDescriptor(instance); FieldDescriptor scalarValueFD = compositeElement.getScalarValueFieldDescripotor(); if(scalarValueFD != null) { try { scalarValueFD.getScalarType().appendValue(appendable, scalarValueFD, instance, null, format); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } @Override public T getInstance(String value, String[] formatStrings, ScalarUnmarshallingContext scalarUnmarshallingContext) { // TODO Auto-generated method stub return null; } }