Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Unified Diff: third_party/protobuf/ruby/src/main/java/com/google/protobuf/jruby/Utils.java

Issue 2590803003: Revert "third_party/protobuf: Update to HEAD (83d681ee2c)" (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/protobuf/ruby/src/main/java/com/google/protobuf/jruby/Utils.java
diff --git a/third_party/protobuf/ruby/src/main/java/com/google/protobuf/jruby/Utils.java b/third_party/protobuf/ruby/src/main/java/com/google/protobuf/jruby/Utils.java
index f199feb962ec8761ec7f6fc42e56e1fe8ec580cd..596a0979920215b03ea7bcc6fd48d4b974b0f770 100644
--- a/third_party/protobuf/ruby/src/main/java/com/google/protobuf/jruby/Utils.java
+++ b/third_party/protobuf/ruby/src/main/java/com/google/protobuf/jruby/Utils.java
@@ -64,8 +64,8 @@ public class Utils {
return context.runtime.newSymbol(typeName.replace("TYPE_", "").toLowerCase());
}
- public static IRubyObject checkType(ThreadContext context, Descriptors.FieldDescriptor.Type fieldType,
- IRubyObject value, RubyModule typeClass) {
+ public static void checkType(ThreadContext context, Descriptors.FieldDescriptor.Type fieldType,
+ IRubyObject value, RubyModule typeClass) {
Ruby runtime = context.runtime;
Object val;
switch(fieldType) {
@@ -106,7 +106,7 @@ public class Utils {
break;
case BYTES:
case STRING:
- value = validateStringEncoding(context, fieldType, value);
+ validateStringEncoding(context.runtime, fieldType, value);
break;
case MESSAGE:
if (value.getMetaClass() != typeClass) {
@@ -127,7 +127,6 @@ public class Utils {
default:
break;
}
- return value;
}
public static IRubyObject wrapPrimaryValue(ThreadContext context, Descriptors.FieldDescriptor.Type fieldType, Object value) {
@@ -149,16 +148,10 @@ public class Utils {
return runtime.newFloat((Double) value);
case BOOL:
return (Boolean) value ? runtime.getTrue() : runtime.getFalse();
- case BYTES: {
- IRubyObject wrapped = runtime.newString(((ByteString) value).toStringUtf8());
- wrapped.setFrozen(true);
- return wrapped;
- }
- case STRING: {
- IRubyObject wrapped = runtime.newString(value.toString());
- wrapped.setFrozen(true);
- return wrapped;
- }
+ case BYTES:
+ return runtime.newString(((ByteString) value).toStringUtf8());
+ case STRING:
+ return runtime.newString(value.toString());
default:
return runtime.getNil();
}
@@ -187,21 +180,25 @@ public class Utils {
}
}
- public static IRubyObject validateStringEncoding(ThreadContext context, Descriptors.FieldDescriptor.Type type, IRubyObject value) {
+ public static void validateStringEncoding(Ruby runtime, Descriptors.FieldDescriptor.Type type, IRubyObject value) {
if (!(value instanceof RubyString))
- throw context.runtime.newTypeError("Invalid argument for string field.");
+ throw runtime.newTypeError("Invalid argument for string field.");
+ Encoding encoding = ((RubyString) value).getEncoding();
switch(type) {
case BYTES:
- value = ((RubyString)value).encode(context, context.runtime.evalScriptlet("Encoding::ASCII_8BIT"));
+ if (encoding != ASCIIEncoding.INSTANCE)
+ throw runtime.newTypeError("Encoding for bytes fields" +
+ " must be \"ASCII-8BIT\", but was " + encoding);
break;
case STRING:
- value = ((RubyString)value).encode(context, context.runtime.evalScriptlet("Encoding::UTF_8"));
+ if (encoding != UTF8Encoding.INSTANCE
+ && encoding != USASCIIEncoding.INSTANCE)
+ throw runtime.newTypeError("Encoding for string fields" +
+ " must be \"UTF-8\" or \"ASCII\", but was " + encoding);
break;
default:
break;
}
- value.setFrozen(true);
- return value;
}
public static void checkNameAvailability(ThreadContext context, String name) {

Powered by Google App Engine
This is Rietveld 408576698