Changeset 13231 in josm for trunk/src/org/glassfish/json/JsonObjectBuilderImpl.java
- Timestamp:
- 2017-12-23T02:40:43+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/glassfish/json/JsonObjectBuilderImpl.java
r6756 r13231 2 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. 3 3 * 4 * Copyright (c) 2012-201 3Oracle and/or its affiliates. All rights reserved.4 * Copyright (c) 2012-2017 Oracle and/or its affiliates. All rights reserved. 5 5 * 6 6 * The contents of this file are subject to the terms of either the GNU … … 9 9 * may not use this file except in compliance with the License. You can 10 10 * obtain a copy of the License at 11 * https:// glassfish.dev.java.net/public/CDDL+GPL_1_1.html12 * or packager/legal/LICENSE.txt. See the License for the specific11 * https://oss.oracle.com/licenses/CDDL+GPL-1.1 12 * or LICENSE.txt. See the License for the specific 13 13 * language governing permissions and limitations under the License. 14 14 * 15 15 * When distributing the software, include this License Header Notice in each 16 * file and include the License file at packager/legal/LICENSE.txt.16 * file and include the License file at LICENSE.txt. 17 17 * 18 18 * GPL Classpath Exception: … … 51 51 52 52 /** 53 * JsonObjectBuilder impl 53 * JsonObjectBuilder implementation 54 54 * 55 55 * @author Jitendra Kotamraju 56 * @author Kin-man Chung 56 57 */ 57 58 class JsonObjectBuilderImpl implements JsonObjectBuilder { 59 58 60 private Map<String, JsonValue> valueMap; 59 61 private final BufferPool bufferPool; … … 63 65 } 64 66 67 JsonObjectBuilderImpl(JsonObject object, BufferPool bufferPool) { 68 this.bufferPool = bufferPool; 69 valueMap = new LinkedHashMap<>(); 70 valueMap.putAll(object); 71 } 72 73 JsonObjectBuilderImpl(Map<String, Object> map, BufferPool bufferPool) { 74 this.bufferPool = bufferPool; 75 valueMap = new LinkedHashMap<>(); 76 populate(map); 77 } 78 79 @Override 65 80 public JsonObjectBuilder add(String name, JsonValue value) { 66 81 validateName(name); … … 70 85 } 71 86 87 @Override 72 88 public JsonObjectBuilder add(String name, String value) { 73 89 validateName(name); … … 77 93 } 78 94 95 @Override 79 96 public JsonObjectBuilder add(String name, BigInteger value) { 80 97 validateName(name); … … 84 101 } 85 102 103 @Override 86 104 public JsonObjectBuilder add(String name, BigDecimal value) { 87 105 validateName(name); … … 91 109 } 92 110 111 @Override 93 112 public JsonObjectBuilder add(String name, int value) { 94 113 validateName(name); … … 97 116 } 98 117 118 @Override 99 119 public JsonObjectBuilder add(String name, long value) { 100 120 validateName(name); … … 103 123 } 104 124 125 @Override 105 126 public JsonObjectBuilder add(String name, double value) { 106 127 validateName(name); … … 109 130 } 110 131 132 @Override 111 133 public JsonObjectBuilder add(String name, boolean value) { 112 134 validateName(name); … … 115 137 } 116 138 139 @Override 117 140 public JsonObjectBuilder addNull(String name) { 118 141 validateName(name); … … 121 144 } 122 145 146 @Override 123 147 public JsonObjectBuilder add(String name, JsonObjectBuilder builder) { 124 148 validateName(name); … … 130 154 } 131 155 156 @Override 132 157 public JsonObjectBuilder add(String name, JsonArrayBuilder builder) { 133 158 validateName(name); … … 139 164 } 140 165 166 @Override 167 public JsonObjectBuilder addAll(JsonObjectBuilder builder) { 168 if (builder == null) { 169 throw new NullPointerException(JsonMessages.OBJBUILDER_OBJECT_BUILDER_NULL()); 170 } 171 if (valueMap == null) { 172 this.valueMap = new LinkedHashMap<>(); 173 } 174 this.valueMap.putAll(builder.build()); 175 return this; 176 } 177 178 @Override 179 public JsonObjectBuilder remove(String name) { 180 validateName(name); 181 this.valueMap.remove(name); 182 return this; 183 } 184 185 @Override 141 186 public JsonObject build() { 142 187 Map<String, JsonValue> snapshot = (valueMap == null) … … 147 192 } 148 193 194 private void populate(Map<String, Object> map) { 195 final Set<String> fields = map.keySet(); 196 for (String field : fields) { 197 Object value = map.get(field); 198 if (value != null && value instanceof Optional) { 199 ((Optional<?>) value).ifPresent(v -> 200 this.valueMap.put(field, MapUtil.handle(v, bufferPool))); 201 } else { 202 this.valueMap.put(field, MapUtil.handle(value, bufferPool)); 203 } 204 } 205 } 206 149 207 private void putValueMap(String name, JsonValue value) { 150 208 if (valueMap == null) { 151 this.valueMap = new LinkedHashMap< String, JsonValue>();209 this.valueMap = new LinkedHashMap<>(); 152 210 } 153 211 valueMap.put(name, value); … … 264 322 public String toString() { 265 323 StringWriter sw = new StringWriter(); 266 JsonWriter jw = new JsonWriterImpl(sw, bufferPool) ;267 jw.write(this); 268 jw.close();324 try (JsonWriter jw = new JsonWriterImpl(sw, bufferPool)) { 325 jw.write(this); 326 } 269 327 return sw.toString(); 270 328 } 329 330 @Override 331 public JsonObject asJsonObject() { 332 return this; 333 } 334 335 @Override 336 public int size() { 337 return valueMap.size(); 338 } 339 340 @Override 341 public JsonValue get(Object key) { 342 return valueMap.get(key); 343 } 344 345 @Override 346 public boolean containsKey(Object key) { 347 return valueMap.containsKey(key); 348 } 271 349 } 272 350
Note:
See TracChangeset
for help on using the changeset viewer.