use of io.gravitee.repository.management.model.Visibility.PUBLIC 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.repository.management.model.Visibility.PUBLIC in project gravitee-management-rest-api by gravitee-io.
the class ApiServiceImpl method findPrimaryOwner.
public PrimaryOwnerEntity findPrimaryOwner(JsonNode apiDefinition, String userId) {
ApiPrimaryOwnerMode poMode = ApiPrimaryOwnerMode.valueOf(this.parameterService.find(Key.API_PRIMARY_OWNER_MODE, ParameterReferenceType.ENVIRONMENT));
PrimaryOwnerEntity primaryOwnerFromDefinition = findPrimaryOwnerFromApiDefinition(apiDefinition);
switch(poMode) {
case USER:
if (primaryOwnerFromDefinition == null || ApiPrimaryOwnerMode.GROUP.name().equals(primaryOwnerFromDefinition.getType())) {
return new PrimaryOwnerEntity(userService.findById(userId));
}
if (ApiPrimaryOwnerMode.USER.name().equals(primaryOwnerFromDefinition.getType())) {
try {
return new PrimaryOwnerEntity(userService.findById(primaryOwnerFromDefinition.getId()));
} catch (UserNotFoundException unfe) {
return new PrimaryOwnerEntity(userService.findById(userId));
}
}
break;
case GROUP:
if (primaryOwnerFromDefinition == null) {
return getFirstPoGroupUserBelongsTo(userId);
}
if (ApiPrimaryOwnerMode.GROUP.name().equals(primaryOwnerFromDefinition.getType())) {
try {
return new PrimaryOwnerEntity(groupService.findById(primaryOwnerFromDefinition.getId()));
} catch (GroupNotFoundException unfe) {
return getFirstPoGroupUserBelongsTo(userId);
}
}
if (ApiPrimaryOwnerMode.USER.name().equals(primaryOwnerFromDefinition.getType())) {
try {
final String poUserId = primaryOwnerFromDefinition.getId();
userService.findById(poUserId);
final Set<GroupEntity> poGroupsOfPoUser = groupService.findByUser(poUserId).stream().filter(group -> group.getApiPrimaryOwner() != null && !group.getApiPrimaryOwner().isEmpty()).collect(toSet());
if (poGroupsOfPoUser.isEmpty()) {
return getFirstPoGroupUserBelongsTo(userId);
}
return new PrimaryOwnerEntity(poGroupsOfPoUser.iterator().next());
} catch (UserNotFoundException unfe) {
return getFirstPoGroupUserBelongsTo(userId);
}
}
break;
case HYBRID:
default:
if (primaryOwnerFromDefinition == null) {
return new PrimaryOwnerEntity(userService.findById(userId));
}
if (ApiPrimaryOwnerMode.GROUP.name().equals(primaryOwnerFromDefinition.getType())) {
try {
return new PrimaryOwnerEntity(groupService.findById(primaryOwnerFromDefinition.getId()));
} catch (GroupNotFoundException unfe) {
try {
return getFirstPoGroupUserBelongsTo(userId);
} catch (NoPrimaryOwnerGroupForUserException ex) {
return new PrimaryOwnerEntity(userService.findById(userId));
}
}
}
if (ApiPrimaryOwnerMode.USER.name().equals(primaryOwnerFromDefinition.getType())) {
try {
return new PrimaryOwnerEntity(userService.findById(primaryOwnerFromDefinition.getId()));
} catch (UserNotFoundException unfe) {
return new PrimaryOwnerEntity(userService.findById(userId));
}
}
break;
}
return new PrimaryOwnerEntity(userService.findById(userId));
}
use of io.gravitee.repository.management.model.Visibility.PUBLIC 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);
}
}
use of io.gravitee.repository.management.model.Visibility.PUBLIC in project gravitee-management-rest-api by gravitee-io.
the class ApiServiceImpl method isSynchronized.
@Override
public boolean isSynchronized(String apiId) {
try {
// 1_ First, check the API state
ApiEntity api = findById(apiId);
Map<String, Object> properties = new HashMap<>();
properties.put(Event.EventProperties.API_ID.getValue(), apiId);
io.gravitee.common.data.domain.Page<EventEntity> events = eventService.search(Arrays.asList(PUBLISH_API, EventType.UNPUBLISH_API), properties, 0, 0, 0, 1);
if (!events.getContent().isEmpty()) {
// According to page size, we know that we have only one element in the list
EventEntity lastEvent = events.getContent().get(0);
// TODO: Done only for backward compatibility with 0.x. Must be removed later (1.1.x ?)
boolean enabled = objectMapper.getDeserializationConfig().isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Api payloadEntity = objectMapper.readValue(lastEvent.getPayload(), Api.class);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, enabled);
final ApiEntity deployedApi = convert(payloadEntity);
// Remove policy description from sync check
removeDescriptionFromPolicies(api);
removeDescriptionFromPolicies(deployedApi);
boolean sync = apiSynchronizationProcessor.processCheckSynchronization(deployedApi, api);
// but only for published or closed plan
if (sync) {
Set<PlanEntity> plans = planService.findByApi(api.getId());
sync = plans.stream().filter(plan -> (plan.getStatus() != PlanStatus.STAGING)).filter(plan -> plan.getNeedRedeployAt().after(api.getDeployedAt())).count() == 0;
}
return sync;
}
} catch (Exception e) {
LOGGER.error("An error occurs while trying to check API synchronization state {}", apiId, e);
}
return false;
}
use of io.gravitee.repository.management.model.Visibility.PUBLIC in project gravitee-management-rest-api by gravitee-io.
the class ApiServiceImpl method addGroup.
@Override
public void addGroup(String apiId, String group) {
try {
LOGGER.debug("Add 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));
Set<String> groups = api.getGroups();
if (groups == null) {
groups = new HashSet<>();
api.setGroups(groups);
}
groups.add(group);
apiRepository.update(api);
} catch (TechnicalException ex) {
LOGGER.error("An error occurs while trying to add group {} to API {}: {}", group, apiId, ex);
throw new TechnicalManagementException("An error occurs while trying to add group " + group + " to API " + apiId, ex);
}
}
Aggregations