use of io.gravitee.rest.api.model.WorkflowReferenceType.API in project gravitee-management-rest-api by gravitee-io.
the class ApiService_UpdateTest method shouldNotDuplicateLabels.
@Test
public void shouldNotDuplicateLabels() throws TechnicalException {
prepareUpdate();
when(existingApi.getLabels()).thenReturn(asList("label1", "label1"));
when(api.getDefinition()).thenReturn("{\"id\": \"" + API_ID + "\",\"name\": \"" + API_NAME + "\",\"proxy\": {\"context_path\": \"/old\"} ,\"labels\": [\"public\"]}");
final ApiEntity apiEntity = apiService.update(API_ID, existingApi);
verify(apiRepository).update(argThat(api -> api.getLabels().size() == 1));
assertNotNull(apiEntity);
verify(searchEngineService, times(1)).index(any(), eq(false));
}
use of io.gravitee.rest.api.model.WorkflowReferenceType.API in project gravitee-management-rest-api by gravitee-io.
the class ApiServiceImpl method getPortalHeaders.
@Override
public List<ApiHeaderEntity> getPortalHeaders(String apiId) {
List<ApiHeaderEntity> entities = apiHeaderService.findAll();
ApiModelEntity apiEntity = this.findByIdForTemplates(apiId);
Map<String, Object> model = new HashMap<>();
model.put("api", apiEntity);
entities.forEach(entity -> {
if (entity.getValue().contains("${")) {
String entityValue = this.notificationTemplateService.resolveInlineTemplateWithParam(entity.getId() + entity.getUpdatedAt().toString(), entity.getValue(), model);
entity.setValue(entityValue);
}
});
return entities.stream().filter(apiHeaderEntity -> apiHeaderEntity.getValue() != null && !apiHeaderEntity.getValue().isEmpty()).collect(Collectors.toList());
}
use of io.gravitee.rest.api.model.WorkflowReferenceType.API in project gravitee-management-rest-api by gravitee-io.
the class ApiServiceImpl method convert.
private Api convert(String apiId, UpdateApiEntity updateApiEntity, String apiDefinition) {
Api api = new Api();
api.setId(apiId);
if (updateApiEntity.getVisibility() != null) {
api.setVisibility(Visibility.valueOf(updateApiEntity.getVisibility().toString()));
}
api.setVersion(updateApiEntity.getVersion().trim());
api.setName(updateApiEntity.getName().trim());
api.setDescription(updateApiEntity.getDescription().trim());
api.setPicture(updateApiEntity.getPicture());
api.setBackground(updateApiEntity.getBackground());
api.setDefinition(buildApiDefinition(apiId, apiDefinition, updateApiEntity));
final Set<String> apiCategories = updateApiEntity.getCategories();
if (apiCategories != null) {
final List<CategoryEntity> categories = categoryService.findAll();
final Set<String> newApiCategories = new HashSet<>(apiCategories.size());
for (final String apiCategory : apiCategories) {
final Optional<CategoryEntity> optionalCategory = categories.stream().filter(c -> apiCategory.equals(c.getKey()) || apiCategory.equals(c.getId())).findAny();
optionalCategory.ifPresent(category -> newApiCategories.add(category.getId()));
}
api.setCategories(newApiCategories);
}
if (updateApiEntity.getLabels() != null) {
api.setLabels(new ArrayList<>(new HashSet<>(updateApiEntity.getLabels())));
}
api.setGroups(updateApiEntity.getGroups());
api.setDisableMembershipNotifications(updateApiEntity.isDisableMembershipNotifications());
if (updateApiEntity.getLifecycleState() != null) {
api.setApiLifecycleState(ApiLifecycleState.valueOf(updateApiEntity.getLifecycleState().name()));
}
return api;
}
use of io.gravitee.rest.api.model.WorkflowReferenceType.API in project gravitee-management-rest-api by gravitee-io.
the class ApiServiceImpl method convert.
private List<ApiEntity> convert(final List<Api> apis) throws TechnicalException {
if (apis == null || apis.isEmpty()) {
return Collections.emptyList();
}
RoleEntity primaryOwnerRole = roleService.findPrimaryOwnerRoleByOrganization(GraviteeContext.getCurrentOrganization(), RoleScope.API);
if (primaryOwnerRole == null) {
throw new RoleNotFoundException("API_PRIMARY_OWNER");
}
// find primary owners usernames of each apis
final List<String> apiIds = apis.stream().map(Api::getId).collect(toList());
Set<MemberEntity> memberships = membershipService.getMembersByReferencesAndRole(MembershipReferenceType.API, apiIds, primaryOwnerRole.getId());
int poMissing = apis.size() - memberships.size();
Stream<Api> streamApis = apis.stream();
if (poMissing > 0) {
Set<String> apiMembershipsIds = memberships.stream().map(MemberEntity::getReferenceId).collect(toSet());
apiIds.removeAll(apiMembershipsIds);
Optional<String> optionalApisAsString = apiIds.stream().reduce((a, b) -> a + " / " + b);
String apisAsString = "?";
if (optionalApisAsString.isPresent()) {
apisAsString = optionalApisAsString.get();
}
LOGGER.error("{} apis has no identified primary owners in this list {}.", poMissing, apisAsString);
streamApis = streamApis.filter(api -> !apiIds.contains(api.getId()));
}
Map<String, String> apiToMember = new HashMap<>(memberships.size());
memberships.forEach(membership -> apiToMember.put(membership.getReferenceId(), membership.getId()));
Map<String, PrimaryOwnerEntity> primaryOwnerIdToPrimaryOwnerEntity = new HashMap<>(memberships.size());
final List<String> userIds = memberships.stream().filter(membership -> membership.getType() == MembershipMemberType.USER).map(MemberEntity::getId).collect(toList());
if (userIds != null && !userIds.isEmpty()) {
userService.findByIds(userIds).forEach(userEntity -> primaryOwnerIdToPrimaryOwnerEntity.put(userEntity.getId(), new PrimaryOwnerEntity(userEntity)));
}
final Set<String> groupIds = memberships.stream().filter(membership -> membership.getType() == MembershipMemberType.GROUP).map(MemberEntity::getId).collect(Collectors.toSet());
if (groupIds != null && !groupIds.isEmpty()) {
groupService.findByIds(groupIds).forEach(groupEntity -> primaryOwnerIdToPrimaryOwnerEntity.put(groupEntity.getId(), new PrimaryOwnerEntity(groupEntity)));
}
final List<CategoryEntity> categories = categoryService.findAll();
return streamApis.map(publicApi -> this.convert(publicApi, primaryOwnerIdToPrimaryOwnerEntity.get(apiToMember.get(publicApi.getId())), categories)).collect(toList());
}
use of io.gravitee.rest.api.model.WorkflowReferenceType.API in project gravitee-management-rest-api by gravitee-io.
the class ApiServiceImpl method removeGroup.
@Override
public void removeGroup(String apiId, String group) {
try {
LOGGER.debug("Remove group {} to API {}", group, apiId);
Optional<Api> optApi = apiRepository.findById(apiId);
if (GraviteeContext.getCurrentEnvironment() != null) {
optApi = optApi.filter(result -> result.getEnvironmentId().equals(GraviteeContext.getCurrentEnvironment()));
}
Api api = optApi.orElseThrow(() -> new ApiNotFoundException(apiId));
if (api.getGroups() != null && api.getGroups().remove(group)) {
apiRepository.update(api);
}
} catch (TechnicalException ex) {
LOGGER.error("An error occurs while trying to remove group {} from API {}: {}", group, apiId, ex);
throw new TechnicalManagementException("An error occurs while trying to remove group " + group + " from API " + apiId, ex);
}
}
Aggregations