#exception #protocol-buffers
#исключение #буферы протокола
Вопрос:
Мы пытаемся представить 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 .протофайл
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 ?
Ответ №1:
Если я правильно понял ваш вопрос, вы хотите, чтобы класс Java, созданный на основе вашего CustomRestProtoException
типа сообщения, использовался для управления 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.
}