private static void init()

in source/com.microsoft.tfs.util/src/com/microsoft/tfs/util/htmlfilter/AllowedHTMLTags.java [159:545]


    private static void init() {
        if (m_hashAllowed == null) {
            m_hashAllowed = new TreeMap<String, TagInfo>(String.CASE_INSENSITIVE_ORDER);
            m_hashSpecial = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
            m_hashAttributes = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);

            // add special tags (to ignore entire body)
            addSpecialTags(new String[] {
                "script", //$NON-NLS-1$
                "style", //$NON-NLS-1$
                "option", //$NON-NLS-1$
                "select", //$NON-NLS-1$
                "textarea" //$NON-NLS-1$
            });

            // add tags with specific attributes
            addTag(
                "a", //$NON-NLS-1$
                new String[] {
                    "charset", //$NON-NLS-1$
                    "href", //$NON-NLS-1$
                    "hreflang", //$NON-NLS-1$
                    "name", //$NON-NLS-1$
                    "rel", //$NON-NLS-1$
                    "rev", //$NON-NLS-1$
                    "shape", //$NON-NLS-1$
                    "tabindex", //$NON-NLS-1$
                    "type" //$NON-NLS-1$
            });
            addTag(
                "blockquote", //$NON-NLS-1$
                1,
                1,
                new String[] {
                    "cite" //$NON-NLS-1$
            });
            addTag(
                "br", //$NON-NLS-1$
                0,
                0,
                new String[] {
                    "clear" //$NON-NLS-1$
            });
            addTag(
                "caption", //$NON-NLS-1$
                1,
                1,
                new String[] {
                    "align" //$NON-NLS-1$
            });
            addTag(
                "col", //$NON-NLS-1$
                1,
                1,
                new String[] {
                    "align", //$NON-NLS-1$
                    "char", //$NON-NLS-1$
                    "charoff", //$NON-NLS-1$
                    "span", //$NON-NLS-1$
                    "valign", //$NON-NLS-1$
                    "width" //$NON-NLS-1$
            });
            addTag(
                "colgroup", //$NON-NLS-1$
                1,
                1,
                new String[] {
                    "align", //$NON-NLS-1$
                    "char", //$NON-NLS-1$
                    "charoff", //$NON-NLS-1$
                    "span", //$NON-NLS-1$
                    "valign", //$NON-NLS-1$
                    "width" //$NON-NLS-1$
            });
            addTag(
                "del", //$NON-NLS-1$
                0,
                0,
                new String[] {
                    "cite", //$NON-NLS-1$
                    "datetime" //$NON-NLS-1$
            });
            addTag(
                "dir", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "compact" //$NON-NLS-1$
            });
            addTag(
                "div", //$NON-NLS-1$
                1,
                1,
                new String[] {
                    "align" //$NON-NLS-1$
            });
            addTag(
                "dl", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "compact" //$NON-NLS-1$
            });
            addTag(
                "font", //$NON-NLS-1$
                0,
                0,
                new String[] {
                    "color", //$NON-NLS-1$
                    "face", //$NON-NLS-1$
                    "size" //$NON-NLS-1$
            });
            addTag(
                "h1", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "align" //$NON-NLS-1$
            });
            addTag(
                "h2", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "align" //$NON-NLS-1$
            });
            addTag(
                "h3", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "align" //$NON-NLS-1$
            });
            addTag(
                "h4", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "align" //$NON-NLS-1$
            });
            addTag(
                "h5", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "align" //$NON-NLS-1$
            });
            addTag(
                "h6", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "align" //$NON-NLS-1$
            });
            addTag(
                "hr", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "align", //$NON-NLS-1$
                    "size", //$NON-NLS-1$
                    "width" //$NON-NLS-1$
            });
            addTag(
                "img", //$NON-NLS-1$
                0,
                0,
                new String[] {
                    "align", //$NON-NLS-1$
                    "alt", //$NON-NLS-1$
                    "border", //$NON-NLS-1$
                    "height", //$NON-NLS-1$
                    "hspace", //$NON-NLS-1$
                    "ismap", //$NON-NLS-1$
                    "longdesc", //$NON-NLS-1$
                    "name", //$NON-NLS-1$
                    "src", //$NON-NLS-1$
                    "usemap", //$NON-NLS-1$
                    "vspace", //$NON-NLS-1$
                    "width", //$NON-NLS-1$
                    "alt2", //$NON-NLS-1$
                    "src2" //$NON-NLS-1$
            });
            addTag(
                "ins", //$NON-NLS-1$
                0,
                0,
                new String[] {
                    "cite", //$NON-NLS-1$
                    "datetime" //$NON-NLS-1$
            });
            addTag(
                "li", //$NON-NLS-1$
                1,
                1,
                new String[] {
                    "type", //$NON-NLS-1$
                    "value" //$NON-NLS-1$
            });
            addTag(
                "map", //$NON-NLS-1$
                0,
                0,
                new String[] {
                    "name" //$NON-NLS-1$
            });
            addTag(
                "menu", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "compact" //$NON-NLS-1$
            });
            addTag(
                "ol", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "compact", //$NON-NLS-1$
                    "start", //$NON-NLS-1$
                    "type" //$NON-NLS-1$
            });
            addTag(
                "p", //$NON-NLS-1$
                1,
                1,
                new String[] {
                    "align" //$NON-NLS-1$
            });
            addTag(
                "pre", //$NON-NLS-1$
                1,
                1,
                new String[] {
                    "width" //$NON-NLS-1$
            });
            addTag(
                "q", //$NON-NLS-1$
                0,
                0,
                new String[] {
                    "cite" //$NON-NLS-1$
            });
            addTag(
                "table", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "align", //$NON-NLS-1$
                    "border", //$NON-NLS-1$
                    "cellpadding", //$NON-NLS-1$
                    "cellspacing", //$NON-NLS-1$
                    "frame", //$NON-NLS-1$
                    "rules", //$NON-NLS-1$
                    "summary", //$NON-NLS-1$
                    "width", //$NON-NLS-1$
                    "caption" //$NON-NLS-1$
            });
            addTag(
                "tbody", //$NON-NLS-1$
                0,
                0,
                new String[] {
                    "align", //$NON-NLS-1$
                    "char", //$NON-NLS-1$
                    "charoff", //$NON-NLS-1$
                    "valign" //$NON-NLS-1$
            });
            addTag(
                "td", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "abbr", //$NON-NLS-1$
                    "align", //$NON-NLS-1$
                    "axis", //$NON-NLS-1$
                    "char", //$NON-NLS-1$
                    "charoff", //$NON-NLS-1$
                    "colspan", //$NON-NLS-1$
                    "headers", //$NON-NLS-1$
                    "height", //$NON-NLS-1$
                    "nowrap", //$NON-NLS-1$
                    "rowspan", //$NON-NLS-1$
                    "scope", //$NON-NLS-1$
                    "valign", //$NON-NLS-1$
                    "width" //$NON-NLS-1$
            });
            addTag(
                "tfoot", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "align", //$NON-NLS-1$
                    "char", //$NON-NLS-1$
                    "charoff", //$NON-NLS-1$
                    "valign" //$NON-NLS-1$
            });
            addTag(
                "th", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "abbr", //$NON-NLS-1$
                    "align", //$NON-NLS-1$
                    "axis", //$NON-NLS-1$
                    "char", //$NON-NLS-1$
                    "charoff", //$NON-NLS-1$
                    "colspan", //$NON-NLS-1$
                    "headers", //$NON-NLS-1$
                    "height", //$NON-NLS-1$
                    "nowrap", //$NON-NLS-1$
                    "rowspan", //$NON-NLS-1$
                    "scope", //$NON-NLS-1$
                    "valign", //$NON-NLS-1$
                    "width" //$NON-NLS-1$
            });
            addTag(
                "thead", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "align", //$NON-NLS-1$
                    "char", //$NON-NLS-1$
                    "charoff", //$NON-NLS-1$
                    "valign" //$NON-NLS-1$
            });
            addTag(
                "tr", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "align", //$NON-NLS-1$
                    "char", //$NON-NLS-1$
                    "charoff", //$NON-NLS-1$
                    "valign" //$NON-NLS-1$
            });
            addTag(
                "ul", //$NON-NLS-1$
                2,
                2,
                new String[] {
                    "compact", //$NON-NLS-1$
                    "type" //$NON-NLS-1$
            });
            addTag("dd", 1, 2, new String[] {}); //$NON-NLS-1$
            addTag("dt", 2, 1, new String[] {}); //$NON-NLS-1$

            // add tags without attributes
            addTags(new String[] {
                "abbr", //$NON-NLS-1$
                "acronym", //$NON-NLS-1$
                "address", //$NON-NLS-1$
                "b", //$NON-NLS-1$
                "bdo", //$NON-NLS-1$
                "big", //$NON-NLS-1$
                "center", //$NON-NLS-1$
                "cite", //$NON-NLS-1$
                "code", //$NON-NLS-1$
                "dfn", //$NON-NLS-1$
                "em", //$NON-NLS-1$
                "i", //$NON-NLS-1$
                "kbd", //$NON-NLS-1$
                "s", //$NON-NLS-1$
                "samp", //$NON-NLS-1$
                "small", //$NON-NLS-1$
                "span", //$NON-NLS-1$
                "strike", //$NON-NLS-1$
                "strong", //$NON-NLS-1$
                "sub", //$NON-NLS-1$
                "sup", //$NON-NLS-1$
                "tt", //$NON-NLS-1$
                "u", //$NON-NLS-1$
                "var" //$NON-NLS-1$
            });

            // add attributes for all tags
            addCommonAttributes(new String[] {
                "dir", //$NON-NLS-1$
                "lang", //$NON-NLS-1$
                "title", //$NON-NLS-1$
                "style", //$NON-NLS-1$
                "id", //$NON-NLS-1$
                "class", //$NON-NLS-1$
                "contenteditable" //$NON-NLS-1$
            });
        }
    }