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 + 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 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 + 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 + 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" + }] +}