public static String toString()

in provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/util/IntrospectionSupport.java [250:316]


    public static String toString(Object target, Class<?> stopClass, Map<String, Object> overrideFields, String ... fields) {
        try {
            LinkedHashMap<String, Object> map = new LinkedHashMap<>();
            addFields(target, target.getClass(), stopClass, map);
            if (overrideFields != null) {
                for(String key : overrideFields.keySet()) {
                    Object value = overrideFields.get(key);
                    map.put(key, value);
                }
            }

            if( fields!=null ) {
                map.keySet().retainAll(Arrays.asList(fields));
            }

            boolean useMultiLine = false;
            LinkedHashMap<String, String> props = new LinkedHashMap<>();
            for (Entry<String, Object> entry : map.entrySet()) {
                String key = entry.getKey();
                String value = null;
                if( entry.getValue() !=null ) {
                    value = entry.getValue().toString();
                    if( value!=null && ( value.indexOf('\n')>=0 || (key.length()+value.length())>70 ) ) {
                        useMultiLine = true;
                    }
                }
                props.put(key, value);
            }

            StringBuilder buffer = new StringBuilder();
            if( useMultiLine) {
                buffer.append("{\n");
                boolean first = true;
                for (Entry<String, String> entry : props.entrySet()) {
                    if (first) {
                        first = false;
                    } else {
                        buffer.append(",\n");
                    }
                    buffer.append("  ");
                    buffer.append(entry.getKey());
                    buffer.append(": ");
                    buffer.append(StringSupport.indent(entry.getValue(), 2));
                }
                buffer.append("\n}");
            } else {
                buffer.append("{");
                boolean first = true;
                for (Entry<String, String> entry : props.entrySet()) {
                    if (first) {
                        first = false;
                    } else {
                        buffer.append(", ");
                    }
                    buffer.append(entry.getKey());
                    buffer.append(": ");
                    String value = entry.getValue();
                    buffer.append(value);
                }
                buffer.append("}");
            }
            return buffer.toString();
        } catch (Throwable e) {
            e.printStackTrace();
            return "Could not toString: " + e;
        }
    }