All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.aeontronix.enhancedmule.tools.api.provision.AnypointDescriptor Maven / Gradle / Ivy

/*
 * Copyright (c) Aeontronix 2019
 */

package com.aeontronix.enhancedmule.tools.api.provision;

import com.aeontronix.enhancedmule.tools.Environment;
import com.aeontronix.enhancedmule.tools.util.JsonHelper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.kloudtek.util.StringUtils;
import com.kloudtek.util.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

public class AnypointDescriptor {
    private static final Logger logger = LoggerFactory.getLogger(AnypointDescriptor.class);
    private String id;
    private Boolean mule3;
    private APIDescriptor api;
    private HashMap properties;
    private ClientApplicationDescriptor client;

    public AnypointDescriptor() {
    }

    public AnypointDescriptor(String name, String version) {
        api = new APIDescriptor(name, version);
    }

    public static AnypointDescriptor read(APIProvisioningConfig apiProvisioningConfig, InputStream is) throws IOException {
        ObjectMapper mapper = JsonHelper.createMapper();
        String json = IOUtils.toString(is);
        String appId = (String) mapper.readValue(json, Map.class).get("id");
        if( appId != null ) {
            apiProvisioningConfig.addVariable("app.id",appId);
        }
        json = StringUtils.substituteVariables(json, apiProvisioningConfig.getVariables());
        AnypointDescriptor descriptor = mapper.readValue(json, AnypointDescriptor.class);
        if(descriptor.getProperties()!= null){
            for (Map.Entry entry : descriptor.getProperties().entrySet()) {
                entry.getValue().setName(entry.getKey());
            }
        }
        return descriptor;
    }

    public APIProvisioningResult provision(Environment environment, APIProvisioningConfig config) throws ProvisioningException {
        try {
            APIProvisioningResult result = new APIProvisioningResult();
            if (api != null) {
                logger.debug("API descriptor found, provisioning");
                api.provision(this, environment, config, result);
            }
            if( client != null ) {
                client.provision(this,environment,config, result);
            }
            return result;
        } catch (Exception e) {
            throw new ProvisioningException(e);
        }
    }

    public Boolean getMule3() {
        return mule3;
    }

    public void setMule3(Boolean mule3) {
        this.mule3 = mule3;
    }

    public APIDescriptor getApi() {
        return api;
    }

    public void setApi(APIDescriptor api) {
        this.api = api;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public HashMap getProperties() {
        return properties;
    }

    public void setProperties(HashMap properties) {
        this.properties = properties;
    }

    public void addProperty(String key, boolean secure) {
        if (properties == null) {
            properties = new HashMap<>();
        }
        properties.put(key, new PropertyDescriptor(key, secure));
    }

    public ClientApplicationDescriptor getClient() {
        return client;
    }

    public void setClient(ClientApplicationDescriptor client) {
        this.client = client;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy