2011-10-25 42 views
0

我们正试图代表CustomException到protobuf的格式 -是否有支持/扩展java.lang.Exception的protobuf消息?

public class CustomRestException extends RuntimeException { 

private CustomRestErrorMessage customRestErrorMessage; 
public CustomRestException (CustomRestErrorMessage customRestErrorMessage, Throwable cause) { 
    super(cause); 
    this.customRestErrorMessage= customRestErrorMessage; 
} 
public CustomRestException (CustomRestErrorMessage customRestErrorMessage) { 
    this.customRestErrorMessage= customRestErrorMessage; 
} 
} 

public class CustomRestErrorMessage implements Serializable { 

    private String causeMessage = ""; 
    private String errorCode = ""; 
    private String errorMessage = ""; 
    private String errorSubCode = ""; 
    private String stackTrace = ""; 
} 

这里是CustomRestExceptionProtos.proto文件

option java_package = "com.company.my.exception"; 
option java_outer_classname = "CustomRestExceptionProtos"; 

message CustomRestProtoException 
{ 
    required CustomRestProtoErrorMessage customRestErrorMessage = 1; 
} 

message CustomRestProtoErrorMessage 
{ 
    required string errorCode = 1; 
    required string errorMessage = 2; 
    required string errorSubCode = 3; 
    required string causeMessage = 4;  
    required string stackTrace= 5; 
} 

是否可以代表这个 “CustomRestExceptionProtos” 作为类型的java.lang。 .proto文件中的例外?

回答

0

如果我正确理解您的问题,您希望从CustomRestProtoException消息类型生成的Java类从java.lang.Exception驱动。我想你可能实现这一目标的唯一途径是通过编写一个插件来扩展Java代码生成:

http://code.google.com/apis/protocolbuffers/docs/reference/java-generated.html#plugins

另一种更简单的方法是引入一个包装Java异常的子类来保存CustomRestProtoException对象:

public class CustomRestException extends Exception 
{ 
    private CustomRestProtoException exception; 

    // usual constructors etc. 
}