
com.holonplatform.jaxrs.swagger.v2.internal.DefaultSwaggerConfiguration Maven / Gradle / Ivy
/*
* Copyright 2016-2018 Axioma srl.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.holonplatform.jaxrs.swagger.v2.internal;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import io.swagger.config.SwaggerConfig;
import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.models.ExternalDocs;
import io.swagger.models.SecurityRequirement;
/**
* Default {@link SwaggerConfiguration} implementation.
*
*/
public class DefaultSwaggerConfiguration extends BeanConfig implements SwaggerConfiguration {
private String readerClass;
private String scannerClass;
private Collection ignoredRoutes;
private boolean readAllResources = true;
private ExternalDocs externalDocs;
private List security;
/**
* Default constructor.
*/
public DefaultSwaggerConfiguration() {
super();
}
/**
* Constructor.
* @param parent The paretn configuration from which to inherit the configuration attributes
*/
public DefaultSwaggerConfiguration(SwaggerConfig parent) {
super();
if (parent != null) {
setFilterClass(parent.getFilterClass());
if (parent instanceof BeanConfig) {
merge((BeanConfig) parent);
}
}
}
private void merge(BeanConfig config) {
setResourcePackage(config.getResourcePackage());
setSchemes(config.getSchemes());
setInfo(config.getInfo());
setTitle(config.getTitle());
setVersion(config.getVersion());
setTermsOfServiceUrl(config.getTermsOfServiceUrl());
setContact(config.getContact());
setLicense(config.getLicense());
setLicenseUrl(config.getLicenseUrl());
setFilterClass(config.getFilterClass());
setHost(config.getHost());
setBasePath(config.getBasePath());
setContextId(config.getContextId());
setConfigId(config.getConfigId());
setScannerId(config.getScannerId());
setPrettyPrint(config.getPrettyPrint());
if (config instanceof SwaggerConfiguration) {
setExternalDocs(((SwaggerConfiguration) config).getExternalDocs());
setSecurity(((SwaggerConfiguration) config).getSecurity());
}
}
/*
* (non-Javadoc)
* @see com.holonplatform.jaxrs.swagger.v2.internal.SwaggerConfiguration#getResourcePackages()
*/
@Override
public Set getResourcePackages() {
String resourcePackage = getResourcePackage();
if (resourcePackage != null && !"".equals(resourcePackage)) {
return Arrays.asList(resourcePackage.split(",")).stream().filter(p -> p != null && !p.trim().equals(""))
.collect(Collectors.toSet());
}
return Collections.emptySet();
}
/**
* Set the package names to use to filter the API resource classes.
* @param resourcePackages the package names to set
*/
@Override
public void setResourcePackages(Set resourcePackages) {
if (resourcePackages == null) {
setResourcePackage(null);
} else {
setResourcePackage(resourcePackages.stream().collect(Collectors.joining(",")));
}
}
/*
* (non-Javadoc)
* @see com.holonplatform.jaxrs.swagger.v2.internal.SwaggerConfiguration#getReaderClass()
*/
@Override
public String getReaderClass() {
return readerClass;
}
/**
* Set the API reader class.
* @param readerClass the reader class to set
*/
public void setReaderClass(String readerClass) {
this.readerClass = readerClass;
}
/*
* (non-Javadoc)
* @see com.holonplatform.jaxrs.swagger.v2.internal.SwaggerConfiguration#getScannerClass()
*/
@Override
public String getScannerClass() {
return scannerClass;
}
/**
* Set the API scanner class.
* @param scannerClass the scanner class to set
*/
public void setScannerClass(String scannerClass) {
this.scannerClass = scannerClass;
}
/*
* (non-Javadoc)
* @see com.holonplatform.jaxrs.swagger.v2.internal.SwaggerConfiguration#getIgnoredRoutes()
*/
@Override
public Collection getIgnoredRoutes() {
return ignoredRoutes;
}
/**
* Set the API definition routes to ignore.
* @param ignoredRoutes the ignored routes to set
*/
public void setIgnoredRoutes(Collection ignoredRoutes) {
this.ignoredRoutes = ignoredRoutes;
}
/*
* (non-Javadoc)
* @see com.holonplatform.jaxrs.swagger.v2.internal.SwaggerConfiguration#isReadAllResources()
*/
@Override
public boolean isReadAllResources() {
return readAllResources;
}
/**
* Set whether to read all the API resource classes, diregarding the Api annotation.
* @param readAllResources whether to read all the API resource classes
*/
public void setReadAllResources(boolean readAllResources) {
this.readAllResources = readAllResources;
}
/*
* (non-Javadoc)
* @see com.holonplatform.jaxrs.swagger.v2.internal.SwaggerConfiguration#isPrettyPrint()
*/
@Override
public boolean isPrettyPrint() {
return super.getPrettyPrint();
}
/**
* Set whether to pretty print the API output.
* @param prettyPrint whether to pretty print the API output
*/
@Override
public void setPrettyPrint(boolean prettyPrint) {
this.prettyPrint = prettyPrint;
}
/*
* (non-Javadoc)
* @see com.holonplatform.jaxrs.swagger.v2.internal.SwaggerConfiguration#getExternalDocs()
*/
@Override
public ExternalDocs getExternalDocs() {
return externalDocs;
}
/**
* Set the external documentation reference.
* @param externalDocs the external docs to set
*/
public void setExternalDocs(ExternalDocs externalDocs) {
this.externalDocs = externalDocs;
}
/**
* Get the security requirements.
* @return the security requirements
*/
@Override
public List getSecurity() {
return security;
}
/**
* Set the security requirements.
* @param security the security requirements to set
*/
public void setSecurity(List security) {
this.security = security;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy