12d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// © 2016 and later: Unicode, Inc. and others.
22d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License
32d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert/*
42d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert *******************************************************************************
52d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * Copyright (C) 2015, International Business Machines Corporation and         *
62d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * others. All Rights Reserved.                                                *
72d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert *******************************************************************************
82d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert */
92d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubertpackage com.ibm.icu.dev.tool.docs;
102d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
112d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubertimport com.sun.javadoc.Doc;
122d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubertimport com.sun.javadoc.Tag;
132d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubertimport com.sun.tools.doclets.internal.toolkit.taglets.Taglet;
142d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubertimport com.sun.tools.doclets.internal.toolkit.taglets.TagletOutput;
152d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubertimport com.sun.tools.doclets.internal.toolkit.taglets.TagletWriter;
162d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
172d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert/**
182d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * The ICUTagletAdapter class is the abstract base class that adapts the ICUTaglet class to different implementations of the JavaDoc API.
192d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * The methods in this class are meant to minimize the dual maintenance nature of supporting multiple JavaDoc APIs.
202d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert *
212d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert * This adapter supports the v7 and earlier JavaDoc API
222d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert */
232d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubertpublic abstract class ICUTagletAdapter implements Taglet {
242d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
252d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public abstract String toString(Tag tag);
262d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
272d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public abstract String toString(Tag[] tags);
282d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
292d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert    public TagletOutput getTagletOutput(Tag tag, TagletWriter writer)
302d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            throws IllegalArgumentException {
312d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
322d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            TagletOutput out = writer.getTagletOutputInstance();
332d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            out.setOutput(toString(tag));
342d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            return out;
352d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
362d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
372d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        public TagletOutput getTagletOutput(Doc holder, TagletWriter writer)
382d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            throws IllegalArgumentException {
392d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
402d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            TagletOutput out = writer.getTagletOutputInstance();
412d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            Tag[] tags = holder.tags(getName());
422d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            if (tags.length == 0) {
432d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert                return null;
442d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            }
452d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            out.setOutput(toString(tags[0]));
462d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert            return out;
472d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert        }
482d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert
492d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert}
50