private void generalizeJbdParameter()

in dubbo-gateway-extensions/dubbo-gateway-consumer/src/main/java/org/apache/dubbo/gateway/consumer/filter/OmnSerFilter.java [89:137]


    private void generalizeJbdParameter(Object pojo) {
        if (pojo instanceof Collection) {

            Collection collection = (Collection) pojo;
            List list = new ArrayList();
            for (Object obj : collection) {
                if (obj instanceof JavaBeanDescriptor) {
                    list.add(JavaBeanSerializeUtil.deserialize((JavaBeanDescriptor) obj));
                } else {
                    list.add(obj);
                }
            }
            collection.clear();
            collection.addAll(list);
        }

        if (pojo instanceof Map) {

            Map map = (Map) pojo;
            Map newMap = new HashMap();
            for (Object key : map.keySet()) {

                Object value = map.get(key);
                if (key instanceof JavaBeanDescriptor) {
                    key = JavaBeanSerializeUtil.deserialize((JavaBeanDescriptor) key);
                }
                if (value instanceof JavaBeanDescriptor) {
                    value = JavaBeanSerializeUtil.deserialize((JavaBeanDescriptor) value);
                }
                newMap.put(key, value);

            }
            map.clear();
            map.putAll(newMap);
        }

        // public field
        for (Field field : pojo.getClass().getDeclaredFields()) {
            try {
                field.setAccessible(true);
                Object fieldValue = field.get(pojo);
                if (fieldValue instanceof JavaBeanDescriptor) {
                    field.set(pojo, JavaBeanSerializeUtil.deserialize((JavaBeanDescriptor) fieldValue));
                }
            } catch (Exception e) {
                throw new RuntimeException(e.getMessage(), e);
            }
        }
    }