@SuppressWarnings("unchecked") public static DockerCompositions load(InputStream inputStream) { // TODO: Figure out how to map root Map<String, Type> objects. Workaround by mapping it to Map structure then dumping it into individual objects //Apply Docker compose substitutions to cube format as well final String content = DockerComposeEnvironmentVarResolver.replaceParameters(inputStream); Yaml yaml = new Yaml(new CubeConstructor()); Map<String, Object> rawLoad = (Map<String, Object>) yaml.load(content); DockerCompositions containers = new DockerCompositions(); for (Map.Entry<String, Object> rawLoadEntry : rawLoad.entrySet()) { if (NETWORKS.equals(rawLoadEntry.getKey())) { Map<String, Object> rawNetworks = (Map<String, Object>) rawLoadEntry.getValue(); for (Map.Entry<String, Object> rawNetworkEntry : rawNetworks.entrySet()) { Network network = yaml.loadAs(yaml.dump(rawNetworkEntry.getValue()), Network.class); containers.add(rawNetworkEntry.getKey(), network); } } else if (CONTAINERS.equals(rawLoadEntry.getKey())) { Map<String, Object> rawContainers = (Map<String, Object>) rawLoadEntry.getValue(); for (Map.Entry<String, Object> rawContainerEntry : rawContainers.entrySet()) { CubeContainer cubeContainer = yaml.loadAs(yaml.dump(rawContainerEntry.getValue()), CubeContainer.class); containers.add(rawContainerEntry.getKey(), cubeContainer); } } else { CubeContainer container = yaml.loadAs(yaml.dump(rawLoadEntry.getValue()), CubeContainer.class); containers.add(rawLoadEntry.getKey(), container); } } return applyExtendsRules(containers); }
@SuppressWarnings("unchecked") public static DockerCompositions load(InputStream inputStream) { // TODO: Figure out how to map root Map<String, Type> objects. Workaround by mapping it to Map structure then dumping it into individual objects //Apply Docker compose substitutions to cube format as well final String content = DockerComposeEnvironmentVarResolver.replaceParameters(inputStream); Yaml yaml = new Yaml(new CubeConstructor()); Map<String, Object> rawLoad = (Map<String, Object>) yaml.load(content); DockerCompositions containers = new DockerCompositions(); for (Map.Entry<String, Object> rawLoadEntry : rawLoad.entrySet()) { if (NETWORKS.equals(rawLoadEntry.getKey())) { Map<String, Object> rawNetworks = (Map<String, Object>) rawLoadEntry.getValue(); for (Map.Entry<String, Object> rawNetworkEntry : rawNetworks.entrySet()) { Network network = yaml.loadAs(yaml.dump(rawNetworkEntry.getValue()), Network.class); containers.add(rawNetworkEntry.getKey(), network); } } else if (CONTAINERS.equals(rawLoadEntry.getKey())) { Map<String, Object> rawContainers = (Map<String, Object>) rawLoadEntry.getValue(); for (Map.Entry<String, Object> rawContainerEntry : rawContainers.entrySet()) { CubeContainer cubeContainer = yaml.loadAs(yaml.dump(rawContainerEntry.getValue()), CubeContainer.class); containers.add(rawContainerEntry.getKey(), cubeContainer); } } else { CubeContainer container = yaml.loadAs(yaml.dump(rawLoadEntry.getValue()), CubeContainer.class); containers.add(rawLoadEntry.getKey(), container); } } return applyExtendsRules(containers); }