JSONBuilder(JSONKeywords kw) { this(new StringTemplateBuilder<T>(), kw, 0, null); }
@Override public void write(byte[] encodedBlock) { add(encodedBlock); }
public StringTemplateBuilder<T> add(final byte[] byteData, int pos, int len) { if (byteData != null && len > 0) { final byte[] localData = new byte[len]; System.arraycopy(byteData, pos, localData, 0, len); addBytes(localData); } return this; }
JSONBuilder<R, T> beginSelect() { final byte[] declaredMemberName = consumeDeclaredMemberName(); JSONBuilder<R, T> builder = new JSONBuilder<R, T>(new StringTemplateBuilder<T>(), kw, depth, root); builder.declaredMemberName = declaredMemberName; builder.ors = ors; this.scripts.add(builder); return builder; }
@Override public void render(AppendableByteWriter writer, M m, int i) { notNullBranch.render(writer, m); } });
@Override public void writeByte(final int asciiChar) { append( new StringTemplateScript<T>() { @Override public void render(AppendableByteWriter writer, T source) { writer.writeByte(asciiChar); } }); }
JSONBuilder<R, T> beginSelect() { final byte[] declaredMemberName = consumeDeclaredMemberName(); JSONBuilder<R, T> builder = new JSONBuilder<R, T>(new StringTemplateBuilder<T>(), kw, depth, root); builder.declaredMemberName = declaredMemberName; builder.ors = ors; this.scripts.add(builder); return builder; }
@Override public void render(AppendableByteWriter writer, M m, int i) { accessorBranch.render(writer, m); } });
private StringTemplateBuilder<T> addBytes(final byte[] byteData) { return append( new StringTemplateScript<T>() { @Override public void render(AppendableByteWriter writer, T source) { writer.write(byteData); } }); }
@Override public void write(byte[] encodedBlock) { add(encodedBlock); }
JSONBuilder<R, T> beginSelect() { final byte[] declaredMemberName = consumeDeclaredMemberName(); JSONBuilder<R, T> builder = new JSONBuilder<R, T>(new StringTemplateBuilder<T>(), kw, depth, root); builder.declaredMemberName = declaredMemberName; builder.ors = ors; this.scripts.add(builder); return builder; }
@Override public void render(AppendableByteWriter writer, M m, int i, N node) { accessorBranch.render(writer, m); } });
@Override public void writeByte(final int asciiChar) { append( new StringTemplateScript<T>() { @Override public void render(AppendableByteWriter writer, T source) { writer.writeByte(asciiChar); } }); }
JSONBuilder() { this(new StringTemplateBuilder<T>(), JSONKeywords.instance, 0, null); }
public StringTemplateBuilder<T> add(final byte[] byteData, int pos, int len) { if (byteData != null && len > 0) { final byte[] localData = new byte[len]; System.arraycopy(byteData, pos, localData, 0, len); addBytes(localData); } return this; }
@Override public void write(byte[] encodedBlock) { add(encodedBlock); }
<M> JSONBuilder<R, M> beginArray(final ToMemberFunction<T, M> func) { final byte[] declaredMemberName = consumeDeclaredMemberName(); final StringTemplateBuilder<M> arrayBuilder = new StringTemplateBuilder<>(); kw.OpenArray(arrayBuilder, depth); final StringTemplateScript<T> objNullBranch = createNullObjectScript(declaredMemberName); final StringTemplateScript<T> notNullBranch = new StringTemplateScript<T>() { @Override public void render(AppendableByteWriter writer, T source) { prefixObjectMemberName(declaredMemberName, depth, writer); arrayBuilder.render(writer, func.get(source)); } }; final StringTemplateScript<T>[] nullableBranches = new StringTemplateScript[2]; nullableBranches[0] = objNullBranch; nullableBranches[1] = notNullBranch; scripts.add(nullableBranches, new StringTemplateBranching<T>() { @Override public int branch(T o) { return func.get(o) == null ? 0 : 1; } }); return new JSONBuilder<R, M>(arrayBuilder, kw, depth + 1, root); }
@Override public void render(AppendableByteWriter writer, M m, int i, N node) { notNullBranch.render(writer, m); } });
private StringTemplateBuilder<T> addBytes(final byte[] byteData) { return append( new StringTemplateScript<T>() { @Override public void render(AppendableByteWriter writer, T source) { writer.write(byteData); } }); }
JSONBuilder(JSONKeywords kw) { this(new StringTemplateBuilder<T>(), kw, 0, null); }