Put nano generated code into nano package, unless option javanano_use_deprecated_package is set.
Also fix the behaior while java_package is set to empty.
diff --git a/android-interop-testing/app/build.gradle b/android-interop-testing/app/build.gradle
index f0f95db..b51cc98 100644
--- a/android-interop-testing/app/build.gradle
+++ b/android-interop-testing/app/build.gradle
@@ -33,7 +33,7 @@
}
plugins {
grpc {
- artifact = 'io.grpc:protoc-gen-grpc-java:0.9.0-SNAPSHOT'
+ artifact = 'io.grpc:protoc-gen-grpc-java:0.10.0-SNAPSHOT'
}
}
generateProtoTasks {
@@ -64,10 +64,10 @@
compile 'com.squareup.okhttp:okhttp:2.2.0'
testCompile 'junit:junit:4.12'
// You need to build grpc-java to obtain these libraries below.
- compile 'io.grpc:grpc-core:0.9.0-SNAPSHOT'
- compile 'io.grpc:grpc-protobuf-nano:0.9.0-SNAPSHOT'
- compile 'io.grpc:grpc-okhttp:0.9.0-SNAPSHOT'
- compile 'io.grpc:grpc-stub:0.9.0-SNAPSHOT'
- compile 'io.grpc:grpc-testing:0.9.0-SNAPSHOT'
+ compile 'io.grpc:grpc-core:0.10.0-SNAPSHOT'
+ compile 'io.grpc:grpc-protobuf-nano:0.10.0-SNAPSHOT'
+ compile 'io.grpc:grpc-okhttp:0.10.0-SNAPSHOT'
+ compile 'io.grpc:grpc-stub:0.10.0-SNAPSHOT'
+ compile 'io.grpc:grpc-testing:0.10.0-SNAPSHOT'
compile 'javax.annotation:javax.annotation-api:1.2'
}
diff --git a/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/InteropTester.java b/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/InteropTester.java
index 3824617..b887d33 100644
--- a/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/InteropTester.java
+++ b/android-interop-testing/app/src/main/java/io/grpc/android/integrationtest/InteropTester.java
@@ -60,6 +60,8 @@
import io.grpc.android.integrationtest.nano.Messages.StreamingInputCallResponse;
import io.grpc.android.integrationtest.nano.Messages.StreamingOutputCallRequest;
import io.grpc.android.integrationtest.nano.Messages.StreamingOutputCallResponse;
+import io.grpc.android.integrationtest.nano.TestServiceGrpc;
+import io.grpc.android.integrationtest.nano.UnimplementedServiceGrpc;
import io.grpc.okhttp.OkHttpChannelBuilder;
import io.grpc.stub.StreamObserver;
import io.grpc.testing.StreamRecorder;
diff --git a/compiler/build.gradle b/compiler/build.gradle
index 3af17a6..4625292 100644
--- a/compiler/build.gradle
+++ b/compiler/build.gradle
@@ -208,7 +208,7 @@
test.dependsOn('testGolden', 'testNanoGolden')
-def configureTestTask(Task task, String suffix) {
+def configureTestTask(Task task, String suffix, String extraPackage) {
task.dependsOn "generateTest${suffix}Proto"
if (osdetector.os != 'windows') {
task.executable "diff"
@@ -217,11 +217,11 @@
}
// File isn't found on Windows if last slash is forward-slash
def slash = System.getProperty("file.separator")
- task.args "$buildDir/generated/source/proto/test${suffix}/grpc/io/grpc/testing/integration${slash}TestServiceGrpc.java",
+ task.args "$buildDir/generated/source/proto/test${suffix}/grpc/io/grpc/testing/integration${extraPackage}${slash}TestServiceGrpc.java",
"$projectDir/src/test/golden/TestService${suffix}.java.txt"
}
task testGolden(type: Exec)
task testNanoGolden(type: Exec)
-configureTestTask(testGolden, '')
-configureTestTask(testNanoGolden, 'Nano')
+configureTestTask(testGolden, '', '')
+configureTestTask(testNanoGolden, 'Nano', '/nano')
diff --git a/compiler/src/java_plugin/cpp/java_generator.cpp b/compiler/src/java_plugin/cpp/java_generator.cpp
index e8f3e7c..bda2f12 100644
--- a/compiler/src/java_plugin/cpp/java_generator.cpp
+++ b/compiler/src/java_plugin/cpp/java_generator.cpp
@@ -61,6 +61,10 @@
if (nano && !desc->file()->options().javanano_use_deprecated_package()) {
// XXX: Add "nano" to the original package
// (https://github.com/grpc/grpc-java/issues/900)
+ if (isupper(name[0])) {
+ // No java package specified.
+ return "nano." + name;
+ }
for (int i = 0; i < name.size(); ++i) {
if ((name[i] == '.') && (i < (name.size() - 1)) && isupper(name[i + 1])) {
return name.substr(0, i + 1) + "nano." + name.substr(i + 1);
@@ -624,10 +628,12 @@
vars["ExperimentalApi"] = "io.grpc.ExperimentalApi";
Printer printer(out, '$');
- string package_name = ServiceJavaPackage(service->file());
- printer.Print(
- "package $package_name$;\n\n",
- "package_name", package_name);
+ string package_name = ServiceJavaPackage(service->file(), generate_nano);
+ if (!package_name.empty()) {
+ printer.Print(
+ "package $package_name$;\n\n",
+ "package_name", package_name);
+ }
PrintImports(&printer, generate_nano);
// Package string is used to fully qualify method names.
@@ -638,11 +644,19 @@
PrintService(service, &vars, &printer, generate_nano);
}
-string ServiceJavaPackage(const FileDescriptor* file) {
+string ServiceJavaPackage(const FileDescriptor* file, bool nano) {
string result = google::protobuf::compiler::java::ClassName(file);
size_t last_dot_pos = result.find_last_of('.');
if (last_dot_pos != string::npos) {
result.resize(last_dot_pos);
+ } else {
+ result = "";
+ }
+ if (nano && !file->options().javanano_use_deprecated_package()) {
+ if (!result.empty()) {
+ result += ".";
+ }
+ result += "nano";
}
return result;
}
diff --git a/compiler/src/java_plugin/cpp/java_generator.h b/compiler/src/java_plugin/cpp/java_generator.h
index f75376e..96b3b8a 100644
--- a/compiler/src/java_plugin/cpp/java_generator.h
+++ b/compiler/src/java_plugin/cpp/java_generator.h
@@ -39,7 +39,7 @@
namespace java_grpc_generator {
// Returns the package name of the gRPC services defined in the given file.
-string ServiceJavaPackage(const google::protobuf::FileDescriptor* file);
+string ServiceJavaPackage(const google::protobuf::FileDescriptor* file, bool nano);
// Returns the name of the outer class that wraps in all the generated code for
// the given service.
diff --git a/compiler/src/java_plugin/cpp/java_plugin.cpp b/compiler/src/java_plugin/cpp/java_plugin.cpp
index 41c8999..8f9a2e8 100644
--- a/compiler/src/java_plugin/cpp/java_plugin.cpp
+++ b/compiler/src/java_plugin/cpp/java_plugin.cpp
@@ -8,8 +8,8 @@
#include "java_generator.h"
#include <google/protobuf/compiler/code_generator.h>
#include <google/protobuf/compiler/plugin.h>
-#include <google/protobuf/io/zero_copy_stream.h>
#include <google/protobuf/descriptor.h>
+#include <google/protobuf/io/zero_copy_stream.h>
static string JavaPackageToDir(const string& package_name) {
string package_dir = package_name;
@@ -41,7 +41,7 @@
}
}
- string package_name = java_grpc_generator::ServiceJavaPackage(file);
+ string package_name = java_grpc_generator::ServiceJavaPackage(file, generate_nano);
string package_filename = JavaPackageToDir(package_name);
for (int i = 0; i < file->service_count(); ++i) {
const google::protobuf::ServiceDescriptor* service = file->service(i);
diff --git a/compiler/src/test/golden/TestServiceNano.java.txt b/compiler/src/test/golden/TestServiceNano.java.txt
index 4012e40..0314a8d 100644
--- a/compiler/src/test/golden/TestServiceNano.java.txt
+++ b/compiler/src/test/golden/TestServiceNano.java.txt
@@ -1,4 +1,4 @@
-package io.grpc.testing.integration;
+package io.grpc.testing.integration.nano;
import static io.grpc.stub.ClientCalls.asyncUnaryCall;
import static io.grpc.stub.ClientCalls.asyncServerStreamingCall;