DEV Community

Query Filter
Query Filter

Posted on

bridge91

private String extractValue(Object value) {
    if (value == null) return "null";

    // 1. Handle References (@beanName)
    if (value instanceof BeanReference) {
        return "@" + ((BeanReference) value).getBeanName();
    }

    // 2. Handle Inner Beans (The "Noise" in your enhancerList)
    if (value instanceof BeanDefinition) {
        String fullClass = ((BeanDefinition) value).getBeanClassName();
        if (fullClass != null) {
            // Strip the package to keep it clean (e.g., com.citi...EnhanceRFQ -> EnhanceRFQ)
            return fullClass.substring(fullClass.lastIndexOf('.') + 1);
        }
        return "InnerBean";
    }

    // 3. Handle Typed Strings
    if (value instanceof TypedStringValue) {
        return ((TypedStringValue) value).getValue();
    }

    // 4. Handle Lists (Recursive Clean)
    if (value instanceof List) {
        List<String> cleaned = new ArrayList<>();
        for (Object item : (List<?>) value) {
            cleaned.add(extractValue(item)); 
        }
        // Use <BR/> to stack them vertically inside the box
        return String.join("<BR ALIGN=\"LEFT\"/>", cleaned);
    }

    // 5. Handle Maps (Recursive Clean)
    if (value instanceof Map) {
        StringBuilder mapStr = new StringBuilder();
        for (Map.Entry<?, ?> entry : ((Map<?, ?>) value).entrySet()) {
            mapStr.append(extractValue(entry.getKey()))
                  .append("=")
                  .append(extractValue(entry.getValue()))
                  .append("<BR ALIGN=\"LEFT\"/>");
        }
        return mapStr.toString();
    }

    // Fallback for primitives (int, double, etc)
    return value.toString();
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)