http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/4d5919e5/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
index af61e78..f04b769 100644
--- a/proto_src/org/waveprotocol/box/server/rpc/Rpc.java
+++ b/proto_src/org/waveprotocol/box/server/rpc/Rpc.java
@@ -1,22 +1,3 @@
-/**
- * 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
 
@@ -28,198 +9,285 @@ public final class Rpc {
       com.google.protobuf.ExtensionRegistry registry) {
     registry.add(org.waveprotocol.box.server.rpc.Rpc.isStreamingRpc);
   }
+  public interface CancelRpcOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+  }
+  /**
+   * Protobuf type {@code rpc.CancelRpc}
+   *
+   * <pre>
+   **
+   * Used internally by the RPC subsystem.
+   *
+   * Passed from client -&gt; server to indicate that a RPC, streaming or 
otherwise,
+   * should be cancelled. The server still has a responsibility to finish the 
RPC
+   * in a standard manner, and this is purely a request.
+   * </pre>
+   */
   public static final class CancelRpc extends
-      com.google.protobuf.GeneratedMessage {
+      com.google.protobuf.GeneratedMessage
+      implements CancelRpcOrBuilder {
     // Use CancelRpc.newBuilder() to construct.
-    private CancelRpc() {
-      initFields();
+    private CancelRpc(com.google.protobuf.GeneratedMessage.Builder<?> builder) 
{
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
     }
-    private CancelRpc(boolean noInit) {}
-    
+    private CancelRpc(boolean noInit) { this.unknownFields = 
com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
     private static final CancelRpc defaultInstance;
     public static CancelRpc getDefaultInstance() {
       return defaultInstance;
     }
-    
+
     public CancelRpc getDefaultInstanceForType() {
       return defaultInstance;
     }
-    
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private CancelRpc(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
     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;
+      return 
org.waveprotocol.box.server.rpc.Rpc.internal_static_rpc_CancelRpc_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.waveprotocol.box.server.rpc.Rpc.CancelRpc.class, 
org.waveprotocol.box.server.rpc.Rpc.CancelRpc.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<CancelRpc> PARSER =
+        new com.google.protobuf.AbstractParser<CancelRpc>() {
+      public CancelRpc parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new CancelRpc(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<CancelRpc> getParserForType() {
+      return PARSER;
     }
-    
+
     private void initFields() {
     }
+    private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      memoizedIsInitialized = 1;
       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;
     }
-    
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
     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();
+      return PARSER.parseFrom(data);
     }
     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();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static org.waveprotocol.box.server.rpc.Rpc.CancelRpc 
parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
+      return PARSER.parseFrom(data);
     }
     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();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static org.waveprotocol.box.server.rpc.Rpc.CancelRpc 
parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(input);
     }
     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();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
     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;
-      }
+      return PARSER.parseDelimitedFrom(input);
     }
     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;
-      }
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
     }
     public static org.waveprotocol.box.server.rpc.Rpc.CancelRpc parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(input);
     }
     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();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
-    
+
     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); }
-    
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code rpc.CancelRpc}
+     *
+     * <pre>
+     **
+     * Used internally by the RPC subsystem.
+     *
+     * Passed from client -&gt; server to indicate that a RPC, streaming or 
otherwise,
+     * should be cancelled. The server still has a responsibility to finish 
the RPC
+     * in a standard manner, and this is purely a request.
+     * </pre>
+     */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> {
-      private org.waveprotocol.box.server.rpc.Rpc.CancelRpc result;
-      
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.waveprotocol.box.server.rpc.Rpc.CancelRpcOrBuilder {
+      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
+            .ensureFieldAccessorsInitialized(
+                org.waveprotocol.box.server.rpc.Rpc.CancelRpc.class, 
org.waveprotocol.box.server.rpc.Rpc.CancelRpc.Builder.class);
+      }
+
       // 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;
+      private Builder() {
+        maybeForceBuilderInitialization();
       }
-      
-      protected org.waveprotocol.box.server.rpc.Rpc.CancelRpc 
internalGetResult() {
-        return result;
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
       }
-      
-      public Builder clear() {
-        if (result == null) {
-          throw new IllegalStateException(
-            "Cannot call clear() after build().");
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
         }
-        result = new org.waveprotocol.box.server.rpc.Rpc.CancelRpc();
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
         return this;
       }
-      
+
       public Builder clone() {
-        return create().mergeFrom(result);
+        return create().mergeFrom(buildPartial());
       }
-      
+
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return org.waveprotocol.box.server.rpc.Rpc.CancelRpc.getDescriptor();
+        return 
org.waveprotocol.box.server.rpc.Rpc.internal_static_rpc_CancelRpc_descriptor;
       }
-      
+
       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()) {
+        org.waveprotocol.box.server.rpc.Rpc.CancelRpc result = buildPartial();
+        if (!result.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();
+        return result;
       }
-      
+
       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;
+        org.waveprotocol.box.server.rpc.Rpc.CancelRpc result = new 
org.waveprotocol.box.server.rpc.Rpc.CancelRpc(this);
+        onBuilt();
+        return result;
       }
-      
+
       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);
@@ -228,272 +296,456 @@ public final class Rpc {
           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 final boolean isInitialized() {
+        return true;
+      }
+
       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;
-            }
+        org.waveprotocol.box.server.rpc.Rpc.CancelRpc parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.waveprotocol.box.server.rpc.Rpc.CancelRpc) 
e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
           }
         }
+        return this;
       }
-      
-      
+
       // @@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 interface RpcFinishedOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required bool failed = 1;
+    /**
+     * <code>required bool failed = 1;</code>
+     */
+    boolean hasFailed();
+    /**
+     * <code>required bool failed = 1;</code>
+     */
+    boolean getFailed();
+
+    // optional string error_text = 2;
+    /**
+     * <code>optional string error_text = 2;</code>
+     */
+    boolean hasErrorText();
+    /**
+     * <code>optional string error_text = 2;</code>
+     */
+    java.lang.String getErrorText();
+    /**
+     * <code>optional string error_text = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getErrorTextBytes();
+  }
+  /**
+   * Protobuf type {@code rpc.RpcFinished}
+   *
+   * <pre>
+   **
+   * Used internally by the RPC subsystem.
+   *
+   * Passed from server -&gt; client in two cases;
+   *  - a streaming RPC has finished, in which case failed may be true or false
+   *  - a normal RPC has failed, in which case failed must be true
+   * </pre>
+   */
   public static final class RpcFinished extends
-      com.google.protobuf.GeneratedMessage {
+      com.google.protobuf.GeneratedMessage
+      implements RpcFinishedOrBuilder {
     // Use RpcFinished.newBuilder() to construct.
-    private RpcFinished() {
-      initFields();
+    private RpcFinished(com.google.protobuf.GeneratedMessage.Builder<?> 
builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
     }
-    private RpcFinished(boolean noInit) {}
-    
+    private RpcFinished(boolean noInit) { this.unknownFields = 
com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
     private static final RpcFinished defaultInstance;
     public static RpcFinished getDefaultInstance() {
       return defaultInstance;
     }
-    
+
     public RpcFinished getDefaultInstanceForType() {
       return defaultInstance;
     }
-    
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private RpcFinished(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              failed_ = input.readBool();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              errorText_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
     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;
+      return 
org.waveprotocol.box.server.rpc.Rpc.internal_static_rpc_RpcFinished_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.waveprotocol.box.server.rpc.Rpc.RpcFinished.class, 
org.waveprotocol.box.server.rpc.Rpc.RpcFinished.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<RpcFinished> PARSER =
+        new com.google.protobuf.AbstractParser<RpcFinished>() {
+      public RpcFinished parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new RpcFinished(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<RpcFinished> getParserForType() {
+      return PARSER;
     }
-    
+
+    private int bitField0_;
     // 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_; }
-    
+    private boolean failed_;
+    /**
+     * <code>required bool failed = 1;</code>
+     */
+    public boolean hasFailed() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required bool failed = 1;</code>
+     */
+    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 java.lang.Object errorText_;
+    /**
+     * <code>optional string error_text = 2;</code>
+     */
+    public boolean hasErrorText() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>optional string error_text = 2;</code>
+     */
+    public java.lang.String getErrorText() {
+      java.lang.Object ref = errorText_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          errorText_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string error_text = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getErrorTextBytes() {
+      java.lang.Object ref = errorText_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        errorText_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
     private void initFields() {
+      failed_ = false;
+      errorText_ = "";
     }
+    private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
-      if (!hasFailed) return false;
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasFailed()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
       return true;
     }
-    
+
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
-      if (hasFailed()) {
-        output.writeBool(1, getFailed());
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBool(1, failed_);
       }
-      if (hasErrorText()) {
-        output.writeString(2, getErrorText());
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getErrorTextBytes());
       }
       getUnknownFields().writeTo(output);
     }
-    
+
     private int memoizedSerializedSize = -1;
     public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
-    
+
       size = 0;
-      if (hasFailed()) {
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(1, getFailed());
+          .computeBoolSize(1, failed_);
       }
-      if (hasErrorText()) {
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeStringSize(2, getErrorText());
+          .computeBytesSize(2, getErrorTextBytes());
       }
       size += getUnknownFields().getSerializedSize();
       memoizedSerializedSize = size;
       return size;
     }
-    
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
     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();
+      return PARSER.parseFrom(data);
     }
     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();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static org.waveprotocol.box.server.rpc.Rpc.RpcFinished 
parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
+      return PARSER.parseFrom(data);
     }
     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();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static org.waveprotocol.box.server.rpc.Rpc.RpcFinished 
parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(input);
     }
     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();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
     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;
-      }
+      return PARSER.parseDelimitedFrom(input);
     }
     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;
-      }
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
     }
     public static org.waveprotocol.box.server.rpc.Rpc.RpcFinished parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(input);
     }
     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();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
-    
+
     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); }
-    
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code rpc.RpcFinished}
+     *
+     * <pre>
+     **
+     * Used internally by the RPC subsystem.
+     *
+     * Passed from server -&gt; client in two cases;
+     *  - a streaming RPC has finished, in which case failed may be true or 
false
+     *  - a normal RPC has failed, in which case failed must be true
+     * </pre>
+     */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder> {
-      private org.waveprotocol.box.server.rpc.Rpc.RpcFinished result;
-      
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.waveprotocol.box.server.rpc.Rpc.RpcFinishedOrBuilder {
+      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
+            .ensureFieldAccessorsInitialized(
+                org.waveprotocol.box.server.rpc.Rpc.RpcFinished.class, 
org.waveprotocol.box.server.rpc.Rpc.RpcFinished.Builder.class);
+      }
+
       // 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;
+      private Builder() {
+        maybeForceBuilderInitialization();
       }
-      
-      protected org.waveprotocol.box.server.rpc.Rpc.RpcFinished 
internalGetResult() {
-        return result;
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
       }
-      
-      public Builder clear() {
-        if (result == null) {
-          throw new IllegalStateException(
-            "Cannot call clear() after build().");
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
         }
-        result = new org.waveprotocol.box.server.rpc.Rpc.RpcFinished();
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        failed_ = false;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        errorText_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
         return this;
       }
-      
+
       public Builder clone() {
-        return create().mergeFrom(result);
+        return create().mergeFrom(buildPartial());
       }
-      
+
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return org.waveprotocol.box.server.rpc.Rpc.RpcFinished.getDescriptor();
+        return 
org.waveprotocol.box.server.rpc.Rpc.internal_static_rpc_RpcFinished_descriptor;
       }
-      
+
       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()) {
+        org.waveprotocol.box.server.rpc.Rpc.RpcFinished result = 
buildPartial();
+        if (!result.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();
+        return result;
       }
-      
+
       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 result = new 
org.waveprotocol.box.server.rpc.Rpc.RpcFinished(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.failed_ = failed_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
         }
-        org.waveprotocol.box.server.rpc.Rpc.RpcFinished returnMe = result;
-        result = null;
-        return returnMe;
+        result.errorText_ = errorText_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
       }
-      
+
       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);
@@ -502,111 +754,177 @@ public final class Rpc {
           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());
+          bitField0_ |= 0x00000002;
+          errorText_ = other.errorText_;
+          onChanged();
         }
         this.mergeUnknownFields(other.getUnknownFields());
         return this;
       }
-      
+
+      public final boolean isInitialized() {
+        if (!hasFailed()) {
+          
+          return false;
+        }
+        return true;
+      }
+
       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;
-            }
+        org.waveprotocol.box.server.rpc.Rpc.RpcFinished parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.waveprotocol.box.server.rpc.Rpc.RpcFinished) 
e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
           }
         }
+        return this;
       }
-      
-      
+      private int bitField0_;
+
       // required bool failed = 1;
+      private boolean failed_ ;
+      /**
+       * <code>required bool failed = 1;</code>
+       */
       public boolean hasFailed() {
-        return result.hasFailed();
+        return ((bitField0_ & 0x00000001) == 0x00000001);
       }
+      /**
+       * <code>required bool failed = 1;</code>
+       */
       public boolean getFailed() {
-        return result.getFailed();
+        return failed_;
       }
+      /**
+       * <code>required bool failed = 1;</code>
+       */
       public Builder setFailed(boolean value) {
-        result.hasFailed = true;
-        result.failed_ = value;
+        bitField0_ |= 0x00000001;
+        failed_ = value;
+        onChanged();
         return this;
       }
+      /**
+       * <code>required bool failed = 1;</code>
+       */
       public Builder clearFailed() {
-        result.hasFailed = false;
-        result.failed_ = false;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        failed_ = false;
+        onChanged();
         return this;
       }
-      
+
       // optional string error_text = 2;
+      private java.lang.Object errorText_ = "";
+      /**
+       * <code>optional string error_text = 2;</code>
+       */
       public boolean hasErrorText() {
-        return result.hasErrorText();
+        return ((bitField0_ & 0x00000002) == 0x00000002);
       }
+      /**
+       * <code>optional string error_text = 2;</code>
+       */
       public java.lang.String getErrorText() {
-        return result.getErrorText();
+        java.lang.Object ref = errorText_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          errorText_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
       }
-      public Builder setErrorText(java.lang.String value) {
+      /**
+       * <code>optional string error_text = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getErrorTextBytes() {
+        java.lang.Object ref = errorText_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          errorText_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string error_text = 2;</code>
+       */
+      public Builder setErrorText(
+          java.lang.String value) {
         if (value == null) {
     throw new NullPointerException();
   }
-  result.hasErrorText = true;
-        result.errorText_ = value;
+  bitField0_ |= 0x00000002;
+        errorText_ = value;
+        onChanged();
         return this;
       }
+      /**
+       * <code>optional string error_text = 2;</code>
+       */
       public Builder clearErrorText() {
-        result.hasErrorText = false;
-        result.errorText_ = getDefaultInstance().getErrorText();
+        bitField0_ = (bitField0_ & ~0x00000002);
+        errorText_ = getDefaultInstance().getErrorText();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string error_text = 2;</code>
+       */
+      public Builder setErrorTextBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        errorText_ = value;
+        onChanged();
         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;
+  /**
+   * <code>extend .google.protobuf.MethodOptions { ... }</code>
+   */
   public static final
     com.google.protobuf.GeneratedMessage.GeneratedExtension<
       com.google.protobuf.DescriptorProtos.MethodOptions,
-      java.lang.Boolean> isStreamingRpc =
-        com.google.protobuf.GeneratedMessage
-          .newGeneratedExtension();
+      java.lang.Boolean> isStreamingRpc = com.google.protobuf.GeneratedMessage
+          .newFileScopedGeneratedExtension(
+        java.lang.Boolean.class,
+        null);
   private static com.google.protobuf.Descriptors.Descriptor
     internal_static_rpc_CancelRpc_descriptor;
   private static
@@ -617,7 +935,7 @@ public final class Rpc {
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_rpc_RpcFinished_fieldAccessorTable;
-  
+
   public static com.google.protobuf.Descriptors.FileDescriptor
       getDescriptor() {
     return descriptor;
@@ -644,20 +962,14 @@ public final class Rpc {
           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);
+              new java.lang.String[] { });
           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);
+              new java.lang.String[] { "Failed", "ErrorText", });
+          isStreamingRpc.internalInit(descriptor.getExtensions().get(0));
           return null;
         }
       };
@@ -667,8 +979,6 @@ public final class Rpc {
           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/4d5919e5/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
index 93d56d6..ed9724a 100644
--- a/proto_src/org/waveprotocol/protobuf/Extensions.java
+++ b/proto_src/org/waveprotocol/protobuf/Extensions.java
@@ -1,21 +1,3 @@
-/**
- * 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
 
@@ -28,13 +10,17 @@ public final class Extensions {
     registry.add(org.waveprotocol.protobuf.Extensions.int52);
   }
   public static final int INT52_FIELD_NUMBER = 50000;
+  /**
+   * <code>extend .google.protobuf.FieldOptions { ... }</code>
+   */
   public static final
     com.google.protobuf.GeneratedMessage.GeneratedExtension<
       com.google.protobuf.DescriptorProtos.FieldOptions,
-      java.lang.Boolean> int52 =
-        com.google.protobuf.GeneratedMessage
-          .newGeneratedExtension();
-  
+      java.lang.Boolean> int52 = com.google.protobuf.GeneratedMessage
+          .newFileScopedGeneratedExtension(
+        java.lang.Boolean.class,
+        null);
+
   public static com.google.protobuf.Descriptors.FileDescriptor
       getDescriptor() {
     return descriptor;
@@ -54,9 +40,7 @@ public final class Extensions {
         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);
+          int52.internalInit(descriptor.getExtensions().get(0));
           return null;
         }
       };
@@ -66,8 +50,6 @@ public final class Extensions {
           com.google.protobuf.DescriptorProtos.getDescriptor(),
         }, assigner);
   }
-  
-  public static void internalForceInit() {}
-  
+
   // @@protoc_insertion_point(outer_class_scope)
 }

Reply via email to