Java tutorial
/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.waveprotocol.wave.diff.proto; /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import org.waveprotocol.wave.diff.DocumentDiffSnapshot; import org.waveprotocol.wave.federation.ProtocolHashedVersion; import org.waveprotocol.wave.diff.proto.DocumentDiffSnapshotProtoImpl; import org.waveprotocol.wave.federation.proto.ProtocolHashedVersionProtoImpl; /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import org.waveprotocol.wave.diff.WaveletDiffSnapshot; import org.waveprotocol.wave.diff.WaveletDiffSnapshotUtil; import org.waveprotocol.wave.communication.Blob; import org.waveprotocol.wave.communication.Codec; import org.waveprotocol.wave.communication.ProtoEnums; import org.waveprotocol.wave.communication.proto.Int52; import org.waveprotocol.wave.communication.proto.ProtoWrapper; import org.waveprotocol.wave.communication.gson.GsonException; import org.waveprotocol.wave.communication.gson.GsonSerializable; import org.waveprotocol.wave.communication.gson.GsonUtil; import org.waveprotocol.wave.communication.json.RawStringData; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; import com.google.protobuf.ByteString; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * Server implementation of WaveletDiffSnapshot. * * Generated from org/waveprotocol/wave/diff/diff.proto. Do not edit. */ /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ // NOTE(kalman): It would be nicer to add a proto serialisation // utility rather than having this class at all. public final class WaveletDiffSnapshotProtoImpl implements WaveletDiffSnapshot, // Note: fully-qualified path is required for GsonSerializable and ProtoWrapper. // An import of it is not resolved correctly from inner classes. // This appears to be a javac bug. The Eclipse compiler handles it fine. org.waveprotocol.wave.communication.gson.GsonSerializable, org.waveprotocol.wave.communication.proto.ProtoWrapper<org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot> { private org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot proto = null; private org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.Builder protoBuilder = org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot .newBuilder(); public WaveletDiffSnapshotProtoImpl() { } public WaveletDiffSnapshotProtoImpl(org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot proto) { this.proto = proto; } public WaveletDiffSnapshotProtoImpl(WaveletDiffSnapshot message) { copyFrom(message); } @Override public org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot getPB() { switchToProto(); return proto; } @Override public void setPB(org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot proto) { this.proto = proto; this.protoBuilder = null; } @Override public void copyFrom(WaveletDiffSnapshot message) { /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ setWaveletId(message.getWaveletId()); /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ clearParticipant(); for (String field : message.getParticipant()) { addParticipant(field); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ clearAddedParticipant(); for (String field : message.getAddedParticipant()) { addAddedParticipant(field); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ clearRemovedParticipant(); for (String field : message.getRemovedParticipant()) { addRemovedParticipant(field); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ clearDocument(); for (DocumentDiffSnapshot field : message.getDocument()) { addDocument(new DocumentDiffSnapshotProtoImpl(field)); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ setVersion(new ProtocolHashedVersionProtoImpl(message.getVersion())); /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ setLastModifiedTime(message.getLastModifiedTime()); /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ setCreator(message.getCreator()); /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ setCreationTime(message.getCreationTime()); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ @Override public String getWaveletId() { switchToProto(); return proto.getWaveletId(); } @Override public void setWaveletId(String value) { switchToProtoBuilder(); protoBuilder.setWaveletId(value); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ @Override public List<String> getParticipant() { switchToProto(); return Collections.unmodifiableList(proto.getParticipantList()); } @Override public void addAllParticipant(List<String> values) { switchToProtoBuilder(); protoBuilder.addAllParticipant(values); } @Override public String getParticipant(int n) { switchToProto(); return proto.getParticipant(n); } @Override public void setParticipant(int n, String value) { switchToProtoBuilder(); protoBuilder.setParticipant(n, value); } @Override public int getParticipantSize() { switchToProto(); return proto.getParticipantCount(); } @Override public void addParticipant(String value) { switchToProtoBuilder(); protoBuilder.addParticipant(value); } @Override public void clearParticipant() { switchToProtoBuilder(); protoBuilder.clearParticipant(); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ @Override public List<String> getAddedParticipant() { switchToProto(); return Collections.unmodifiableList(proto.getAddedParticipantList()); } @Override public void addAllAddedParticipant(List<String> values) { switchToProtoBuilder(); protoBuilder.addAllAddedParticipant(values); } @Override public String getAddedParticipant(int n) { switchToProto(); return proto.getAddedParticipant(n); } @Override public void setAddedParticipant(int n, String value) { switchToProtoBuilder(); protoBuilder.setAddedParticipant(n, value); } @Override public int getAddedParticipantSize() { switchToProto(); return proto.getAddedParticipantCount(); } @Override public void addAddedParticipant(String value) { switchToProtoBuilder(); protoBuilder.addAddedParticipant(value); } @Override public void clearAddedParticipant() { switchToProtoBuilder(); protoBuilder.clearAddedParticipant(); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ @Override public List<String> getRemovedParticipant() { switchToProto(); return Collections.unmodifiableList(proto.getRemovedParticipantList()); } @Override public void addAllRemovedParticipant(List<String> values) { switchToProtoBuilder(); protoBuilder.addAllRemovedParticipant(values); } @Override public String getRemovedParticipant(int n) { switchToProto(); return proto.getRemovedParticipant(n); } @Override public void setRemovedParticipant(int n, String value) { switchToProtoBuilder(); protoBuilder.setRemovedParticipant(n, value); } @Override public int getRemovedParticipantSize() { switchToProto(); return proto.getRemovedParticipantCount(); } @Override public void addRemovedParticipant(String value) { switchToProtoBuilder(); protoBuilder.addRemovedParticipant(value); } @Override public void clearRemovedParticipant() { switchToProtoBuilder(); protoBuilder.clearRemovedParticipant(); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ @Override public List<DocumentDiffSnapshotProtoImpl> getDocument() { switchToProto(); List<DocumentDiffSnapshotProtoImpl> list = new ArrayList<DocumentDiffSnapshotProtoImpl>(); for (int i = 0; i < getDocumentSize(); i++) { DocumentDiffSnapshotProtoImpl message = new DocumentDiffSnapshotProtoImpl(proto.getDocument(i)); list.add(message); } return list; } @Override public void addAllDocument(List<? extends DocumentDiffSnapshot> values) { for (DocumentDiffSnapshot message : values) { addDocument(message); } } @Override public DocumentDiffSnapshotProtoImpl getDocument(int n) { switchToProto(); return new DocumentDiffSnapshotProtoImpl(proto.getDocument(n)); } @Override public void setDocument(int n, DocumentDiffSnapshot value) { switchToProtoBuilder(); protoBuilder.setDocument(n, getOrCreateDocumentDiffSnapshotProtoImpl(value).getPB()); } @Override public int getDocumentSize() { switchToProto(); return proto.getDocumentCount(); } @Override public void addDocument(DocumentDiffSnapshot value) { switchToProtoBuilder(); protoBuilder.addDocument(getOrCreateDocumentDiffSnapshotProtoImpl(value).getPB()); } @Override public void clearDocument() { switchToProtoBuilder(); protoBuilder.clearDocument(); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ @Override public ProtocolHashedVersionProtoImpl getVersion() { switchToProto(); return new ProtocolHashedVersionProtoImpl(proto.getVersion()); } @Override public void setVersion(ProtocolHashedVersion value) { switchToProtoBuilder(); protoBuilder.clearVersion(); protoBuilder.setVersion(getOrCreateProtocolHashedVersionProtoImpl(value).getPB()); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ @Override public double getLastModifiedTime() { switchToProto(); return proto.getLastModifiedTime(); } @Override public void setLastModifiedTime(double value) { switchToProtoBuilder(); protoBuilder.setLastModifiedTime(Int52.int52to64(value)); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ @Override public String getCreator() { switchToProto(); return proto.getCreator(); } @Override public void setCreator(String value) { switchToProtoBuilder(); protoBuilder.setCreator(value); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ @Override public double getCreationTime() { switchToProto(); return proto.getCreationTime(); } @Override public void setCreationTime(double value) { switchToProtoBuilder(); protoBuilder.setCreationTime(Int52.int52to64(value)); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ /** Get or create a DocumentDiffSnapshotProtoImpl from a DocumentDiffSnapshot. */ private DocumentDiffSnapshotProtoImpl getOrCreateDocumentDiffSnapshotProtoImpl(DocumentDiffSnapshot message) { if (message instanceof DocumentDiffSnapshotProtoImpl) { return (DocumentDiffSnapshotProtoImpl) message; } else { DocumentDiffSnapshotProtoImpl messageImpl = new DocumentDiffSnapshotProtoImpl(); messageImpl.copyFrom(message); return messageImpl; } } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ /** Get or create a ProtocolHashedVersionProtoImpl from a ProtocolHashedVersion. */ private ProtocolHashedVersionProtoImpl getOrCreateProtocolHashedVersionProtoImpl( ProtocolHashedVersion message) { if (message instanceof ProtocolHashedVersionProtoImpl) { return (ProtocolHashedVersionProtoImpl) message; } else { ProtocolHashedVersionProtoImpl messageImpl = new ProtocolHashedVersionProtoImpl(); messageImpl.copyFrom(message); return messageImpl; } } private void switchToProto() { if (proto == null) { proto = protoBuilder.build(); protoBuilder = null; } } private void switchToProtoBuilder() { if (protoBuilder == null) { protoBuilder = (proto == null) ? org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.newBuilder() : org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.newBuilder(proto); proto = null; } } private void invalidateAll() { proto = null; protoBuilder = org.waveprotocol.wave.diff.Diff.WaveletDiffSnapshot.newBuilder(); } @Override public JsonElement toGson(RawStringData raw, Gson gson) { JsonObject json = new JsonObject(); /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ json.add("1", new JsonPrimitive(getWaveletId())); /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ { JsonArray array = new JsonArray(); for (int i = 0; i < getParticipantSize(); i++) { array.add(new JsonPrimitive(getParticipant(i))); } json.add("2", array); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ { JsonArray array = new JsonArray(); for (int i = 0; i < getAddedParticipantSize(); i++) { array.add(new JsonPrimitive(getAddedParticipant(i))); } json.add("21", array); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ { JsonArray array = new JsonArray(); for (int i = 0; i < getRemovedParticipantSize(); i++) { array.add(new JsonPrimitive(getRemovedParticipant(i))); } json.add("22", array); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ { JsonArray array = new JsonArray(); for (int i = 0; i < getDocumentSize(); i++) { JsonElement elem = ((GsonSerializable) getDocument(i)).toGson(raw, gson); // NOTE(kalman): if multistage parsing worked, split point would go here. array.add(elem); } json.add("3", array); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ { JsonElement elem = ((GsonSerializable) getVersion()).toGson(raw, gson); json.add("4", elem); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ json.add("5", new JsonPrimitive(getLastModifiedTime())); /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ json.add("6", new JsonPrimitive(getCreator())); /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ json.add("7", new JsonPrimitive(getCreationTime())); return json; } @Override public void fromGson(JsonElement json, Gson gson, RawStringData raw) throws GsonException { JsonObject jsonObject = json.getAsJsonObject(); // NOTE: always check with has(...) as the json might not have all required // fields set; however these (obviously) will need to be set by other means // before accessing this object. invalidateAll(); /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ if (jsonObject.has("1")) { JsonElement elem = jsonObject.get("1"); setWaveletId(elem.getAsString()); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ if (jsonObject.has("2")) { JsonElement elem = jsonObject.get("2"); { JsonArray array = elem.getAsJsonArray(); for (int i = 0; i < array.size(); i++) { addParticipant(array.get(i).getAsString()); } } } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ if (jsonObject.has("21")) { JsonElement elem = jsonObject.get("21"); { JsonArray array = elem.getAsJsonArray(); for (int i = 0; i < array.size(); i++) { addAddedParticipant(array.get(i).getAsString()); } } } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ if (jsonObject.has("22")) { JsonElement elem = jsonObject.get("22"); { JsonArray array = elem.getAsJsonArray(); for (int i = 0; i < array.size(); i++) { addRemovedParticipant(array.get(i).getAsString()); } } } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ if (jsonObject.has("3")) { JsonElement elem = jsonObject.get("3"); { JsonArray array = elem.getAsJsonArray(); for (int i = 0; i < array.size(); i++) { DocumentDiffSnapshotProtoImpl payload = new DocumentDiffSnapshotProtoImpl(); GsonUtil.extractJsonObject(payload, array.get(i), gson, raw); addDocument(payload); } } } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ if (jsonObject.has("4")) { JsonElement elem = jsonObject.get("4"); { ProtocolHashedVersionProtoImpl payload = new ProtocolHashedVersionProtoImpl(); GsonUtil.extractJsonObject(payload, elem, gson, raw); setVersion(payload); } } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ if (jsonObject.has("5")) { JsonElement elem = jsonObject.get("5"); setLastModifiedTime(elem.getAsDouble()); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ if (jsonObject.has("6")) { JsonElement elem = jsonObject.get("6"); setCreator(elem.getAsString()); } /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ if (jsonObject.has("7")) { JsonElement elem = jsonObject.get("7"); setCreationTime(elem.getAsDouble()); } } @Override public boolean equals(Object o) { if (this == o) { return true; } else if (o instanceof WaveletDiffSnapshotProtoImpl) { return getPB().equals(((WaveletDiffSnapshotProtoImpl) o).getPB()); } else { return false; } } @Override public boolean isEqualTo(Object o) { if (equals(o)) { return true; } else if (o instanceof WaveletDiffSnapshot) { return WaveletDiffSnapshotUtil.isEqual(this, (WaveletDiffSnapshot) o); } else { return false; } } @Override public int hashCode() { return getPB().hashCode(); } @Override public String toString() { return getPB().toString(); } }