diff --git a/core/src/main/java/io/grpc/InternalKnownTransport.java b/core/src/main/java/io/grpc/InternalKnownTransport.java
index e765559de6..d49a09bfdb 100644
--- a/core/src/main/java/io/grpc/InternalKnownTransport.java
+++ b/core/src/main/java/io/grpc/InternalKnownTransport.java
@@ -33,6 +33,8 @@ package io.grpc;
/**
* All known transports.
+ *
+ *
Make sure to update MethodDescriptor.rawMethodNames if this is changed.
*/
@Internal
public enum InternalKnownTransport {
diff --git a/core/src/main/java/io/grpc/InternalMetadata.java b/core/src/main/java/io/grpc/InternalMetadata.java
index 286bcdcb23..cf27b2bb2a 100644
--- a/core/src/main/java/io/grpc/InternalMetadata.java
+++ b/core/src/main/java/io/grpc/InternalMetadata.java
@@ -46,27 +46,11 @@ public final class InternalMetadata {
/**
* A specialized plain ASCII marshaller. Both input and output are assumed to be valid header
* ASCII.
+ *
+ *
Extended here to break the dependency.
*/
@Internal
- public interface TrustedAsciiMarshaller {
- /**
- * Serialize a metadata value to a ASCII string that contains only the characters listed in the
- * class comment of {@link io.grpc.Metadata.AsciiMarshaller}. Otherwise the output may be
- * considered invalid and discarded by the transport, or the call may fail.
- *
- * @param value to serialize
- * @return serialized version of value, or null if value cannot be transmitted.
- */
- byte[] toAsciiString(T value);
-
- /**
- * Parse a serialized metadata value from an ASCII string.
- *
- * @param serialized value of metadata to parse
- * @return a parsed instance of type T
- */
- T parseAsciiString(byte[] serialized);
- }
+ public interface TrustedAsciiMarshaller extends Metadata.TrustedAsciiMarshaller {}
/**
* Copy of StandardCharsets, which is only available on Java 1.7 and above.
@@ -79,7 +63,6 @@ public final class InternalMetadata {
return Metadata.Key.of(name, marshaller);
}
-
@Internal
public static Metadata newMetadata(byte[]... binaryValues) {
return new Metadata(binaryValues);
diff --git a/core/src/main/java/io/grpc/InternalMethodDescriptor.java b/core/src/main/java/io/grpc/InternalMethodDescriptor.java
index 3246742ddf..0622c6f44d 100644
--- a/core/src/main/java/io/grpc/InternalMethodDescriptor.java
+++ b/core/src/main/java/io/grpc/InternalMethodDescriptor.java
@@ -46,10 +46,10 @@ public final class InternalMethodDescriptor {
}
public Object geRawMethodName(MethodDescriptor, ?> md) {
- return md.getRawMethodName(transport);
+ return md.getRawMethodName(transport.ordinal());
}
public void setRawMethodName(MethodDescriptor, ?> md, Object o) {
- md.setRawMethodName(transport, o);
+ md.setRawMethodName(transport.ordinal(), o);
}
}
diff --git a/core/src/main/java/io/grpc/Metadata.java b/core/src/main/java/io/grpc/Metadata.java
index f5a98de291..3446ef822d 100644
--- a/core/src/main/java/io/grpc/Metadata.java
+++ b/core/src/main/java/io/grpc/Metadata.java
@@ -39,8 +39,6 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.io.BaseEncoding;
-import io.grpc.InternalMetadata.TrustedAsciiMarshaller;
-
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.BitSet;
@@ -785,4 +783,28 @@ public final class Metadata {
return marshaller.parseAsciiString(serialized);
}
}
+
+ /**
+ * A specialized plain ASCII marshaller. Both input and output are assumed to be valid header
+ * ASCII.
+ */
+ interface TrustedAsciiMarshaller {
+ /**
+ * Serialize a metadata value to a ASCII string that contains only the characters listed in the
+ * class comment of {@link io.grpc.Metadata.AsciiMarshaller}. Otherwise the output may be
+ * considered invalid and discarded by the transport, or the call may fail.
+ *
+ * @param value to serialize
+ * @return serialized version of value, or null if value cannot be transmitted.
+ */
+ byte[] toAsciiString(T value);
+
+ /**
+ * Parse a serialized metadata value from an ASCII string.
+ *
+ * @param serialized value of metadata to parse
+ * @return a parsed instance of type T
+ */
+ T parseAsciiString(byte[] serialized);
+ }
}
diff --git a/core/src/main/java/io/grpc/MethodDescriptor.java b/core/src/main/java/io/grpc/MethodDescriptor.java
index dc274c97a1..285a133605 100644
--- a/core/src/main/java/io/grpc/MethodDescriptor.java
+++ b/core/src/main/java/io/grpc/MethodDescriptor.java
@@ -57,15 +57,16 @@ public class MethodDescriptor {
private final boolean idempotent;
private final boolean safe;
- private final AtomicReferenceArray