use of io.gravitee.rest.api.model.PolicyEntity 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.rest.api.model.PolicyEntity in project gravitee-management-rest-api by gravitee-io.
the class PoliciesResourceTest method shouldGetPoliciesList.
@Test
public void shouldGetPoliciesList() {
HashSet<PolicyEntity> policyEntities = new HashSet<>();
PolicyEntity policyEntity = new PolicyEntity();
policyEntities.add(policyEntity);
policyEntity.setId("my-api");
policyEntity.setName("My Api");
when(policyService.findAll(null)).thenReturn(policyEntities);
final Response response = envTarget().request().get();
assertEquals(HttpStatusCode.OK_200, response.getStatus());
Set entity = response.readEntity(Set.class);
assertFalse("not empty", entity.isEmpty());
assertEquals("one element", 1, entity.size());
Object o = entity.iterator().next();
assertTrue(o instanceof LinkedHashMap);
LinkedHashMap<String, String> elt = (LinkedHashMap<String, String>) o;
assertEquals("id", "my-api", elt.get("id"));
assertEquals("name", "My Api", elt.get("name"));
}
use of io.gravitee.rest.api.model.PolicyEntity in project gravitee-management-rest-api by gravitee-io.
the class PoliciesResourceTest method shouldGetPoliciesListWithUnknownExpand.
@Test
public void shouldGetPoliciesListWithUnknownExpand() {
HashSet<PolicyEntity> policyEntities = new HashSet<>();
PolicyEntity policyEntity = new PolicyEntity();
policyEntities.add(policyEntity);
policyEntity.setId("my-api");
when(policyService.findAll(null)).thenReturn(policyEntities);
final Response response = envTarget().queryParam("expand", "unknown").request().get();
assertEquals(HttpStatusCode.OK_200, response.getStatus());
Set entity = response.readEntity(Set.class);
assertFalse("not empty", entity.isEmpty());
assertEquals("one element", 1, entity.size());
Object o = entity.iterator().next();
assertTrue(o instanceof LinkedHashMap);
LinkedHashMap<String, String> elt = (LinkedHashMap<String, String>) o;
assertEquals("id", "my-api", elt.get("id"));
assertFalse("unknown expand", elt.containsKey("schema"));
assertFalse("unknown expand", elt.containsKey("unknown"));
}
use of io.gravitee.rest.api.model.PolicyEntity in project gravitee-management-rest-api by gravitee-io.
the class PoliciesResourceTest method shouldGetPoliciesListWithSchema.
@Test
public void shouldGetPoliciesListWithSchema() {
HashSet<PolicyEntity> policyEntities = new HashSet<>();
PolicyEntity policyEntity = new PolicyEntity();
policyEntities.add(policyEntity);
policyEntity.setId("my-api");
when(policyService.findAll(null)).thenReturn(policyEntities);
when(policyService.getSchema(any())).thenReturn("policy schema");
final Response response = envTarget().queryParam("expand", "schema").request().get();
assertEquals(HttpStatusCode.OK_200, response.getStatus());
Set entity = response.readEntity(Set.class);
assertFalse("not empty", entity.isEmpty());
assertEquals("one element", 1, entity.size());
Object o = entity.iterator().next();
assertTrue(o instanceof LinkedHashMap);
LinkedHashMap<String, String> elt = (LinkedHashMap<String, String>) o;
assertEquals("id", "my-api", elt.get("id"));
assertEquals("schema", "policy schema", elt.get("schema"));
}
use of io.gravitee.rest.api.model.PolicyEntity in project gravitee-management-rest-api by gravitee-io.
the class PolicyServiceImpl method convert.
private PolicyEntity convert(PolicyPlugin policyPlugin, Boolean withPlugin) {
PolicyEntity entity = new PolicyEntity();
entity.setId(policyPlugin.id());
entity.setDescription(policyPlugin.manifest().description());
entity.setName(policyPlugin.manifest().name());
entity.setVersion(policyPlugin.manifest().version());
entity.setCategory(policyPlugin.manifest().category());
if (withPlugin) {
// Plugin information
PluginEntity pluginEntity = new PluginEntity();
pluginEntity.setPlugin(policyPlugin.clazz());
pluginEntity.setPath(policyPlugin.path().toString());
pluginEntity.setType(((Plugin) policyPlugin).type().toLowerCase());
pluginEntity.setDependencies(policyPlugin.dependencies());
entity.setPlugin(pluginEntity);
entity.setDevelopment(loadPolicy(policyPlugin));
}
return entity;
}
Aggregations