org.wildfly.swarm.swagger.internal.SwaggerArchiveImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of swagger Show documentation
Show all versions of swagger Show documentation
Generate swagger.json for all JAX-RS endpoints in your application
/**
* Copyright 2015-2016 Red Hat, Inc, and individual contributors.
*
* 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 org.wildfly.swarm.swagger.internal;
import java.io.IOException;
import org.jboss.shrinkwrap.api.Node;
import org.jboss.shrinkwrap.api.asset.Asset;
import org.jboss.shrinkwrap.impl.base.ArchiveBase;
import org.jboss.shrinkwrap.impl.base.AssignableBase;
import org.wildfly.swarm.msc.ServiceActivatorArchive;
import org.wildfly.swarm.spi.api.JARArchive;
import org.wildfly.swarm.swagger.SwaggerArchive;
/**
* @author Lance Ball
*/
public class SwaggerArchiveImpl extends AssignableBase> implements SwaggerArchive {
public static final String SERVICE_ACTIVATOR_CLASS_NAME = "org.wildfly.swarm.swagger.deployment.SwaggerServiceActivator";
public SwaggerArchiveImpl(ArchiveBase> archive) throws IOException {
super(archive);
if (!as(ServiceActivatorArchive.class).containsServiceActivator(SERVICE_ACTIVATOR_CLASS_NAME)) {
as(ServiceActivatorArchive.class).addServiceActivator(SERVICE_ACTIVATOR_CLASS_NAME);
as(JARArchive.class).addModule("org.wildfly.swarm.swagger", "deployment");
}
loadOrCreateConfigurationAsset();
}
public SwaggerConfigurationAsset getConfigurationAsset() {
return configurationAsset;
}
@Override
public SwaggerArchive setResourcePackages(String... packages) {
getConfigurationAsset().register(packages);
return this;
}
@Override
public SwaggerArchive setTitle(String title) {
getConfigurationAsset().setTitle(title);
return this;
}
@Override
public SwaggerArchive setDescription(String description) {
getConfigurationAsset().setDescription(description);
return this;
}
@Override
public SwaggerArchive setTermsOfServiceUrl(String url) {
getConfigurationAsset().setTermsOfServiceUrl(url);
return this;
}
@Override
public SwaggerArchive setContact(String contact) {
getConfigurationAsset().setContact(contact);
return this;
}
@Override
public SwaggerArchive setLicense(String license) {
getConfigurationAsset().setLicense(license);
return this;
}
@Override
public SwaggerArchive setLicenseUrl(String licenseUrl) {
getConfigurationAsset().setLicenseUrl(licenseUrl);
return this;
}
@Override
public SwaggerArchive setVersion(String version) {
getConfigurationAsset().setVersion(version);
return this;
}
@Override
public SwaggerArchive setSchemes(String... schemes) {
getConfigurationAsset().setSchemes(schemes);
return this;
}
@Override
public SwaggerArchive setHost(String host) {
getConfigurationAsset().setHost(host);
return this;
}
@Override
public SwaggerArchive setContextRoot(String root) {
getConfigurationAsset().setContextRoot(root);
return this;
}
@Override
public boolean hasContextRoot() {
return getConfigurationAsset().getContextRoot() != null;
}
@Override
public SwaggerArchive setPrettyPrint(boolean prettyPrint) {
getConfigurationAsset().setPrettyPrint(prettyPrint);
return this;
}
@Override
public boolean hasResourcePackages() {
return getConfigurationAsset().getResourcePackages() != null;
}
@Override
public String[] getResourcePackages() {
return getConfigurationAsset().getResourcePackages();
}
private void loadOrCreateConfigurationAsset() throws IOException {
Node node = getArchive().get(SWAGGER_CONFIGURATION_PATH);
if (node == null && getArchive().getName().endsWith(".war")) {
node = getArchive().get("WEB-INF/classes/" + SWAGGER_CONFIGURATION_PATH);
}
if (node != null) {
Asset asset = node.getAsset();
if (asset instanceof SwaggerConfigurationAsset) {
this.configurationAsset = (SwaggerConfigurationAsset) asset;
} else {
this.configurationAsset = new SwaggerConfigurationAsset(asset.openStream());
getArchive().add(this.configurationAsset, node.getPath());
}
} else {
this.configurationAsset = new SwaggerConfigurationAsset();
if (getArchive().getName().endsWith(".war")) {
getArchive().add(this.configurationAsset, "WEB-INF/classes/" + SWAGGER_CONFIGURATION_PATH);
} else {
getArchive().add(this.configurationAsset, SWAGGER_CONFIGURATION_PATH);
}
}
}
private SwaggerConfigurationAsset configurationAsset;
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy