All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.hts.springwebdoclet.processors.impl.MethodProcessorImpl Maven / Gradle / Ivy

package ru.hts.springwebdoclet.processors.impl;

import com.sun.javadoc.AnnotationDesc;
import com.sun.javadoc.ClassDoc;
import com.sun.javadoc.MethodDoc;
import org.springframework.web.bind.annotation.RequestMapping;
import ru.hts.springwebdoclet.processors.*;
import ru.hts.springwebdoclet.render.RenderContext;

import java.util.ArrayList;
import java.util.Arrays;

/**
 * Processes method
 * @author Ivan Sungurov
 */
public class MethodProcessorImpl implements MethodProcessor {
    private static final String REQUEST_MAPPING_CLASS_NAME = RequestMapping.class.getCanonicalName();

    private ParameterProcessor parameterProcessor;
    private AnnotationProcessor annotationProcessor;
    private ReturnProcessor returnProcessor;
    private ThrowsProcessor throwsProcessor;

    @Override
    public RenderContext process(ClassDoc classDoc, MethodDoc methodDoc) {
        RenderContext result = new RenderContext();

        result.put("description", methodDoc.commentText());

        ArrayList annotations = new ArrayList();
        annotations.addAll(Arrays.asList(classDoc.annotations()));
        annotations.addAll(Arrays.asList(methodDoc.annotations()));

        boolean mapped = false;
        for (AnnotationDesc annotationDoc : annotations) {
            if (REQUEST_MAPPING_CLASS_NAME.equals(annotationDoc.annotationType().qualifiedTypeName())) {
                mapped = true;
                break;
            }
        }

        if (!mapped) {
            return null;
        }

        result.putAll(annotationProcessor.process(annotations.toArray(new AnnotationDesc[0]), methodDoc));
        result.putAll(returnProcessor.process(classDoc, methodDoc));
        result.put("parameters", parameterProcessor.process(methodDoc));
        result.put("exceptions", throwsProcessor.process(classDoc, methodDoc));

        return result;
    }

    public void setParameterProcessor(ParameterProcessor parameterProcessor) {
        this.parameterProcessor = parameterProcessor;
    }

    public void setAnnotationProcessor(AnnotationProcessor annotationProcessor) {
        this.annotationProcessor = annotationProcessor;
    }

    public void setReturnProcessor(ReturnProcessor returnProcessor) {
        this.returnProcessor = returnProcessor;
    }

    public void setThrowsProcessor(ThrowsProcessor throwsProcessor) {
        this.throwsProcessor = throwsProcessor;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy