@Override public Object generate(final Object target, final Method method, final Object... params) { return tenantAware.getCurrentTenant().toUpperCase(); }
@Override public <E extends TenantAwareBaseEntity> E findEntity(final String tenant, final Long id, final Class<E> entityType) { return tenantAware.runAsTenant(tenant, () -> entityManager.find(entityType, id)); }
@Override public Object generate(final Object target, final Method method, final Object... params) { return tenantAware.getCurrentTenant().toUpperCase(); }
@Override public <E extends TenantAwareBaseEntity> E findEntity(final String tenant, final Long id, final Class<E> entityType) { return tenantAware.runAsTenant(tenant, () -> entityManager.find(entityType, id)); }
@Override public TenantMetaData getTenantMetadata() { if (tenantAware.getCurrentTenant() == null) { throw new IllegalStateException("Tenant not set"); } return getTenantMetadata(tenantAware.getCurrentTenant()); }
@Override public boolean isEnable(final DmfTenantSecurityToken secruityToken) { return tenantAware.runAsTenant(secruityToken.getTenant(), configurationKeyTenantRunner); }
@Override public TenantMetaData getTenantMetadata() { if (tenantAware.getCurrentTenant() == null) { throw new IllegalStateException("Tenant not set"); } return getTenantMetadata(tenantAware.getCurrentTenant()); }
@Override public Object getPreAuthenticatedCredentials(final DmfTenantSecurityToken secruityToken) { final String authorityNameConfigurationValue = tenantAware.runAsTenant(secruityToken.getTenant(), sslIssuerNameConfigTenantRunner); String controllerId = secruityToken.getControllerId(); // in case of legacy download artifact, the controller ID is not in the // URL path, so then we just use the common name header if (controllerId == null || "anonymous".equals(controllerId)) { controllerId = secruityToken.getHeader(caCommonNameHeader); } final List<String> knownHashes = splitMultiHashBySemicolon(authorityNameConfigurationValue); final String cntlId = controllerId; return knownHashes.stream().map(hashItem -> new HeaderAuthentication(cntlId, hashItem)) .collect(Collectors.toSet()); }
@Override protected Collection<String> getCacheNames(final CacheOperationInvocationContext<?> context) { return super.getCacheNames(context).stream() .map(cacheName -> tenantAware.getCurrentTenant() + "." + cacheName).collect(Collectors.toList()); } }
try { LOG.debug("entering system code execution"); return tenantAware.runAsTenant(tenant, () -> { try { setSystemContext(SecurityContextHolder.getContext());
/** * @return * @see org.springframework.cache.Cache#getName() */ @Override public String getName() { return tenantAware.getCurrentTenant() + "." + delegate.getName(); }
/** * Flush the update queue by means to persisting * {@link Target#getLastTargetQuery()}. */ private void flushUpdateQueue() { LOG.debug("Run flushUpdateQueue."); final int size = queue.size(); if (size <= 0) { return; } LOG.debug("{} events in flushUpdateQueue.", size); final Set<TargetPoll> events = Sets.newHashSetWithExpectedSize(queue.size()); final int drained = queue.drainTo(events); if (drained <= 0) { return; } try { events.stream().collect(Collectors.groupingBy(TargetPoll::getTenant)).forEach((tenant, polls) -> { final TransactionCallback<Void> createTransaction = status -> updateLastTargetQueries(tenant, polls); tenantAware.runAsTenant(tenant, () -> runInNewTransaction("flushUpdateQueue", createTransaction)); }); } catch (final RuntimeException ex) { LOG.error("Failed to persist UpdateQueue content.", ex); return; } LOG.debug("{} events persisted.", drained); }
@Override public Optional<AbstractDbArtifact> loadArtifactBinary(final String sha1Hash) { return Optional.ofNullable(artifactRepository.getArtifactBySha1(tenantAware.getCurrentTenant(), sha1Hash)); }
/** * Flush the update queue by means to persisting * {@link Target#getLastTargetQuery()}. */ private void flushUpdateQueue() { LOG.debug("Run flushUpdateQueue."); final int size = queue.size(); if (size <= 0) { return; } LOG.debug("{} events in flushUpdateQueue.", size); final Set<TargetPoll> events = Sets.newHashSetWithExpectedSize(queue.size()); final int drained = queue.drainTo(events); if (drained <= 0) { return; } try { events.stream().collect(Collectors.groupingBy(TargetPoll::getTenant)).forEach((tenant, polls) -> { final TransactionCallback<Void> createTransaction = status -> updateLastTargetQueries(tenant, polls); tenantAware.runAsTenant(tenant, () -> DeploymentHelper.runInNewTransaction(txManager, "flushUpdateQueue", createTransaction)); }); } catch (final RuntimeException ex) { LOG.error("Failed to persist UpdateQueue content.", ex); return; } LOG.debug("{} events persisted.", drained); }
@Override // Exception squid:S923 - override @SuppressWarnings({ "squid:S923" }) public Object generate(final Object target, final Method method, final Object... params) { final String initialTenantCreation = createInitialTenant.get(); if (initialTenantCreation == null) { return SimpleKeyGenerator.generateKey(tenantAware.getCurrentTenant().toUpperCase(), tenantAware.getCurrentTenant().toUpperCase()); } return SimpleKeyGenerator.generateKey(initialTenantCreation.toUpperCase(), initialTenantCreation.toUpperCase()); } }
@Override public HeaderAuthentication getPreAuthenticatedCredentials(final DmfTenantSecurityToken secruityToken) { final String gatewayToken = tenantAware.runAsTenant(secruityToken.getTenant(), gatewaySecurityTokenKeyConfigRunner); return new HeaderAuthentication(secruityToken.getControllerId(), gatewayToken); }
@Override public Optional<AbstractDbArtifact> loadArtifactBinary(final String sha1Hash) { return Optional.ofNullable(artifactRepository.getArtifactBySha1(tenantAware.getCurrentTenant(), sha1Hash)); }
@EventListener(classes = RolloutGroupDeletedEvent.class) void invalidateCachedTotalTargetCountOnRolloutGroupDelete(final RolloutGroupDeletedEvent event) { final Cache cache = tenantAware.runAsTenant(event.getTenant(), () -> cacheManager.getCache(CACHE_GR_NAME)); cache.evict(event.getEntityId()); }
@Override // Exception squid:S923 - override @SuppressWarnings({ "squid:S923" }) public Object generate(final Object target, final Method method, final Object... params) { final String initialTenantCreation = createInitialTenant.get(); if (initialTenantCreation == null) { return SimpleKeyGenerator.generateKey(tenantAware.getCurrentTenant().toUpperCase(), tenantAware.getCurrentTenant().toUpperCase()); } return SimpleKeyGenerator.generateKey(initialTenantCreation.toUpperCase(), initialTenantCreation.toUpperCase()); } }
@EventListener(classes = RolloutDeletedEvent.class) void invalidateCachedTotalTargetCountOnRolloutDelete(final RolloutDeletedEvent event) { final Cache cache = tenantAware.runAsTenant(event.getTenant(), () -> cacheManager.getCache(CACHE_RO_NAME)); cache.evict(event.getEntityId()); }