@Override protected void loadInternal() { val localDomains = new ConcurrentHashMap<String, TreeSet<RegisteredService>>(); getAllServices().forEach(r -> addToDomain(r, localDomains)); this.domains.clear(); this.domains.putAll(localDomains); }
@Override protected Collection<RegisteredService> getCandidateServicesToMatch(final String serviceId) { val mappedDomain = StringUtils.isNotBlank(serviceId) ? extractDomain(serviceId) : StringUtils.EMPTY; LOGGER.debug("Domain mapped to the service identifier is [{}]", mappedDomain); val domain = domains.containsKey(mappedDomain) ? mappedDomain : DEFAULT_DOMAIN_NAME; LOGGER.debug("Looking up services under domain [{}] for service identifier [{}]", domain, serviceId); val registeredServices = getServicesForDomain(domain); if (registeredServices == null || registeredServices.isEmpty()) { LOGGER.debug("No services could be located for domain [{}]", domain); return new ArrayList<>(0); } return registeredServices; }
private String extractDomain(final String service) { val extractor = this.domainExtractor.matcher(service.toLowerCase()); return extractor.lookingAt() ? validateDomain(extractor.group(1)) : "default"; }
@ConditionalOnMissingBean(name = "servicesManager") @Bean @RefreshScope public ServicesManager servicesManager() { val managementType = casProperties.getServiceRegistry().getManagementType(); val activeProfiles = Arrays.stream(environment.getActiveProfiles()).collect(Collectors.toSet()); if (managementType == ServiceRegistryProperties.ServiceManagementTypes.DOMAIN) { LOGGER.trace("Managing CAS service definitions via domains"); return new DomainServicesManager(serviceRegistry(), eventPublisher, activeProfiles); } return new DefaultServicesManager(serviceRegistry(), eventPublisher, activeProfiles); }
private void addToDomain(final RegisteredService r, final Map<String, TreeSet<RegisteredService>> map) { val domain = extractDomain(r.getServiceId()); val services = map.containsKey(domain) ? map.get(domain) : new TreeSet<RegisteredService>(); LOGGER.debug("Added service [{}] mapped to domain definition [{}]", r, domain); services.add(r); map.put(domain, services); } }
@Override protected void saveInternal(final RegisteredService service) { addToDomain(service, this.domains); }
private ServicesManager createJSONServiceManager(final GitUtil git) { val path = Paths.get(git.repoPath()); val serviceRegistryDAO = new JsonServiceRegistry(path, false, null, null, namingStrategy); val manager = (ServicesManager) (casProperties.getServiceRegistry().getManagementType() == ServiceRegistryProperties.ServiceManagementTypes.DOMAIN ? new DomainServicesManager(serviceRegistryDAO, null, new HashSet<>()) : new DefaultServicesManager(serviceRegistryDAO, null, new HashSet<>())); manager.load(); return manager; }
@Override protected void deleteInternal(final RegisteredService service) { val domain = extractDomain(service.getServiceId()); this.domains.get(domain).remove(service); }