I have three protobuf
Base.proto
syntax = "proto2";
option java_package = "pi.ciaig.proto.rpc";
message ServiceRequest {
required string service = 1;
extensions 100 to 199;
}
Request.proto
syntax = "proto2";
option java_package = "pi.ciaig.proto.rpc";
import "Base.proto";
import "StrategyRequest.proto";
extend ServiceRequest {
optional StrategyRequest request = 100;
}
StrategyRequest.proto
syntax = "proto2";
option java_package = "pi.ciaig.proto.rpc";
option java_outer_classname = "StrategyRequestProto";
message StrategyRequest {
required string requestId = 1;
}
And I write a test Java as below:
import pi.ciaig.proto.rpc.Base;
import pi.ciaig.proto.rpc.Request;
import pi.ciaig.proto.rpc.StrategyRequestProto;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @author craig
*/
public class Main {
public static void main(String[] args) throws IOException {
StrategyRequestProto.StrategyRequest strategyRequest =
StrategyRequestProto.StrategyRequest.newBuilder().setRequestId("123").build();
Base.ServiceRequest serviceRequest =
Base.ServiceRequest.newBuilder().setService("strategy.makeDecision")
.setExtension(Request.request, strategyRequest).build();
serviceRequest.writeTo(new FileOutputStream(new
File("/data2/tmp/test.txt")));
Base.ServiceRequest serviceRequest1 = Base.ServiceRequest.parseFrom(new
FileInputStream(new File("/data2/tmp/test.txt")));
System.out.println("service:" + serviceRequest1.getService());
StrategyRequestProto.StrategyRequest strategyRequest1 =
serviceRequest1.getExtension(Request.request);
System.out.println("requestId:" + strategyRequest1.getRequestId());
//(1)
StrategyRequestProto.StrategyRequest strategyRequest2 =
StrategyRequestProto.StrategyRequest.parseFrom(new FileInputStream(new
File("/data2/tmp/test.txt")));
System.out.println("requestId2:"+strategyRequest2.getRequestId());
//(2)
}
}
The console output is below:
service:strategy.makeDecision
requestId:
requestId2:strategy.makeDecision
I think I can read the requestId at the palce (1), but I get a empty
string. And the place (2) 's output is weird too, why it can read out the
requestId?
And how to read a extension Object?
--
You received this message because you are subscribed to the Google Groups
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.