Skip to content

Commit fba10c8

Browse files
authored
Support references without version in comment subjects (#8169)
#### What type of PR is this? /kind bug /area core /milestone 2.22.x #### What this PR does / why we need it: This PR supports references without version in comment subjects. #### Which issue(s) this PR fixes: Fixes #7890 #### Special notes for your reviewer: 1. Try to create a comment 2. Delete field `spec.subjectRef.version` using DataStudio plugin 3. See the comment list page #### Does this PR introduce a user-facing change? ```release-note 修复评论管理列表可能无法正常访问的问题 ```
1 parent 4790351 commit fba10c8

5 files changed

Lines changed: 36 additions & 10 deletions

File tree

api/src/main/java/run/halo/app/extension/Ref.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,21 @@
55
import io.swagger.v3.oas.annotations.media.Schema;
66
import java.util.Objects;
77
import lombok.Data;
8+
import org.jspecify.annotations.Nullable;
89
import org.springframework.lang.NonNull;
910

1011
@Data
1112
@Schema(description = "Extension reference object. The name is mandatory")
1213
public class Ref {
1314

14-
@Schema(description = "Extension group")
15+
@Schema(description = "Extension group", requiredMode = REQUIRED)
1516
private String group;
1617

1718
@Schema(description = "Extension version")
19+
@Nullable
1820
private String version;
1921

20-
@Schema(description = "Extension kind")
22+
@Schema(description = "Extension kind", requiredMode = REQUIRED)
2123
private String kind;
2224

2325
@Schema(requiredMode = REQUIRED, description = "Extension name. This field is mandatory")

application/src/main/java/run/halo/app/content/comment/PostCommentSubject.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package run.halo.app.content.comment;
22

3+
import java.util.Objects;
34
import lombok.RequiredArgsConstructor;
45
import org.springframework.stereotype.Component;
56
import org.springframework.util.Assert;
67
import reactor.core.publisher.Mono;
78
import run.halo.app.core.extension.content.Post;
8-
import run.halo.app.extension.GroupVersionKind;
99
import run.halo.app.extension.ReactiveExtensionClient;
1010
import run.halo.app.extension.Ref;
1111
import run.halo.app.infra.ExternalLinkProcessor;
@@ -41,8 +41,8 @@ public Mono<SubjectDisplay> getSubjectDisplay(String name) {
4141
@Override
4242
public boolean supports(Ref ref) {
4343
Assert.notNull(ref, "Subject ref must not be null.");
44-
GroupVersionKind groupVersionKind =
45-
new GroupVersionKind(ref.getGroup(), ref.getVersion(), ref.getKind());
46-
return GroupVersionKind.fromExtension(Post.class).equals(groupVersionKind);
44+
var gvk = Post.GVK;
45+
return Objects.equals(gvk.group(), ref.getGroup())
46+
&& Objects.equals(gvk.kind(), ref.getKind());
4747
}
4848
}

application/src/main/java/run/halo/app/content/comment/SinglePageCommentSubject.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package run.halo.app.content.comment;
22

3+
import java.util.Objects;
34
import lombok.RequiredArgsConstructor;
45
import org.springframework.stereotype.Component;
56
import org.springframework.util.Assert;
67
import reactor.core.publisher.Mono;
78
import run.halo.app.core.extension.content.SinglePage;
8-
import run.halo.app.extension.GroupVersionKind;
99
import run.halo.app.extension.ReactiveExtensionClient;
1010
import run.halo.app.extension.Ref;
1111
import run.halo.app.infra.ExternalLinkProcessor;
@@ -42,8 +42,8 @@ public Mono<SubjectDisplay> getSubjectDisplay(String name) {
4242
@Override
4343
public boolean supports(Ref ref) {
4444
Assert.notNull(ref, "Subject ref must not be null.");
45-
GroupVersionKind groupVersionKind =
46-
new GroupVersionKind(ref.getGroup(), ref.getVersion(), ref.getKind());
47-
return GroupVersionKind.fromExtension(SinglePage.class).equals(groupVersionKind);
45+
var gvk = SinglePage.GVK;
46+
return Objects.equals(gvk.group(), ref.getGroup())
47+
&& Objects.equals(gvk.kind(), ref.getKind());
4848
}
4949
}

application/src/test/java/run/halo/app/content/comment/PostCommentSubjectTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package run.halo.app.content.comment;
22

33
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.junit.jupiter.api.Assertions.assertTrue;
45
import static org.mockito.ArgumentMatchers.any;
56
import static org.mockito.ArgumentMatchers.eq;
67
import static org.mockito.Mockito.when;
@@ -13,6 +14,7 @@
1314
import reactor.core.publisher.Mono;
1415
import reactor.test.StepVerifier;
1516
import run.halo.app.content.TestPost;
17+
import run.halo.app.core.extension.content.Constant;
1618
import run.halo.app.core.extension.content.Post;
1719
import run.halo.app.extension.FakeExtension;
1820
import run.halo.app.extension.Metadata;
@@ -64,4 +66,13 @@ void supports() {
6466
supports = postCommentSubject.supports(Ref.of(fakeExtension));
6567
assertThat(supports).isFalse();
6668
}
69+
70+
@Test
71+
void shouldSupportRefWithoutVersion() {
72+
var ref = new Ref();
73+
ref.setName("fake-post");
74+
ref.setGroup(Constant.GROUP);
75+
ref.setKind(Post.KIND);
76+
assertTrue(postCommentSubject.supports(ref));
77+
}
6778
}

application/src/test/java/run/halo/app/content/comment/SinglePageCommentSubjectTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package run.halo.app.content.comment;
22

33
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.junit.jupiter.api.Assertions.assertTrue;
45
import static org.mockito.ArgumentMatchers.any;
56
import static org.mockito.ArgumentMatchers.eq;
67
import static org.mockito.Mockito.times;
@@ -14,6 +15,7 @@
1415
import org.mockito.junit.jupiter.MockitoExtension;
1516
import reactor.core.publisher.Mono;
1617
import reactor.test.StepVerifier;
18+
import run.halo.app.core.extension.content.Constant;
1719
import run.halo.app.core.extension.content.SinglePage;
1820
import run.halo.app.extension.FakeExtension;
1921
import run.halo.app.extension.Metadata;
@@ -72,4 +74,15 @@ void supports() {
7274
supports = singlePageCommentSubject.supports(Ref.of(fakeExtension));
7375
assertThat(supports).isFalse();
7476
}
77+
78+
79+
@Test
80+
void shouldSupportRefWithoutVersion() {
81+
var ref = new Ref();
82+
ref.setName("fake-post");
83+
ref.setGroup(Constant.GROUP);
84+
ref.setKind(SinglePage.KIND);
85+
assertTrue(singlePageCommentSubject.supports(ref));
86+
}
87+
7588
}

0 commit comments

Comments
 (0)