MCPcopy Create free account
hub / github.com/apache/dubbo-go-hessian2 / EncObject

Method EncObject

java_sql_time.go:50–108  ·  view source on GitHub ↗

nolint

(e *Encoder, vv POJO)

Source from the content-addressed store, hash-verified

48
49// nolint
50func (JavaSqlTimeSerializer) EncObject(e *Encoder, vv POJO) error {
51 var (
52 idx int
53 err error
54 clsDef *ClassInfo
55 className string
56 ptrV reflect.Value
57 )
58
59 // ensure ptrV is pointer to know vv is type JavaSqlTime or not
60 ptrV = reflect.ValueOf(vv)
61 if reflect.TypeOf(vv).Kind() != reflect.Ptr {
62 ptrV = PackPtr(ptrV)
63 }
64 v, ok := ptrV.Interface().(java_sql_time.JavaSqlTime)
65 if !ok {
66 return perrors.New("can not be converted into java sql time object")
67 }
68 className = v.JavaClassName()
69 if className == "" {
70 return perrors.New("class name empty")
71 }
72 tValue := reflect.ValueOf(vv)
73 // check ref
74 if n, ok := e.checkRefMap(tValue); ok {
75 e.buffer = encRef(e.buffer, n)
76 return nil
77 }
78
79 // write object definition
80 idx = e.classIndex(v.JavaClassName())
81
82 if idx == -1 {
83 idx, ok = checkPOJORegistry(vv)
84 if !ok {
85 idx = RegisterPOJO(v)
86 }
87 _, clsDef, err = getStructDefByIndex(idx)
88 if err != nil {
89 return perrors.WithStack(err)
90 }
91 idx = len(e.classInfoList)
92 e.classInfoList = append(e.classInfoList, clsDef)
93 e.buffer = append(e.buffer, clsDef.buffer...)
94 }
95 e.buffer = e.buffer[0 : len(e.buffer)-1]
96 e.buffer = encInt32(e.buffer, 1)
97 e.buffer = encString(e.buffer, "value")
98
99 // write object instance
100 if byte(idx) <= OBJECT_DIRECT_MAX {
101 e.buffer = encByte(e.buffer, byte(idx)+BC_OBJECT_DIRECT)
102 } else {
103 e.buffer = encByte(e.buffer, BC_OBJECT)
104 e.buffer = encInt32(e.buffer, int32(idx))
105 }
106 e.buffer = encDateInMs(e.buffer, v.GetTime())
107 return nil

Callers

nothing calls this directly

Calls 14

PackPtrFunction · 0.85
encRefFunction · 0.85
checkPOJORegistryFunction · 0.85
RegisterPOJOFunction · 0.85
getStructDefByIndexFunction · 0.85
encInt32Function · 0.85
encStringFunction · 0.85
encByteFunction · 0.85
encDateInMsFunction · 0.85
checkRefMapMethod · 0.80
classIndexMethod · 0.80
ValueOfMethod · 0.65

Tested by

no test coverage detected