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.dnslabel;
012
013/**
014 * A DNS label which contains more than just letters, digits and a hyphen.
015 *
016 */
017public abstract class NonLdhLabel extends DnsLabel {
018
019    protected NonLdhLabel(String label) {
020        super(label);
021    }
022
023    protected static DnsLabel fromInternal(String label) {
024        if (UnderscoreLabel.isUnderscoreLabelInternal(label)) {
025            return new UnderscoreLabel(label);
026        }
027
028        if (LeadingOrTrailingHyphenLabel.isLeadingOrTrailingHypenLabelInternal(label)) {
029            return new LeadingOrTrailingHyphenLabel(label);
030        }
031
032        return new OtherNonLdhLabel(label);
033    }
034
035}