private static Properties extractProperties()

in impl/src/main/java/org/apache/rocketmq/remoting/internal/BeanUtils.java [176:209]


    private static Properties extractProperties(final Properties properties) {
        Properties newPro = new Properties();

        Map<String, String> envMap = System.getenv();
        for (final Map.Entry<String, String> entry : envMap.entrySet()) {
            newPro.setProperty(entry.getKey().toUpperCase(), entry.getValue());
            newPro.setProperty(entry.getKey().toLowerCase(), entry.getValue()); //EnvProp supports A_B_C and a.b.c
        }

        Properties systemProp = System.getProperties(); //SystemProp supports a.b.c
        for (final Map.Entry<Object, Object> entry : systemProp.entrySet()) {
            newPro.setProperty(String.valueOf(entry.getKey()).toLowerCase(), String.valueOf(entry.getValue()));
        }

        Properties inner = null;
        try {
            Field field = Properties.class.getDeclaredField("defaults");
            field.setAccessible(true);
            inner = (Properties) field.get(properties);
        } catch (Exception ignore) {
        }

        if (inner != null) {
            for (final Map.Entry<Object, Object> entry : inner.entrySet()) {
                newPro.setProperty(String.valueOf(entry.getKey()).toLowerCase(), String.valueOf(entry.getValue()));
            }
        }

        for (final Map.Entry<Object, Object> entry : properties.entrySet()) {
            newPro.setProperty(String.valueOf(entry.getKey()).toLowerCase(), String.valueOf(entry.getValue()));
        }

        return newPro;
    }