/** * Create a copy of this mapping with the given host port * * @param hostPort * @return */ public DockerPortMapping withHostPort(int hostPort) { DockerPortMapping newMapping = new DockerPortMapping(); newMapping.protocol = protocol; newMapping.containerPort = containerPort; newMapping.hostIp = hostIp; newMapping.hostPort = String.valueOf(hostPort); return newMapping; }
/** * Convert a map generated by the toMap() method back to a DockerPortMapping * * @param entry * @return */ public static DockerPortMapping fromMap(Map.Entry<String, List<Map<String, String>>> entry) { DockerPortMapping portMapping = new DockerPortMapping(); if (entry.getValue() == null) { // no host mapping return null; } portMapping.containerPort = entry.getKey(); int protocolSeparatorIndex = portMapping.containerPort.indexOf("/"); if (protocolSeparatorIndex != -1) { portMapping.protocol = Protocol.fromString(portMapping.containerPort .substring(protocolSeparatorIndex + 1)); portMapping.containerPort = portMapping.containerPort.substring(0, protocolSeparatorIndex); } Map<String, String> hostMap = entry.getValue().get(0); portMapping.hostIp = hostMap.get(HOST_IP); portMapping.hostPort = hostMap.get(HOST_PORT); return portMapping; }
/** * Parse a port string * * format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | * containerPort * * @param portMappingStr * @return */ public static DockerPortMapping fromString(String portMappingStr) { DockerPortMapping portMapping = new DockerPortMapping(); Matcher matcher = PORT_PATTERN.matcher(portMappingStr); if (!matcher.matches()) { throw new LocalizableValidationException("Invalid format for port mapping: " + portMappingStr, "adapter.docker.port.mapping.invalid", portMappingStr); } portMapping.hostIp = matcher.group(1); portMapping.hostPort = matcher.group(2); portMapping.containerPort = matcher.group(3); String protocolStr = matcher.group(5); if (protocolStr != null) { portMapping.protocol = Protocol.fromString(protocolStr); } else { portMapping.protocol = Protocol.TCP; } if ("".equals(portMapping.hostPort)) { portMapping.hostPort = null; } return portMapping; }