@Slf4j
@Component
public class OrganizationRestTemplateClient {
private RestTemplate restTemplate;
private OrganizationRedisRepository redisRepository;
private Organization checkRedisCache(String organizationId) {
try {
return redisRepository
.findById(organizationId)
.orElse(null);
} catch (Exception ex) {
log.error("Error encountered while trying to retrieve organization{} check Redis Cache. Exception {}",
organizationId, ex);
return null;
}
}
private void cacheOrganizationObject(Organization organization) {
try {
redisRepository.save(organization);
} catch (Exception ex) {
log.error("Unable to cache organization {} in Redis.Exception {}",
organization.getId(), ex);
}
}
public Organization getOrganization(String organizationId) {
log.debug("In Licensing Service.getOrganization: {}",
UserContextHolder.getContext().getCorrelationId());
Organization organization = checkRedisCache(organizationId);
if (organization != null) {
log.debug("I have successfully retrieved an organization {} from the redis cache: {}",
organizationId, organization);
return organization;
}
log.debug("Unable to locate organization from the redis cache:{}.", organizationId);
organization = restTemplate.getForObject(
"http://{applicationId}/v1/organization/{organizationId}",
Organization.class,
"organization-service",
organizationId);
if (organization != null) {
cacheOrganizationObject(organization);
}
return organization;
}
@Autowired
public void setRestTemplate(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@Autowired
public void setRedisRepository(OrganizationRedisRepository redisRepository) {
this.redisRepository = redisRepository;
}
}