use of io.gravitee.definition.model.flow.Flow in project gravitee-management-rest-api by gravitee-io.
the class OrganizationServiceImpl method convert.
private OrganizationEntity convert(final Organization organization) {
final OrganizationEntity organizationEntity = new OrganizationEntity();
organizationEntity.setId(organization.getId());
organizationEntity.setCockpitId(organization.getCockpitId());
organizationEntity.setHrids(organization.getHrids());
organizationEntity.setName(organization.getName());
organizationEntity.setDescription(organization.getDescription());
organizationEntity.setDomainRestrictions(organization.getDomainRestrictions());
FlowMode flowMode = organization.getFlowMode() != null ? FlowMode.valueOf(organization.getFlowMode()) : FlowMode.DEFAULT;
organizationEntity.setFlowMode(flowMode);
List<Flow> flows = flowService.findByReference(FlowReferenceType.ORGANIZATION, organization.getId());
organizationEntity.setFlows(flows);
return organizationEntity;
}
use of io.gravitee.definition.model.flow.Flow in project gravitee-management-rest-api by gravitee-io.
the class PlanServiceImpl method convert.
private PlanEntity convert(Plan plan) {
PlanEntity entity = new PlanEntity();
entity.setId(plan.getId());
entity.setName(plan.getName());
entity.setDescription(plan.getDescription());
entity.setApi(plan.getApi());
entity.setCreatedAt(plan.getCreatedAt());
entity.setUpdatedAt(plan.getUpdatedAt());
entity.setOrder(plan.getOrder());
entity.setExcludedGroups(plan.getExcludedGroups());
if (plan.getDefinition() != null && !plan.getDefinition().isEmpty()) {
try {
HashMap<String, List<Rule>> rules = objectMapper.readValue(plan.getDefinition(), new TypeReference<HashMap<String, List<Rule>>>() {
});
entity.setPaths(rules);
} catch (IOException ioe) {
logger.error("Unexpected error while generating policy definition", ioe);
}
}
ApiEntity api = apiService.findById(plan.getApi());
if (DefinitionVersion.V2.equals(DefinitionVersion.valueOfLabel(api.getGraviteeDefinitionVersion()))) {
Optional<List<Flow>> planFlows = api.getPlans().stream().filter(pl -> plan.getId().equals(pl.getId())).map(plan1 -> plan1.getFlows()).findFirst();
if (planFlows.isPresent()) {
entity.setFlows(planFlows.get());
}
}
entity.setType(PlanType.valueOf(plan.getType().name()));
// Backward compatibility
if (plan.getStatus() != null) {
entity.setStatus(PlanStatus.valueOf(plan.getStatus().name()));
} else {
entity.setStatus(PlanStatus.PUBLISHED);
}
if (plan.getSecurity() != null) {
entity.setSecurity(PlanSecurityType.valueOf(plan.getSecurity().name()));
} else {
entity.setSecurity(PlanSecurityType.API_KEY);
}
entity.setSecurityDefinition(plan.getSecurityDefinition());
entity.setClosedAt(plan.getClosedAt());
entity.setNeedRedeployAt(plan.getNeedRedeployAt() == null ? plan.getUpdatedAt() : plan.getNeedRedeployAt());
entity.setPublishedAt(plan.getPublishedAt());
entity.setValidation(PlanValidationType.valueOf(plan.getValidation().name()));
entity.setCharacteristics(plan.getCharacteristics());
entity.setCommentRequired(plan.isCommentRequired());
entity.setCommentMessage(plan.getCommentMessage());
entity.setTags(plan.getTags());
entity.setSelectionRule(plan.getSelectionRule());
entity.setGeneralConditions(plan.getGeneralConditions());
return entity;
}
use of io.gravitee.definition.model.flow.Flow in project gravitee-management-rest-api by gravitee-io.
the class FlowServiceImpl method save.
@Override
public List<Flow> save(FlowReferenceType flowReferenceType, String referenceId, List<Flow> flows) {
try {
LOGGER.debug("Save flows for reference {},{}", flowReferenceType, flowReferenceType);
flowRepository.deleteByReference(flowReferenceType, referenceId);
if (flows != null) {
ArrayList<Flow> savedFlows = new ArrayList<>();
int flowOrder = 0;
for (Flow flow : flows) {
final io.gravitee.repository.management.model.flow.Flow convertedFlow = convert(flowReferenceType, referenceId, flow);
convertedFlow.setOrder(flowOrder++);
io.gravitee.repository.management.model.flow.Flow savedFlow = flowRepository.create(convertedFlow);
savedFlows.add(convert(savedFlow));
}
}
return flows;
} catch (TechnicalException ex) {
final String error = "An error occurs while save flows";
LOGGER.error(error, ex);
throw new TechnicalManagementException(error, ex);
}
}
use of io.gravitee.definition.model.flow.Flow in project gravitee-management-rest-api by gravitee-io.
the class OAIToAPIV2Converter method fill.
@Override
protected SwaggerApiEntity fill(SwaggerApiEntity apiEntity, OpenAPI oai) {
// flows
apiEntity.setGraviteeDefinitionVersion(DefinitionVersion.V2.getLabel());
if (swaggerDescriptor.isWithPolicyPaths()) {
List<Flow> allFlows = new ArrayList();
oai.getPaths().forEach((key, pathItem) -> {
String path = key.replaceAll("\\{(.[^/\\}]*)\\}", ":$1");
Map<PathItem.HttpMethod, Operation> operations = pathItem.readOperationsMap();
operations.forEach((httpMethod, operation) -> {
final Flow flow = createFlow(path, Collections.singleton(HttpMethod.valueOf(httpMethod.name())));
getVisitors().forEach((Consumer<OAIOperationVisitor>) oaiOperationVisitor -> {
Optional<Policy> policy = (Optional<Policy>) oaiOperationVisitor.visit(oai, operation);
if (policy.isPresent()) {
final Step step = new Step();
step.setName(policy.get().getName());
step.setEnabled(true);
step.setDescription(operation.getSummary() == null ? (operation.getOperationId() == null ? operation.getDescription() : operation.getOperationId()) : operation.getSummary());
step.setPolicy(policy.get().getName());
String configuration = clearNullValues(policy.get().getConfiguration());
step.setConfiguration(configuration);
String scope = getScope(configuration);
if (scope != null && scope.toLowerCase().equals("response")) {
flow.getPost().add(step);
} else {
flow.getPre().add(step);
}
}
});
allFlows.add(flow);
});
});
apiEntity.setFlows(allFlows);
if (swaggerDescriptor.isWithPathMapping() && allFlows.size() > 0) {
apiEntity.setPathMappings(allFlows.stream().map(flow -> flow.getPath()).collect(Collectors.toSet()));
}
}
final String defaultDeclaredPath = "/";
if (!swaggerDescriptor.isWithPathMapping()) {
apiEntity.setPathMappings(singleton(defaultDeclaredPath));
}
return apiEntity;
}
Aggregations