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

io.github.filipowm.api.PathHolders Maven / Gradle / Ivy

package io.github.filipowm.api;

import lombok.RequiredArgsConstructor;
import lombok.ToString;
import org.springframework.web.servlet.mvc.condition.PatternsRequestCondition;
import org.springframework.web.util.pattern.PathPatternParser;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

@RequiredArgsConstructor
@ToString
public class PathHolders implements VersionTarget {

    private final String pathPrefix;

    private final String versionPrefix;

    private final List holders = new ArrayList<>();

    private String version;

    public void add(String path) {
        add(PathHolder.with(path, pathPrefix, versionPrefix));
    }

    public void add(PathHolder holder) {
        this.holders.add(holder);
    }

    public void applyApi(String api) {
        holders.forEach(holder -> holder.setApi(api));
    }

    public void applyContext(String context) {
        holders.forEach(holder -> holder.setContext(context));
    }

    public void applyVersion(String version) {
        ApiUtils.applyVersion(holders, version);
    }

    public String[] toPaths() {
        return holders.stream()
                      .map(PathHolder::toPath)
                      .toArray(String[]::new);
    }

    public org.springframework.web.reactive.result.condition.PatternsRequestCondition toReactiveCondition() {
        var parser = new PathPatternParser();
        var paths = holders.stream()
                           .map(PathHolder::toPath)
                           .map(parser::parse)
                           .collect(Collectors.toList());
        return new org.springframework.web.reactive.result.condition.PatternsRequestCondition(paths);
    }

    public String getPathPrefix() {
        return pathPrefix;
    }

    public List getHolders() {
        return holders;
    }

    @Override
    public String getVersion() {
        return version;
    }

    @Override
    public void setVersion(String version) {
        applyVersion(version);
        this.version = version;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy