diff options
author | Sébastien Determe <sd378r@intl.att.com> | 2018-03-15 09:47:14 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2018-03-15 09:47:14 +0000 |
commit | 17b5881be20b37a8e6054ddf6002d9e29b761974 (patch) | |
tree | b2555246740a53c5e56f27defcfa2397d90b6086 /src/main/java/org | |
parent | 9e0cc8c2927906e69646ebac3e7d0b716136f6ff (diff) | |
parent | 009f713c6c46cf3647f1a008e3a963522f988f92 (diff) |
Merge "Add swagger generation for jaxrs api"
Diffstat (limited to 'src/main/java/org')
-rw-r--r-- | src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java b/src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java index d6e74aef1..702e06499 100644 --- a/src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java +++ b/src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java @@ -23,12 +23,54 @@ package org.onap.clamp.clds.service; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.function.Function; +import java.util.stream.Collectors; import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; +import org.springframework.core.type.filter.AnnotationTypeFilter; import org.springframework.stereotype.Component; @Component @ApplicationPath("/restservices/clds/v1") public class JaxrsApplication extends Application { + + private static final EELFLogger logger = EELFManager.getInstance().getLogger(JaxrsApplication.class); + + private Function<BeanDefinition, Optional<Class<?>>> beanDefinitionToClass = b -> { + try { + return Optional.of(Class.forName(b.getBeanClassName())); + } catch (ClassNotFoundException e) { + logger.error("Could not get class annotated with @Path for swagger documentation generation", e); + return Optional.empty(); + } + }; + + @Override + public Set<Class<?>> getClasses() { + Set<Class<?>> resources = new HashSet<>(); + resources.add(io.swagger.v3.jaxrs2.integration.resources.OpenApiResource.class); + resources.addAll(scan()); + return resources; + } + + private List<Class<?>> scan() { + ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false); + scanner.addIncludeFilter(new AnnotationTypeFilter(javax.ws.rs.Path.class)); + return scanner.findCandidateComponents("org.onap.clamp.clds").stream() + .map(beanDefinitionToClass) + .filter(Optional::isPresent) + .map(Optional::get) + .collect(Collectors.toList()); + } + }
\ No newline at end of file |