<N, M> JSONBuilder<R, M> beginObject(final IteratorFunction<T, N> iterator, final IterMemberFunction<T, M> accessor) { final StringTemplateBuilder<M> accessorBranch = new StringTemplateBuilder<>(); kw.OpenObj(accessorBranch, depth); final ObjectRenderState newOrs = new ObjectRenderState(kw); iterate(iterator, true, new IterMemberFunction<T, M>() { @Override public M get(T o, int i) { newOrs.beginObjectRender(); return accessor.get(o, i); } }, new RenderIteration<M, N>() { @Override public void render(AppendableByteWriter writer, M m, int i) { accessorBranch.render(writer, m); } }); JSONBuilder<R, M> builder = new JSONBuilder<>(accessorBranch, kw, depth + 1, root); builder.ors = newOrs; return builder; }
<N, M> JSONBuilder<R, M> beginObject(final IteratorFunction<T, N> iterator, final IterMemberFunction<T, M> accessor) { final StringTemplateBuilder<M> accessorBranch = new StringTemplateBuilder<>(); kw.OpenObj(accessorBranch, depth); final ThreadLocal<ObjectRenderState> newOrs = createOrs(); iterate(iterator, true, new IterMemberFunction<T, M>() { @Override public M get(T o, int i) { newOrs.get().beginObjectRender(); return accessor.get(o, i); } }, new RenderIteration<M, N>() { @Override public void render(AppendableByteWriter writer, M m, int i, N node) { accessorBranch.render(writer, m); } }); JSONBuilder<R, M> builder = new JSONBuilder<>(accessorBranch, kw, depth + 1, root); builder.ors = newOrs; return builder; }
<N, M> JSONBuilder<R, M> beginObject(final IteratorFunction<T, N> iterator, final IterMemberFunction<T, M> accessor) { final StringTemplateBuilder<M> accessorBranch = new StringTemplateBuilder<>(); kw.OpenObj(accessorBranch, depth); final ObjectRenderState newOrs = new ObjectRenderState(kw); iterate(iterator, true, new IterMemberFunction<T, M>() { @Override public M get(T o, int i) { newOrs.beginObjectRender(); return accessor.get(o, i); } }, new RenderIteration<M, N>() { @Override public void render(AppendableByteWriter writer, M m, int i) { accessorBranch.render(writer, m); } }); JSONBuilder<R, M> builder = new JSONBuilder<>(accessorBranch, kw, depth + 1, root); builder.ors = newOrs; return builder; }
public <M> JSONBuilder<R, M> beginObject(final ToMemberFunction<T, M> accessor) { final byte[] declaredMemberName = consumeDeclaredMemberName(); final StringTemplateBuilder<M> accessorScript = new StringTemplateBuilder<>(); kw.OpenObj(accessorScript, depth); final ThreadLocal<ObjectRenderState> newOrs = createOrs(); 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); newOrs.get().beginObjectRender(); accessorScript.render(writer, accessor.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 accessor.get(o) == null ? 0 : 1; } }); JSONBuilder<R, M> builder = new JSONBuilder<>(accessorScript, kw, depth + 1, root); builder.ors = newOrs; return builder; }
public <M> JSONBuilder<R, M> beginObject(final ToMemberFunction<T, M> accessor) { final byte[] declaredMemberName = consumeDeclaredMemberName(); final StringTemplateBuilder<M> accessorScript = new StringTemplateBuilder<>(); kw.OpenObj(accessorScript, depth); final ObjectRenderState newOrs = new ObjectRenderState(kw); 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); newOrs.beginObjectRender(); accessorScript.render(writer, accessor.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 accessor.get(o) == null ? 0 : 1; } }); JSONBuilder<R, M> builder = new JSONBuilder<>(accessorScript, kw, depth + 1, root); builder.ors = newOrs; return builder; }
public <M> JSONBuilder<R, M> beginObject(final ToMemberFunction<T, M> accessor) { final byte[] declaredMemberName = consumeDeclaredMemberName(); final StringTemplateBuilder<M> accessorScript = new StringTemplateBuilder<>(); kw.OpenObj(accessorScript, depth); final ObjectRenderState newOrs = new ObjectRenderState(kw); 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); newOrs.beginObjectRender(); accessorScript.render(writer, accessor.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 accessor.get(o) == null ? 0 : 1; } }); JSONBuilder<R, M> builder = new JSONBuilder<>(accessorScript, kw, depth + 1, root); builder.ors = newOrs; return builder; }