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

io.agrest.jaxrs3.openapi.AgSwaggerModule Maven / Gradle / Ivy

package io.agrest.jaxrs3.openapi;

import io.agrest.jaxrs3.openapi.modelconverter.AgEntityModelConverter;
import org.apache.cayenne.di.Binder;
import org.apache.cayenne.di.ListBuilder;
import org.apache.cayenne.di.Module;

import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;

public class AgSwaggerModule implements Module {

    private final Set entityPackages;

    /**
     * @since 5.0
     */
    public static Builder builder() {
        return new Builder();
    }

    /**
     * @since 5.0
     */
    public static AgSwaggerModule build() {
        return builder().build();
    }


    protected AgSwaggerModule(Set entityPackages) {
        this.entityPackages = entityPackages;
    }

    @Override
    public void configure(Binder binder) {
        ListBuilder diPackages = binder.bindList(String.class, AgEntityModelConverter.BINDING_ENTITY_PACKAGES);
        entityPackages.forEach(diPackages::add);
    }

    public static class Builder {
        private final Set entityPackages;

        private Builder() {
            this.entityPackages = new LinkedHashSet<>();
        }

        public AgSwaggerModule build() {
            return new AgSwaggerModule(entityPackages);
        }

        public Builder entityPackage(Package aPackage) {
            return entityPackage(aPackage.getName());
        }

        public Builder entityPackage(String aPackage) {
            entityPackages.add(aPackage);
            return this;
        }

        public Builder entityPackages(String... packages) {
            Collections.addAll(entityPackages, packages);
            return this;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy