@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Atom atom = (Atom) o; if (!location.equals(atom.location)) return false; if (token != atom.token) return false; if (name != null ? !name.equals(atom.name) : atom.name != null) return false; return value != null ? value.equals(atom.value) : atom.value == null; }
@SuppressWarnings("unchecked") private void readSingle(EB msg, JsonParser par, XB ext) throws IOException { if (isJsonObject) { startObject(par); } boolean extRead = false; JsonToken tokLast = par.getCurrentToken(); JsonLocation locLast = par.getCurrentLocation(); while (endObject(par) && (isJsonObject || filter(par))) { read(ext, par); if (par.getCurrentToken() != tokLast || !par.getCurrentLocation().equals(locLast)) { extRead = true; par.nextToken(); tokLast = par.getCurrentToken(); locLast = par.getCurrentLocation(); } else { break; } } if (extRead) { msg.setExtension(key, ext.build()); } if (isJsonObject) { par.nextToken(); } }
@SuppressWarnings("unchecked") private void readRepeated(EB msg, JsonParser par) throws IOException { par.nextToken(); JsonToken tokLast = par.getCurrentToken(); JsonLocation locLast = par.getCurrentLocation(); for (startArray(par); endArray(par); par.nextToken()) { boolean objRead = false; XB ext = (XB) key.getMessageDefaultInstance().toBuilder(); for (startObject(par); endObject(par); par.nextToken()) { read(ext, par); JsonToken tokNew = par.getCurrentToken(); JsonLocation locNew = par.getCurrentLocation(); if (tokNew != tokLast || !locNew.equals(locLast)) { objRead = true; } tokLast = tokNew; locLast = locNew; } if (objRead) { msg.addExtension(key, ext.build()); } } }
JsonToken tokNew = par.getCurrentToken(); JsonLocation locNew = par.getCurrentLocation(); boolean advanced = tokNew != tokLast || !locNew.equals(locLast); extRead |= advanced;