refactor: inline private normalize() wrappers; use StringNormalizer.toLowerCaseRoot() directly

Remove boilerplate private normalize(String) wrappers from:
- ChannelDirectoryService
- ChannelSettingsService
- AccountService
- AuditLogService (keepsg normalizeFilter() which adds null-if-blank semantics)

Add StringNormalizer import to AuditLogService; remove now-unused Locale import.
This commit is contained in:
2026-04-24 16:13:27 +02:00
parent 41ba1e242e
commit 7b72cbafc9
4 changed files with 29 additions and 43 deletions
@@ -54,7 +54,7 @@ public class AccountService {
@Transactional
public void deleteAccount(String username) {
String normalized = normalize(username);
String normalized = StringNormalizer.toLowerCaseRoot(username);
if (normalized == null || normalized.isBlank()) {
return;
}
@@ -95,7 +95,4 @@ public class AccountService {
jdbcTemplate.update("DELETE FROM SPRING_SESSION WHERE PRINCIPAL_NAME = ?", username);
}
private String normalize(String value) {
return StringNormalizer.toLowerCaseRoot(value);
}
}
@@ -3,7 +3,7 @@ package dev.kruhlmann.imgfloat.service;
import dev.kruhlmann.imgfloat.model.db.audit.AuditLogEntry;
import dev.kruhlmann.imgfloat.repository.audit.AuditLogRepository;
import dev.kruhlmann.imgfloat.util.LogSanitizer;
import java.util.Locale;
import dev.kruhlmann.imgfloat.util.StringNormalizer;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
@@ -25,11 +25,11 @@ public class AuditLogService {
}
public void recordEntry(String broadcaster, String actor, String action, String details) {
String normalizedBroadcaster = normalize(broadcaster);
String normalizedBroadcaster = StringNormalizer.toLowerCaseRoot(broadcaster);
if (normalizedBroadcaster == null || normalizedBroadcaster.isBlank()) {
return;
}
String normalizedActor = normalize(actor);
String normalizedActor = StringNormalizer.toLowerCaseRoot(actor);
if (normalizedActor == null || normalizedActor.isBlank()) {
normalizedActor = DEFAULT_ACTOR;
}
@@ -60,7 +60,7 @@ public class AuditLogService {
int page,
int size
) {
String normalizedBroadcaster = normalize(broadcaster);
String normalizedBroadcaster = StringNormalizer.toLowerCaseRoot(broadcaster);
if (normalizedBroadcaster == null || normalizedBroadcaster.isBlank()) {
return Page.empty();
}
@@ -80,19 +80,15 @@ public class AuditLogService {
}
public void deleteEntriesForBroadcaster(String broadcaster) {
String normalizedBroadcaster = normalize(broadcaster);
String normalizedBroadcaster = StringNormalizer.toLowerCaseRoot(broadcaster);
if (normalizedBroadcaster == null || normalizedBroadcaster.isBlank()) {
return;
}
auditLogRepository.deleteByBroadcaster(normalizedBroadcaster);
}
private String normalize(String value) {
return value == null ? null : value.toLowerCase(Locale.ROOT);
}
private String normalizeFilter(String value) {
String normalized = normalize(value);
String normalized = StringNormalizer.toLowerCaseRoot(value);
return normalized == null || normalized.isBlank() ? null : normalized;
}
}
@@ -122,12 +122,12 @@ public class ChannelDirectoryService {
}
public Channel getOrCreateChannel(String broadcaster) {
String normalized = normalize(broadcaster);
String normalized = StringNormalizer.toLowerCaseRoot(broadcaster);
return channelRepository.findById(normalized).orElseGet(() -> channelRepository.save(new Channel(normalized)));
}
public List<String> searchBroadcasters(String query) {
String q = normalize(query);
String q = StringNormalizer.toLowerCaseRoot(query);
return channelRepository
.findTop50ByBroadcasterContainingIgnoreCaseOrderByBroadcasterAsc(q == null ? "" : q)
.stream()
@@ -137,7 +137,7 @@ public class ChannelDirectoryService {
public boolean addAdmin(String broadcaster, String username, String actor) {
Channel channel = getOrCreateChannel(broadcaster);
String normalizedUsername = normalize(username);
String normalizedUsername = StringNormalizer.toLowerCaseRoot(username);
boolean added = channel.addAdmin(normalizedUsername);
if (added) {
channelRepository.saveAndFlush(channel);
@@ -154,7 +154,7 @@ public class ChannelDirectoryService {
public boolean removeAdmin(String broadcaster, String username, String actor) {
Channel channel = getOrCreateChannel(broadcaster);
String normalizedUsername = normalize(username);
String normalizedUsername = StringNormalizer.toLowerCaseRoot(username);
boolean removed = channel.removeAdmin(normalizedUsername);
if (removed) {
channelRepository.saveAndFlush(channel);
@@ -170,12 +170,12 @@ public class ChannelDirectoryService {
}
public Collection<AssetView> getAssetsForAdmin(String broadcaster) {
String normalized = normalize(broadcaster);
String normalized = StringNormalizer.toLowerCaseRoot(broadcaster);
return sortAndMapAssets(normalized, assetRepository.findByBroadcaster(normalized));
}
public Collection<AssetView> getVisibleAssets(String broadcaster) {
String normalized = normalize(broadcaster);
String normalized = StringNormalizer.toLowerCaseRoot(broadcaster);
List<Asset> assets = assetRepository.findByBroadcaster(normalized);
List<String> visualIds = assets
.stream()
@@ -335,7 +335,7 @@ public class ChannelDirectoryService {
@Transactional
public Optional<AssetView> updateCodeAsset(String broadcaster, String assetId, CodeAssetRequest request, String actor) {
validateCodeAssetSource(request.getSource());
String normalized = normalize(broadcaster);
String normalized = StringNormalizer.toLowerCaseRoot(broadcaster);
byte[] bytes = request.getSource().getBytes(StandardCharsets.UTF_8);
enforceUploadLimit(bytes.length);
List<String> allowedDomains = normalizeAllowedDomains(request.getAllowedDomains());
@@ -683,7 +683,7 @@ public class ChannelDirectoryService {
@Transactional
public Optional<AssetView> updateTransform(String broadcaster, String assetId, TransformRequest req, String actor) {
String normalized = normalize(broadcaster);
String normalized = StringNormalizer.toLowerCaseRoot(broadcaster);
return assetRepository
.findById(assetId)
@@ -809,7 +809,7 @@ public class ChannelDirectoryService {
}
public Optional<AssetPatch> previewTransform(String broadcaster, String assetId, TransformRequest request) {
String normalized = normalize(broadcaster);
String normalized = StringNormalizer.toLowerCaseRoot(broadcaster);
Asset asset = assetRepository
.findById(assetId)
@@ -876,7 +876,7 @@ public class ChannelDirectoryService {
if (updates == null || updates.isEmpty()) {
return;
}
String normalized = normalize(broadcaster);
String normalized = StringNormalizer.toLowerCaseRoot(broadcaster);
applyBulkOrderUpdates(
broadcaster,
normalized,
@@ -1082,7 +1082,7 @@ public class ChannelDirectoryService {
}
public Optional<AssetView> triggerPlayback(String broadcaster, String assetId, PlaybackRequest req, String actor) {
String normalized = normalize(broadcaster);
String normalized = StringNormalizer.toLowerCaseRoot(broadcaster);
return assetRepository
.findById(assetId)
.filter((a) -> normalized.equals(a.getBroadcaster()))
@@ -1110,7 +1110,7 @@ public class ChannelDirectoryService {
VisibilityRequest request,
String actor
) {
String normalized = normalize(broadcaster);
String normalized = StringNormalizer.toLowerCaseRoot(broadcaster);
return assetRepository
.findById(assetId)
.filter((a) -> normalized.equals(a.getBroadcaster()))
@@ -1224,7 +1224,7 @@ public class ChannelDirectoryService {
public List<ScriptAssetAttachmentView> listScriptAttachments(String broadcaster, String scriptAssetId) {
Asset asset = requireScriptAssetForBroadcaster(broadcaster, scriptAssetId);
return loadScriptAttachments(normalize(broadcaster), asset.getId(), null);
return loadScriptAttachments(StringNormalizer.toLowerCaseRoot(broadcaster), asset.getId(), null);
}
@Transactional(rollbackFor = IOException.class)
@@ -1343,7 +1343,7 @@ public class ChannelDirectoryService {
) {
Asset asset = assetRepository
.findById(scriptAssetId)
.filter((stored) -> normalize(broadcaster).equals(stored.getBroadcaster()))
.filter((stored) -> StringNormalizer.toLowerCaseRoot(broadcaster).equals(stored.getBroadcaster()))
.filter((stored) -> stored.getAssetType() == AssetType.SCRIPT)
.orElse(null);
if (asset == null) {
@@ -1372,9 +1372,9 @@ public class ChannelDirectoryService {
public boolean isAdmin(String broadcaster, String username) {
return channelRepository
.findById(normalize(broadcaster))
.findById(StringNormalizer.toLowerCaseRoot(broadcaster))
.map(Channel::getAdmins)
.map((admins) -> admins.contains(normalize(username)))
.map((admins) -> admins.contains(StringNormalizer.toLowerCaseRoot(username)))
.orElse(false);
}
@@ -1389,10 +1389,6 @@ public class ChannelDirectoryService {
.toList();
}
private String normalize(String value) {
return StringNormalizer.toLowerCaseRoot(value);
}
private boolean isCodeMediaType(String mediaType) {
if (mediaType == null || mediaType.isBlank()) {
return false;
@@ -1466,7 +1462,7 @@ public class ChannelDirectoryService {
}
private String topicFor(String broadcaster) {
return "/topic/channel/" + normalize(broadcaster);
return "/topic/channel/" + StringNormalizer.toLowerCaseRoot(broadcaster);
}
private List<AssetView> sortAndMapAssets(String broadcaster, Collection<Asset> assets) {
@@ -1534,7 +1530,7 @@ public class ChannelDirectoryService {
private int nextDisplayOrder(String broadcaster, AssetType... types) {
return (
assetRepository
.findByBroadcaster(normalize(broadcaster))
.findByBroadcaster(StringNormalizer.toLowerCaseRoot(broadcaster))
.stream()
.filter((asset) -> Arrays.asList(types).contains(asset.getAssetType()))
.map(Asset::getDisplayOrder)
@@ -1577,7 +1573,7 @@ public class ChannelDirectoryService {
return List.of();
}
List<Asset> ordered = assetRepository
.findByBroadcaster(normalize(broadcaster))
.findByBroadcaster(StringNormalizer.toLowerCaseRoot(broadcaster))
.stream()
.filter((asset) -> types.contains(asset.getAssetType()))
.sorted(
@@ -1744,7 +1740,7 @@ public class ChannelDirectoryService {
}
private Asset requireScriptAssetForBroadcaster(String broadcaster, String scriptAssetId) {
String normalized = normalize(broadcaster);
String normalized = StringNormalizer.toLowerCaseRoot(broadcaster);
return assetRepository
.findById(scriptAssetId)
.filter((asset) -> normalized.equals(asset.getBroadcaster()))
@@ -190,16 +190,13 @@ public class ChannelSettingsService {
}
private Channel getOrCreateChannel(String broadcaster) {
String normalized = normalize(broadcaster);
String normalized = StringNormalizer.toLowerCaseRoot(broadcaster);
return channelRepository.findById(normalized)
.orElseGet(() -> channelRepository.save(new Channel(normalized)));
}
private String topicFor(String broadcaster) {
return "/topic/channel/" + normalize(broadcaster);
return "/topic/channel/" + StringNormalizer.toLowerCaseRoot(broadcaster);
}
private String normalize(String value) {
return StringNormalizer.toLowerCaseRoot(value);
}
}