Plex/proxy/src/main/java/com/moandjiezana/toml/PrimitiveArrayValueWriter.java

56 lines
1.4 KiB
Java

package com.moandjiezana.toml;
import java.util.Collection;
import static com.moandjiezana.toml.ValueWriters.WRITERS;
class PrimitiveArrayValueWriter extends ArrayValueWriter
{
static final ValueWriter PRIMITIVE_ARRAY_VALUE_WRITER = new PrimitiveArrayValueWriter();
@Override
public boolean canWrite(Object value) {
return isArrayish(value) && isArrayOfPrimitive(value);
}
@Override
public void write(Object o, WriterContext context) {
Collection<?> values = normalize(o);
context.write('[');
context.writeArrayDelimiterPadding();
boolean first = true;
ValueWriter firstWriter = null;
for (Object value : values) {
if (first) {
firstWriter = WRITERS.findWriterFor(value);
first = false;
} else {
ValueWriter writer = WRITERS.findWriterFor(value);
if (writer != firstWriter) {
throw new IllegalStateException(
context.getContextPath() +
": cannot write a heterogeneous array; first element was of type " + firstWriter +
" but found " + writer
);
}
context.write(", ");
}
WRITERS.findWriterFor(value).write(value, context);
}
context.writeArrayDelimiterPadding();
context.write(']');
}
private PrimitiveArrayValueWriter() {}
@Override
public String toString() {
return "primitive-array";
}
}