use of io.gravitee.definition.model.flow.Flow in project gravitee-management-rest-api by gravitee-io.
the class FlowServiceImpl method convert.
private Flow convert(io.gravitee.repository.management.model.flow.Flow model) {
Flow flow = new Flow();
flow.setCondition(model.getCondition());
flow.setEnabled(model.isEnabled());
flow.setMethods(model.getMethods());
flow.setName(model.getName());
final PathOperator pathOperator = new PathOperator();
pathOperator.setPath(model.getPath());
pathOperator.setOperator(Operator.valueOf(model.getOperator().name()));
flow.setPathOperator(pathOperator);
flow.setPre(model.getPre().stream().map(this::convert).collect(Collectors.toList()));
flow.setPost(model.getPost().stream().map(this::convert).collect(Collectors.toList()));
flow.setConsumers(model.getConsumers().stream().map(this::convert).collect(Collectors.toList()));
return flow;
}
use of io.gravitee.definition.model.flow.Flow in project gravitee-management-rest-api by gravitee-io.
the class APIV1toAPIV2Converter method createFlow.
@NotNull
private Flow createFlow(String path, Set<HttpMethod> methods) {
// If contains all methods of HttpMethod enum or all methods without OTHER
Set<HttpMethod> flowMethods = methods.containsAll(HTTP_METHODS) ? Collections.emptySet() : methods;
final Flow flow = new Flow();
flow.setName("");
flow.setCondition("");
flow.setEnabled(true);
final PathOperator pathOperator = new PathOperator();
pathOperator.setPath(path);
pathOperator.setOperator(Operator.STARTS_WITH);
flow.setPathOperator(pathOperator);
flow.setMethods(flowMethods);
return flow;
}
use of io.gravitee.definition.model.flow.Flow 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;
}
use of io.gravitee.definition.model.flow.Flow in project gravitee-management-rest-api by gravitee-io.
the class OAIToAPIV2Converter method createFlow.
private Flow createFlow(String path, Set<HttpMethod> methods) {
final Flow flow = new Flow();
flow.setName("");
flow.setCondition("");
flow.setEnabled(true);
final PathOperator pathOperator = new PathOperator();
pathOperator.setPath(path);
pathOperator.setOperator(Operator.EQUALS);
flow.setPathOperator(pathOperator);
flow.setMethods(methods);
return flow;
}
use of io.gravitee.definition.model.flow.Flow in project gravitee-management-rest-api by gravitee-io.
the class SwaggerService_CreateAPIV2Test method validateRules.
@Override
protected void validateRules(SwaggerApiEntity api, String path, int expectedRuleSize, List<HttpMethod> firstRuleMethods, String firstRuleDescription) {
List<Flow> flows = api.getFlows().stream().filter(flow1 -> flow1.getPath().equals(path)).collect(Collectors.toList());
// assertEquals(1, flows.size());
assertEquals(expectedRuleSize, flows.get(0).getPre().size());
assertTrue(flows.get(0).getMethods().containsAll(firstRuleMethods));
Step step = flows.get(0).getPre().get(0);
assertNotNull(step);
assertEquals(firstRuleDescription, step.getDescription());
}
Aggregations