Search in sources :

Example 1 with Api

use of io.gravitee.repository.management.model.Api in project gravitee-management-rest-api by gravitee-io.

the class ApiService_ExportAsJsonTest method setUp.

@Before
public void setUp() throws TechnicalException {
    PropertyFilter apiMembershipTypeFilter = new ApiPermissionFilter();
    objectMapper.setFilterProvider(new SimpleFilterProvider(Collections.singletonMap("apiMembershipTypeFilter", apiMembershipTypeFilter)));
    Api api = new Api();
    api.setId(API_ID);
    api.setDescription("Gravitee.io");
    when(apiRepository.findById(API_ID)).thenReturn(Optional.of(api));
    PageEntity page = new PageEntity();
    page.setName("My Title");
    page.setOrder(1);
    page.setType(PageType.MARKDOWN.toString());
    page.setContent("Read the doc");
    when(pageService.findApiPagesByApi(API_ID)).thenReturn(Collections.singletonList(new PageListItem()));
    when(pageService.findById(any())).thenReturn(page);
    Membership membership = new Membership();
    membership.setUserId("johndoe");
    membership.setReferenceId(API_ID);
    membership.setReferenceType(MembershipReferenceType.API);
    membership.setRoles(Collections.singletonMap(RoleScope.API.getId(), SystemRole.PRIMARY_OWNER.name()));
    when(membershipRepository.findByReferenceAndRole(eq(MembershipReferenceType.API), eq(API_ID), any(), any())).thenReturn(Collections.singleton(membership));
    MemberEntity memberEntity = new MemberEntity();
    memberEntity.setUsername(membership.getUserId());
    memberEntity.setRole(SystemRole.PRIMARY_OWNER.name());
    when(membershipService.getMembers(eq(MembershipReferenceType.API), eq(API_ID), eq(RoleScope.API))).thenReturn(Collections.singleton(memberEntity));
    UserEntity userEntity = new UserEntity();
    userEntity.setUsername(memberEntity.getId());
    when(userService.findByUsername(memberEntity.getId(), false)).thenReturn(userEntity);
    api.setGroups(Collections.singleton("my-group"));
    GroupEntity groupEntity = new GroupEntity();
    groupEntity.setId("my-group");
    groupEntity.setName("My Group");
    when(groupService.findByIds(api.getGroups())).thenReturn(Collections.singleton(groupEntity));
    PlanEntity publishedPlan = new PlanEntity();
    publishedPlan.setId("plan-id");
    publishedPlan.setApis(Collections.singleton(API_ID));
    publishedPlan.setDescription("free plan");
    publishedPlan.setType(PlanType.API);
    publishedPlan.setSecurity(PlanSecurityType.API_KEY);
    publishedPlan.setValidation(PlanValidationType.AUTO);
    publishedPlan.setStatus(PlanStatus.PUBLISHED);
    Map<String, Path> paths = new HashMap<>();
    Path path = new Path();
    path.setPath("/");
    io.gravitee.definition.model.Rule rule = new io.gravitee.definition.model.Rule();
    rule.setEnabled(true);
    rule.setMethods(Collections.singletonList(HttpMethod.GET));
    Policy policy = new Policy();
    policy.setName("rate-limit");
    String ls = System.lineSeparator();
    policy.setConfiguration("{" + ls + "          \"rate\": {" + ls + "            \"limit\": 1," + ls + "            \"periodTime\": 1," + ls + "            \"periodTimeUnit\": \"SECONDS\"" + ls + "          }" + ls + "        }");
    rule.setPolicy(policy);
    path.setRules(Collections.singletonList(rule));
    paths.put("/", path);
    publishedPlan.setPaths(paths);
    PlanEntity closedPlan = new PlanEntity();
    closedPlan.setId("closedPlan-id");
    closedPlan.setApis(Collections.singleton(API_ID));
    closedPlan.setDescription("free closedPlan");
    closedPlan.setType(PlanType.API);
    closedPlan.setSecurity(PlanSecurityType.API_KEY);
    closedPlan.setValidation(PlanValidationType.AUTO);
    closedPlan.setStatus(PlanStatus.CLOSED);
    closedPlan.setPaths(paths);
    Set<PlanEntity> set = new HashSet<>();
    set.add(publishedPlan);
    set.add(closedPlan);
    when(planService.findByApi(API_ID)).thenReturn(set);
}
Also used : Path(io.gravitee.definition.model.Path) Policy(io.gravitee.definition.model.Policy) SimpleFilterProvider(com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider) Membership(io.gravitee.repository.management.model.Membership) PropertyFilter(com.fasterxml.jackson.databind.ser.PropertyFilter) ApiPermissionFilter(io.gravitee.management.service.jackson.filter.ApiPermissionFilter) io.gravitee.management.model(io.gravitee.management.model) Api(io.gravitee.repository.management.model.Api) Before(org.junit.Before)

Example 2 with Api

use of io.gravitee.repository.management.model.Api in project gravitee-management-rest-api by gravitee-io.

the class SyncManager method refresh.

public void refresh() {
    logger.debug("Refreshing state...");
    try {
        // Extract all registered APIs
        Map<String, io.gravitee.repository.management.model.Api> apis = apiRepository.findAll().stream().collect(Collectors.toMap(io.gravitee.repository.management.model.Api::getId, api -> api));
        // Get last event for each API
        Map<String, Event> events = new HashMap<>();
        apis.keySet().forEach(api -> {
            Event event = getLastEvent(api);
            events.put(api, event);
        });
        // Determine API which must be stopped and stop them
        events.entrySet().stream().filter(apiEvent -> {
            Event event = apiEvent.getValue();
            return event != null && (event.getType() == EventType.STOP_API || event.getType() == EventType.UNPUBLISH_API);
        }).forEach(apiEvent -> apiManager.undeploy(apiEvent.getKey()));
        // Determine API which must be deployed
        events.entrySet().stream().filter(apiEvent -> {
            Event event = apiEvent.getValue();
            return event != null && (event.getType() == EventType.START_API || event.getType() == EventType.PUBLISH_API);
        }).forEach(apiEvent -> {
            try {
                // Read API definition from event
                io.gravitee.repository.management.model.Api payloadApi = objectMapper.readValue(apiEvent.getValue().getPayload(), io.gravitee.repository.management.model.Api.class);
                // API to deploy
                ApiEntity apiToDeploy = convert(payloadApi);
                if (apiToDeploy != null) {
                    // Get deployed API
                    ApiEntity deployedApi = apiManager.get(apiToDeploy.getId());
                    // API is not yet deployed, so let's do it !
                    if (deployedApi == null) {
                        apiManager.deploy(apiToDeploy);
                    } else {
                        if (deployedApi.getDeployedAt().before(apiToDeploy.getDeployedAt())) {
                            apiManager.update(apiToDeploy);
                        }
                    }
                }
            } catch (IOException ioe) {
                logger.error("Error while determining deployed APIs store into events payload", ioe);
            }
        });
        lastRefreshAt = System.currentTimeMillis();
    } catch (TechnicalException te) {
        logger.error("Unable to sync instance", te);
    }
}
Also used : EventRepository(io.gravitee.repository.management.api.EventRepository) Logger(org.slf4j.Logger) Event(io.gravitee.repository.management.model.Event) ApiEntity(io.gravitee.management.model.ApiEntity) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) TechnicalException(io.gravitee.repository.exceptions.TechnicalException) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) EventCriteria(io.gravitee.repository.management.api.search.EventCriteria) IOException(java.io.IOException) HashMap(java.util.HashMap) Collectors(java.util.stream.Collectors) LifecycleState(io.gravitee.repository.management.model.LifecycleState) List(java.util.List) Api(io.gravitee.repository.management.model.Api) EventType(io.gravitee.repository.management.model.EventType) ApiRepository(io.gravitee.repository.management.api.ApiRepository) PageableBuilder(io.gravitee.repository.management.api.search.builder.PageableBuilder) Map(java.util.Map) Lifecycle(io.gravitee.common.component.Lifecycle) TechnicalException(io.gravitee.repository.exceptions.TechnicalException) HashMap(java.util.HashMap) ApiEntity(io.gravitee.management.model.ApiEntity) IOException(java.io.IOException) Api(io.gravitee.repository.management.model.Api) Event(io.gravitee.repository.management.model.Event) Api(io.gravitee.repository.management.model.Api)

Aggregations

Api (io.gravitee.repository.management.model.Api)2 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 PropertyFilter (com.fasterxml.jackson.databind.ser.PropertyFilter)1 SimpleFilterProvider (com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider)1 Lifecycle (io.gravitee.common.component.Lifecycle)1 Path (io.gravitee.definition.model.Path)1 Policy (io.gravitee.definition.model.Policy)1 io.gravitee.management.model (io.gravitee.management.model)1 ApiEntity (io.gravitee.management.model.ApiEntity)1 ApiPermissionFilter (io.gravitee.management.service.jackson.filter.ApiPermissionFilter)1 TechnicalException (io.gravitee.repository.exceptions.TechnicalException)1 ApiRepository (io.gravitee.repository.management.api.ApiRepository)1 EventRepository (io.gravitee.repository.management.api.EventRepository)1 EventCriteria (io.gravitee.repository.management.api.search.EventCriteria)1 PageableBuilder (io.gravitee.repository.management.api.search.builder.PageableBuilder)1 Event (io.gravitee.repository.management.model.Event)1 EventType (io.gravitee.repository.management.model.EventType)1 LifecycleState (io.gravitee.repository.management.model.LifecycleState)1 Membership (io.gravitee.repository.management.model.Membership)1 IOException (java.io.IOException)1