From 9d7877dcbae429cc6e9511368ab028ad50a8a2b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Bon=C3=A9r?= Date: Thu, 10 Jun 2010 16:00:17 +0200 Subject: [PATCH] Deep serialization of Actors now works --- .../akka/remote/protocol/RemoteProtocol.java | 759 ++++++++++++++---- .../src/main/protocol/RemoteProtocol.proto | 29 +- akka-core/src/main/scala/actor/Actor.scala | 10 +- akka-core/src/main/scala/actor/ActorRef.scala | 98 ++- .../scala/remote/RemoteProtocolBuilder.scala | 40 +- .../main/scala/serialization/Serializer.scala | 4 +- akka-core/src/test/scala/SerializerSpec.scala | 10 +- 7 files changed, 716 insertions(+), 234 deletions(-) diff --git a/akka-core/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java b/akka-core/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java index 15f43f5e3f..31234fe4a8 100644 --- a/akka-core/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java +++ b/akka-core/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java @@ -8,7 +8,7 @@ public final class RemoteProtocol { public static void registerAllExtensions( com.google.protobuf.ExtensionRegistry registry) { } - public enum SerializationSchemeProtocol + public enum SerializationSchemeType implements com.google.protobuf.ProtocolMessageEnum { JAVA(0, 1), SBINARY(1, 2), @@ -20,7 +20,7 @@ public final class RemoteProtocol { public final int getNumber() { return value; } - public static SerializationSchemeProtocol valueOf(int value) { + public static SerializationSchemeType valueOf(int value) { switch (value) { case 1: return JAVA; case 2: return SBINARY; @@ -31,15 +31,15 @@ public final class RemoteProtocol { } } - public static com.google.protobuf.Internal.EnumLiteMap + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; } - private static com.google.protobuf.Internal.EnumLiteMap + private static com.google.protobuf.Internal.EnumLiteMap internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public SerializationSchemeProtocol findValueByNumber(int number) { - return SerializationSchemeProtocol.valueOf(number) + new com.google.protobuf.Internal.EnumLiteMap() { + public SerializationSchemeType findValueByNumber(int number) { + return SerializationSchemeType.valueOf(number) ; } }; @@ -56,10 +56,10 @@ public final class RemoteProtocol { return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.getDescriptor().getEnumTypes().get(0); } - private static final SerializationSchemeProtocol[] VALUES = { + private static final SerializationSchemeType[] VALUES = { JAVA, SBINARY, SCALA_JSON, JAVA_JSON, PROTOBUF, }; - public static SerializationSchemeProtocol valueOf( + public static SerializationSchemeType valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { throw new java.lang.IllegalArgumentException( @@ -69,7 +69,7 @@ public final class RemoteProtocol { } private final int index; private final int value; - private SerializationSchemeProtocol(int index, int value) { + private SerializationSchemeType(int index, int value) { this.index = index; this.value = value; } @@ -78,10 +78,10 @@ public final class RemoteProtocol { se.scalablesolutions.akka.remote.protocol.RemoteProtocol.getDescriptor(); } - // @@protoc_insertion_point(enum_scope:SerializationSchemeProtocol) + // @@protoc_insertion_point(enum_scope:SerializationSchemeType) } - public enum LifeCycleProtocol + public enum LifeCycleType implements com.google.protobuf.ProtocolMessageEnum { PERMANENT(0, 1), TEMPORARY(1, 2), @@ -90,7 +90,7 @@ public final class RemoteProtocol { public final int getNumber() { return value; } - public static LifeCycleProtocol valueOf(int value) { + public static LifeCycleType valueOf(int value) { switch (value) { case 1: return PERMANENT; case 2: return TEMPORARY; @@ -98,15 +98,15 @@ public final class RemoteProtocol { } } - public static com.google.protobuf.Internal.EnumLiteMap + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; } - private static com.google.protobuf.Internal.EnumLiteMap + private static com.google.protobuf.Internal.EnumLiteMap internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public LifeCycleProtocol findValueByNumber(int number) { - return LifeCycleProtocol.valueOf(number) + new com.google.protobuf.Internal.EnumLiteMap() { + public LifeCycleType findValueByNumber(int number) { + return LifeCycleType.valueOf(number) ; } }; @@ -123,10 +123,10 @@ public final class RemoteProtocol { return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.getDescriptor().getEnumTypes().get(1); } - private static final LifeCycleProtocol[] VALUES = { + private static final LifeCycleType[] VALUES = { PERMANENT, TEMPORARY, }; - public static LifeCycleProtocol valueOf( + public static LifeCycleType valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { throw new java.lang.IllegalArgumentException( @@ -136,7 +136,7 @@ public final class RemoteProtocol { } private final int index; private final int value; - private LifeCycleProtocol(int index, int value) { + private LifeCycleType(int index, int value) { this.index = index; this.value = value; } @@ -145,7 +145,386 @@ public final class RemoteProtocol { se.scalablesolutions.akka.remote.protocol.RemoteProtocol.getDescriptor(); } - // @@protoc_insertion_point(enum_scope:LifeCycleProtocol) + // @@protoc_insertion_point(enum_scope:LifeCycleType) + } + + public static final class LifeCycleProtocol extends + com.google.protobuf.GeneratedMessage { + // Use LifeCycleProtocol.newBuilder() to construct. + private LifeCycleProtocol() { + initFields(); + } + private LifeCycleProtocol(boolean noInit) {} + + private static final LifeCycleProtocol defaultInstance; + public static LifeCycleProtocol getDefaultInstance() { + return defaultInstance; + } + + public LifeCycleProtocol getDefaultInstanceForType() { + return defaultInstance; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_LifeCycleProtocol_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_LifeCycleProtocol_fieldAccessorTable; + } + + // required .LifeCycleType lifeCycle = 1; + public static final int LIFECYCLE_FIELD_NUMBER = 1; + private boolean hasLifeCycle; + private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType lifeCycle_; + public boolean hasLifeCycle() { return hasLifeCycle; } + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType getLifeCycle() { return lifeCycle_; } + + // optional string preRestart = 2; + public static final int PRERESTART_FIELD_NUMBER = 2; + private boolean hasPreRestart; + private java.lang.String preRestart_ = ""; + public boolean hasPreRestart() { return hasPreRestart; } + public java.lang.String getPreRestart() { return preRestart_; } + + // optional string postRestart = 3; + public static final int POSTRESTART_FIELD_NUMBER = 3; + private boolean hasPostRestart; + private java.lang.String postRestart_ = ""; + public boolean hasPostRestart() { return hasPostRestart; } + public java.lang.String getPostRestart() { return postRestart_; } + + private void initFields() { + lifeCycle_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType.PERMANENT; + } + public final boolean isInitialized() { + if (!hasLifeCycle) return false; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (hasLifeCycle()) { + output.writeEnum(1, getLifeCycle().getNumber()); + } + if (hasPreRestart()) { + output.writeString(2, getPreRestart()); + } + if (hasPostRestart()) { + output.writeString(3, getPostRestart()); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasLifeCycle()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, getLifeCycle().getNumber()); + } + if (hasPreRestart()) { + size += com.google.protobuf.CodedOutputStream + .computeStringSize(2, getPreRestart()); + } + if (hasPostRestart()) { + size += com.google.protobuf.CodedOutputStream + .computeStringSize(3, getPostRestart()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseFrom(java.io.InputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol 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 se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol 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(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder { + private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol result; + + // Construct using se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.newBuilder() + private Builder() {} + + private static Builder create() { + Builder builder = new Builder(); + builder.result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol(); + return builder; + } + + protected se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol internalGetResult() { + return result; + } + + public Builder clear() { + if (result == null) { + throw new IllegalStateException( + "Cannot call clear() after build()."); + } + result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol(); + return this; + } + + public Builder clone() { + return create().mergeFrom(result); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.getDescriptor(); + } + + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol getDefaultInstanceForType() { + return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.getDefaultInstance(); + } + + public boolean isInitialized() { + return result.isInitialized(); + } + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol build() { + if (result != null && !isInitialized()) { + throw newUninitializedMessageException(result); + } + return buildPartial(); + } + + private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol buildParsed() + throws com.google.protobuf.InvalidProtocolBufferException { + if (!isInitialized()) { + throw newUninitializedMessageException( + result).asInvalidProtocolBufferException(); + } + return buildPartial(); + } + + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol buildPartial() { + if (result == null) { + throw new IllegalStateException( + "build() has already been called on this Builder."); + } + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol returnMe = result; + result = null; + return returnMe; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol) { + return mergeFrom((se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol other) { + if (other == se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.getDefaultInstance()) return this; + if (other.hasLifeCycle()) { + setLifeCycle(other.getLifeCycle()); + } + if (other.hasPreRestart()) { + setPreRestart(other.getPreRestart()); + } + if (other.hasPostRestart()) { + setPostRestart(other.getPostRestart()); + } + 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: { + int rawValue = input.readEnum(); + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType value = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType.valueOf(rawValue); + if (value == null) { + unknownFields.mergeVarintField(1, rawValue); + } else { + setLifeCycle(value); + } + break; + } + case 18: { + setPreRestart(input.readString()); + break; + } + case 26: { + setPostRestart(input.readString()); + break; + } + } + } + } + + + // required .LifeCycleType lifeCycle = 1; + public boolean hasLifeCycle() { + return result.hasLifeCycle(); + } + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType getLifeCycle() { + return result.getLifeCycle(); + } + public Builder setLifeCycle(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType value) { + if (value == null) { + throw new NullPointerException(); + } + result.hasLifeCycle = true; + result.lifeCycle_ = value; + return this; + } + public Builder clearLifeCycle() { + result.hasLifeCycle = false; + result.lifeCycle_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType.PERMANENT; + return this; + } + + // optional string preRestart = 2; + public boolean hasPreRestart() { + return result.hasPreRestart(); + } + public java.lang.String getPreRestart() { + return result.getPreRestart(); + } + public Builder setPreRestart(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + result.hasPreRestart = true; + result.preRestart_ = value; + return this; + } + public Builder clearPreRestart() { + result.hasPreRestart = false; + result.preRestart_ = getDefaultInstance().getPreRestart(); + return this; + } + + // optional string postRestart = 3; + public boolean hasPostRestart() { + return result.hasPostRestart(); + } + public java.lang.String getPostRestart() { + return result.getPostRestart(); + } + public Builder setPostRestart(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + result.hasPostRestart = true; + result.postRestart_ = value; + return this; + } + public Builder clearPostRestart() { + result.hasPostRestart = false; + result.postRestart_ = getDefaultInstance().getPostRestart(); + return this; + } + + // @@protoc_insertion_point(builder_scope:LifeCycleProtocol) + } + + static { + defaultInstance = new LifeCycleProtocol(true); + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internalForceInit(); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:LifeCycleProtocol) } public static final class AddressProtocol extends @@ -841,12 +1220,12 @@ public final class RemoteProtocol { public boolean hasUuid() { return hasUuid; } public java.lang.String getUuid() { return uuid_; } - // required string actorClassName = 2; + // required string actorClassname = 2; public static final int ACTORCLASSNAME_FIELD_NUMBER = 2; - private boolean hasActorClassName; - private java.lang.String actorClassName_ = ""; - public boolean hasActorClassName() { return hasActorClassName; } - public java.lang.String getActorClassName() { return actorClassName_; } + private boolean hasActorClassname; + private java.lang.String actorClassname_ = ""; + public boolean hasActorClassname() { return hasActorClassname; } + public java.lang.String getActorClassname() { return actorClassname_; } // required .AddressProtocol homeAddress = 3; public static final int HOMEADDRESS_FIELD_NUMBER = 3; @@ -867,7 +1246,7 @@ public final class RemoteProtocol { } public final boolean isInitialized() { if (!hasUuid) return false; - if (!hasActorClassName) return false; + if (!hasActorClassname) return false; if (!hasHomeAddress) return false; if (!getHomeAddress().isInitialized()) return false; return true; @@ -879,8 +1258,8 @@ public final class RemoteProtocol { if (hasUuid()) { output.writeString(1, getUuid()); } - if (hasActorClassName()) { - output.writeString(2, getActorClassName()); + if (hasActorClassname()) { + output.writeString(2, getActorClassname()); } if (hasHomeAddress()) { output.writeMessage(3, getHomeAddress()); @@ -901,9 +1280,9 @@ public final class RemoteProtocol { size += com.google.protobuf.CodedOutputStream .computeStringSize(1, getUuid()); } - if (hasActorClassName()) { + if (hasActorClassname()) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getActorClassName()); + .computeStringSize(2, getActorClassname()); } if (hasHomeAddress()) { size += com.google.protobuf.CodedOutputStream @@ -1074,8 +1453,8 @@ public final class RemoteProtocol { if (other.hasUuid()) { setUuid(other.getUuid()); } - if (other.hasActorClassName()) { - setActorClassName(other.getActorClassName()); + if (other.hasActorClassname()) { + setActorClassname(other.getActorClassname()); } if (other.hasHomeAddress()) { mergeHomeAddress(other.getHomeAddress()); @@ -1113,7 +1492,7 @@ public final class RemoteProtocol { break; } case 18: { - setActorClassName(input.readString()); + setActorClassname(input.readString()); break; } case 26: { @@ -1155,24 +1534,24 @@ public final class RemoteProtocol { return this; } - // required string actorClassName = 2; - public boolean hasActorClassName() { - return result.hasActorClassName(); + // required string actorClassname = 2; + public boolean hasActorClassname() { + return result.hasActorClassname(); } - public java.lang.String getActorClassName() { - return result.getActorClassName(); + public java.lang.String getActorClassname() { + return result.getActorClassname(); } - public Builder setActorClassName(java.lang.String value) { + public Builder setActorClassname(java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasActorClassName = true; - result.actorClassName_ = value; + result.hasActorClassname = true; + result.actorClassname_ = value; return this; } - public Builder clearActorClassName() { - result.hasActorClassName = false; - result.actorClassName_ = getDefaultInstance().getActorClassName(); + public Builder clearActorClassname() { + result.hasActorClassname = false; + result.actorClassname_ = getDefaultInstance().getActorClassname(); return this; } @@ -1284,12 +1663,12 @@ public final class RemoteProtocol { public boolean hasId() { return hasId; } public java.lang.String getId() { return id_; } - // required string actorClassName = 3; + // required string actorClassname = 3; public static final int ACTORCLASSNAME_FIELD_NUMBER = 3; - private boolean hasActorClassName; - private java.lang.String actorClassName_ = ""; - public boolean hasActorClassName() { return hasActorClassName; } - public java.lang.String getActorClassName() { return actorClassName_; } + private boolean hasActorClassname; + private java.lang.String actorClassname_ = ""; + public boolean hasActorClassname() { return hasActorClassname; } + public java.lang.String getActorClassname() { return actorClassname_; } // required bytes actorInstance = 4; public static final int ACTORINSTANCE_FIELD_NUMBER = 4; @@ -1298,12 +1677,12 @@ public final class RemoteProtocol { public boolean hasActorInstance() { return hasActorInstance; } public com.google.protobuf.ByteString getActorInstance() { return actorInstance_; } - // required .SerializationSchemeProtocol serializationScheme = 5; - public static final int SERIALIZATIONSCHEME_FIELD_NUMBER = 5; - private boolean hasSerializationScheme; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol serializationScheme_; - public boolean hasSerializationScheme() { return hasSerializationScheme; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol getSerializationScheme() { return serializationScheme_; } + // required string serializerClassname = 5; + public static final int SERIALIZERCLASSNAME_FIELD_NUMBER = 5; + private boolean hasSerializerClassname; + private java.lang.String serializerClassname_ = ""; + public boolean hasSerializerClassname() { return hasSerializerClassname; } + public java.lang.String getSerializerClassname() { return serializerClassname_; } // required .AddressProtocol originalAddress = 6; public static final int ORIGINALADDRESS_FIELD_NUMBER = 6; @@ -1348,19 +1727,21 @@ public final class RemoteProtocol { public com.google.protobuf.ByteString getHotswapStack() { return hotswapStack_; } private void initFields() { - serializationScheme_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol.JAVA; originalAddress_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.getDefaultInstance(); - lifeCycle_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.PERMANENT; + lifeCycle_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.getDefaultInstance(); supervisor_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.getDefaultInstance(); } public final boolean isInitialized() { if (!hasUuid) return false; if (!hasId) return false; - if (!hasActorClassName) return false; + if (!hasActorClassname) return false; if (!hasActorInstance) return false; - if (!hasSerializationScheme) return false; + if (!hasSerializerClassname) return false; if (!hasOriginalAddress) return false; if (!getOriginalAddress().isInitialized()) return false; + if (hasLifeCycle()) { + if (!getLifeCycle().isInitialized()) return false; + } if (hasSupervisor()) { if (!getSupervisor().isInitialized()) return false; } @@ -1376,14 +1757,14 @@ public final class RemoteProtocol { if (hasId()) { output.writeString(2, getId()); } - if (hasActorClassName()) { - output.writeString(3, getActorClassName()); + if (hasActorClassname()) { + output.writeString(3, getActorClassname()); } if (hasActorInstance()) { output.writeBytes(4, getActorInstance()); } - if (hasSerializationScheme()) { - output.writeEnum(5, getSerializationScheme().getNumber()); + if (hasSerializerClassname()) { + output.writeString(5, getSerializerClassname()); } if (hasOriginalAddress()) { output.writeMessage(6, getOriginalAddress()); @@ -1395,7 +1776,7 @@ public final class RemoteProtocol { output.writeUInt64(8, getTimeout()); } if (hasLifeCycle()) { - output.writeEnum(9, getLifeCycle().getNumber()); + output.writeMessage(9, getLifeCycle()); } if (hasSupervisor()) { output.writeMessage(10, getSupervisor()); @@ -1420,17 +1801,17 @@ public final class RemoteProtocol { size += com.google.protobuf.CodedOutputStream .computeStringSize(2, getId()); } - if (hasActorClassName()) { + if (hasActorClassname()) { size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getActorClassName()); + .computeStringSize(3, getActorClassname()); } if (hasActorInstance()) { size += com.google.protobuf.CodedOutputStream .computeBytesSize(4, getActorInstance()); } - if (hasSerializationScheme()) { + if (hasSerializerClassname()) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(5, getSerializationScheme().getNumber()); + .computeStringSize(5, getSerializerClassname()); } if (hasOriginalAddress()) { size += com.google.protobuf.CodedOutputStream @@ -1446,7 +1827,7 @@ public final class RemoteProtocol { } if (hasLifeCycle()) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(9, getLifeCycle().getNumber()); + .computeMessageSize(9, getLifeCycle()); } if (hasSupervisor()) { size += com.google.protobuf.CodedOutputStream @@ -1620,14 +2001,14 @@ public final class RemoteProtocol { if (other.hasId()) { setId(other.getId()); } - if (other.hasActorClassName()) { - setActorClassName(other.getActorClassName()); + if (other.hasActorClassname()) { + setActorClassname(other.getActorClassname()); } if (other.hasActorInstance()) { setActorInstance(other.getActorInstance()); } - if (other.hasSerializationScheme()) { - setSerializationScheme(other.getSerializationScheme()); + if (other.hasSerializerClassname()) { + setSerializerClassname(other.getSerializerClassname()); } if (other.hasOriginalAddress()) { mergeOriginalAddress(other.getOriginalAddress()); @@ -1639,7 +2020,7 @@ public final class RemoteProtocol { setTimeout(other.getTimeout()); } if (other.hasLifeCycle()) { - setLifeCycle(other.getLifeCycle()); + mergeLifeCycle(other.getLifeCycle()); } if (other.hasSupervisor()) { mergeSupervisor(other.getSupervisor()); @@ -1681,21 +2062,15 @@ public final class RemoteProtocol { break; } case 26: { - setActorClassName(input.readString()); + setActorClassname(input.readString()); break; } case 34: { setActorInstance(input.readBytes()); break; } - case 40: { - int rawValue = input.readEnum(); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol value = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(5, rawValue); - } else { - setSerializationScheme(value); - } + case 42: { + setSerializerClassname(input.readString()); break; } case 50: { @@ -1715,14 +2090,13 @@ public final class RemoteProtocol { setTimeout(input.readUInt64()); break; } - case 72: { - int rawValue = input.readEnum(); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol value = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(9, rawValue); - } else { - setLifeCycle(value); + case 74: { + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.Builder subBuilder = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.newBuilder(); + if (hasLifeCycle()) { + subBuilder.mergeFrom(getLifeCycle()); } + input.readMessage(subBuilder, extensionRegistry); + setLifeCycle(subBuilder.buildPartial()); break; } case 82: { @@ -1785,24 +2159,24 @@ public final class RemoteProtocol { return this; } - // required string actorClassName = 3; - public boolean hasActorClassName() { - return result.hasActorClassName(); + // required string actorClassname = 3; + public boolean hasActorClassname() { + return result.hasActorClassname(); } - public java.lang.String getActorClassName() { - return result.getActorClassName(); + public java.lang.String getActorClassname() { + return result.getActorClassname(); } - public Builder setActorClassName(java.lang.String value) { + public Builder setActorClassname(java.lang.String value) { if (value == null) { throw new NullPointerException(); } - result.hasActorClassName = true; - result.actorClassName_ = value; + result.hasActorClassname = true; + result.actorClassname_ = value; return this; } - public Builder clearActorClassName() { - result.hasActorClassName = false; - result.actorClassName_ = getDefaultInstance().getActorClassName(); + public Builder clearActorClassname() { + result.hasActorClassname = false; + result.actorClassname_ = getDefaultInstance().getActorClassname(); return this; } @@ -1827,24 +2201,24 @@ public final class RemoteProtocol { return this; } - // required .SerializationSchemeProtocol serializationScheme = 5; - public boolean hasSerializationScheme() { - return result.hasSerializationScheme(); + // required string serializerClassname = 5; + public boolean hasSerializerClassname() { + return result.hasSerializerClassname(); } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol getSerializationScheme() { - return result.getSerializationScheme(); + public java.lang.String getSerializerClassname() { + return result.getSerializerClassname(); } - public Builder setSerializationScheme(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol value) { + public Builder setSerializerClassname(java.lang.String value) { if (value == null) { - throw new NullPointerException(); - } - result.hasSerializationScheme = true; - result.serializationScheme_ = value; + throw new NullPointerException(); + } + result.hasSerializerClassname = true; + result.serializerClassname_ = value; return this; } - public Builder clearSerializationScheme() { - result.hasSerializationScheme = false; - result.serializationScheme_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol.JAVA; + public Builder clearSerializerClassname() { + result.hasSerializerClassname = false; + result.serializerClassname_ = getDefaultInstance().getSerializerClassname(); return this; } @@ -1936,9 +2310,25 @@ public final class RemoteProtocol { result.lifeCycle_ = value; return this; } + public Builder setLifeCycle(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.Builder builderForValue) { + result.hasLifeCycle = true; + result.lifeCycle_ = builderForValue.build(); + return this; + } + public Builder mergeLifeCycle(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol value) { + if (result.hasLifeCycle() && + result.lifeCycle_ != se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.getDefaultInstance()) { + result.lifeCycle_ = + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.newBuilder(result.lifeCycle_).mergeFrom(value).buildPartial(); + } else { + result.lifeCycle_ = value; + } + result.hasLifeCycle = true; + return this; + } public Builder clearLifeCycle() { result.hasLifeCycle = false; - result.lifeCycle_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.PERMANENT; + result.lifeCycle_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.getDefaultInstance(); return this; } @@ -2046,12 +2436,12 @@ public final class RemoteProtocol { public boolean hasId() { return hasId; } public long getId() { return id_; } - // required .SerializationSchemeProtocol serializationScheme = 2; + // required .SerializationSchemeType serializationScheme = 2; public static final int SERIALIZATIONSCHEME_FIELD_NUMBER = 2; private boolean hasSerializationScheme; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol serializationScheme_; + private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType serializationScheme_; public boolean hasSerializationScheme() { return hasSerializationScheme; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol getSerializationScheme() { return serializationScheme_; } + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType getSerializationScheme() { return serializationScheme_; } // required bytes message = 3; public static final int MESSAGE_FIELD_NUMBER = 3; @@ -2131,7 +2521,7 @@ public final class RemoteProtocol { public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol getSender() { return sender_; } private void initFields() { - serializationScheme_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol.JAVA; + serializationScheme_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType.JAVA; sender_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.getDefaultInstance(); } public final boolean isInitialized() { @@ -2481,7 +2871,7 @@ public final class RemoteProtocol { } case 16: { int rawValue = input.readEnum(); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol value = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol.valueOf(rawValue); + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType value = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType.valueOf(rawValue); if (value == null) { unknownFields.mergeVarintField(2, rawValue); } else { @@ -2561,14 +2951,14 @@ public final class RemoteProtocol { return this; } - // required .SerializationSchemeProtocol serializationScheme = 2; + // required .SerializationSchemeType serializationScheme = 2; public boolean hasSerializationScheme() { return result.hasSerializationScheme(); } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol getSerializationScheme() { + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType getSerializationScheme() { return result.getSerializationScheme(); } - public Builder setSerializationScheme(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol value) { + public Builder setSerializationScheme(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType value) { if (value == null) { throw new NullPointerException(); } @@ -2578,7 +2968,7 @@ public final class RemoteProtocol { } public Builder clearSerializationScheme() { result.hasSerializationScheme = false; - result.serializationScheme_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol.JAVA; + result.serializationScheme_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType.JAVA; return this; } @@ -2863,12 +3253,12 @@ public final class RemoteProtocol { public boolean hasId() { return hasId; } public long getId() { return id_; } - // optional .SerializationSchemeProtocol serializationScheme = 2; + // optional .SerializationSchemeType serializationScheme = 2; public static final int SERIALIZATIONSCHEME_FIELD_NUMBER = 2; private boolean hasSerializationScheme; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol serializationScheme_; + private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType serializationScheme_; public boolean hasSerializationScheme() { return hasSerializationScheme; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol getSerializationScheme() { return serializationScheme_; } + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType getSerializationScheme() { return serializationScheme_; } // optional bytes message = 3; public static final int MESSAGE_FIELD_NUMBER = 3; @@ -2913,7 +3303,7 @@ public final class RemoteProtocol { public boolean getIsSuccessful() { return isSuccessful_; } private void initFields() { - serializationScheme_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol.JAVA; + serializationScheme_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType.JAVA; exception_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.getDefaultInstance(); } public final boolean isInitialized() { @@ -3207,7 +3597,7 @@ public final class RemoteProtocol { } case 16: { int rawValue = input.readEnum(); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol value = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol.valueOf(rawValue); + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType value = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType.valueOf(rawValue); if (value == null) { unknownFields.mergeVarintField(2, rawValue); } else { @@ -3267,14 +3657,14 @@ public final class RemoteProtocol { return this; } - // optional .SerializationSchemeProtocol serializationScheme = 2; + // optional .SerializationSchemeType serializationScheme = 2; public boolean hasSerializationScheme() { return result.hasSerializationScheme(); } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol getSerializationScheme() { + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType getSerializationScheme() { return result.getSerializationScheme(); } - public Builder setSerializationScheme(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol value) { + public Builder setSerializationScheme(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType value) { if (value == null) { throw new NullPointerException(); } @@ -3284,7 +3674,7 @@ public final class RemoteProtocol { } public Builder clearSerializationScheme() { result.hasSerializationScheme = false; - result.serializationScheme_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeProtocol.JAVA; + result.serializationScheme_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType.JAVA; return this; } @@ -3436,6 +3826,11 @@ public final class RemoteProtocol { // @@protoc_insertion_point(class_scope:RemoteReplyProtocol) } + private static com.google.protobuf.Descriptors.Descriptor + internal_static_LifeCycleProtocol_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_LifeCycleProtocol_fieldAccessorTable; private static com.google.protobuf.Descriptors.Descriptor internal_static_AddressProtocol_descriptor; private static @@ -3475,48 +3870,58 @@ public final class RemoteProtocol { descriptor; static { java.lang.String[] descriptorData = { - "\n\024RemoteProtocol.proto\"1\n\017AddressProtoco" + - "l\022\020\n\010hostname\030\001 \002(\t\022\014\n\004port\030\002 \002(\r\"7\n\021Exc" + - "eptionProtocol\022\021\n\tclassname\030\001 \002(\t\022\017\n\007mes" + - "sage\030\002 \002(\t\"v\n\026RemoteActorRefProtocol\022\014\n\004" + - "uuid\030\001 \002(\t\022\026\n\016actorClassName\030\002 \002(\t\022%\n\013ho" + - "meAddress\030\003 \002(\0132\020.AddressProtocol\022\017\n\007tim" + - "eout\030\004 \001(\004\"\334\002\n\032SerializedActorRefProtoco" + - "l\022\014\n\004uuid\030\001 \002(\t\022\n\n\002id\030\002 \002(\t\022\026\n\016actorClas" + - "sName\030\003 \002(\t\022\025\n\ractorInstance\030\004 \002(\014\0229\n\023se" + - "rializationScheme\030\005 \002(\0162\034.SerializationS", - "chemeProtocol\022)\n\017originalAddress\030\006 \002(\0132\020" + - ".AddressProtocol\022\024\n\014isTransactor\030\007 \001(\010\022\017" + - "\n\007timeout\030\010 \001(\004\022%\n\tlifeCycle\030\t \001(\0162\022.Lif" + - "eCycleProtocol\022+\n\nsupervisor\030\n \001(\0132\027.Rem" + - "oteActorRefProtocol\022\024\n\014hotswapStack\030\013 \001(" + - "\014\"\276\002\n\025RemoteRequestProtocol\022\n\n\002id\030\001 \002(\004\022" + - "9\n\023serializationScheme\030\002 \002(\0162\034.Serializa" + - "tionSchemeProtocol\022\017\n\007message\030\003 \002(\014\022\027\n\017m" + - "essageManifest\030\004 \001(\014\022\016\n\006method\030\005 \001(\t\022\016\n\006" + - "target\030\006 \002(\t\022\014\n\004uuid\030\007 \002(\t\022\017\n\007timeout\030\010 ", - "\002(\004\022\026\n\016supervisorUuid\030\t \001(\t\022\017\n\007isActor\030\n" + - " \002(\010\022\020\n\010isOneWay\030\013 \002(\010\022\021\n\tisEscaped\030\014 \002(" + - "\010\022\'\n\006sender\030\r \001(\0132\027.RemoteActorRefProtoc" + - "ol\"\354\001\n\023RemoteReplyProtocol\022\n\n\002id\030\001 \002(\004\0229" + - "\n\023serializationScheme\030\002 \001(\0162\034.Serializat" + - "ionSchemeProtocol\022\017\n\007message\030\003 \001(\014\022\027\n\017me" + - "ssageManifest\030\004 \001(\014\022%\n\texception\030\005 \001(\0132\022" + - ".ExceptionProtocol\022\026\n\016supervisorUuid\030\006 \001" + - "(\t\022\017\n\007isActor\030\007 \002(\010\022\024\n\014isSuccessful\030\010 \002(" + - "\010*a\n\033SerializationSchemeProtocol\022\010\n\004JAVA", - "\020\001\022\013\n\007SBINARY\020\002\022\016\n\nSCALA_JSON\020\003\022\r\n\tJAVA_" + - "JSON\020\004\022\014\n\010PROTOBUF\020\005*1\n\021LifeCycleProtoco" + - "l\022\r\n\tPERMANENT\020\001\022\r\n\tTEMPORARY\020\002B-\n)se.sc" + - "alablesolutions.akka.remote.protocolH\001" + "\n\024RemoteProtocol.proto\"_\n\021LifeCycleProto" + + "col\022!\n\tlifeCycle\030\001 \002(\0162\016.LifeCycleType\022\022" + + "\n\npreRestart\030\002 \001(\t\022\023\n\013postRestart\030\003 \001(\t\"" + + "1\n\017AddressProtocol\022\020\n\010hostname\030\001 \002(\t\022\014\n\004" + + "port\030\002 \002(\r\"7\n\021ExceptionProtocol\022\021\n\tclass" + + "name\030\001 \002(\t\022\017\n\007message\030\002 \002(\t\"v\n\026RemoteAct" + + "orRefProtocol\022\014\n\004uuid\030\001 \002(\t\022\026\n\016actorClas" + + "sname\030\002 \002(\t\022%\n\013homeAddress\030\003 \002(\0132\020.Addre" + + "ssProtocol\022\017\n\007timeout\030\004 \001(\004\"\276\002\n\032Serializ" + + "edActorRefProtocol\022\014\n\004uuid\030\001 \002(\t\022\n\n\002id\030\002", + " \002(\t\022\026\n\016actorClassname\030\003 \002(\t\022\025\n\ractorIns" + + "tance\030\004 \002(\014\022\033\n\023serializerClassname\030\005 \002(\t" + + "\022)\n\017originalAddress\030\006 \002(\0132\020.AddressProto" + + "col\022\024\n\014isTransactor\030\007 \001(\010\022\017\n\007timeout\030\010 \001" + + "(\004\022%\n\tlifeCycle\030\t \001(\0132\022.LifeCycleProtoco" + + "l\022+\n\nsupervisor\030\n \001(\0132\027.RemoteActorRefPr" + + "otocol\022\024\n\014hotswapStack\030\013 \001(\014\"\272\002\n\025RemoteR" + + "equestProtocol\022\n\n\002id\030\001 \002(\004\0225\n\023serializat" + + "ionScheme\030\002 \002(\0162\030.SerializationSchemeTyp" + + "e\022\017\n\007message\030\003 \002(\014\022\027\n\017messageManifest\030\004 ", + "\001(\014\022\016\n\006method\030\005 \001(\t\022\016\n\006target\030\006 \002(\t\022\014\n\004u" + + "uid\030\007 \002(\t\022\017\n\007timeout\030\010 \002(\004\022\026\n\016supervisor" + + "Uuid\030\t \001(\t\022\017\n\007isActor\030\n \002(\010\022\020\n\010isOneWay\030" + + "\013 \002(\010\022\021\n\tisEscaped\030\014 \002(\010\022\'\n\006sender\030\r \001(\013" + + "2\027.RemoteActorRefProtocol\"\350\001\n\023RemoteRepl" + + "yProtocol\022\n\n\002id\030\001 \002(\004\0225\n\023serializationSc" + + "heme\030\002 \001(\0162\030.SerializationSchemeType\022\017\n\007" + + "message\030\003 \001(\014\022\027\n\017messageManifest\030\004 \001(\014\022%" + + "\n\texception\030\005 \001(\0132\022.ExceptionProtocol\022\026\n" + + "\016supervisorUuid\030\006 \001(\t\022\017\n\007isActor\030\007 \002(\010\022\024", + "\n\014isSuccessful\030\010 \002(\010*]\n\027SerializationSch" + + "emeType\022\010\n\004JAVA\020\001\022\013\n\007SBINARY\020\002\022\016\n\nSCALA_" + + "JSON\020\003\022\r\n\tJAVA_JSON\020\004\022\014\n\010PROTOBUF\020\005*-\n\rL" + + "ifeCycleType\022\r\n\tPERMANENT\020\001\022\r\n\tTEMPORARY" + + "\020\002B-\n)se.scalablesolutions.akka.remote.p" + + "rotocolH\001" }; 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_AddressProtocol_descriptor = + internal_static_LifeCycleProtocol_descriptor = getDescriptor().getMessageTypes().get(0); + internal_static_LifeCycleProtocol_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_LifeCycleProtocol_descriptor, + new java.lang.String[] { "LifeCycle", "PreRestart", "PostRestart", }, + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.class, + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.Builder.class); + internal_static_AddressProtocol_descriptor = + getDescriptor().getMessageTypes().get(1); internal_static_AddressProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_AddressProtocol_descriptor, @@ -3524,7 +3929,7 @@ public final class RemoteProtocol { se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.Builder.class); internal_static_ExceptionProtocol_descriptor = - getDescriptor().getMessageTypes().get(1); + getDescriptor().getMessageTypes().get(2); internal_static_ExceptionProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_ExceptionProtocol_descriptor, @@ -3532,23 +3937,23 @@ public final class RemoteProtocol { se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.Builder.class); internal_static_RemoteActorRefProtocol_descriptor = - getDescriptor().getMessageTypes().get(2); + getDescriptor().getMessageTypes().get(3); internal_static_RemoteActorRefProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_RemoteActorRefProtocol_descriptor, - new java.lang.String[] { "Uuid", "ActorClassName", "HomeAddress", "Timeout", }, + new java.lang.String[] { "Uuid", "ActorClassname", "HomeAddress", "Timeout", }, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.Builder.class); internal_static_SerializedActorRefProtocol_descriptor = - getDescriptor().getMessageTypes().get(3); + getDescriptor().getMessageTypes().get(4); internal_static_SerializedActorRefProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_SerializedActorRefProtocol_descriptor, - new java.lang.String[] { "Uuid", "Id", "ActorClassName", "ActorInstance", "SerializationScheme", "OriginalAddress", "IsTransactor", "Timeout", "LifeCycle", "Supervisor", "HotswapStack", }, + new java.lang.String[] { "Uuid", "Id", "ActorClassname", "ActorInstance", "SerializerClassname", "OriginalAddress", "IsTransactor", "Timeout", "LifeCycle", "Supervisor", "HotswapStack", }, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.Builder.class); internal_static_RemoteRequestProtocol_descriptor = - getDescriptor().getMessageTypes().get(4); + getDescriptor().getMessageTypes().get(5); internal_static_RemoteRequestProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_RemoteRequestProtocol_descriptor, @@ -3556,7 +3961,7 @@ public final class RemoteProtocol { se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol.Builder.class); internal_static_RemoteReplyProtocol_descriptor = - getDescriptor().getMessageTypes().get(5); + getDescriptor().getMessageTypes().get(6); internal_static_RemoteReplyProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_RemoteReplyProtocol_descriptor, diff --git a/akka-core/src/main/protocol/RemoteProtocol.proto b/akka-core/src/main/protocol/RemoteProtocol.proto index a49f5f5051..eb3b9826cb 100644 --- a/akka-core/src/main/protocol/RemoteProtocol.proto +++ b/akka-core/src/main/protocol/RemoteProtocol.proto @@ -14,7 +14,7 @@ option optimize_for = SPEED; /** * Defines the serialization scheme used to serialize the message and/or Actor instance. */ -enum SerializationSchemeProtocol { +enum SerializationSchemeType { JAVA = 1; SBINARY = 2; SCALA_JSON = 3; @@ -23,15 +23,15 @@ enum SerializationSchemeProtocol { } /** - * Defines a the life-cycle of a supervised Actor. + * Defines the type of the life-cycle of a supervised Actor. */ -enum LifeCycleProtocol { +enum LifeCycleType { PERMANENT = 1; TEMPORARY = 2; } /* -enum DispatcherProtocol { +enum DispatcherType { GLOBAL_EVENT_EXECUTOR_BASED = 1; GLOBAL_REACTOR_SINGLE_THREAD_BASED = 2; GLOBAL_REACTOR_THREAD_POOL_BASED = 3; @@ -40,11 +40,20 @@ enum DispatcherProtocol { } */ +/** + * Defines the life-cycle of a supervised Actor. + */ +message LifeCycleProtocol { + required LifeCycleType lifeCycle = 1; + optional string preRestart = 2; + optional string postRestart = 3; +} + /** * Defines a remote address. */ message AddressProtocol { - required string hostname = 1; + required string hostname = 1; required uint32 port = 2; } @@ -61,7 +70,7 @@ message ExceptionProtocol { */ message RemoteActorRefProtocol { required string uuid = 1; - required string actorClassName = 2; + required string actorClassname = 2; required AddressProtocol homeAddress = 3; optional uint64 timeout = 4; } @@ -73,9 +82,9 @@ message RemoteActorRefProtocol { message SerializedActorRefProtocol { required string uuid = 1; required string id = 2; - required string actorClassName = 3; + required string actorClassname = 3; required bytes actorInstance = 4; - required SerializationSchemeProtocol serializationScheme = 5; + required string serializerClassname = 5; required AddressProtocol originalAddress = 6; optional bool isTransactor = 7; optional uint64 timeout = 8; @@ -89,7 +98,7 @@ message SerializedActorRefProtocol { */ message RemoteRequestProtocol { required uint64 id = 1; - required SerializationSchemeProtocol serializationScheme = 2; + required SerializationSchemeType serializationScheme = 2; required bytes message = 3; optional bytes messageManifest = 4; optional string method = 5; @@ -108,7 +117,7 @@ message RemoteRequestProtocol { */ message RemoteReplyProtocol { required uint64 id = 1; - optional SerializationSchemeProtocol serializationScheme = 2; + optional SerializationSchemeType serializationScheme = 2; optional bytes message = 3; optional bytes messageManifest = 4; optional ExceptionProtocol exception = 5; diff --git a/akka-core/src/main/scala/actor/Actor.scala b/akka-core/src/main/scala/actor/Actor.scala index 44512b649f..d3e6192365 100644 --- a/akka-core/src/main/scala/actor/Actor.scala +++ b/akka-core/src/main/scala/actor/Actor.scala @@ -64,7 +64,7 @@ trait ProtobufSerializableActor[T] extends SerializableActor[T] { this: Message * @author Jonas Bonér */ trait JavaSerializableActor[T] extends SerializableActor[T] { - val serializer = Serializer.Java + @transient val serializer = Serializer.Java def toBinary: Array[Byte] = serializer.toBinary(this) } @@ -342,7 +342,7 @@ trait Actor extends Logging { * Mainly for internal use, functions as the implicit sender references when invoking * one of the message send functions ('!', '!!' and '!!!'). */ - implicit val optionSelf: Option[ActorRef] = { + @transient implicit val optionSelf: Option[ActorRef] = { val ref = Actor.actorRefInCreation.value Actor.actorRefInCreation.value = None if (ref.isEmpty) throw new ActorInitializationException( @@ -351,7 +351,7 @@ trait Actor extends Logging { "\n\tYou have to use one of the factory methods in the 'Actor' object to create a new actor." + "\n\tEither use:" + "\n\t\t'val actor = Actor.actorOf[MyActor]', or" + - "\n\t\t'val actor = Actor.actorOf(new MyActor(..))'" + + "\n\t\t'val actor = Actor.actorOf(new MyActor(..))', or" + "\n\t\t'val actor = Actor.actor { case msg => .. } }'") else ref } @@ -362,7 +362,7 @@ trait Actor extends Logging { * Mainly for internal use, functions as the implicit sender references when invoking * the 'forward' function. */ - implicit val someSelf: Some[ActorRef] = optionSelf.asInstanceOf[Some[ActorRef]] + @transient implicit val someSelf: Some[ActorRef] = optionSelf.asInstanceOf[Some[ActorRef]] /** * The 'self' field holds the ActorRef for this actor. @@ -391,7 +391,7 @@ trait Actor extends Logging { * self.stop(..) * */ - val self: ActorRef = { + @transient val self: ActorRef = { val zelf = optionSelf.get zelf.id = getClass.getName zelf diff --git a/akka-core/src/main/scala/actor/ActorRef.scala b/akka-core/src/main/scala/actor/ActorRef.scala index 5af4f313f5..9763b37109 100644 --- a/akka-core/src/main/scala/actor/ActorRef.scala +++ b/akka-core/src/main/scala/actor/ActorRef.scala @@ -28,6 +28,8 @@ import java.util.concurrent.ConcurrentHashMap import java.util.{Map => JMap} import java.lang.reflect.Field +import com.google.protobuf.ByteString + /** * The ActorRef object can be used to deserialize ActorRef instances from of its binary representation * or its Protocol Buffers (protobuf) Message representation to a Actor.actorOf instance. @@ -62,7 +64,7 @@ object ActorRef { private[akka] def fromProtobuf(protocol: RemoteActorRefProtocol, loader: Option[ClassLoader]): ActorRef = RemoteActorRef( protocol.getUuid, - protocol.getActorClassName, + protocol.getActorClassname, protocol.getHomeAddress.getHostname, protocol.getHomeAddress.getPort, protocol.getTimeout, @@ -211,6 +213,11 @@ trait ActorRef extends TransactionManagement { protected[akka] def sender_=(s: Option[ActorRef]) = guard.withGuard { _sender = s } protected[akka] def senderFuture_=(sf: Option[CompletableFuture[Any]]) = guard.withGuard { _senderFuture = sf } + /** + * Returns the uuid for the actor. + */ + def uuid = _uuid + /** * The reference sender Actor of the last received message. * Is defined if the message was sent from another Actor, else None. @@ -239,15 +246,24 @@ trait ActorRef extends TransactionManagement { def isShutdown: Boolean = _isShutDown /** - * Returns the uuid for the actor. - */ - def uuid = _uuid - - /** - * Tests if the actor is able to handle the message passed in as arguments. + * Is the actor able to handle the message passed in as arguments? */ def isDefinedAt(message: Any): Boolean = actor.base.isDefinedAt(message) + /** + * Is the actor is serializable? + */ + def isSerializable: Boolean = actor.isInstanceOf[SerializableActor[_]] + + /** + * Returns the 'Serializer' instance for the Actor as an Option. + *

+ * It returns 'Some(serializer)' if the Actor is serializable and 'None' if not. + */ + def serializer: Option[Serializer] = + if (isSerializable) Some(actor.asInstanceOf[SerializableActor[_]].serializer) + else None + /** * Only for internal use. UUID is effectively final. */ @@ -517,7 +533,9 @@ trait ActorRef extends TransactionManagement { */ def shutdownLinkedActors: Unit - protected[akka] def toProtobuf: RemoteActorRefProtocol + protected[akka] def toRemoteActorRefProtocol: RemoteActorRefProtocol + + protected[akka] def toSerializedActorRefProtocol: SerializedActorRefProtocol protected[akka] def invoke(messageHandle: MessageInvocation): Unit @@ -562,7 +580,7 @@ trait ActorRef extends TransactionManagement { protected def processSender(senderOption: Option[ActorRef], requestBuilder: RemoteRequestProtocol.Builder) = { senderOption.foreach { sender => RemoteServer.getOrCreateServer(sender.homeAddress).register(sender.uuid, sender) - requestBuilder.setSender(sender.toProtobuf) + requestBuilder.setSender(sender.toRemoteActorRefProtocol) } } } @@ -599,7 +617,7 @@ sealed class LocalActorRef private[akka]( /** * Serializes the ActorRef instance into a Protocol Buffers (protobuf) Message. */ - protected[akka] def toProtobuf: RemoteActorRefProtocol = guard.withGuard { + protected[akka] def toRemoteActorRefProtocol: RemoteActorRefProtocol = guard.withGuard { val host = homeAddress.getHostName val port = homeAddress.getPort @@ -609,14 +627,60 @@ sealed class LocalActorRef private[akka]( RemoteServer.registerActor(homeAddress, uuid, this) registeredInRemoteNodeDuringSerialization = true } + RemoteActorRefProtocol.newBuilder .setUuid(uuid) - .setActorClassName(actorClass.getName) + .setActorClassname(actorClass.getName) .setHomeAddress(AddressProtocol.newBuilder.setHostname(host).setPort(port).build) .setTimeout(timeout) .build } + protected[akka] def toSerializedActorRefProtocol: SerializedActorRefProtocol = guard.withGuard { + if (!isSerializable) throw new IllegalStateException("Can't serialize an ActorRef using SerializedActorRefProtocol that is wrapping an Actor that is not mixing in the SerializableActor trait") + + val lifeCycleProtocol: Option[LifeCycleProtocol] = { + def setScope(builder: LifeCycleProtocol.Builder, scope: Scope) = scope match { + case Permanent => builder.setLifeCycle(LifeCycleType.PERMANENT) + case Temporary => builder.setLifeCycle(LifeCycleType.TEMPORARY) + } + val builder = LifeCycleProtocol.newBuilder + lifeCycle match { + case Some(LifeCycle(scope, None)) => + setScope(builder, scope) + Some(builder.build) + case Some(LifeCycle(scope, Some(callbacks))) => + setScope(builder, scope) + builder.setPreRestart(callbacks.preRestart) + builder.setPostRestart(callbacks.postRestart) + Some(builder.build) + case None => + None + } + } + + val serializerClassname = serializer + .getOrElse(throw new IllegalStateException("Can't serialize Actor [" + toString + "] - no 'Serializer' defined")) + .getClass.getName + val originalAddress = AddressProtocol.newBuilder.setHostname(homeAddress.getHostName).setPort(homeAddress.getPort).build + + val builder = SerializedActorRefProtocol.newBuilder + .setUuid(uuid) + .setId(id) + .setActorClassname(actorClass.getName) + .setActorInstance(ByteString.copyFrom(actor.asInstanceOf[SerializableActor[_]].toBinary)) + .setSerializerClassname(serializerClassname) + .setOriginalAddress(originalAddress) + .setIsTransactor(isTransactor) + .setTimeout(timeout) + + lifeCycleProtocol.foreach(builder.setLifeCycle(_)) + supervisor.foreach(sup => builder.setSupervisor(sup.toRemoteActorRefProtocol)) + // FIXME: how to serialize the hotswap PartialFunction ?? + // hotswap.foreach(builder.setHotswapStack(_)) + builder.build + } + /** * Returns the mailbox. */ @@ -625,8 +689,11 @@ sealed class LocalActorRef private[akka]( /** * Serializes the ActorRef instance into a byte array (Array[Byte]). */ - def toBinary: Array[Byte] = toProtobuf.toByteArray - + def toBinary: Array[Byte] = { + if (isSerializable) toSerializedActorRefProtocol.toByteArray + else toRemoteActorRefProtocol.toByteArray + } + /** * Returns the class for the Actor instance that is managed by the ActorRef. */ @@ -938,7 +1005,7 @@ sealed class LocalActorRef private[akka]( .setIsOneWay(false) .setIsEscaped(false) - //senderOption.foreach(sender => requestBuilder.setSender(sender.toProtobuf)) + //senderOption.foreach(sender => requestBuilder.setSender(sender.toRemoteActorRefProtocol)) RemoteProtocolBuilder.setMessage(message, requestBuilder) val id = registerSupervisorAsRemoteActor @@ -1277,7 +1344,8 @@ private[akka] case class RemoteActorRef private[akka] ( def mailboxSize: Int = unsupported def supervisor: Option[ActorRef] = unsupported def shutdownLinkedActors: Unit = unsupported - protected[akka] def toProtobuf: RemoteActorRefProtocol = unsupported + protected[akka] def toRemoteActorRefProtocol: RemoteActorRefProtocol = unsupported + protected[akka] def toSerializedActorRefProtocol: SerializedActorRefProtocol = unsupported protected[akka] def mailbox: Deque[MessageInvocation] = unsupported protected[akka] def restart(reason: Throwable): Unit = unsupported protected[akka] def handleTrapExit(dead: ActorRef, reason: Throwable): Unit = unsupported diff --git a/akka-core/src/main/scala/remote/RemoteProtocolBuilder.scala b/akka-core/src/main/scala/remote/RemoteProtocolBuilder.scala index 7d10ae83d2..3cbd2a4741 100644 --- a/akka-core/src/main/scala/remote/RemoteProtocolBuilder.scala +++ b/akka-core/src/main/scala/remote/RemoteProtocolBuilder.scala @@ -25,21 +25,21 @@ object RemoteProtocolBuilder { def getMessage(request: RemoteRequestProtocol): Any = { request.getSerializationScheme match { - case SerializationSchemeProtocol.JAVA => + case SerializationSchemeType.JAVA => unbox(SERIALIZER_JAVA.fromBinary(request.getMessage.toByteArray, None)) - case SerializationSchemeProtocol.SBINARY => + case SerializationSchemeType.SBINARY => val classToLoad = new String(request.getMessageManifest.toByteArray) val clazz = if (SERIALIZER_SBINARY.classLoader.isDefined) SERIALIZER_SBINARY.classLoader.get.loadClass(classToLoad) else Class.forName(classToLoad) val renderer = clazz.newInstance.asInstanceOf[Serializable.SBinary[_ <: AnyRef]] renderer.fromBytes(request.getMessage.toByteArray) - case SerializationSchemeProtocol.SCALA_JSON => + case SerializationSchemeType.SCALA_JSON => val manifest = SERIALIZER_JAVA.fromBinary(request.getMessageManifest.toByteArray, None).asInstanceOf[String] SERIALIZER_SCALA_JSON.fromBinary(request.getMessage.toByteArray, Some(Class.forName(manifest))) - case SerializationSchemeProtocol.JAVA_JSON => + case SerializationSchemeType.JAVA_JSON => val manifest = SERIALIZER_JAVA.fromBinary(request.getMessageManifest.toByteArray, None).asInstanceOf[String] SERIALIZER_JAVA_JSON.fromBinary(request.getMessage.toByteArray, Some(Class.forName(manifest))) - case SerializationSchemeProtocol.PROTOBUF => + case SerializationSchemeType.PROTOBUF => val messageClass = SERIALIZER_JAVA.fromBinary(request.getMessageManifest.toByteArray, None).asInstanceOf[Class[_]] SERIALIZER_PROTOBUF.fromBinary(request.getMessage.toByteArray, Some(messageClass)) } @@ -47,21 +47,21 @@ object RemoteProtocolBuilder { def getMessage(reply: RemoteReplyProtocol): Any = { reply.getSerializationScheme match { - case SerializationSchemeProtocol.JAVA => + case SerializationSchemeType.JAVA => unbox(SERIALIZER_JAVA.fromBinary(reply.getMessage.toByteArray, None)) - case SerializationSchemeProtocol.SBINARY => + case SerializationSchemeType.SBINARY => val classToLoad = new String(reply.getMessageManifest.toByteArray) val clazz = if (SERIALIZER_SBINARY.classLoader.isDefined) SERIALIZER_SBINARY.classLoader.get.loadClass(classToLoad) else Class.forName(classToLoad) val renderer = clazz.newInstance.asInstanceOf[Serializable.SBinary[_ <: AnyRef]] renderer.fromBytes(reply.getMessage.toByteArray) - case SerializationSchemeProtocol.SCALA_JSON => + case SerializationSchemeType.SCALA_JSON => val manifest = SERIALIZER_JAVA.fromBinary(reply.getMessageManifest.toByteArray, None).asInstanceOf[String] SERIALIZER_SCALA_JSON.fromBinary(reply.getMessage.toByteArray, Some(Class.forName(manifest))) - case SerializationSchemeProtocol.JAVA_JSON => + case SerializationSchemeType.JAVA_JSON => val manifest = SERIALIZER_JAVA.fromBinary(reply.getMessageManifest.toByteArray, None).asInstanceOf[String] SERIALIZER_JAVA_JSON.fromBinary(reply.getMessage.toByteArray, Some(Class.forName(manifest))) - case SerializationSchemeProtocol.PROTOBUF => + case SerializationSchemeType.PROTOBUF => val messageClass = SERIALIZER_JAVA.fromBinary(reply.getMessageManifest.toByteArray, None).asInstanceOf[Class[_]] SERIALIZER_PROTOBUF.fromBinary(reply.getMessage.toByteArray, Some(messageClass)) } @@ -70,27 +70,27 @@ object RemoteProtocolBuilder { def setMessage(message: Any, builder: RemoteRequestProtocol.Builder) = { if (message.isInstanceOf[Serializable.SBinary[_]]) { val serializable = message.asInstanceOf[Serializable.SBinary[_ <: Any]] - builder.setSerializationScheme(SerializationSchemeProtocol.SBINARY) + builder.setSerializationScheme(SerializationSchemeType.SBINARY) builder.setMessage(ByteString.copyFrom(serializable.toBytes)) builder.setMessageManifest(ByteString.copyFrom(serializable.getClass.getName.getBytes)) } else if (message.isInstanceOf[Message]) { val serializable = message.asInstanceOf[Message] - builder.setSerializationScheme(SerializationSchemeProtocol.PROTOBUF) + builder.setSerializationScheme(SerializationSchemeType.PROTOBUF) builder.setMessage(ByteString.copyFrom(serializable.toByteArray)) builder.setMessageManifest(ByteString.copyFrom(SERIALIZER_JAVA.toBinary(serializable.getClass))) } else if (message.isInstanceOf[Serializable.ScalaJSON]) { val serializable = message.asInstanceOf[Serializable.ScalaJSON] - builder.setSerializationScheme(SerializationSchemeProtocol.SCALA_JSON) + builder.setSerializationScheme(SerializationSchemeType.SCALA_JSON) builder.setMessage(ByteString.copyFrom(serializable.toBytes)) builder.setMessageManifest(ByteString.copyFrom(serializable.getClass.getName.getBytes)) } else if (message.isInstanceOf[Serializable.JavaJSON]) { val serializable = message.asInstanceOf[Serializable.JavaJSON] - builder.setSerializationScheme(SerializationSchemeProtocol.JAVA_JSON) + builder.setSerializationScheme(SerializationSchemeType.JAVA_JSON) builder.setMessage(ByteString.copyFrom(serializable.toBytes)) builder.setMessageManifest(ByteString.copyFrom(serializable.getClass.getName.getBytes)) } else { // default, e.g. if no protocol used explicitly then use Java serialization - builder.setSerializationScheme(SerializationSchemeProtocol.JAVA) + builder.setSerializationScheme(SerializationSchemeType.JAVA) builder.setMessage(ByteString.copyFrom(SERIALIZER_JAVA.toBinary(box(message)))) } } @@ -98,27 +98,27 @@ object RemoteProtocolBuilder { def setMessage(message: Any, builder: RemoteReplyProtocol.Builder) = { if (message.isInstanceOf[Serializable.SBinary[_]]) { val serializable = message.asInstanceOf[Serializable.SBinary[_ <: Any]] - builder.setSerializationScheme(SerializationSchemeProtocol.SBINARY) + builder.setSerializationScheme(SerializationSchemeType.SBINARY) builder.setMessage(ByteString.copyFrom(serializable.toBytes)) builder.setMessageManifest(ByteString.copyFrom(serializable.getClass.getName.getBytes)) } else if (message.isInstanceOf[Message]) { val serializable = message.asInstanceOf[Message] - builder.setSerializationScheme(SerializationSchemeProtocol.PROTOBUF) + builder.setSerializationScheme(SerializationSchemeType.PROTOBUF) builder.setMessage(ByteString.copyFrom(serializable.toByteArray)) builder.setMessageManifest(ByteString.copyFrom(SERIALIZER_JAVA.toBinary(serializable.getClass))) } else if (message.isInstanceOf[Serializable.ScalaJSON]) { val serializable = message.asInstanceOf[Serializable.ScalaJSON] - builder.setSerializationScheme(SerializationSchemeProtocol.SCALA_JSON) + builder.setSerializationScheme(SerializationSchemeType.SCALA_JSON) builder.setMessage(ByteString.copyFrom(serializable.toBytes)) builder.setMessageManifest(ByteString.copyFrom(serializable.getClass.getName.getBytes)) } else if (message.isInstanceOf[Serializable.JavaJSON]) { val serializable = message.asInstanceOf[Serializable.JavaJSON] - builder.setSerializationScheme(SerializationSchemeProtocol.JAVA_JSON) + builder.setSerializationScheme(SerializationSchemeType.JAVA_JSON) builder.setMessage(ByteString.copyFrom(serializable.toBytes)) builder.setMessageManifest(ByteString.copyFrom(serializable.getClass.getName.getBytes)) } else { // default, e.g. if no protocol used explicitly then use Java serialization - builder.setSerializationScheme(SerializationSchemeProtocol.JAVA) + builder.setSerializationScheme(SerializationSchemeType.JAVA) builder.setMessage(ByteString.copyFrom(SERIALIZER_JAVA.toBinary(box(message)))) } } diff --git a/akka-core/src/main/scala/serialization/Serializer.scala b/akka-core/src/main/scala/serialization/Serializer.scala index eca288bd3f..79be0bec8b 100644 --- a/akka-core/src/main/scala/serialization/Serializer.scala +++ b/akka-core/src/main/scala/serialization/Serializer.scala @@ -123,7 +123,7 @@ object Serializer { obj } - def fromBinary(json: String, clazz: Class[_]): AnyRef = { + def fromJSON(json: String, clazz: Class[_]): AnyRef = { if (clazz eq null) throw new IllegalArgumentException("Can't deserialize JSON to instance if no class is provided") mapper.readValue(json, clazz).asInstanceOf[AnyRef] } @@ -140,7 +140,7 @@ object Serializer { def fromBinary(bytes: Array[Byte], clazz: Option[Class[_]]): AnyRef = SJSONSerializer.SJSON.in(bytes) import scala.reflect.Manifest - def fromBinary[T](json: String)(implicit m: Manifest[T]): AnyRef = { + def fromJSON[T](json: String)(implicit m: Manifest[T]): AnyRef = { SJSONSerializer.SJSON.in(json)(m) } diff --git a/akka-core/src/test/scala/SerializerSpec.scala b/akka-core/src/test/scala/SerializerSpec.scala index 0efc05192c..95b291ed9d 100644 --- a/akka-core/src/test/scala/SerializerSpec.scala +++ b/akka-core/src/test/scala/SerializerSpec.scala @@ -22,20 +22,20 @@ class SerializerSpec extends JUnitSuite { @Test def shouldSerializeString = { val f = Foo("debasish") - val json = Serializer.ScalaJSON.out(f) + val json = Serializer.ScalaJSON.toBinary(f) assert(new String(json) == """{"foo":"debasish"}""") - val fo = Serializer.ScalaJSON.in[Foo](new String(json)).asInstanceOf[Foo] + val fo = Serializer.ScalaJSON.fromJSON[Foo](new String(json)).asInstanceOf[Foo] assert(fo == f) } @Test def shouldSerializeTuple2 = { val message = MyMessage("id", ("hello", 34)) - val json = Serializer.ScalaJSON.out(message) + val json = Serializer.ScalaJSON.toBinary(message) assert(new String(json) == """{"id":"id","value":{"hello":34}}""") - val f = Serializer.ScalaJSON.in[MyMessage](new String(json)).asInstanceOf[MyMessage] + val f = Serializer.ScalaJSON.fromJSON[MyMessage](new String(json)).asInstanceOf[MyMessage] assert(f == message) - val g = Serializer.ScalaJSON.in[MyMessage](json).asInstanceOf[MyMessage] + val g = Serializer.ScalaJSON.fromBinary[MyMessage](json).asInstanceOf[MyMessage] assert(f == message) } }