private InputStream getKeycloakJsonFromSystemProperties()

in fractions/keycloak-microprofile-jwt/src/main/java/org/wildfly/swarm/keycloak/mpjwt/runtime/KeycloakMicroprofileJwtArchivePreparer.java [70:119]


    private InputStream getKeycloakJsonFromSystemProperties() {
        final String thorntailPrefix = "thorntail.keycloak.secure-deployments.[" + archive.getName() + "].";
        final String swarmPrefix = "swarm.keycloak.secure-deployments.[" + archive.getName() + "].";
        final String credentialsSecretProperty = "credentials.secret.value";

        Map<String, String> kcAdapterSystemProps = new LinkedHashMap<>();
        Properties systemProps = System.getProperties();
        for (Map.Entry<Object, Object> entry : systemProps.entrySet()) {
            String key = entry.getKey().toString();
            if (key.startsWith(thorntailPrefix)) {
                kcAdapterSystemProps.put(key.substring(thorntailPrefix.length()),
                                         entry.getValue().toString());
            } else if (key.startsWith(swarmPrefix)) {
                kcAdapterSystemProps.put(key.substring(swarmPrefix.length()),
                                         entry.getValue().toString());
            }
        }
        InputStream is = null;
        if (!kcAdapterSystemProps.isEmpty()) {
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            try {
                JsonGenerator jg = new JsonFactory().createGenerator(out, JsonEncoding.UTF8);
                jg.writeStartObject();
                for (Map.Entry<String, String> entry : kcAdapterSystemProps.entrySet()) {
                    if (entry.getKey().equals(credentialsSecretProperty)) {
                        jg.writeFieldName("credentials");
                        jg.writeStartObject();
                        jg.writeFieldName("secret");
                        jg.writeString(entry.getValue());
                        jg.writeEndObject();
                    } else {
                        jg.writeFieldName(entry.getKey());
                        if (isBoolean(entry.getValue())) {
                            jg.writeBoolean(Boolean.valueOf(entry.getValue()));
                        } else if (isSimpleNumber(entry.getValue())) {
                            jg.writeNumber(Long.valueOf(entry.getValue()));
                        } else {
                            jg.writeString(entry.getValue());
                        }
                    }
                }
                jg.writeEndObject();
                jg.close();
                is = new ByteArrayInputStream(out.toByteArray());
            } catch (IOException ex) {
                log.warn("keycloak.json can not be auto-generated", ex);
            }
        }
        return is;
    }