/** * Returns <code>true</code> if object has been already processed during the serialization. * Used to prevent circular dependencies. Objects are matched by identity. */ public boolean pushValue(final Object value) { for (int i = 0; i < bagSize; i++) { JsonValueContext valueContext = bag.get(i); if (valueContext.getValue() == value) { return true; } } if (bagSize == bag.size()) { lastValueContext = new JsonValueContext(value); bag.add(lastValueContext); } else { lastValueContext = bag.get(bagSize); lastValueContext.reuse(value); } bagSize++; return false; }
/** * {@inheritDoc} */ @Override public void writeComma() { JsonValueContext valueContext = peekValueContext(); if (valueContext != null) { valueContext.incrementIndex(); } super.writeComma(); }
/** * {@inheritDoc} */ @Override public void pushName(final String name, final boolean withComma) { JsonValueContext valueContext = peekValueContext(); if (valueContext != null) { valueContext.setPropertyName(name); } super.pushName(name, withComma); }
@Override public boolean serialize(JsonContext jsonContext, String value) { JsonValueContext jsonValueContext = jsonContext.peekValueContext(); String propertyName = jsonValueContext.getPropertyName(); if (propertyName != null && propertyName.equals("name")) { value = value.toUpperCase(); } jsonContext.writeString(value); return true; } }
@Override public boolean serialize(JsonContext jsonContext, String value) { JsonValueContext jsonValueContext = jsonContext.peekValueContext(); if (jsonValueContext.getIndex() == 1) { value = value.toUpperCase(); } jsonContext.writeString(value); return true; } }