1 package com.fasterxml.jackson.databind.node; 2 3 import java.math.BigDecimal; 4 import java.math.BigInteger; 5 6 import com.fasterxml.jackson.databind.util.RawValue; 7 8 /** 9 * Interface that defines common "creator" functionality implemented 10 * both by {@link JsonNodeFactory} and {@link ContainerNode} (that is, 11 * JSON Object and Array nodes). 12 * 13 * @since 2.3 14 */ 15 public interface JsonNodeCreator 16 { 17 // Enumerated/singleton types 18 booleanNode(boolean v)19 public ValueNode booleanNode(boolean v); nullNode()20 public ValueNode nullNode(); 21 22 // Not yet in 2.10, will be added in 3.0 23 // public JsonNode missingNode(); 24 25 // Numeric types 26 numberNode(byte v)27 public ValueNode numberNode(byte v); numberNode(Byte value)28 public ValueNode numberNode(Byte value); numberNode(short v)29 public ValueNode numberNode(short v); numberNode(Short value)30 public ValueNode numberNode(Short value); numberNode(int v)31 public ValueNode numberNode(int v); numberNode(Integer value)32 public ValueNode numberNode(Integer value); numberNode(long v)33 public ValueNode numberNode(long v); numberNode(Long value)34 public ValueNode numberNode(Long value); numberNode(BigInteger v)35 public ValueNode numberNode(BigInteger v); numberNode(float v)36 public ValueNode numberNode(float v); numberNode(Float value)37 public ValueNode numberNode(Float value); numberNode(double v)38 public ValueNode numberNode(double v); numberNode(Double value)39 public ValueNode numberNode(Double value); numberNode(BigDecimal v)40 public ValueNode numberNode(BigDecimal v); 41 42 // Textual nodes 43 textNode(String text)44 public ValueNode textNode(String text); 45 46 // Other value (non-structured) nodes 47 binaryNode(byte[] data)48 public ValueNode binaryNode(byte[] data); binaryNode(byte[] data, int offset, int length)49 public ValueNode binaryNode(byte[] data, int offset, int length); pojoNode(Object pojo)50 public ValueNode pojoNode(Object pojo); 51 52 /** 53 * Factory method to use for adding "raw values"; pre-encoded values 54 * that are included exactly as-is when node is serialized. 55 * This may be used, for example, to include fully serialized JSON 56 * sub-trees. 57 * Note that the concept may not work with all backends, and since 58 * no translation of any kinds is done it will not work when converting 59 * between data formats. 60 * 61 * @since 2.6 62 */ rawValueNode(RawValue value)63 public ValueNode rawValueNode(RawValue value); 64 65 // Structured nodes: 66 // (bit unkosher, due to forward references... but has to do for now) 67 arrayNode()68 public ArrayNode arrayNode(); 69 70 /** 71 * Factory method for constructing a JSON Array node with an initial capacity 72 * 73 * @since 2.8 74 */ arrayNode(int capacity)75 public ArrayNode arrayNode(int capacity); 76 objectNode()77 public ObjectNode objectNode(); 78 } 79