blob: 8193062d68df68416552ff9b1ffc5940272883a1 [file] [log] [blame]
// Copyright 2016-2019 Yincheng Fang
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package hessian
func init() {
RegisterPOJO(&Throwable{})
RegisterPOJO(&Exception{})
RegisterPOJO(&StackTraceElement{})
}
////////////////////////////
// Throwable interface
////////////////////////////
type Throwabler interface {
Error() string
JavaClassName() string
}
////////////////////////////
// Throwable
////////////////////////////
type Throwable struct {
SerialVersionUID int64
DetailMessage string
SuppressedExceptions []Throwable
StackTrace []StackTraceElement
Cause *Throwable
}
func NewThrowable(detailMessage string) *Throwable {
return &Throwable{DetailMessage: detailMessage, StackTrace: []StackTraceElement{}}
}
func (e Throwable) Error() string {
return e.DetailMessage
}
func (Throwable) JavaClassName() string {
return "java.lang.Throwable"
}
////////////////////////////
// Exception
////////////////////////////
type Exception struct {
SerialVersionUID int64
DetailMessage string
SuppressedExceptions []Exception
StackTrace []StackTraceElement
Cause *Exception
}
func NewException(detailMessage string) *Exception {
return &Exception{DetailMessage: detailMessage, StackTrace: []StackTraceElement{}}
}
func (e Exception) Error() string {
return e.DetailMessage
}
func (Exception) JavaClassName() string {
return "java.lang.Exception"
}
type StackTraceElement struct {
DeclaringClass string
MethodName string
FileName string
LineNumber int
}
func (StackTraceElement) JavaClassName() string {
return "java.lang.StackTraceElement"
}