001/* 002 * Copyright 2015-2024 the original author or authors 003 * 004 * This software is licensed under the Apache License, Version 2.0, 005 * the GNU Lesser General Public License version 2 or later ("LGPL") 006 * and the WTFPL. 007 * You may choose either license to govern your use of this software only 008 * upon the condition that you accept all of the terms of either 009 * the Apache License 2.0, the LGPL 2.1+ or the WTFPL. 010 */ 011package org.minidns.idna; 012 013import java.net.IDN; 014 015import org.minidns.dnsname.DnsName; 016 017public class DefaultIdnaTransformator implements IdnaTransformator { 018 019 @Override 020 public String toASCII(String input) { 021 // Special case if input is ".", i.e. a string containing only a single dot character. This is a workaround for 022 // IDN.toASCII() implementations throwing an IllegalArgumentException on this input string (for example Android 023 // APIs level 26, see https://issuetracker.google.com/issues/113070416). 024 if (DnsName.ROOT.ace.equals(input)) { 025 return DnsName.ROOT.ace; 026 } 027 028 return IDN.toASCII(input); 029 } 030 031 @Override 032 public String toUnicode(String input) { 033 return IDN.toUnicode(input); 034 } 035 036}