http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/7cf06762/proto_src/org/waveprotocol/box/server/persistence/protos/ProtoDeltaStoreData.java
----------------------------------------------------------------------
diff --git 
a/proto_src/org/waveprotocol/box/server/persistence/protos/ProtoDeltaStoreData.java
 
b/proto_src/org/waveprotocol/box/server/persistence/protos/ProtoDeltaStoreData.java
new file mode 100644
index 0000000..d0922ef
--- /dev/null
+++ 
b/proto_src/org/waveprotocol/box/server/persistence/protos/ProtoDeltaStoreData.java
@@ -0,0 +1,565 @@
+/**
+ * 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.
+ */
+
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: org/waveprotocol/box/server/persistence/protos/delta-store.proto
+
+package org.waveprotocol.box.server.persistence.protos;
+
+public final class ProtoDeltaStoreData {
+  private ProtoDeltaStoreData() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+  }
+  public static final class ProtoTransformedWaveletDelta extends
+      com.google.protobuf.GeneratedMessage {
+    // Use ProtoTransformedWaveletDelta.newBuilder() to construct.
+    private ProtoTransformedWaveletDelta() {
+      initFields();
+    }
+    private ProtoTransformedWaveletDelta(boolean noInit) {}
+    
+    private static final ProtoTransformedWaveletDelta defaultInstance;
+    public static ProtoTransformedWaveletDelta getDefaultInstance() {
+      return defaultInstance;
+    }
+    
+    public ProtoTransformedWaveletDelta getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+    
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.internal_static_protodeltastore_ProtoTransformedWaveletDelta_descriptor;
+    }
+    
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.internal_static_protodeltastore_ProtoTransformedWaveletDelta_fieldAccessorTable;
+    }
+    
+    // required string author = 1;
+    public static final int AUTHOR_FIELD_NUMBER = 1;
+    private boolean hasAuthor;
+    private java.lang.String author_ = "";
+    public boolean hasAuthor() { return hasAuthor; }
+    public java.lang.String getAuthor() { return author_; }
+    
+    // required .federation.ProtocolHashedVersion resulting_version = 2;
+    public static final int RESULTING_VERSION_FIELD_NUMBER = 2;
+    private boolean hasResultingVersion;
+    private org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
resultingVersion_;
+    public boolean hasResultingVersion() { return hasResultingVersion; }
+    public org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
getResultingVersion() { return resultingVersion_; }
+    
+    // required int64 application_timestamp = 3;
+    public static final int APPLICATION_TIMESTAMP_FIELD_NUMBER = 3;
+    private boolean hasApplicationTimestamp;
+    private long applicationTimestamp_ = 0L;
+    public boolean hasApplicationTimestamp() { return hasApplicationTimestamp; 
}
+    public long getApplicationTimestamp() { return applicationTimestamp_; }
+    
+    // repeated .federation.ProtocolWaveletOperation operation = 4;
+    public static final int OPERATION_FIELD_NUMBER = 4;
+    private 
java.util.List<org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation> 
operation_ =
+      java.util.Collections.emptyList();
+    public 
java.util.List<org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation> 
getOperationList() {
+      return operation_;
+    }
+    public int getOperationCount() { return operation_.size(); }
+    public org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation 
getOperation(int index) {
+      return operation_.get(index);
+    }
+    
+    private void initFields() {
+      resultingVersion_ = 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.getDefaultInstance();
+    }
+    public final boolean isInitialized() {
+      if (!hasAuthor) return false;
+      if (!hasResultingVersion) return false;
+      if (!hasApplicationTimestamp) return false;
+      if (!getResultingVersion().isInitialized()) return false;
+      for (org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation 
element : getOperationList()) {
+        if (!element.isInitialized()) return false;
+      }
+      return true;
+    }
+    
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (hasAuthor()) {
+        output.writeString(1, getAuthor());
+      }
+      if (hasResultingVersion()) {
+        output.writeMessage(2, getResultingVersion());
+      }
+      if (hasApplicationTimestamp()) {
+        output.writeInt64(3, getApplicationTimestamp());
+      }
+      for (org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation 
element : getOperationList()) {
+        output.writeMessage(4, element);
+      }
+      getUnknownFields().writeTo(output);
+    }
+    
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+    
+      size = 0;
+      if (hasAuthor()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeStringSize(1, getAuthor());
+      }
+      if (hasResultingVersion()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, getResultingVersion());
+      }
+      if (hasApplicationTimestamp()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(3, getApplicationTimestamp());
+      }
+      for (org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation 
element : getOperationList()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, element);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+    
+    public static 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    public static 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder 
newBuilder(org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+    
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> {
+      private 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 result;
+      
+      // Construct using 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta.newBuilder()
+      private Builder() {}
+      
+      private static Builder create() {
+        Builder builder = new Builder();
+        builder.result = new 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta();
+        return builder;
+      }
+      
+      protected 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 internalGetResult() {
+        return result;
+      }
+      
+      public Builder clear() {
+        if (result == null) {
+          throw new IllegalStateException(
+            "Cannot call clear() after build().");
+        }
+        result = new 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta();
+        return this;
+      }
+      
+      public Builder clone() {
+        return create().mergeFrom(result);
+      }
+      
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta.getDescriptor();
+      }
+      
+      public 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 getDefaultInstanceForType() {
+        return 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta.getDefaultInstance();
+      }
+      
+      public boolean isInitialized() {
+        return result.isInitialized();
+      }
+      public 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 build() {
+        if (result != null && !isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return buildPartial();
+      }
+      
+      private 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 buildParsed()
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        if (!isInitialized()) {
+          throw newUninitializedMessageException(
+            result).asInvalidProtocolBufferException();
+        }
+        return buildPartial();
+      }
+      
+      public 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 buildPartial() {
+        if (result == null) {
+          throw new IllegalStateException(
+            "build() has already been called on this Builder.");
+        }
+        if (result.operation_ != java.util.Collections.EMPTY_LIST) {
+          result.operation_ =
+            java.util.Collections.unmodifiableList(result.operation_);
+        }
+        
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta)
 {
+          return 
mergeFrom((org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+      
+      public Builder 
mergeFrom(org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta
 other) {
+        if (other == 
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta.getDefaultInstance())
 return this;
+        if (other.hasAuthor()) {
+          setAuthor(other.getAuthor());
+        }
+        if (other.hasResultingVersion()) {
+          mergeResultingVersion(other.getResultingVersion());
+        }
+        if (other.hasApplicationTimestamp()) {
+          setApplicationTimestamp(other.getApplicationTimestamp());
+        }
+        if (!other.operation_.isEmpty()) {
+          if (result.operation_.isEmpty()) {
+            result.operation_ = new 
java.util.ArrayList<org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation>();
+          }
+          result.operation_.addAll(other.operation_);
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+      
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder(
+            this.getUnknownFields());
+        while (true) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              this.setUnknownFields(unknownFields.build());
+              return this;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                this.setUnknownFields(unknownFields.build());
+                return this;
+              }
+              break;
+            }
+            case 10: {
+              setAuthor(input.readString());
+              break;
+            }
+            case 18: {
+              
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.Builder subBuilder 
= org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.newBuilder();
+              if (hasResultingVersion()) {
+                subBuilder.mergeFrom(getResultingVersion());
+              }
+              input.readMessage(subBuilder, extensionRegistry);
+              setResultingVersion(subBuilder.buildPartial());
+              break;
+            }
+            case 24: {
+              setApplicationTimestamp(input.readInt64());
+              break;
+            }
+            case 34: {
+              
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.Builder 
subBuilder = 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.newBuilder();
+              input.readMessage(subBuilder, extensionRegistry);
+              addOperation(subBuilder.buildPartial());
+              break;
+            }
+          }
+        }
+      }
+      
+      
+      // required string author = 1;
+      public boolean hasAuthor() {
+        return result.hasAuthor();
+      }
+      public java.lang.String getAuthor() {
+        return result.getAuthor();
+      }
+      public Builder setAuthor(java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  result.hasAuthor = true;
+        result.author_ = value;
+        return this;
+      }
+      public Builder clearAuthor() {
+        result.hasAuthor = false;
+        result.author_ = getDefaultInstance().getAuthor();
+        return this;
+      }
+      
+      // required .federation.ProtocolHashedVersion resulting_version = 2;
+      public boolean hasResultingVersion() {
+        return result.hasResultingVersion();
+      }
+      public org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion 
getResultingVersion() {
+        return result.getResultingVersion();
+      }
+      public Builder 
setResultingVersion(org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion
 value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        result.hasResultingVersion = true;
+        result.resultingVersion_ = value;
+        return this;
+      }
+      public Builder 
setResultingVersion(org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.Builder
 builderForValue) {
+        result.hasResultingVersion = true;
+        result.resultingVersion_ = builderForValue.build();
+        return this;
+      }
+      public Builder 
mergeResultingVersion(org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion
 value) {
+        if (result.hasResultingVersion() &&
+            result.resultingVersion_ != 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.getDefaultInstance())
 {
+          result.resultingVersion_ =
+            
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.newBuilder(result.resultingVersion_).mergeFrom(value).buildPartial();
+        } else {
+          result.resultingVersion_ = value;
+        }
+        result.hasResultingVersion = true;
+        return this;
+      }
+      public Builder clearResultingVersion() {
+        result.hasResultingVersion = false;
+        result.resultingVersion_ = 
org.waveprotocol.wave.federation.Proto.ProtocolHashedVersion.getDefaultInstance();
+        return this;
+      }
+      
+      // required int64 application_timestamp = 3;
+      public boolean hasApplicationTimestamp() {
+        return result.hasApplicationTimestamp();
+      }
+      public long getApplicationTimestamp() {
+        return result.getApplicationTimestamp();
+      }
+      public Builder setApplicationTimestamp(long value) {
+        result.hasApplicationTimestamp = true;
+        result.applicationTimestamp_ = value;
+        return this;
+      }
+      public Builder clearApplicationTimestamp() {
+        result.hasApplicationTimestamp = false;
+        result.applicationTimestamp_ = 0L;
+        return this;
+      }
+      
+      // repeated .federation.ProtocolWaveletOperation operation = 4;
+      public 
java.util.List<org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation> 
getOperationList() {
+        return java.util.Collections.unmodifiableList(result.operation_);
+      }
+      public int getOperationCount() {
+        return result.getOperationCount();
+      }
+      public org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation 
getOperation(int index) {
+        return result.getOperation(index);
+      }
+      public Builder setOperation(int index, 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        result.operation_.set(index, value);
+        return this;
+      }
+      public Builder setOperation(int index, 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.Builder 
builderForValue) {
+        result.operation_.set(index, builderForValue.build());
+        return this;
+      }
+      public Builder 
addOperation(org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation 
value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        if (result.operation_.isEmpty()) {
+          result.operation_ = new 
java.util.ArrayList<org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation>();
+        }
+        result.operation_.add(value);
+        return this;
+      }
+      public Builder 
addOperation(org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation.Builder
 builderForValue) {
+        if (result.operation_.isEmpty()) {
+          result.operation_ = new 
java.util.ArrayList<org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation>();
+        }
+        result.operation_.add(builderForValue.build());
+        return this;
+      }
+      public Builder addAllOperation(
+          java.lang.Iterable<? extends 
org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation> values) {
+        if (result.operation_.isEmpty()) {
+          result.operation_ = new 
java.util.ArrayList<org.waveprotocol.wave.federation.Proto.ProtocolWaveletOperation>();
+        }
+        super.addAll(values, result.operation_);
+        return this;
+      }
+      public Builder clearOperation() {
+        result.operation_ = java.util.Collections.emptyList();
+        return this;
+      }
+      
+      // 
@@protoc_insertion_point(builder_scope:protodeltastore.ProtoTransformedWaveletDelta)
+    }
+    
+    static {
+      defaultInstance = new ProtoTransformedWaveletDelta(true);
+      
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.internalForceInit();
+      defaultInstance.initFields();
+    }
+    
+    // 
@@protoc_insertion_point(class_scope:protodeltastore.ProtoTransformedWaveletDelta)
+  }
+  
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_protodeltastore_ProtoTransformedWaveletDelta_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      
internal_static_protodeltastore_ProtoTransformedWaveletDelta_fieldAccessorTable;
+  
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n@org/waveprotocol/box/server/persistenc" +
+      "e/protos/delta-store.proto\022\017protodeltast" +
+      "ore\0326org/waveprotocol/wave/federation/fe" +
+      "deration.protodevel\"\304\001\n\034ProtoTransformed" +
+      "WaveletDelta\022\016\n\006author\030\001 \002(\t\022<\n\021resultin" +
+      "g_version\030\002 \002(\0132!.federation.ProtocolHas" +
+      "hedVersion\022\035\n\025application_timestamp\030\003 \002(" +
+      "\003\0227\n\toperation\030\004 \003(\0132$.federation.Protoc" +
+      "olWaveletOperationBE\n.org.waveprotocol.b" +
+      "ox.server.persistence.protosB\023ProtoDelta",
+      "StoreData"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner 
assigner =
+      new 
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
+        public com.google.protobuf.ExtensionRegistry assignDescriptors(
+            com.google.protobuf.Descriptors.FileDescriptor root) {
+          descriptor = root;
+          
internal_static_protodeltastore_ProtoTransformedWaveletDelta_descriptor =
+            getDescriptor().getMessageTypes().get(0);
+          
internal_static_protodeltastore_ProtoTransformedWaveletDelta_fieldAccessorTable 
= new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              
internal_static_protodeltastore_ProtoTransformedWaveletDelta_descriptor,
+              new java.lang.String[] { "Author", "ResultingVersion", 
"ApplicationTimestamp", "Operation", },
+              
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta.class,
+              
org.waveprotocol.box.server.persistence.protos.ProtoDeltaStoreData.ProtoTransformedWaveletDelta.Builder.class);
+          return null;
+        }
+      };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+          org.waveprotocol.wave.federation.Proto.getDescriptor(),
+        }, assigner);
+  }
+  
+  public static void internalForceInit() {}
+  
+  // @@protoc_insertion_point(outer_class_scope)
+}

http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/7cf06762/proto_src/org/waveprotocol/box/server/rpc/Rpc.java
----------------------------------------------------------------------
diff --git a/proto_src/org/waveprotocol/box/server/rpc/Rpc.java 
b/proto_src/org/waveprotocol/box/server/rpc/Rpc.java
new file mode 100644
index 0000000..af61e78
--- /dev/null
+++ b/proto_src/org/waveprotocol/box/server/rpc/Rpc.java
@@ -0,0 +1,674 @@
+/**
+ * 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.
+ */
+
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: org/waveprotocol/box/server/rpc/rpc.proto
+
+package org.waveprotocol.box.server.rpc;
+
+public final class Rpc {
+  private Rpc() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+    registry.add(org.waveprotocol.box.server.rpc.Rpc.isStreamingRpc);
+  }
+  public static final class CancelRpc extends
+      com.google.protobuf.GeneratedMessage {
+    // Use CancelRpc.newBuilder() to construct.
+    private CancelRpc() {
+      initFields();
+    }
+    private CancelRpc(boolean noInit) {}
+    
+    private static final CancelRpc defaultInstance;
+    public static CancelRpc getDefaultInstance() {
+      return defaultInstance;
+    }
+    
+    public CancelRpc getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+    
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return 
org.waveprotocol.box.server.rpc.Rpc.internal_static_rpc_CancelRpc_descriptor;
+    }
+    
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return 
org.waveprotocol.box.server.rpc.Rpc.internal_static_rpc_CancelRpc_fieldAccessorTable;
+    }
+    
+    private void initFields() {
+    }
+    public final boolean isInitialized() {
+      return true;
+    }
+    
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      getUnknownFields().writeTo(output);
+    }
+    
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+    
+      size = 0;
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+    
+    public static org.waveprotocol.box.server.rpc.Rpc.CancelRpc parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.CancelRpc parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.CancelRpc 
parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.CancelRpc parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.CancelRpc 
parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.CancelRpc parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.CancelRpc 
parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.CancelRpc 
parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.CancelRpc parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.CancelRpc parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder 
newBuilder(org.waveprotocol.box.server.rpc.Rpc.CancelRpc prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+    
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> {
+      private org.waveprotocol.box.server.rpc.Rpc.CancelRpc result;
+      
+      // Construct using 
org.waveprotocol.box.server.rpc.Rpc.CancelRpc.newBuilder()
+      private Builder() {}
+      
+      private static Builder create() {
+        Builder builder = new Builder();
+        builder.result = new org.waveprotocol.box.server.rpc.Rpc.CancelRpc();
+        return builder;
+      }
+      
+      protected org.waveprotocol.box.server.rpc.Rpc.CancelRpc 
internalGetResult() {
+        return result;
+      }
+      
+      public Builder clear() {
+        if (result == null) {
+          throw new IllegalStateException(
+            "Cannot call clear() after build().");
+        }
+        result = new org.waveprotocol.box.server.rpc.Rpc.CancelRpc();
+        return this;
+      }
+      
+      public Builder clone() {
+        return create().mergeFrom(result);
+      }
+      
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.waveprotocol.box.server.rpc.Rpc.CancelRpc.getDescriptor();
+      }
+      
+      public org.waveprotocol.box.server.rpc.Rpc.CancelRpc 
getDefaultInstanceForType() {
+        return 
org.waveprotocol.box.server.rpc.Rpc.CancelRpc.getDefaultInstance();
+      }
+      
+      public boolean isInitialized() {
+        return result.isInitialized();
+      }
+      public org.waveprotocol.box.server.rpc.Rpc.CancelRpc build() {
+        if (result != null && !isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return buildPartial();
+      }
+      
+      private org.waveprotocol.box.server.rpc.Rpc.CancelRpc buildParsed()
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        if (!isInitialized()) {
+          throw newUninitializedMessageException(
+            result).asInvalidProtocolBufferException();
+        }
+        return buildPartial();
+      }
+      
+      public org.waveprotocol.box.server.rpc.Rpc.CancelRpc buildPartial() {
+        if (result == null) {
+          throw new IllegalStateException(
+            "build() has already been called on this Builder.");
+        }
+        org.waveprotocol.box.server.rpc.Rpc.CancelRpc returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.waveprotocol.box.server.rpc.Rpc.CancelRpc) {
+          return 
mergeFrom((org.waveprotocol.box.server.rpc.Rpc.CancelRpc)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+      
+      public Builder mergeFrom(org.waveprotocol.box.server.rpc.Rpc.CancelRpc 
other) {
+        if (other == 
org.waveprotocol.box.server.rpc.Rpc.CancelRpc.getDefaultInstance()) return this;
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+      
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder(
+            this.getUnknownFields());
+        while (true) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              this.setUnknownFields(unknownFields.build());
+              return this;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                this.setUnknownFields(unknownFields.build());
+                return this;
+              }
+              break;
+            }
+          }
+        }
+      }
+      
+      
+      // @@protoc_insertion_point(builder_scope:rpc.CancelRpc)
+    }
+    
+    static {
+      defaultInstance = new CancelRpc(true);
+      org.waveprotocol.box.server.rpc.Rpc.internalForceInit();
+      defaultInstance.initFields();
+    }
+    
+    // @@protoc_insertion_point(class_scope:rpc.CancelRpc)
+  }
+  
+  public static final class RpcFinished extends
+      com.google.protobuf.GeneratedMessage {
+    // Use RpcFinished.newBuilder() to construct.
+    private RpcFinished() {
+      initFields();
+    }
+    private RpcFinished(boolean noInit) {}
+    
+    private static final RpcFinished defaultInstance;
+    public static RpcFinished getDefaultInstance() {
+      return defaultInstance;
+    }
+    
+    public RpcFinished getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+    
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return 
org.waveprotocol.box.server.rpc.Rpc.internal_static_rpc_RpcFinished_descriptor;
+    }
+    
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return 
org.waveprotocol.box.server.rpc.Rpc.internal_static_rpc_RpcFinished_fieldAccessorTable;
+    }
+    
+    // required bool failed = 1;
+    public static final int FAILED_FIELD_NUMBER = 1;
+    private boolean hasFailed;
+    private boolean failed_ = false;
+    public boolean hasFailed() { return hasFailed; }
+    public boolean getFailed() { return failed_; }
+    
+    // optional string error_text = 2;
+    public static final int ERROR_TEXT_FIELD_NUMBER = 2;
+    private boolean hasErrorText;
+    private java.lang.String errorText_ = "";
+    public boolean hasErrorText() { return hasErrorText; }
+    public java.lang.String getErrorText() { return errorText_; }
+    
+    private void initFields() {
+    }
+    public final boolean isInitialized() {
+      if (!hasFailed) return false;
+      return true;
+    }
+    
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (hasFailed()) {
+        output.writeBool(1, getFailed());
+      }
+      if (hasErrorText()) {
+        output.writeString(2, getErrorText());
+      }
+      getUnknownFields().writeTo(output);
+    }
+    
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+    
+      size = 0;
+      if (hasFailed()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(1, getFailed());
+      }
+      if (hasErrorText()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeStringSize(2, getErrorText());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+    
+    public static org.waveprotocol.box.server.rpc.Rpc.RpcFinished parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.RpcFinished parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.RpcFinished 
parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.RpcFinished parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.RpcFinished 
parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.RpcFinished parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.RpcFinished 
parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.RpcFinished 
parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.RpcFinished parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static org.waveprotocol.box.server.rpc.Rpc.RpcFinished parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder 
newBuilder(org.waveprotocol.box.server.rpc.Rpc.RpcFinished prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+    
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> {
+      private org.waveprotocol.box.server.rpc.Rpc.RpcFinished result;
+      
+      // Construct using 
org.waveprotocol.box.server.rpc.Rpc.RpcFinished.newBuilder()
+      private Builder() {}
+      
+      private static Builder create() {
+        Builder builder = new Builder();
+        builder.result = new org.waveprotocol.box.server.rpc.Rpc.RpcFinished();
+        return builder;
+      }
+      
+      protected org.waveprotocol.box.server.rpc.Rpc.RpcFinished 
internalGetResult() {
+        return result;
+      }
+      
+      public Builder clear() {
+        if (result == null) {
+          throw new IllegalStateException(
+            "Cannot call clear() after build().");
+        }
+        result = new org.waveprotocol.box.server.rpc.Rpc.RpcFinished();
+        return this;
+      }
+      
+      public Builder clone() {
+        return create().mergeFrom(result);
+      }
+      
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.waveprotocol.box.server.rpc.Rpc.RpcFinished.getDescriptor();
+      }
+      
+      public org.waveprotocol.box.server.rpc.Rpc.RpcFinished 
getDefaultInstanceForType() {
+        return 
org.waveprotocol.box.server.rpc.Rpc.RpcFinished.getDefaultInstance();
+      }
+      
+      public boolean isInitialized() {
+        return result.isInitialized();
+      }
+      public org.waveprotocol.box.server.rpc.Rpc.RpcFinished build() {
+        if (result != null && !isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return buildPartial();
+      }
+      
+      private org.waveprotocol.box.server.rpc.Rpc.RpcFinished buildParsed()
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        if (!isInitialized()) {
+          throw newUninitializedMessageException(
+            result).asInvalidProtocolBufferException();
+        }
+        return buildPartial();
+      }
+      
+      public org.waveprotocol.box.server.rpc.Rpc.RpcFinished buildPartial() {
+        if (result == null) {
+          throw new IllegalStateException(
+            "build() has already been called on this Builder.");
+        }
+        org.waveprotocol.box.server.rpc.Rpc.RpcFinished returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.waveprotocol.box.server.rpc.Rpc.RpcFinished) {
+          return 
mergeFrom((org.waveprotocol.box.server.rpc.Rpc.RpcFinished)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+      
+      public Builder mergeFrom(org.waveprotocol.box.server.rpc.Rpc.RpcFinished 
other) {
+        if (other == 
org.waveprotocol.box.server.rpc.Rpc.RpcFinished.getDefaultInstance()) return 
this;
+        if (other.hasFailed()) {
+          setFailed(other.getFailed());
+        }
+        if (other.hasErrorText()) {
+          setErrorText(other.getErrorText());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+      
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder(
+            this.getUnknownFields());
+        while (true) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              this.setUnknownFields(unknownFields.build());
+              return this;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                this.setUnknownFields(unknownFields.build());
+                return this;
+              }
+              break;
+            }
+            case 8: {
+              setFailed(input.readBool());
+              break;
+            }
+            case 18: {
+              setErrorText(input.readString());
+              break;
+            }
+          }
+        }
+      }
+      
+      
+      // required bool failed = 1;
+      public boolean hasFailed() {
+        return result.hasFailed();
+      }
+      public boolean getFailed() {
+        return result.getFailed();
+      }
+      public Builder setFailed(boolean value) {
+        result.hasFailed = true;
+        result.failed_ = value;
+        return this;
+      }
+      public Builder clearFailed() {
+        result.hasFailed = false;
+        result.failed_ = false;
+        return this;
+      }
+      
+      // optional string error_text = 2;
+      public boolean hasErrorText() {
+        return result.hasErrorText();
+      }
+      public java.lang.String getErrorText() {
+        return result.getErrorText();
+      }
+      public Builder setErrorText(java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  result.hasErrorText = true;
+        result.errorText_ = value;
+        return this;
+      }
+      public Builder clearErrorText() {
+        result.hasErrorText = false;
+        result.errorText_ = getDefaultInstance().getErrorText();
+        return this;
+      }
+      
+      // @@protoc_insertion_point(builder_scope:rpc.RpcFinished)
+    }
+    
+    static {
+      defaultInstance = new RpcFinished(true);
+      org.waveprotocol.box.server.rpc.Rpc.internalForceInit();
+      defaultInstance.initFields();
+    }
+    
+    // @@protoc_insertion_point(class_scope:rpc.RpcFinished)
+  }
+  
+  public static final int IS_STREAMING_RPC_FIELD_NUMBER = 1003;
+  public static final
+    com.google.protobuf.GeneratedMessage.GeneratedExtension<
+      com.google.protobuf.DescriptorProtos.MethodOptions,
+      java.lang.Boolean> isStreamingRpc =
+        com.google.protobuf.GeneratedMessage
+          .newGeneratedExtension();
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_rpc_CancelRpc_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_rpc_CancelRpc_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_rpc_RpcFinished_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_rpc_RpcFinished_fieldAccessorTable;
+  
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n)org/waveprotocol/box/server/rpc/rpc.pr" +
+      "oto\022\003rpc\032 google/protobuf/descriptor.pro" +
+      "to\"\013\n\tCancelRpc\"1\n\013RpcFinished\022\016\n\006failed" +
+      "\030\001 \002(\010\022\022\n\nerror_text\030\002 
\001(\t:@\n\020is_streami" +
+      "ng_rpc\022\036.google.protobuf.MethodOptions\030\353" +
+      "\007 \001(\010:\005falseB&\n\037org.waveprotocol.box.ser" +
+      "ver.rpcB\003Rpc"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner 
assigner =
+      new 
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
+        public com.google.protobuf.ExtensionRegistry assignDescriptors(
+            com.google.protobuf.Descriptors.FileDescriptor root) {
+          descriptor = root;
+          internal_static_rpc_CancelRpc_descriptor =
+            getDescriptor().getMessageTypes().get(0);
+          internal_static_rpc_CancelRpc_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_rpc_CancelRpc_descriptor,
+              new java.lang.String[] { },
+              org.waveprotocol.box.server.rpc.Rpc.CancelRpc.class,
+              org.waveprotocol.box.server.rpc.Rpc.CancelRpc.Builder.class);
+          internal_static_rpc_RpcFinished_descriptor =
+            getDescriptor().getMessageTypes().get(1);
+          internal_static_rpc_RpcFinished_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_rpc_RpcFinished_descriptor,
+              new java.lang.String[] { "Failed", "ErrorText", },
+              org.waveprotocol.box.server.rpc.Rpc.RpcFinished.class,
+              org.waveprotocol.box.server.rpc.Rpc.RpcFinished.Builder.class);
+          org.waveprotocol.box.server.rpc.Rpc.isStreamingRpc.internalInit(
+              
org.waveprotocol.box.server.rpc.Rpc.getDescriptor().getExtensions().get(0),
+              java.lang.Boolean.class);
+          return null;
+        }
+      };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+          com.google.protobuf.DescriptorProtos.getDescriptor(),
+        }, assigner);
+  }
+  
+  public static void internalForceInit() {}
+  
+  // @@protoc_insertion_point(outer_class_scope)
+}

http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/7cf06762/proto_src/org/waveprotocol/protobuf/Extensions.java
----------------------------------------------------------------------
diff --git a/proto_src/org/waveprotocol/protobuf/Extensions.java 
b/proto_src/org/waveprotocol/protobuf/Extensions.java
new file mode 100644
index 0000000..93d56d6
--- /dev/null
+++ b/proto_src/org/waveprotocol/protobuf/Extensions.java
@@ -0,0 +1,73 @@
+/**
+ * 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.
+ */
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: org/waveprotocol/protobuf/extensions.proto
+
+package org.waveprotocol.protobuf;
+
+public final class Extensions {
+  private Extensions() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+    registry.add(org.waveprotocol.protobuf.Extensions.int52);
+  }
+  public static final int INT52_FIELD_NUMBER = 50000;
+  public static final
+    com.google.protobuf.GeneratedMessage.GeneratedExtension<
+      com.google.protobuf.DescriptorProtos.FieldOptions,
+      java.lang.Boolean> int52 =
+        com.google.protobuf.GeneratedMessage
+          .newGeneratedExtension();
+  
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n*org/waveprotocol/protobuf/extensions.p" +
+      "roto\032 google/protobuf/descriptor.proto:5" +
+      "\n\005int52\022\035.google.protobuf.FieldOptions\030\320" +
+      "\206\003 \001(\010:\005falseB\'\n\031org.waveprotocol.protob" +
+      "ufB\nExtensions"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner 
assigner =
+      new 
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
+        public com.google.protobuf.ExtensionRegistry assignDescriptors(
+            com.google.protobuf.Descriptors.FileDescriptor root) {
+          descriptor = root;
+          org.waveprotocol.protobuf.Extensions.int52.internalInit(
+              
org.waveprotocol.protobuf.Extensions.getDescriptor().getExtensions().get(0),
+              java.lang.Boolean.class);
+          return null;
+        }
+      };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+          com.google.protobuf.DescriptorProtos.getDescriptor(),
+        }, assigner);
+  }
+  
+  public static void internalForceInit() {}
+  
+  // @@protoc_insertion_point(outer_class_scope)
+}

Reply via email to