diff --git a/build.gradle b/build.gradle
index e948b621c5..4927a4bb38 100644
--- a/build.gradle
+++ b/build.gradle
@@ -135,6 +135,7 @@ subprojects {
protobuf: "com.google.protobuf:protobuf-java:${protobufVersion}",
protobuf_nano: "com.google.protobuf.nano:protobuf-javanano:${protobufNanoVersion}",
protobuf_plugin: 'com.google.protobuf:protobuf-gradle-plugin:0.7.4',
+ protobuf_util: "com.google.protobuf:protobuf-java-util:${protobufVersion}",
netty: 'io.netty:netty-codec-http2:4.1.0.CR3',
netty_epoll: 'io.netty:netty-transport-native-epoll:4.1.0.CR3' + epoll_suffix,
diff --git a/examples/build.gradle b/examples/build.gradle
index 88a0208fe0..1031048f44 100644
--- a/examples/build.gradle
+++ b/examples/build.gradle
@@ -29,7 +29,7 @@ dependencies {
project(':grpc-netty'),
project(':grpc-protobuf'),
project(':grpc-stub'),
- 'org.glassfish:javax.json:1.0.4'
+ libraries.protobuf_util
}
configureProtoCompilation()
diff --git a/examples/src/generated/main/java/io/grpc/examples/routeguide/FeatureDatabase.java b/examples/src/generated/main/java/io/grpc/examples/routeguide/FeatureDatabase.java
new file mode 100644
index 0000000000..ae0a536eb3
--- /dev/null
+++ b/examples/src/generated/main/java/io/grpc/examples/routeguide/FeatureDatabase.java
@@ -0,0 +1,663 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: route_guide.proto
+
+package io.grpc.examples.routeguide;
+
+/**
+ * Protobuf type {@code routeguide.FeatureDatabase}
+ *
+ *
+ * Not used in the RPC. Instead, this is here for the form serialized to disk.
+ *
+ */
+public final class FeatureDatabase extends
+ com.google.protobuf.GeneratedMessage implements
+ // @@protoc_insertion_point(message_implements:routeguide.FeatureDatabase)
+ FeatureDatabaseOrBuilder {
+ // Use FeatureDatabase.newBuilder() to construct.
+ private FeatureDatabase(com.google.protobuf.GeneratedMessage.Builder> builder) {
+ super(builder);
+ }
+ private FeatureDatabase() {
+ feature_ = java.util.Collections.emptyList();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
+ }
+ private FeatureDatabase(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry) {
+ this();
+ int mutable_bitField0_ = 0;
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!input.skipField(tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 10: {
+ if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+ feature_ = new java.util.ArrayList();
+ mutable_bitField0_ |= 0x00000001;
+ }
+ feature_.add(input.readMessage(io.grpc.examples.routeguide.Feature.parser(), extensionRegistry));
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw new RuntimeException(e.setUnfinishedMessage(this));
+ } catch (java.io.IOException e) {
+ throw new RuntimeException(
+ new com.google.protobuf.InvalidProtocolBufferException(
+ e.getMessage()).setUnfinishedMessage(this));
+ } finally {
+ if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+ feature_ = java.util.Collections.unmodifiableList(feature_);
+ }
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_FeatureDatabase_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_FeatureDatabase_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.examples.routeguide.FeatureDatabase.class, io.grpc.examples.routeguide.FeatureDatabase.Builder.class);
+ }
+
+ public static final int FEATURE_FIELD_NUMBER = 1;
+ private java.util.List feature_;
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public java.util.List getFeatureList() {
+ return feature_;
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public java.util.List extends io.grpc.examples.routeguide.FeatureOrBuilder>
+ getFeatureOrBuilderList() {
+ return feature_;
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public int getFeatureCount() {
+ return feature_.size();
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public io.grpc.examples.routeguide.Feature getFeature(int index) {
+ return feature_.get(index);
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public io.grpc.examples.routeguide.FeatureOrBuilder getFeatureOrBuilder(
+ int index) {
+ return feature_.get(index);
+ }
+
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ for (int i = 0; i < feature_.size(); i++) {
+ output.writeMessage(1, feature_.get(i));
+ }
+ }
+
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ for (int i = 0; i < feature_.size(); i++) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(1, feature_.get(i));
+ }
+ memoizedSize = size;
+ return size;
+ }
+
+ private static final long serialVersionUID = 0L;
+ public static io.grpc.examples.routeguide.FeatureDatabase parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.examples.routeguide.FeatureDatabase parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.examples.routeguide.FeatureDatabase parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.examples.routeguide.FeatureDatabase parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.examples.routeguide.FeatureDatabase parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static io.grpc.examples.routeguide.FeatureDatabase parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input, extensionRegistry);
+ }
+ public static io.grpc.examples.routeguide.FeatureDatabase parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input);
+ }
+ public static io.grpc.examples.routeguide.FeatureDatabase parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input, extensionRegistry);
+ }
+ public static io.grpc.examples.routeguide.FeatureDatabase parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static io.grpc.examples.routeguide.FeatureDatabase parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input, extensionRegistry);
+ }
+
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(io.grpc.examples.routeguide.FeatureDatabase prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code routeguide.FeatureDatabase}
+ *
+ *
+ * Not used in the RPC. Instead, this is here for the form serialized to disk.
+ *
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessage.Builder implements
+ // @@protoc_insertion_point(builder_implements:routeguide.FeatureDatabase)
+ io.grpc.examples.routeguide.FeatureDatabaseOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_FeatureDatabase_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_FeatureDatabase_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.examples.routeguide.FeatureDatabase.class, io.grpc.examples.routeguide.FeatureDatabase.Builder.class);
+ }
+
+ // Construct using io.grpc.examples.routeguide.FeatureDatabase.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+ getFeatureFieldBuilder();
+ }
+ }
+ public Builder clear() {
+ super.clear();
+ if (featureBuilder_ == null) {
+ feature_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000001);
+ } else {
+ featureBuilder_.clear();
+ }
+ return this;
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_FeatureDatabase_descriptor;
+ }
+
+ public io.grpc.examples.routeguide.FeatureDatabase getDefaultInstanceForType() {
+ return io.grpc.examples.routeguide.FeatureDatabase.getDefaultInstance();
+ }
+
+ public io.grpc.examples.routeguide.FeatureDatabase build() {
+ io.grpc.examples.routeguide.FeatureDatabase result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public io.grpc.examples.routeguide.FeatureDatabase buildPartial() {
+ io.grpc.examples.routeguide.FeatureDatabase result = new io.grpc.examples.routeguide.FeatureDatabase(this);
+ int from_bitField0_ = bitField0_;
+ if (featureBuilder_ == null) {
+ if (((bitField0_ & 0x00000001) == 0x00000001)) {
+ feature_ = java.util.Collections.unmodifiableList(feature_);
+ bitField0_ = (bitField0_ & ~0x00000001);
+ }
+ result.feature_ = feature_;
+ } else {
+ result.feature_ = featureBuilder_.build();
+ }
+ onBuilt();
+ return result;
+ }
+
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof io.grpc.examples.routeguide.FeatureDatabase) {
+ return mergeFrom((io.grpc.examples.routeguide.FeatureDatabase)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(io.grpc.examples.routeguide.FeatureDatabase other) {
+ if (other == io.grpc.examples.routeguide.FeatureDatabase.getDefaultInstance()) return this;
+ if (featureBuilder_ == null) {
+ if (!other.feature_.isEmpty()) {
+ if (feature_.isEmpty()) {
+ feature_ = other.feature_;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ } else {
+ ensureFeatureIsMutable();
+ feature_.addAll(other.feature_);
+ }
+ onChanged();
+ }
+ } else {
+ if (!other.feature_.isEmpty()) {
+ if (featureBuilder_.isEmpty()) {
+ featureBuilder_.dispose();
+ featureBuilder_ = null;
+ feature_ = other.feature_;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ featureBuilder_ =
+ com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+ getFeatureFieldBuilder() : null;
+ } else {
+ featureBuilder_.addAllMessages(other.feature_);
+ }
+ }
+ }
+ onChanged();
+ 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 {
+ io.grpc.examples.routeguide.FeatureDatabase parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (io.grpc.examples.routeguide.FeatureDatabase) e.getUnfinishedMessage();
+ throw e;
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ private java.util.List feature_ =
+ java.util.Collections.emptyList();
+ private void ensureFeatureIsMutable() {
+ if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+ feature_ = new java.util.ArrayList(feature_);
+ bitField0_ |= 0x00000001;
+ }
+ }
+
+ private com.google.protobuf.RepeatedFieldBuilder<
+ io.grpc.examples.routeguide.Feature, io.grpc.examples.routeguide.Feature.Builder, io.grpc.examples.routeguide.FeatureOrBuilder> featureBuilder_;
+
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public java.util.List getFeatureList() {
+ if (featureBuilder_ == null) {
+ return java.util.Collections.unmodifiableList(feature_);
+ } else {
+ return featureBuilder_.getMessageList();
+ }
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public int getFeatureCount() {
+ if (featureBuilder_ == null) {
+ return feature_.size();
+ } else {
+ return featureBuilder_.getCount();
+ }
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public io.grpc.examples.routeguide.Feature getFeature(int index) {
+ if (featureBuilder_ == null) {
+ return feature_.get(index);
+ } else {
+ return featureBuilder_.getMessage(index);
+ }
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public Builder setFeature(
+ int index, io.grpc.examples.routeguide.Feature value) {
+ if (featureBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureFeatureIsMutable();
+ feature_.set(index, value);
+ onChanged();
+ } else {
+ featureBuilder_.setMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public Builder setFeature(
+ int index, io.grpc.examples.routeguide.Feature.Builder builderForValue) {
+ if (featureBuilder_ == null) {
+ ensureFeatureIsMutable();
+ feature_.set(index, builderForValue.build());
+ onChanged();
+ } else {
+ featureBuilder_.setMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public Builder addFeature(io.grpc.examples.routeguide.Feature value) {
+ if (featureBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureFeatureIsMutable();
+ feature_.add(value);
+ onChanged();
+ } else {
+ featureBuilder_.addMessage(value);
+ }
+ return this;
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public Builder addFeature(
+ int index, io.grpc.examples.routeguide.Feature value) {
+ if (featureBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureFeatureIsMutable();
+ feature_.add(index, value);
+ onChanged();
+ } else {
+ featureBuilder_.addMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public Builder addFeature(
+ io.grpc.examples.routeguide.Feature.Builder builderForValue) {
+ if (featureBuilder_ == null) {
+ ensureFeatureIsMutable();
+ feature_.add(builderForValue.build());
+ onChanged();
+ } else {
+ featureBuilder_.addMessage(builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public Builder addFeature(
+ int index, io.grpc.examples.routeguide.Feature.Builder builderForValue) {
+ if (featureBuilder_ == null) {
+ ensureFeatureIsMutable();
+ feature_.add(index, builderForValue.build());
+ onChanged();
+ } else {
+ featureBuilder_.addMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public Builder addAllFeature(
+ java.lang.Iterable extends io.grpc.examples.routeguide.Feature> values) {
+ if (featureBuilder_ == null) {
+ ensureFeatureIsMutable();
+ com.google.protobuf.AbstractMessageLite.Builder.addAll(
+ values, feature_);
+ onChanged();
+ } else {
+ featureBuilder_.addAllMessages(values);
+ }
+ return this;
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public Builder clearFeature() {
+ if (featureBuilder_ == null) {
+ feature_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000001);
+ onChanged();
+ } else {
+ featureBuilder_.clear();
+ }
+ return this;
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public Builder removeFeature(int index) {
+ if (featureBuilder_ == null) {
+ ensureFeatureIsMutable();
+ feature_.remove(index);
+ onChanged();
+ } else {
+ featureBuilder_.remove(index);
+ }
+ return this;
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public io.grpc.examples.routeguide.Feature.Builder getFeatureBuilder(
+ int index) {
+ return getFeatureFieldBuilder().getBuilder(index);
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public io.grpc.examples.routeguide.FeatureOrBuilder getFeatureOrBuilder(
+ int index) {
+ if (featureBuilder_ == null) {
+ return feature_.get(index); } else {
+ return featureBuilder_.getMessageOrBuilder(index);
+ }
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public java.util.List extends io.grpc.examples.routeguide.FeatureOrBuilder>
+ getFeatureOrBuilderList() {
+ if (featureBuilder_ != null) {
+ return featureBuilder_.getMessageOrBuilderList();
+ } else {
+ return java.util.Collections.unmodifiableList(feature_);
+ }
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public io.grpc.examples.routeguide.Feature.Builder addFeatureBuilder() {
+ return getFeatureFieldBuilder().addBuilder(
+ io.grpc.examples.routeguide.Feature.getDefaultInstance());
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public io.grpc.examples.routeguide.Feature.Builder addFeatureBuilder(
+ int index) {
+ return getFeatureFieldBuilder().addBuilder(
+ index, io.grpc.examples.routeguide.Feature.getDefaultInstance());
+ }
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ public java.util.List
+ getFeatureBuilderList() {
+ return getFeatureFieldBuilder().getBuilderList();
+ }
+ private com.google.protobuf.RepeatedFieldBuilder<
+ io.grpc.examples.routeguide.Feature, io.grpc.examples.routeguide.Feature.Builder, io.grpc.examples.routeguide.FeatureOrBuilder>
+ getFeatureFieldBuilder() {
+ if (featureBuilder_ == null) {
+ featureBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+ io.grpc.examples.routeguide.Feature, io.grpc.examples.routeguide.Feature.Builder, io.grpc.examples.routeguide.FeatureOrBuilder>(
+ feature_,
+ ((bitField0_ & 0x00000001) == 0x00000001),
+ getParentForChildren(),
+ isClean());
+ feature_ = null;
+ }
+ return featureBuilder_;
+ }
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return this;
+ }
+
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return this;
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:routeguide.FeatureDatabase)
+ }
+
+ // @@protoc_insertion_point(class_scope:routeguide.FeatureDatabase)
+ private static final io.grpc.examples.routeguide.FeatureDatabase DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new io.grpc.examples.routeguide.FeatureDatabase();
+ }
+
+ public static io.grpc.examples.routeguide.FeatureDatabase getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser
+ PARSER = new com.google.protobuf.AbstractParser() {
+ public FeatureDatabase parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ try {
+ return new FeatureDatabase(input, extensionRegistry);
+ } catch (RuntimeException e) {
+ if (e.getCause() instanceof
+ com.google.protobuf.InvalidProtocolBufferException) {
+ throw (com.google.protobuf.InvalidProtocolBufferException)
+ e.getCause();
+ }
+ throw e;
+ }
+ }
+ };
+
+ public static com.google.protobuf.Parser parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser getParserForType() {
+ return PARSER;
+ }
+
+ public io.grpc.examples.routeguide.FeatureDatabase getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+}
+
diff --git a/examples/src/generated/main/java/io/grpc/examples/routeguide/FeatureDatabaseOrBuilder.java b/examples/src/generated/main/java/io/grpc/examples/routeguide/FeatureDatabaseOrBuilder.java
new file mode 100644
index 0000000000..717c23f1be
--- /dev/null
+++ b/examples/src/generated/main/java/io/grpc/examples/routeguide/FeatureDatabaseOrBuilder.java
@@ -0,0 +1,33 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: route_guide.proto
+
+package io.grpc.examples.routeguide;
+
+public interface FeatureDatabaseOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:routeguide.FeatureDatabase)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ java.util.List
+ getFeatureList();
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ io.grpc.examples.routeguide.Feature getFeature(int index);
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ int getFeatureCount();
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ java.util.List extends io.grpc.examples.routeguide.FeatureOrBuilder>
+ getFeatureOrBuilderList();
+ /**
+ * repeated .routeguide.Feature feature = 1;
+ */
+ io.grpc.examples.routeguide.FeatureOrBuilder getFeatureOrBuilder(
+ int index);
+}
diff --git a/examples/src/generated/main/java/io/grpc/examples/routeguide/RouteGuideProto.java b/examples/src/generated/main/java/io/grpc/examples/routeguide/RouteGuideProto.java
index 93c4d3effc..e751617adb 100644
--- a/examples/src/generated/main/java/io/grpc/examples/routeguide/RouteGuideProto.java
+++ b/examples/src/generated/main/java/io/grpc/examples/routeguide/RouteGuideProto.java
@@ -23,6 +23,11 @@ public final class RouteGuideProto {
static
com.google.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_routeguide_Feature_fieldAccessorTable;
+ static com.google.protobuf.Descriptors.Descriptor
+ internal_static_routeguide_FeatureDatabase_descriptor;
+ static
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internal_static_routeguide_FeatureDatabase_fieldAccessorTable;
static com.google.protobuf.Descriptors.Descriptor
internal_static_routeguide_RouteNote_descriptor;
static
@@ -47,19 +52,21 @@ public final class RouteGuideProto {
"\tRectangle\022\035\n\002lo\030\001 \001(\0132\021.routeguide.Poin" +
"t\022\035\n\002hi\030\002 \001(\0132\021.routeguide.Point\"<\n\007Feat" +
"ure\022\014\n\004name\030\001 \001(\t\022#\n\010location\030\002 \001(\0132\021.ro" +
- "uteguide.Point\"A\n\tRouteNote\022#\n\010location\030" +
- "\001 \001(\0132\021.routeguide.Point\022\017\n\007message\030\002 \001(" +
- "\t\"b\n\014RouteSummary\022\023\n\013point_count\030\001 \001(\005\022\025" +
- "\n\rfeature_count\030\002 \001(\005\022\020\n\010distance\030\003 \001(\005\022" +
- "\024\n\014elapsed_time\030\004 \001(\0052\205\002\n\nRouteGuide\0226\n\n",
- "GetFeature\022\021.routeguide.Point\032\023.routegui" +
- "de.Feature\"\000\022>\n\014ListFeatures\022\025.routeguid" +
- "e.Rectangle\032\023.routeguide.Feature\"\0000\001\022>\n\013" +
- "RecordRoute\022\021.routeguide.Point\032\030.routegu" +
- "ide.RouteSummary\"\000(\001\022?\n\tRouteChat\022\025.rout" +
- "eguide.RouteNote\032\025.routeguide.RouteNote\"" +
- "\000(\0010\001B6\n\033io.grpc.examples.routeguideB\017Ro" +
- "uteGuideProtoP\001\242\002\003RTGb\006proto3"
+ "uteguide.Point\"7\n\017FeatureDatabase\022$\n\007fea" +
+ "ture\030\001 \003(\0132\023.routeguide.Feature\"A\n\tRoute" +
+ "Note\022#\n\010location\030\001 \001(\0132\021.routeguide.Poin" +
+ "t\022\017\n\007message\030\002 \001(\t\"b\n\014RouteSummary\022\023\n\013po" +
+ "int_count\030\001 \001(\005\022\025\n\rfeature_count\030\002 \001(\005\022\020",
+ "\n\010distance\030\003 \001(\005\022\024\n\014elapsed_time\030\004 \001(\0052\205" +
+ "\002\n\nRouteGuide\0226\n\nGetFeature\022\021.routeguide" +
+ ".Point\032\023.routeguide.Feature\"\000\022>\n\014ListFea" +
+ "tures\022\025.routeguide.Rectangle\032\023.routeguid" +
+ "e.Feature\"\0000\001\022>\n\013RecordRoute\022\021.routeguid" +
+ "e.Point\032\030.routeguide.RouteSummary\"\000(\001\022?\n" +
+ "\tRouteChat\022\025.routeguide.RouteNote\032\025.rout" +
+ "eguide.RouteNote\"\000(\0010\001B6\n\033io.grpc.exampl" +
+ "es.routeguideB\017RouteGuideProtoP\001\242\002\003RTGb\006" +
+ "proto3"
};
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
@@ -91,14 +98,20 @@ public final class RouteGuideProto {
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_routeguide_Feature_descriptor,
new java.lang.String[] { "Name", "Location", });
- internal_static_routeguide_RouteNote_descriptor =
+ internal_static_routeguide_FeatureDatabase_descriptor =
getDescriptor().getMessageTypes().get(3);
+ internal_static_routeguide_FeatureDatabase_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+ internal_static_routeguide_FeatureDatabase_descriptor,
+ new java.lang.String[] { "Feature", });
+ internal_static_routeguide_RouteNote_descriptor =
+ getDescriptor().getMessageTypes().get(4);
internal_static_routeguide_RouteNote_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_routeguide_RouteNote_descriptor,
new java.lang.String[] { "Location", "Message", });
internal_static_routeguide_RouteSummary_descriptor =
- getDescriptor().getMessageTypes().get(4);
+ getDescriptor().getMessageTypes().get(5);
internal_static_routeguide_RouteSummary_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_routeguide_RouteSummary_descriptor,
diff --git a/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideUtil.java b/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideUtil.java
index 65d8700dea..ec85c916d3 100644
--- a/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideUtil.java
+++ b/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideUtil.java
@@ -31,17 +31,15 @@
package io.grpc.examples.routeguide;
+import com.google.protobuf.util.JsonFormat;
+
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
import java.net.URL;
-import java.util.ArrayList;
import java.util.List;
-import javax.json.Json;
-import javax.json.JsonObject;
-import javax.json.JsonReader;
-import javax.json.JsonValue;
-
/**
* Common utilities for the RouteGuide demo.
*/
@@ -75,25 +73,14 @@ public class RouteGuideUtil {
public static List parseFeatures(URL file) throws IOException {
InputStream input = file.openStream();
try {
- JsonReader reader = Json.createReader(input);
- List features = new ArrayList();
- for (JsonValue value : reader.readArray()) {
- JsonObject obj = (JsonObject) value;
- String name = obj.getString("name", "");
- JsonObject location = obj.getJsonObject("location");
- int lat = location.getInt("latitude");
- int lon = location.getInt("longitude");
- Feature feature =
- Feature
- .newBuilder()
- .setName(name)
- .setLocation(
- Point.newBuilder().setLatitude(lat)
- .setLongitude(lon).build()).build();
- features.add(feature);
+ Reader reader = new InputStreamReader(input);
+ try {
+ FeatureDatabase.Builder database = FeatureDatabase.newBuilder();
+ JsonFormat.parser().merge(reader, database);
+ return database.getFeatureList();
+ } finally {
+ reader.close();
}
-
- return features;
} finally {
input.close();
}
diff --git a/examples/src/main/proto/route_guide.proto b/examples/src/main/proto/route_guide.proto
index 12c4495ffa..4c864d6f0d 100644
--- a/examples/src/main/proto/route_guide.proto
+++ b/examples/src/main/proto/route_guide.proto
@@ -97,6 +97,11 @@ message Feature {
Point location = 2;
}
+// Not used in the RPC. Instead, this is here for the form serialized to disk.
+message FeatureDatabase {
+ repeated Feature feature = 1;
+}
+
// A RouteNote is a message sent while at a given point.
message RouteNote {
// The location from which the message is sent.
diff --git a/examples/src/main/resources/io/grpc/examples/routeguide/route_guide_db.json b/examples/src/main/resources/io/grpc/examples/routeguide/route_guide_db.json
index 9342beb579..e0ee318ae6 100644
--- a/examples/src/main/resources/io/grpc/examples/routeguide/route_guide_db.json
+++ b/examples/src/main/resources/io/grpc/examples/routeguide/route_guide_db.json
@@ -1,601 +1,603 @@
-[{
- "location": {
- "latitude": 407838351,
- "longitude": -746143763
- },
- "name": "Patriots Path, Mendham, NJ 07945, USA"
-}, {
- "location": {
- "latitude": 408122808,
- "longitude": -743999179
- },
- "name": "101 New Jersey 10, Whippany, NJ 07981, USA"
-}, {
- "location": {
- "latitude": 413628156,
- "longitude": -749015468
- },
- "name": "U.S. 6, Shohola, PA 18458, USA"
-}, {
- "location": {
- "latitude": 419999544,
- "longitude": -740371136
- },
- "name": "5 Conners Road, Kingston, NY 12401, USA"
-}, {
- "location": {
- "latitude": 414008389,
- "longitude": -743951297
- },
- "name": "Mid Hudson Psychiatric Center, New Hampton, NY 10958, USA"
-}, {
- "location": {
- "latitude": 419611318,
- "longitude": -746524769
- },
- "name": "287 Flugertown Road, Livingston Manor, NY 12758, USA"
-}, {
- "location": {
- "latitude": 406109563,
- "longitude": -742186778
- },
- "name": "4001 Tremley Point Road, Linden, NJ 07036, USA"
-}, {
- "location": {
- "latitude": 416802456,
- "longitude": -742370183
- },
- "name": "352 South Mountain Road, Wallkill, NY 12589, USA"
-}, {
- "location": {
- "latitude": 412950425,
- "longitude": -741077389
- },
- "name": "Bailey Turn Road, Harriman, NY 10926, USA"
-}, {
- "location": {
- "latitude": 412144655,
- "longitude": -743949739
- },
- "name": "193-199 Wawayanda Road, Hewitt, NJ 07421, USA"
-}, {
- "location": {
- "latitude": 415736605,
- "longitude": -742847522
- },
- "name": "406-496 Ward Avenue, Pine Bush, NY 12566, USA"
-}, {
- "location": {
- "latitude": 413843930,
- "longitude": -740501726
- },
- "name": "162 Merrill Road, Highland Mills, NY 10930, USA"
-}, {
- "location": {
- "latitude": 410873075,
- "longitude": -744459023
- },
- "name": "Clinton Road, West Milford, NJ 07480, USA"
-}, {
- "location": {
- "latitude": 412346009,
- "longitude": -744026814
- },
- "name": "16 Old Brook Lane, Warwick, NY 10990, USA"
-}, {
- "location": {
- "latitude": 402948455,
- "longitude": -747903913
- },
- "name": "3 Drake Lane, Pennington, NJ 08534, USA"
-}, {
- "location": {
- "latitude": 406337092,
- "longitude": -740122226
- },
- "name": "6324 8th Avenue, Brooklyn, NY 11220, USA"
-}, {
- "location": {
- "latitude": 406421967,
- "longitude": -747727624
- },
- "name": "1 Merck Access Road, Whitehouse Station, NJ 08889, USA"
-}, {
- "location": {
- "latitude": 416318082,
- "longitude": -749677716
- },
- "name": "78-98 Schalck Road, Narrowsburg, NY 12764, USA"
-}, {
- "location": {
- "latitude": 415301720,
- "longitude": -748416257
- },
- "name": "282 Lakeview Drive Road, Highland Lake, NY 12743, USA"
-}, {
- "location": {
- "latitude": 402647019,
- "longitude": -747071791
- },
- "name": "330 Evelyn Avenue, Hamilton Township, NJ 08619, USA"
-}, {
- "location": {
- "latitude": 412567807,
- "longitude": -741058078
- },
- "name": "New York State Reference Route 987E, Southfields, NY 10975, USA"
-}, {
- "location": {
- "latitude": 416855156,
- "longitude": -744420597
- },
- "name": "103-271 Tempaloni Road, Ellenville, NY 12428, USA"
-}, {
- "location": {
- "latitude": 404663628,
- "longitude": -744820157
- },
- "name": "1300 Airport Road, North Brunswick Township, NJ 08902, USA"
-}, {
- "location": {
- "latitude": 407113723,
- "longitude": -749746483
- },
- "name": ""
-}, {
- "location": {
- "latitude": 402133926,
- "longitude": -743613249
- },
- "name": ""
-}, {
- "location": {
- "latitude": 400273442,
- "longitude": -741220915
- },
- "name": ""
-}, {
- "location": {
- "latitude": 411236786,
- "longitude": -744070769
- },
- "name": ""
-}, {
- "location": {
- "latitude": 411633782,
- "longitude": -746784970
- },
- "name": "211-225 Plains Road, Augusta, NJ 07822, USA"
-}, {
- "location": {
- "latitude": 415830701,
- "longitude": -742952812
- },
- "name": ""
-}, {
- "location": {
- "latitude": 413447164,
- "longitude": -748712898
- },
- "name": "165 Pedersen Ridge Road, Milford, PA 18337, USA"
-}, {
- "location": {
- "latitude": 405047245,
- "longitude": -749800722
- },
- "name": "100-122 Locktown Road, Frenchtown, NJ 08825, USA"
-}, {
- "location": {
- "latitude": 418858923,
- "longitude": -746156790
- },
- "name": ""
-}, {
- "location": {
- "latitude": 417951888,
- "longitude": -748484944
- },
- "name": "650-652 Willi Hill Road, Swan Lake, NY 12783, USA"
-}, {
- "location": {
- "latitude": 407033786,
- "longitude": -743977337
- },
- "name": "26 East 3rd Street, New Providence, NJ 07974, USA"
-}, {
- "location": {
- "latitude": 417548014,
- "longitude": -740075041
- },
- "name": ""
-}, {
- "location": {
- "latitude": 410395868,
- "longitude": -744972325
- },
- "name": ""
-}, {
- "location": {
- "latitude": 404615353,
- "longitude": -745129803
- },
- "name": ""
-}, {
- "location": {
- "latitude": 406589790,
- "longitude": -743560121
- },
- "name": "611 Lawrence Avenue, Westfield, NJ 07090, USA"
-}, {
- "location": {
- "latitude": 414653148,
- "longitude": -740477477
- },
- "name": "18 Lannis Avenue, New Windsor, NY 12553, USA"
-}, {
- "location": {
- "latitude": 405957808,
- "longitude": -743255336
- },
- "name": "82-104 Amherst Avenue, Colonia, NJ 07067, USA"
-}, {
- "location": {
- "latitude": 411733589,
- "longitude": -741648093
- },
- "name": "170 Seven Lakes Drive, Sloatsburg, NY 10974, USA"
-}, {
- "location": {
- "latitude": 412676291,
- "longitude": -742606606
- },
- "name": "1270 Lakes Road, Monroe, NY 10950, USA"
-}, {
- "location": {
- "latitude": 409224445,
- "longitude": -748286738
- },
- "name": "509-535 Alphano Road, Great Meadows, NJ 07838, USA"
-}, {
- "location": {
- "latitude": 406523420,
- "longitude": -742135517
- },
- "name": "652 Garden Street, Elizabeth, NJ 07202, USA"
-}, {
- "location": {
- "latitude": 401827388,
- "longitude": -740294537
- },
- "name": "349 Sea Spray Court, Neptune City, NJ 07753, USA"
-}, {
- "location": {
- "latitude": 410564152,
- "longitude": -743685054
- },
- "name": "13-17 Stanley Street, West Milford, NJ 07480, USA"
-}, {
- "location": {
- "latitude": 408472324,
- "longitude": -740726046
- },
- "name": "47 Industrial Avenue, Teterboro, NJ 07608, USA"
-}, {
- "location": {
- "latitude": 412452168,
- "longitude": -740214052
- },
- "name": "5 White Oak Lane, Stony Point, NY 10980, USA"
-}, {
- "location": {
- "latitude": 409146138,
- "longitude": -746188906
- },
- "name": "Berkshire Valley Management Area Trail, Jefferson, NJ, USA"
-}, {
- "location": {
- "latitude": 404701380,
- "longitude": -744781745
- },
- "name": "1007 Jersey Avenue, New Brunswick, NJ 08901, USA"
-}, {
- "location": {
- "latitude": 409642566,
- "longitude": -746017679
- },
- "name": "6 East Emerald Isle Drive, Lake Hopatcong, NJ 07849, USA"
-}, {
- "location": {
- "latitude": 408031728,
- "longitude": -748645385
- },
- "name": "1358-1474 New Jersey 57, Port Murray, NJ 07865, USA"
-}, {
- "location": {
- "latitude": 413700272,
- "longitude": -742135189
- },
- "name": "367 Prospect Road, Chester, NY 10918, USA"
-}, {
- "location": {
- "latitude": 404310607,
- "longitude": -740282632
- },
- "name": "10 Simon Lake Drive, Atlantic Highlands, NJ 07716, USA"
-}, {
- "location": {
- "latitude": 409319800,
- "longitude": -746201391
- },
- "name": "11 Ward Street, Mount Arlington, NJ 07856, USA"
-}, {
- "location": {
- "latitude": 406685311,
- "longitude": -742108603
- },
- "name": "300-398 Jefferson Avenue, Elizabeth, NJ 07201, USA"
-}, {
- "location": {
- "latitude": 419018117,
- "longitude": -749142781
- },
- "name": "43 Dreher Road, Roscoe, NY 12776, USA"
-}, {
- "location": {
- "latitude": 412856162,
- "longitude": -745148837
- },
- "name": "Swan Street, Pine Island, NY 10969, USA"
-}, {
- "location": {
- "latitude": 416560744,
- "longitude": -746721964
- },
- "name": "66 Pleasantview Avenue, Monticello, NY 12701, USA"
-}, {
- "location": {
- "latitude": 405314270,
- "longitude": -749836354
- },
- "name": ""
-}, {
- "location": {
- "latitude": 414219548,
- "longitude": -743327440
- },
- "name": ""
-}, {
- "location": {
- "latitude": 415534177,
- "longitude": -742900616
- },
- "name": "565 Winding Hills Road, Montgomery, NY 12549, USA"
-}, {
- "location": {
- "latitude": 406898530,
- "longitude": -749127080
- },
- "name": "231 Rocky Run Road, Glen Gardner, NJ 08826, USA"
-}, {
- "location": {
- "latitude": 407586880,
- "longitude": -741670168
- },
- "name": "100 Mount Pleasant Avenue, Newark, NJ 07104, USA"
-}, {
- "location": {
- "latitude": 400106455,
- "longitude": -742870190
- },
- "name": "517-521 Huntington Drive, Manchester Township, NJ 08759, USA"
-}, {
- "location": {
- "latitude": 400066188,
- "longitude": -746793294
- },
- "name": ""
-}, {
- "location": {
- "latitude": 418803880,
- "longitude": -744102673
- },
- "name": "40 Mountain Road, Napanoch, NY 12458, USA"
-}, {
- "location": {
- "latitude": 414204288,
- "longitude": -747895140
- },
- "name": ""
-}, {
- "location": {
- "latitude": 414777405,
- "longitude": -740615601
- },
- "name": ""
-}, {
- "location": {
- "latitude": 415464475,
- "longitude": -747175374
- },
- "name": "48 North Road, Forestburgh, NY 12777, USA"
-}, {
- "location": {
- "latitude": 404062378,
- "longitude": -746376177
- },
- "name": ""
-}, {
- "location": {
- "latitude": 405688272,
- "longitude": -749285130
- },
- "name": ""
-}, {
- "location": {
- "latitude": 400342070,
- "longitude": -748788996
- },
- "name": ""
-}, {
- "location": {
- "latitude": 401809022,
- "longitude": -744157964
- },
- "name": ""
-}, {
- "location": {
- "latitude": 404226644,
- "longitude": -740517141
- },
- "name": "9 Thompson Avenue, Leonardo, NJ 07737, USA"
-}, {
- "location": {
- "latitude": 410322033,
- "longitude": -747871659
- },
- "name": ""
-}, {
- "location": {
- "latitude": 407100674,
- "longitude": -747742727
- },
- "name": ""
-}, {
- "location": {
- "latitude": 418811433,
- "longitude": -741718005
- },
- "name": "213 Bush Road, Stone Ridge, NY 12484, USA"
-}, {
- "location": {
- "latitude": 415034302,
- "longitude": -743850945
- },
- "name": ""
-}, {
- "location": {
- "latitude": 411349992,
- "longitude": -743694161
- },
- "name": ""
-}, {
- "location": {
- "latitude": 404839914,
- "longitude": -744759616
- },
- "name": "1-17 Bergen Court, New Brunswick, NJ 08901, USA"
-}, {
- "location": {
- "latitude": 414638017,
- "longitude": -745957854
- },
- "name": "35 Oakland Valley Road, Cuddebackville, NY 12729, USA"
-}, {
- "location": {
- "latitude": 412127800,
- "longitude": -740173578
- },
- "name": ""
-}, {
- "location": {
- "latitude": 401263460,
- "longitude": -747964303
- },
- "name": ""
-}, {
- "location": {
- "latitude": 412843391,
- "longitude": -749086026
- },
- "name": ""
-}, {
- "location": {
- "latitude": 418512773,
- "longitude": -743067823
- },
- "name": ""
-}, {
- "location": {
- "latitude": 404318328,
- "longitude": -740835638
- },
- "name": "42-102 Main Street, Belford, NJ 07718, USA"
-}, {
- "location": {
- "latitude": 419020746,
- "longitude": -741172328
- },
- "name": ""
-}, {
- "location": {
- "latitude": 404080723,
- "longitude": -746119569
- },
- "name": ""
-}, {
- "location": {
- "latitude": 401012643,
- "longitude": -744035134
- },
- "name": ""
-}, {
- "location": {
- "latitude": 404306372,
- "longitude": -741079661
- },
- "name": ""
-}, {
- "location": {
- "latitude": 403966326,
- "longitude": -748519297
- },
- "name": ""
-}, {
- "location": {
- "latitude": 405002031,
- "longitude": -748407866
- },
- "name": ""
-}, {
- "location": {
- "latitude": 409532885,
- "longitude": -742200683
- },
- "name": ""
-}, {
- "location": {
- "latitude": 416851321,
- "longitude": -742674555
- },
- "name": ""
-}, {
- "location": {
- "latitude": 406411633,
- "longitude": -741722051
- },
- "name": "3387 Richmond Terrace, Staten Island, NY 10303, USA"
-}, {
- "location": {
- "latitude": 413069058,
- "longitude": -744597778
- },
- "name": "261 Van Sickle Road, Goshen, NY 10924, USA"
-}, {
- "location": {
- "latitude": 418465462,
- "longitude": -746859398
- },
- "name": ""
-}, {
- "location": {
- "latitude": 411733222,
- "longitude": -744228360
- },
- "name": ""
-}, {
- "location": {
- "latitude": 410248224,
- "longitude": -747127767
- },
- "name": "3 Hasta Way, Newton, NJ 07860, USA"
-}]
\ No newline at end of file
+{
+ "feature": [{
+ "location": {
+ "latitude": 407838351,
+ "longitude": -746143763
+ },
+ "name": "Patriots Path, Mendham, NJ 07945, USA"
+ }, {
+ "location": {
+ "latitude": 408122808,
+ "longitude": -743999179
+ },
+ "name": "101 New Jersey 10, Whippany, NJ 07981, USA"
+ }, {
+ "location": {
+ "latitude": 413628156,
+ "longitude": -749015468
+ },
+ "name": "U.S. 6, Shohola, PA 18458, USA"
+ }, {
+ "location": {
+ "latitude": 419999544,
+ "longitude": -740371136
+ },
+ "name": "5 Conners Road, Kingston, NY 12401, USA"
+ }, {
+ "location": {
+ "latitude": 414008389,
+ "longitude": -743951297
+ },
+ "name": "Mid Hudson Psychiatric Center, New Hampton, NY 10958, USA"
+ }, {
+ "location": {
+ "latitude": 419611318,
+ "longitude": -746524769
+ },
+ "name": "287 Flugertown Road, Livingston Manor, NY 12758, USA"
+ }, {
+ "location": {
+ "latitude": 406109563,
+ "longitude": -742186778
+ },
+ "name": "4001 Tremley Point Road, Linden, NJ 07036, USA"
+ }, {
+ "location": {
+ "latitude": 416802456,
+ "longitude": -742370183
+ },
+ "name": "352 South Mountain Road, Wallkill, NY 12589, USA"
+ }, {
+ "location": {
+ "latitude": 412950425,
+ "longitude": -741077389
+ },
+ "name": "Bailey Turn Road, Harriman, NY 10926, USA"
+ }, {
+ "location": {
+ "latitude": 412144655,
+ "longitude": -743949739
+ },
+ "name": "193-199 Wawayanda Road, Hewitt, NJ 07421, USA"
+ }, {
+ "location": {
+ "latitude": 415736605,
+ "longitude": -742847522
+ },
+ "name": "406-496 Ward Avenue, Pine Bush, NY 12566, USA"
+ }, {
+ "location": {
+ "latitude": 413843930,
+ "longitude": -740501726
+ },
+ "name": "162 Merrill Road, Highland Mills, NY 10930, USA"
+ }, {
+ "location": {
+ "latitude": 410873075,
+ "longitude": -744459023
+ },
+ "name": "Clinton Road, West Milford, NJ 07480, USA"
+ }, {
+ "location": {
+ "latitude": 412346009,
+ "longitude": -744026814
+ },
+ "name": "16 Old Brook Lane, Warwick, NY 10990, USA"
+ }, {
+ "location": {
+ "latitude": 402948455,
+ "longitude": -747903913
+ },
+ "name": "3 Drake Lane, Pennington, NJ 08534, USA"
+ }, {
+ "location": {
+ "latitude": 406337092,
+ "longitude": -740122226
+ },
+ "name": "6324 8th Avenue, Brooklyn, NY 11220, USA"
+ }, {
+ "location": {
+ "latitude": 406421967,
+ "longitude": -747727624
+ },
+ "name": "1 Merck Access Road, Whitehouse Station, NJ 08889, USA"
+ }, {
+ "location": {
+ "latitude": 416318082,
+ "longitude": -749677716
+ },
+ "name": "78-98 Schalck Road, Narrowsburg, NY 12764, USA"
+ }, {
+ "location": {
+ "latitude": 415301720,
+ "longitude": -748416257
+ },
+ "name": "282 Lakeview Drive Road, Highland Lake, NY 12743, USA"
+ }, {
+ "location": {
+ "latitude": 402647019,
+ "longitude": -747071791
+ },
+ "name": "330 Evelyn Avenue, Hamilton Township, NJ 08619, USA"
+ }, {
+ "location": {
+ "latitude": 412567807,
+ "longitude": -741058078
+ },
+ "name": "New York State Reference Route 987E, Southfields, NY 10975, USA"
+ }, {
+ "location": {
+ "latitude": 416855156,
+ "longitude": -744420597
+ },
+ "name": "103-271 Tempaloni Road, Ellenville, NY 12428, USA"
+ }, {
+ "location": {
+ "latitude": 404663628,
+ "longitude": -744820157
+ },
+ "name": "1300 Airport Road, North Brunswick Township, NJ 08902, USA"
+ }, {
+ "location": {
+ "latitude": 407113723,
+ "longitude": -749746483
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 402133926,
+ "longitude": -743613249
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 400273442,
+ "longitude": -741220915
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 411236786,
+ "longitude": -744070769
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 411633782,
+ "longitude": -746784970
+ },
+ "name": "211-225 Plains Road, Augusta, NJ 07822, USA"
+ }, {
+ "location": {
+ "latitude": 415830701,
+ "longitude": -742952812
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 413447164,
+ "longitude": -748712898
+ },
+ "name": "165 Pedersen Ridge Road, Milford, PA 18337, USA"
+ }, {
+ "location": {
+ "latitude": 405047245,
+ "longitude": -749800722
+ },
+ "name": "100-122 Locktown Road, Frenchtown, NJ 08825, USA"
+ }, {
+ "location": {
+ "latitude": 418858923,
+ "longitude": -746156790
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 417951888,
+ "longitude": -748484944
+ },
+ "name": "650-652 Willi Hill Road, Swan Lake, NY 12783, USA"
+ }, {
+ "location": {
+ "latitude": 407033786,
+ "longitude": -743977337
+ },
+ "name": "26 East 3rd Street, New Providence, NJ 07974, USA"
+ }, {
+ "location": {
+ "latitude": 417548014,
+ "longitude": -740075041
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 410395868,
+ "longitude": -744972325
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 404615353,
+ "longitude": -745129803
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 406589790,
+ "longitude": -743560121
+ },
+ "name": "611 Lawrence Avenue, Westfield, NJ 07090, USA"
+ }, {
+ "location": {
+ "latitude": 414653148,
+ "longitude": -740477477
+ },
+ "name": "18 Lannis Avenue, New Windsor, NY 12553, USA"
+ }, {
+ "location": {
+ "latitude": 405957808,
+ "longitude": -743255336
+ },
+ "name": "82-104 Amherst Avenue, Colonia, NJ 07067, USA"
+ }, {
+ "location": {
+ "latitude": 411733589,
+ "longitude": -741648093
+ },
+ "name": "170 Seven Lakes Drive, Sloatsburg, NY 10974, USA"
+ }, {
+ "location": {
+ "latitude": 412676291,
+ "longitude": -742606606
+ },
+ "name": "1270 Lakes Road, Monroe, NY 10950, USA"
+ }, {
+ "location": {
+ "latitude": 409224445,
+ "longitude": -748286738
+ },
+ "name": "509-535 Alphano Road, Great Meadows, NJ 07838, USA"
+ }, {
+ "location": {
+ "latitude": 406523420,
+ "longitude": -742135517
+ },
+ "name": "652 Garden Street, Elizabeth, NJ 07202, USA"
+ }, {
+ "location": {
+ "latitude": 401827388,
+ "longitude": -740294537
+ },
+ "name": "349 Sea Spray Court, Neptune City, NJ 07753, USA"
+ }, {
+ "location": {
+ "latitude": 410564152,
+ "longitude": -743685054
+ },
+ "name": "13-17 Stanley Street, West Milford, NJ 07480, USA"
+ }, {
+ "location": {
+ "latitude": 408472324,
+ "longitude": -740726046
+ },
+ "name": "47 Industrial Avenue, Teterboro, NJ 07608, USA"
+ }, {
+ "location": {
+ "latitude": 412452168,
+ "longitude": -740214052
+ },
+ "name": "5 White Oak Lane, Stony Point, NY 10980, USA"
+ }, {
+ "location": {
+ "latitude": 409146138,
+ "longitude": -746188906
+ },
+ "name": "Berkshire Valley Management Area Trail, Jefferson, NJ, USA"
+ }, {
+ "location": {
+ "latitude": 404701380,
+ "longitude": -744781745
+ },
+ "name": "1007 Jersey Avenue, New Brunswick, NJ 08901, USA"
+ }, {
+ "location": {
+ "latitude": 409642566,
+ "longitude": -746017679
+ },
+ "name": "6 East Emerald Isle Drive, Lake Hopatcong, NJ 07849, USA"
+ }, {
+ "location": {
+ "latitude": 408031728,
+ "longitude": -748645385
+ },
+ "name": "1358-1474 New Jersey 57, Port Murray, NJ 07865, USA"
+ }, {
+ "location": {
+ "latitude": 413700272,
+ "longitude": -742135189
+ },
+ "name": "367 Prospect Road, Chester, NY 10918, USA"
+ }, {
+ "location": {
+ "latitude": 404310607,
+ "longitude": -740282632
+ },
+ "name": "10 Simon Lake Drive, Atlantic Highlands, NJ 07716, USA"
+ }, {
+ "location": {
+ "latitude": 409319800,
+ "longitude": -746201391
+ },
+ "name": "11 Ward Street, Mount Arlington, NJ 07856, USA"
+ }, {
+ "location": {
+ "latitude": 406685311,
+ "longitude": -742108603
+ },
+ "name": "300-398 Jefferson Avenue, Elizabeth, NJ 07201, USA"
+ }, {
+ "location": {
+ "latitude": 419018117,
+ "longitude": -749142781
+ },
+ "name": "43 Dreher Road, Roscoe, NY 12776, USA"
+ }, {
+ "location": {
+ "latitude": 412856162,
+ "longitude": -745148837
+ },
+ "name": "Swan Street, Pine Island, NY 10969, USA"
+ }, {
+ "location": {
+ "latitude": 416560744,
+ "longitude": -746721964
+ },
+ "name": "66 Pleasantview Avenue, Monticello, NY 12701, USA"
+ }, {
+ "location": {
+ "latitude": 405314270,
+ "longitude": -749836354
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 414219548,
+ "longitude": -743327440
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 415534177,
+ "longitude": -742900616
+ },
+ "name": "565 Winding Hills Road, Montgomery, NY 12549, USA"
+ }, {
+ "location": {
+ "latitude": 406898530,
+ "longitude": -749127080
+ },
+ "name": "231 Rocky Run Road, Glen Gardner, NJ 08826, USA"
+ }, {
+ "location": {
+ "latitude": 407586880,
+ "longitude": -741670168
+ },
+ "name": "100 Mount Pleasant Avenue, Newark, NJ 07104, USA"
+ }, {
+ "location": {
+ "latitude": 400106455,
+ "longitude": -742870190
+ },
+ "name": "517-521 Huntington Drive, Manchester Township, NJ 08759, USA"
+ }, {
+ "location": {
+ "latitude": 400066188,
+ "longitude": -746793294
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 418803880,
+ "longitude": -744102673
+ },
+ "name": "40 Mountain Road, Napanoch, NY 12458, USA"
+ }, {
+ "location": {
+ "latitude": 414204288,
+ "longitude": -747895140
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 414777405,
+ "longitude": -740615601
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 415464475,
+ "longitude": -747175374
+ },
+ "name": "48 North Road, Forestburgh, NY 12777, USA"
+ }, {
+ "location": {
+ "latitude": 404062378,
+ "longitude": -746376177
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 405688272,
+ "longitude": -749285130
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 400342070,
+ "longitude": -748788996
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 401809022,
+ "longitude": -744157964
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 404226644,
+ "longitude": -740517141
+ },
+ "name": "9 Thompson Avenue, Leonardo, NJ 07737, USA"
+ }, {
+ "location": {
+ "latitude": 410322033,
+ "longitude": -747871659
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 407100674,
+ "longitude": -747742727
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 418811433,
+ "longitude": -741718005
+ },
+ "name": "213 Bush Road, Stone Ridge, NY 12484, USA"
+ }, {
+ "location": {
+ "latitude": 415034302,
+ "longitude": -743850945
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 411349992,
+ "longitude": -743694161
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 404839914,
+ "longitude": -744759616
+ },
+ "name": "1-17 Bergen Court, New Brunswick, NJ 08901, USA"
+ }, {
+ "location": {
+ "latitude": 414638017,
+ "longitude": -745957854
+ },
+ "name": "35 Oakland Valley Road, Cuddebackville, NY 12729, USA"
+ }, {
+ "location": {
+ "latitude": 412127800,
+ "longitude": -740173578
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 401263460,
+ "longitude": -747964303
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 412843391,
+ "longitude": -749086026
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 418512773,
+ "longitude": -743067823
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 404318328,
+ "longitude": -740835638
+ },
+ "name": "42-102 Main Street, Belford, NJ 07718, USA"
+ }, {
+ "location": {
+ "latitude": 419020746,
+ "longitude": -741172328
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 404080723,
+ "longitude": -746119569
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 401012643,
+ "longitude": -744035134
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 404306372,
+ "longitude": -741079661
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 403966326,
+ "longitude": -748519297
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 405002031,
+ "longitude": -748407866
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 409532885,
+ "longitude": -742200683
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 416851321,
+ "longitude": -742674555
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 406411633,
+ "longitude": -741722051
+ },
+ "name": "3387 Richmond Terrace, Staten Island, NY 10303, USA"
+ }, {
+ "location": {
+ "latitude": 413069058,
+ "longitude": -744597778
+ },
+ "name": "261 Van Sickle Road, Goshen, NY 10924, USA"
+ }, {
+ "location": {
+ "latitude": 418465462,
+ "longitude": -746859398
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 411733222,
+ "longitude": -744228360
+ },
+ "name": ""
+ }, {
+ "location": {
+ "latitude": 410248224,
+ "longitude": -747127767
+ },
+ "name": "3 Hasta Way, Newton, NJ 07860, USA"
+ }]
+}