blob: 962b065036e6b40ca0b9ecd4e755568d75a6691d [file] [log] [blame]
/*
* Copyright (c) 2010, 2019 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package org.glassfish.jersey.wadl.doclet;
import org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.ClassDocType;
import org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.MethodDocType;
import org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.ParamDocType;
import com.sun.javadoc.ClassDoc;
import com.sun.javadoc.MethodDoc;
import com.sun.javadoc.ParamTag;
import com.sun.javadoc.Parameter;
/**
* A doc processor is handed over javadoc elements so that it can turn this into
* resource doc elements, even self defined.
*
* @author Martin Grotzke (martin.grotzke at freiheit.com)
*/
public interface DocProcessor {
/**
* Specify jaxb classes of instances that you add to the {@code resourcedoc} model.
* These classes are added to the list of classes when creating the jaxb context
* with {@code JAXBContext.newInstance( clazzes );}.
*
* @return a list of classes or {@code null}
*/
Class<?>[] getRequiredJaxbContextClasses();
/**
* specify which of your elements you want to be handled as CDATA.
* The use of the '^' between the {@code namespaceURI} and the {@code localname}
* seems to be an implementation detail of the xerces code.
* When processing xml that doesn't use namespaces, simply omit the
* namespace prefix as shown in the third CDataElement below.
*
* @return an Array of element descriptors or {@code null}
*/
String[] getCDataElements();
/**
* Use this method to extend the provided {@link ClassDocType} with the information from
* the given {@link ClassDoc}.
*
* @param classDoc the class javadoc
* @param classDocType the {@link ClassDocType} to extend. This will later be processed by the
* {@link org.glassfish.jersey.server.wadl.WadlGenerator}s.
*/
void processClassDoc(ClassDoc classDoc, ClassDocType classDocType);
/**
* Process the provided methodDoc and add your custom information to the methodDocType.<br>
* Use e.g. {@link MethodDocType#getAny()} to store custom elements.
*
* @param methodDoc the {@link MethodDoc} representing the docs of your method.
* @param methodDocType the related {@link MethodDocType} that will later be processed by the
* {@link org.glassfish.jersey.server.wadl.WadlGenerator}s.
*/
void processMethodDoc(MethodDoc methodDoc, MethodDocType methodDocType);
/**
* Use this method to extend the provided {@link ParamDocType} with the information from the
* given {@link ParamTag} and {@link Parameter}.
*
* @param paramTag the parameter javadoc
* @param parameter the parameter (that is documented or not)
* @param paramDocType the {@link ParamDocType} to extend. This will later be processed by the
* {@link org.glassfish.jersey.server.wadl.WadlGenerator}s.
*/
void processParamTag(ParamTag paramTag, Parameter parameter, ParamDocType paramDocType);
}