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

com.englishtown.vertx.jersey.features.swagger.SwaggerFeature Maven / Gradle / Ivy

package com.englishtown.vertx.jersey.features.swagger;

import com.englishtown.vertx.jersey.features.swagger.internal.SwaggerCorsFilter;
import io.swagger.config.ScannerFactory;
import io.swagger.jaxrs.config.DefaultJaxrsScanner;
import io.swagger.jaxrs.listing.ApiListingResource;
import io.swagger.jaxrs.listing.SwaggerSerializers;
import org.glassfish.jersey.internal.util.PropertiesHelper;

import javax.inject.Inject;
import javax.ws.rs.core.Configuration;
import javax.ws.rs.core.Feature;
import javax.ws.rs.core.FeatureContext;

/**
 * Jersey Swagger Feature
 */
public class SwaggerFeature implements Feature {

    public static final String PROPERTY_DISABLE = "vertx.jersey.swagger.disable";
    public static final String PROPERTY_CORS_DISABLE = "vertx.jersey.swagger.cors.disable";

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean configure(FeatureContext context) {

        Configuration config = context.getConfiguration();

        if (PropertiesHelper.isProperty(config.getProperties(), PROPERTY_DISABLE)){
            return false;
        }

        if (!PropertiesHelper.isProperty(config.getProperties(), PROPERTY_CORS_DISABLE)){
            context.register(SwaggerCorsFilter.class);
        }

        if (!config.isRegistered(ApiListingResource.class)) {
            context.register(ApiListingResource.class);
            context.register(SwaggerSerializers.class);
        }

        if (ScannerFactory.getScanner() == null) {
            ScannerFactory.setScanner(new DefaultJaxrsScanner());
        }

        return true;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy