Search in sources :

Example 1 with GET

use of io.gravitee.common.http.HttpMethod.GET in project gravitee-management-rest-api by gravitee-io.

the class APIV1toAPIV2Converter method migratePathsToFlows.

/**
 * Migrate apiEntity.paths to Flow model.
 * @param paths, the map of paths to migrate
 * @param policies, the list of available policies, containing available scopes
 * @return the list of Flows
 */
private List<Flow> migratePathsToFlows(Map<String, List<Rule>> paths, Set<PolicyEntity> policies) {
    List<Flow> flows = new ArrayList<>();
    if (!CollectionUtils.isEmpty(paths)) {
        paths.forEach((pathKey, pathValue) -> {
            // if all rules for a path have the same set of HttpMethods, then we have a unique flow for this path.
            // else, we have a flow per rule in the path.
            boolean oneFlowPerPathMode = pathValue.stream().map(rule -> {
                Set<HttpMethod> methods = new HashSet<>(rule.getMethods());
                methods.retainAll(HTTP_METHODS);
                return methods;
            }).distinct().count() == 1;
            if (oneFlowPerPathMode) {
                // since, all HttpMethods are the same in this case, we can use `pathValue.getRules().get(0).getMethods()`
                final Flow flow = createFlow(pathKey, pathValue.get(0).getMethods());
                pathValue.forEach(rule -> {
                    configurePolicies(policies, rule, flow);
                });
                // reverse policies of the Post steps otherwise, flow are displayed in the wrong order into the policy studio
                Collections.reverse(flow.getPost());
                flows.add(flow);
            } else {
                pathValue.forEach(rule -> {
                    final Flow flow = createFlow(pathKey, rule.getMethods());
                    configurePolicies(policies, rule, flow);
                    // reverse policies of the Post steps otherwise, flow are displayed in the wrong order into the policy studio
                    Collections.reverse(flow.getPost());
                    flows.add(flow);
                });
            }
        });
    }
    return flows;
}
Also used : PATCH(io.gravitee.common.http.HttpMethod.PATCH) Arrays(java.util.Arrays) PUT(io.gravitee.common.http.HttpMethod.PUT) GET(io.gravitee.common.http.HttpMethod.GET) OPTIONS(io.gravitee.common.http.HttpMethod.OPTIONS) PathOperator(io.gravitee.definition.model.flow.PathOperator) Flow(io.gravitee.definition.model.flow.Flow) HEAD(io.gravitee.common.http.HttpMethod.HEAD) HashMap(java.util.HashMap) InvalidDataException(io.gravitee.rest.api.service.exceptions.InvalidDataException) Operator(io.gravitee.definition.model.flow.Operator) PlanStatus(io.gravitee.rest.api.model.PlanStatus) ArrayList(java.util.ArrayList) Rule(io.gravitee.definition.model.Rule) HashSet(java.util.HashSet) PolicyHelper.clearNullValues(io.gravitee.rest.api.service.validator.PolicyHelper.clearNullValues) POST(io.gravitee.common.http.HttpMethod.POST) Collections.reverseOrder(java.util.Collections.reverseOrder) Map(java.util.Map) JsonLoader(com.github.fge.jackson.JsonLoader) JsonNode(com.fasterxml.jackson.databind.JsonNode) Step(io.gravitee.definition.model.flow.Step) ApiEntity(io.gravitee.rest.api.model.api.ApiEntity) CONNECT(io.gravitee.common.http.HttpMethod.CONNECT) DELETE(io.gravitee.common.http.HttpMethod.DELETE) PlanEntity(io.gravitee.rest.api.model.PlanEntity) Set(java.util.Set) IOException(java.io.IOException) NavigableMap(java.util.NavigableMap) Collectors(java.util.stream.Collectors) FlowMode(io.gravitee.definition.model.FlowMode) List(java.util.List) Component(org.springframework.stereotype.Component) HttpMethod(io.gravitee.common.http.HttpMethod) DefinitionVersion(io.gravitee.definition.model.DefinitionVersion) TreeMap(java.util.TreeMap) CollectionUtils(org.springframework.util.CollectionUtils) PolicyEntity(io.gravitee.rest.api.model.PolicyEntity) NotNull(org.jetbrains.annotations.NotNull) Collections(java.util.Collections) TRACE(io.gravitee.common.http.HttpMethod.TRACE) Plan(io.gravitee.definition.model.Plan) HashSet(java.util.HashSet) Set(java.util.Set) ArrayList(java.util.ArrayList) Flow(io.gravitee.definition.model.flow.Flow)

Aggregations

JsonNode (com.fasterxml.jackson.databind.JsonNode)1 JsonLoader (com.github.fge.jackson.JsonLoader)1 HttpMethod (io.gravitee.common.http.HttpMethod)1 CONNECT (io.gravitee.common.http.HttpMethod.CONNECT)1 DELETE (io.gravitee.common.http.HttpMethod.DELETE)1 GET (io.gravitee.common.http.HttpMethod.GET)1 HEAD (io.gravitee.common.http.HttpMethod.HEAD)1 OPTIONS (io.gravitee.common.http.HttpMethod.OPTIONS)1 PATCH (io.gravitee.common.http.HttpMethod.PATCH)1 POST (io.gravitee.common.http.HttpMethod.POST)1 PUT (io.gravitee.common.http.HttpMethod.PUT)1 TRACE (io.gravitee.common.http.HttpMethod.TRACE)1 DefinitionVersion (io.gravitee.definition.model.DefinitionVersion)1 FlowMode (io.gravitee.definition.model.FlowMode)1 Plan (io.gravitee.definition.model.Plan)1 Rule (io.gravitee.definition.model.Rule)1 Flow (io.gravitee.definition.model.flow.Flow)1 Operator (io.gravitee.definition.model.flow.Operator)1 PathOperator (io.gravitee.definition.model.flow.PathOperator)1 Step (io.gravitee.definition.model.flow.Step)1