Search in sources :

Example 6 with Flow

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;
}
Also used : UpdateOrganizationEntity(io.gravitee.rest.api.model.UpdateOrganizationEntity) OrganizationEntity(io.gravitee.rest.api.model.OrganizationEntity) FlowMode(io.gravitee.definition.model.FlowMode) Flow(io.gravitee.definition.model.flow.Flow)

Example 7 with Flow

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;
}
Also used : io.gravitee.rest.api.service(io.gravitee.rest.api.service) java.util(java.util) ApiLifecycleState(io.gravitee.rest.api.model.api.ApiLifecycleState) Flow(io.gravitee.definition.model.flow.Flow) TechnicalException(io.gravitee.repository.exceptions.TechnicalException) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) Rule(io.gravitee.definition.model.Rule) Plan(io.gravitee.repository.management.model.Plan) PLAN(io.gravitee.repository.management.model.Audit.AuditProperties.PLAN) UpdateApiEntity(io.gravitee.rest.api.model.api.UpdateApiEntity) io.gravitee.rest.api.model(io.gravitee.rest.api.model) TypeReference(com.fasterxml.jackson.core.type.TypeReference) UuidString(io.gravitee.rest.api.service.common.UuidString) ApiEntity(io.gravitee.rest.api.model.api.ApiEntity) PlanQuery(io.gravitee.rest.api.model.plan.PlanQuery) Logger(org.slf4j.Logger) Collections.emptySet(java.util.Collections.emptySet) ParameterReferenceType(io.gravitee.rest.api.model.parameters.ParameterReferenceType) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) IOException(java.io.IOException) Collectors(java.util.stream.Collectors) PlanRepository(io.gravitee.repository.management.api.PlanRepository) Key(io.gravitee.rest.api.model.parameters.Key) PlanSynchronizationProcessor(io.gravitee.rest.api.service.processor.PlanSynchronizationProcessor) Collectors.toList(java.util.stream.Collectors.toList) Component(org.springframework.stereotype.Component) DefinitionVersion(io.gravitee.definition.model.DefinitionVersion) io.gravitee.rest.api.service.exceptions(io.gravitee.rest.api.service.exceptions) AuditEvent(io.gravitee.repository.management.model.Plan.AuditEvent) UpdateApiEntity(io.gravitee.rest.api.model.api.UpdateApiEntity) ApiEntity(io.gravitee.rest.api.model.api.ApiEntity) Collectors.toList(java.util.stream.Collectors.toList) UuidString(io.gravitee.rest.api.service.common.UuidString) Rule(io.gravitee.definition.model.Rule) IOException(java.io.IOException)

Example 8 with Flow

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);
    }
}
Also used : TechnicalException(io.gravitee.repository.exceptions.TechnicalException) io.gravitee.definition.model.flow(io.gravitee.definition.model.flow) io.gravitee.repository.management.model.flow(io.gravitee.repository.management.model.flow) TechnicalManagementException(io.gravitee.rest.api.service.exceptions.TechnicalManagementException) Flow(io.gravitee.definition.model.flow.Flow)

Example 9 with Flow

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;
}
Also used : Step(io.gravitee.definition.model.flow.Step) GroupService(io.gravitee.rest.api.service.GroupService) java.util(java.util) PathOperator(io.gravitee.definition.model.flow.PathOperator) Flow(io.gravitee.definition.model.flow.Flow) PathItem(io.swagger.v3.oas.models.PathItem) Operation(io.swagger.v3.oas.models.Operation) PolicyOperationVisitorManager(io.gravitee.rest.api.service.impl.swagger.policy.PolicyOperationVisitorManager) Collectors(java.util.stream.Collectors) Operator(io.gravitee.definition.model.flow.Operator) OAIOperationVisitor(io.gravitee.rest.api.service.impl.swagger.visitor.v3.OAIOperationVisitor) Consumer(java.util.function.Consumer) ImportSwaggerDescriptorEntity(io.gravitee.rest.api.model.ImportSwaggerDescriptorEntity) PolicyHelper.clearNullValues(io.gravitee.rest.api.service.validator.PolicyHelper.clearNullValues) Collections.singleton(java.util.Collections.singleton) HttpMethod(io.gravitee.common.http.HttpMethod) DefinitionVersion(io.gravitee.definition.model.DefinitionVersion) OpenAPI(io.swagger.v3.oas.models.OpenAPI) SwaggerApiEntity(io.gravitee.rest.api.model.api.SwaggerApiEntity) PolicyHelper.getScope(io.gravitee.rest.api.service.validator.PolicyHelper.getScope) Policy(io.gravitee.policy.api.swagger.Policy) TagService(io.gravitee.rest.api.service.TagService) Policy(io.gravitee.policy.api.swagger.Policy) Operation(io.swagger.v3.oas.models.Operation) Step(io.gravitee.definition.model.flow.Step) OAIOperationVisitor(io.gravitee.rest.api.service.impl.swagger.visitor.v3.OAIOperationVisitor) HttpMethod(io.gravitee.common.http.HttpMethod) Flow(io.gravitee.definition.model.flow.Flow)

Aggregations

Flow (io.gravitee.definition.model.flow.Flow)9 HttpMethod (io.gravitee.common.http.HttpMethod)4 PathOperator (io.gravitee.definition.model.flow.PathOperator)4 Collectors (java.util.stream.Collectors)4 DefinitionVersion (io.gravitee.definition.model.DefinitionVersion)3 Step (io.gravitee.definition.model.flow.Step)3 java.util (java.util)3 FlowMode (io.gravitee.definition.model.FlowMode)2 Rule (io.gravitee.definition.model.Rule)2 Operator (io.gravitee.definition.model.flow.Operator)2 TechnicalException (io.gravitee.repository.exceptions.TechnicalException)2 io.gravitee.rest.api.model (io.gravitee.rest.api.model)2 ApiEntity (io.gravitee.rest.api.model.api.ApiEntity)2 SwaggerApiEntity (io.gravitee.rest.api.model.api.SwaggerApiEntity)2 PolicyHelper.clearNullValues (io.gravitee.rest.api.service.validator.PolicyHelper.clearNullValues)2 IOException (java.io.IOException)2 NotNull (org.jetbrains.annotations.NotNull)2 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 TypeReference (com.fasterxml.jackson.core.type.TypeReference)1 JsonNode (com.fasterxml.jackson.databind.JsonNode)1