Есть ли сообщение protobuf, которое поддерживает / расширяет исключение java.lang.Exception? - PullRequest
0 голосов
/ 25 октября 2011

Мы пытаемся представить исключение CustomException в формате 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.Exception в файле .proto?

1 Ответ

0 голосов
/ 27 октября 2011

Если я правильно понимаю ваш вопрос, вы хотите, чтобы класс Java, сгенерированный из вашего CustomRestProtoException типа сообщения, работал с java.lang.Exception. Я думаю, что единственный способ добиться этого - написать плагин для расширения генерации кода Java:

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

Альтернативным и более простым подходом было бы введение подкласса Java Exception для хранения объекта CustomRestProtoException:

public class CustomRestException extends Exception
{
    private CustomRestProtoException exception;

    // usual constructors etc.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...