From 38883f3d12fdfdf31ccba40d7db3521d2b3f7d46 Mon Sep 17 00:00:00 2001 From: Chris Malloy Date: Mon, 27 Nov 2023 15:00:16 +0900 Subject: [PATCH] Allow Ref and Ext upserts from update endpoint when force is true --- src/main/java/jasper/service/ExtService.java | 4 +++- src/main/java/jasper/service/RefService.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/jasper/service/ExtService.java b/src/main/java/jasper/service/ExtService.java index aba0edd3..ff6f896a 100644 --- a/src/main/java/jasper/service/ExtService.java +++ b/src/main/java/jasper/service/ExtService.java @@ -125,7 +125,9 @@ public Instant update(Ext ext, boolean force) { var maybeExisting = extRepository.findOneByQualifiedTag(ext.getQualifiedTag()); if (maybeExisting.isEmpty()) throw new NotFoundException("Ext " + ext.getQualifiedTag()); var existing = maybeExisting.get(); - if (ext.getModified() == null || !ext.getModified().truncatedTo(ChronoUnit.SECONDS).equals(existing.getModified().truncatedTo(ChronoUnit.SECONDS))) throw new ModifiedException("Ext " + ext.getQualifiedTag()); + if (!force && (ext.getModified() == null || !ext.getModified().truncatedTo(ChronoUnit.SECONDS).equals(existing.getModified().truncatedTo(ChronoUnit.SECONDS)))) { + throw new ModifiedException("Ext " + ext.getQualifiedTag()); + } validate.ext(ext, force); ext.setModified(Instant.now()); try { diff --git a/src/main/java/jasper/service/RefService.java b/src/main/java/jasper/service/RefService.java index 814afdd2..4e87b901 100644 --- a/src/main/java/jasper/service/RefService.java +++ b/src/main/java/jasper/service/RefService.java @@ -133,7 +133,9 @@ public Instant update(Ref ref, boolean force) { var maybeExisting = refRepository.findOneByUrlAndOrigin(ref.getUrl(), ref.getOrigin()); if (maybeExisting.isEmpty()) throw new NotFoundException("Ref " + ref.getOrigin() + " " + ref.getUrl()); var existing = maybeExisting.get(); - if (ref.getModified() == null || !ref.getModified().truncatedTo(ChronoUnit.SECONDS).equals(existing.getModified().truncatedTo(ChronoUnit.SECONDS))) throw new ModifiedException("Ref"); + if (!force && (ref.getModified() == null || !ref.getModified().truncatedTo(ChronoUnit.SECONDS).equals(existing.getModified().truncatedTo(ChronoUnit.SECONDS)))) { + throw new ModifiedException("Ref"); + } var hiddenTags = auth.hiddenTags(existing.getTags()); ref.addTags(hiddenTags); ref.addPlugins(hiddenTags, existing.getPlugins());