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.util;
012
013import org.minidns.dnsname.DnsName;
014
015/**
016 * Utilities related to internationalized domain names and dns name handling.
017 */
018public final class NameUtil {
019
020    /**
021     * Check if two internationalized domain names are equal, possibly causing
022     * a serialization of both domain names.
023     *
024     * @param name1 The first domain name.
025     * @param name2 The second domain name.
026     * @return True if both domain names are the same.
027     */
028    @SuppressWarnings("ReferenceEquality")
029    public static boolean idnEquals(String name1, String name2) {
030        if (name1 == name2) return true; // catches null, null
031        if (name1 == null) return false;
032        if (name2 == null) return false;
033        if (name1.equals(name2)) return true;
034
035        return DnsName.from(name1).compareTo(DnsName.from(name2)) == 0;
036    }
037
038}