in pojo.go [313:364]
func RegisterJavaEnum(o POJOEnum) int {
var (
ok bool
b []byte
i int
n int
f string
l []string
t structInfo
c ClassInfo
v reflect.Value
)
pojoRegistry.Lock()
defer pojoRegistry.Unlock()
if _, ok = pojoRegistry.registry[o.JavaClassName()]; !ok {
v = reflect.ValueOf(o)
switch v.Kind() {
case reflect.Struct:
t.typ = v.Type()
case reflect.Ptr:
t.typ = v.Elem().Type()
default:
t.typ = reflect.TypeOf(o)
}
t.goName = GetGoType(o)
t.javaName = o.JavaClassName()
t.inst = o
pojoRegistry.j2g[t.javaName] = t.goName
b = b[:0]
b = encByte(b, BC_OBJECT_DEF)
b = encString(b, t.javaName)
l = l[:0]
n = 1
b = encInt32(b, int32(n))
f = strings.ToLower("name")
l = append(l, f)
b = encString(b, f)
c = ClassInfo{javaName: t.javaName, fieldNameList: l}
c.buffer = append(c.buffer, b[:]...)
t.index = len(pojoRegistry.classInfoList)
pojoRegistry.classInfoList = append(pojoRegistry.classInfoList, &c)
pojoRegistry.registry[t.goName] = &t
i = t.index
} else {
i = -1
}
return i
}