Search in sources :

Example 1 with Resource

use of com.webcohesion.enunciate.api.resources.Resource in project enunciate by stoicflame.

the class AnnotationBasedResourceGroupImpl method getPaths.

@Override
public List<PathSummary> getPaths() {
    HashMap<String, PathSummary> paths = new HashMap<String, PathSummary>();
    for (Resource resource : this.resources) {
        PathSummary pathSummary = paths.get(resource.getPath());
        if (pathSummary == null) {
            pathSummary = new PathSummaryImpl(resource.getPath(), new TreeSet<String>(), resource.getStyles());
            paths.put(resource.getPath(), pathSummary);
        }
        for (Method method : resource.getMethods()) {
            pathSummary.getMethods().add(method.getHttpMethod());
        }
    }
    ArrayList<PathSummary> pathSummaries = new ArrayList<PathSummary>(paths.values());
    Collections.sort(pathSummaries, new PathSummaryComparator(sortStrategy));
    return pathSummaries;
}
Also used : PathSummaryComparator(com.webcohesion.enunciate.util.PathSummaryComparator) PathSummary(com.webcohesion.enunciate.api.PathSummary) Resource(com.webcohesion.enunciate.api.resources.Resource) Method(com.webcohesion.enunciate.api.resources.Method)

Example 2 with Resource

use of com.webcohesion.enunciate.api.resources.Resource in project enunciate by stoicflame.

the class PathBasedResourceGroupImpl method getDescription.

@Override
public String getDescription() {
    // we'll return a description if all descriptions of all methods are the same, or if there's only one defining resource class.
    String description = null;
    Set<com.webcohesion.enunciate.modules.jaxrs.model.Resource> definingResourceClasses = new TreeSet<com.webcohesion.enunciate.modules.jaxrs.model.Resource>(new TypeElementComparator());
    int methodCount = 0;
    RESOURCES: for (Resource resource : this.resources) {
        for (Method method : resource.getMethods()) {
            methodCount++;
            if (description != null && method.getDescription() != null && !description.equals(method.getDescription())) {
                description = null;
                break RESOURCES;
            }
            description = method.getDescription();
            if (description != null && description.trim().isEmpty()) {
                description = null;
            }
        }
        if (resource instanceof ResourceImpl) {
            definingResourceClasses.add(((ResourceImpl) resource).resourceMethod.getParent());
        }
    }
    if ((methodCount > 1 || description == null) && definingResourceClasses.size() == 1) {
        // if there's only one class, it's javadoc is probably a better description than the method-level.
        description = definingResourceClasses.iterator().next().getDocValue();
    }
    return description;
}
Also used : TypeElementComparator(com.webcohesion.enunciate.javac.TypeElementComparator) Resource(com.webcohesion.enunciate.api.resources.Resource) Method(com.webcohesion.enunciate.api.resources.Method)

Example 3 with Resource

use of com.webcohesion.enunciate.api.resources.Resource in project enunciate by stoicflame.

the class ResourceClassResourceGroupImpl method getPaths.

@Override
public List<PathSummary> getPaths() {
    HashMap<String, PathSummary> summaries = new HashMap<String, PathSummary>();
    for (Resource resource : this.resources) {
        Set<String> methods = new TreeSet<String>();
        for (Method method : resource.getMethods()) {
            methods.add(method.getHttpMethod());
        }
        PathSummary summary = summaries.get(resource.getPath());
        if (summary == null) {
            summary = new PathSummaryImpl(resource.getPath(), methods, resource.getStyles());
            summaries.put(resource.getPath(), summary);
        } else {
            summary.getMethods().addAll(methods);
        }
    }
    ArrayList<PathSummary> pathSummaries = new ArrayList<PathSummary>(summaries.values());
    Collections.sort(pathSummaries, new PathSummaryComparator(controllerClass.getContext().getPathSortStrategy()));
    return pathSummaries;
}
Also used : PathSummaryComparator(com.webcohesion.enunciate.util.PathSummaryComparator) PathSummary(com.webcohesion.enunciate.api.PathSummary) Resource(com.webcohesion.enunciate.api.resources.Resource) Method(com.webcohesion.enunciate.api.resources.Method)

Example 4 with Resource

use of com.webcohesion.enunciate.api.resources.Resource in project enunciate by stoicflame.

the class AnnotationBasedResourceGroupImpl method getDescription.

@Override
public String getDescription() {
    if (this.description != null) {
        return this.description;
    }
    // we'll return a description if all descriptions of all methods are the same, or if there's only one defining resource class.
    String description = null;
    Set<com.webcohesion.enunciate.modules.jaxrs.model.Resource> definingResourceClasses = new TreeSet<com.webcohesion.enunciate.modules.jaxrs.model.Resource>(new TypeElementComparator());
    int methodCount = 0;
    RESOURCES: for (Resource resource : this.resources) {
        for (Method method : resource.getMethods()) {
            methodCount++;
            if (description != null && method.getDescription() != null && !description.equals(method.getDescription())) {
                description = null;
                break RESOURCES;
            }
            description = method.getDescription();
            if (description != null && description.trim().isEmpty()) {
                description = null;
            }
        }
        if (resource instanceof ResourceImpl) {
            definingResourceClasses.add(((ResourceImpl) resource).resourceMethod.getParent());
        }
    }
    if ((methodCount > 1 || description == null) && definingResourceClasses.size() == 1) {
        description = definingResourceClasses.iterator().next().getDocValue();
    }
    return description;
}
Also used : TypeElementComparator(com.webcohesion.enunciate.javac.TypeElementComparator) Resource(com.webcohesion.enunciate.api.resources.Resource) Method(com.webcohesion.enunciate.api.resources.Method)

Example 5 with Resource

use of com.webcohesion.enunciate.api.resources.Resource in project enunciate by stoicflame.

the class PathBasedResourceGroupImpl method getPaths.

@Override
public List<PathSummary> getPaths() {
    Set<String> methods = new TreeSet<String>();
    Set<String> styles = new TreeSet<String>();
    for (Resource resource : this.resources) {
        for (Method method : resource.getMethods()) {
            methods.add(method.getHttpMethod());
            styles.addAll(method.getStyles());
        }
    }
    return Collections.singletonList((PathSummary) new PathSummaryImpl(this.path, methods, styles));
}
Also used : Resource(com.webcohesion.enunciate.api.resources.Resource) Method(com.webcohesion.enunciate.api.resources.Method)

Aggregations

Method (com.webcohesion.enunciate.api.resources.Method)11 Resource (com.webcohesion.enunciate.api.resources.Resource)11 PathSummary (com.webcohesion.enunciate.api.PathSummary)4 TypeElementComparator (com.webcohesion.enunciate.javac.TypeElementComparator)4 PathSummaryComparator (com.webcohesion.enunciate.util.PathSummaryComparator)4 SpringController (com.webcohesion.enunciate.modules.spring_web.model.SpringController)2 Parameter (com.webcohesion.enunciate.api.resources.Parameter)1 ResourceMethod (com.webcohesion.enunciate.modules.jaxrs.model.ResourceMethod)1 TemplateModel (freemarker.template.TemplateModel)1 TemplateModelException (freemarker.template.TemplateModelException)1 HashMap (java.util.HashMap)1