Skip to content

Commit 1950510

Browse files
authored
fix: correct IndexSpecs code examples in extension docs (#591)
## Summary This PR fixes the index declaration code examples in the custom model documentation. The current examples have several issues that prevent them from compiling or working correctly: 1. **Missing explicit generic type parameters**: `IndexSpecs.single()` and `IndexSpecs.multi()` require explicit generic types (e.g., `IndexSpecs.<Moment, String>single(...)`) because Java cannot infer them from static imports alone. 2. **Incorrect return type in multi-value index example**: The `multi` example assumes `getTags()` returns a `Set`, but it typically returns a `List`. The example now wraps it with `new HashSet<>()` to match the expected `Set<String>` return type. ## Changes Updated the following files: - `docs/developer-guide/plugin/api-reference/server/extension.md` (next) - `versioned_docs/version-2.22/.../extension.md` - `versioned_docs/version-2.23/.../extension.md` - `versioned_docs/version-2.24/.../extension.md` ```release-note None ```
1 parent 5e52751 commit 1950510

4 files changed

Lines changed: 28 additions & 28 deletions

File tree

  • docs/developer-guide/plugin/api-reference/server
  • versioned_docs
    • version-2.22/developer-guide/plugin/api-reference/server
    • version-2.23/developer-guide/plugin/api-reference/server
    • version-2.24/developer-guide/plugin/api-reference/server

docs/developer-guide/plugin/api-reference/server/extension.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -169,30 +169,30 @@ Halo 提供了一套索引机制,开发者可以通过注册自定义模型时
169169

170170
```java
171171
import java.time.Instant;
172+
import java.util.HashSet;
172173
import java.util.Set;
173-
import static run.halo.app.extension.index.IndexSpecs.multi;
174-
import static run.halo.app.extension.index.IndexSpecs.single;
174+
import run.halo.app.extension.index.IndexSpecs;
175175
176176
@Override
177177
public void start() {
178178
schemeManager.register(Moment.class, indexSpecs -> {
179179
// multi 用于声明一个返回多个值的索引
180-
indexSpecs.add(multi("spec.tags", String.class)
180+
indexSpecs.add(IndexSpecs.<Moment, String>multi("spec.tags", String.class)
181181
.indexFunc(moment -> {
182182
var tags = moment.getSpec().getTags();
183183
return tags == null ? Set.of() : tags;
184184
}));
185185
186186
// single 用于声明一个返回单个值的索引,可以返回 null
187-
indexSpecs.add(single("spec.owner", String.class)
187+
indexSpecs.add(IndexSpecs.<Moment, String>single("spec.owner", String.class)
188188
.indexFunc(moment -> moment.getSpec().getOwner()));
189189
190190
// 索引值不再局限于字符串,也可以使用 Boolean、Integer、Instant 等可比较类型
191-
indexSpecs.add(single("spec.pinned", Boolean.class)
191+
indexSpecs.add(IndexSpecs.<Moment, Boolean>single("spec.pinned", Boolean.class)
192192
.indexFunc(moment -> moment.getSpec().getPinned()));
193-
indexSpecs.add(single("spec.priority", Integer.class)
193+
indexSpecs.add(IndexSpecs.<Moment, Integer>single("spec.priority", Integer.class)
194194
.indexFunc(moment -> moment.getSpec().getPriority()));
195-
indexSpecs.add(single("spec.publishTime", Instant.class)
195+
indexSpecs.add(IndexSpecs.<Moment, Instant>single("spec.publishTime", Instant.class)
196196
.indexFunc(moment -> moment.getSpec().getPublishTime()));
197197
});
198198
}

versioned_docs/version-2.22/developer-guide/plugin/api-reference/server/extension.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -169,30 +169,30 @@ Halo 提供了一套索引机制,开发者可以通过注册自定义模型时
169169

170170
```java
171171
import java.time.Instant;
172+
import java.util.HashSet;
172173
import java.util.Set;
173-
import static run.halo.app.extension.index.IndexSpecs.multi;
174-
import static run.halo.app.extension.index.IndexSpecs.single;
174+
import run.halo.app.extension.index.IndexSpecs;
175175
176176
@Override
177177
public void start() {
178178
schemeManager.register(Moment.class, indexSpecs -> {
179179
// multi 用于声明一个返回多个值的索引
180-
indexSpecs.add(multi("spec.tags", String.class)
180+
indexSpecs.add(IndexSpecs.<Moment, String>multi("spec.tags", String.class)
181181
.indexFunc(moment -> {
182182
var tags = moment.getSpec().getTags();
183183
return tags == null ? Set.of() : tags;
184184
}));
185185
186186
// single 用于声明一个返回单个值的索引,可以返回 null
187-
indexSpecs.add(single("spec.owner", String.class)
187+
indexSpecs.add(IndexSpecs.<Moment, String>single("spec.owner", String.class)
188188
.indexFunc(moment -> moment.getSpec().getOwner()));
189189
190190
// 索引值不再局限于字符串,也可以使用 Boolean、Integer、Instant 等可比较类型
191-
indexSpecs.add(single("spec.pinned", Boolean.class)
191+
indexSpecs.add(IndexSpecs.<Moment, Boolean>single("spec.pinned", Boolean.class)
192192
.indexFunc(moment -> moment.getSpec().getPinned()));
193-
indexSpecs.add(single("spec.priority", Integer.class)
193+
indexSpecs.add(IndexSpecs.<Moment, Integer>single("spec.priority", Integer.class)
194194
.indexFunc(moment -> moment.getSpec().getPriority()));
195-
indexSpecs.add(single("spec.publishTime", Instant.class)
195+
indexSpecs.add(IndexSpecs.<Moment, Instant>single("spec.publishTime", Instant.class)
196196
.indexFunc(moment -> moment.getSpec().getPublishTime()));
197197
});
198198
}

versioned_docs/version-2.23/developer-guide/plugin/api-reference/server/extension.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -169,30 +169,30 @@ Halo 提供了一套索引机制,开发者可以通过注册自定义模型时
169169

170170
```java
171171
import java.time.Instant;
172+
import java.util.HashSet;
172173
import java.util.Set;
173-
import static run.halo.app.extension.index.IndexSpecs.multi;
174-
import static run.halo.app.extension.index.IndexSpecs.single;
174+
import run.halo.app.extension.index.IndexSpecs;
175175
176176
@Override
177177
public void start() {
178178
schemeManager.register(Moment.class, indexSpecs -> {
179179
// multi 用于声明一个返回多个值的索引
180-
indexSpecs.add(multi("spec.tags", String.class)
180+
indexSpecs.add(IndexSpecs.<Moment, String>multi("spec.tags", String.class)
181181
.indexFunc(moment -> {
182182
var tags = moment.getSpec().getTags();
183183
return tags == null ? Set.of() : tags;
184184
}));
185185
186186
// single 用于声明一个返回单个值的索引,可以返回 null
187-
indexSpecs.add(single("spec.owner", String.class)
187+
indexSpecs.add(IndexSpecs.<Moment, String>single("spec.owner", String.class)
188188
.indexFunc(moment -> moment.getSpec().getOwner()));
189189
190190
// 索引值不再局限于字符串,也可以使用 Boolean、Integer、Instant 等可比较类型
191-
indexSpecs.add(single("spec.pinned", Boolean.class)
191+
indexSpecs.add(IndexSpecs.<Moment, Boolean>single("spec.pinned", Boolean.class)
192192
.indexFunc(moment -> moment.getSpec().getPinned()));
193-
indexSpecs.add(single("spec.priority", Integer.class)
193+
indexSpecs.add(IndexSpecs.<Moment, Integer>single("spec.priority", Integer.class)
194194
.indexFunc(moment -> moment.getSpec().getPriority()));
195-
indexSpecs.add(single("spec.publishTime", Instant.class)
195+
indexSpecs.add(IndexSpecs.<Moment, Instant>single("spec.publishTime", Instant.class)
196196
.indexFunc(moment -> moment.getSpec().getPublishTime()));
197197
});
198198
}

versioned_docs/version-2.24/developer-guide/plugin/api-reference/server/extension.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -169,30 +169,30 @@ Halo 提供了一套索引机制,开发者可以通过注册自定义模型时
169169

170170
```java
171171
import java.time.Instant;
172+
import java.util.HashSet;
172173
import java.util.Set;
173-
import static run.halo.app.extension.index.IndexSpecs.multi;
174-
import static run.halo.app.extension.index.IndexSpecs.single;
174+
import run.halo.app.extension.index.IndexSpecs;
175175
176176
@Override
177177
public void start() {
178178
schemeManager.register(Moment.class, indexSpecs -> {
179179
// multi 用于声明一个返回多个值的索引
180-
indexSpecs.add(multi("spec.tags", String.class)
180+
indexSpecs.add(IndexSpecs.<Moment, String>multi("spec.tags", String.class)
181181
.indexFunc(moment -> {
182182
var tags = moment.getSpec().getTags();
183183
return tags == null ? Set.of() : tags;
184184
}));
185185
186186
// single 用于声明一个返回单个值的索引,可以返回 null
187-
indexSpecs.add(single("spec.owner", String.class)
187+
indexSpecs.add(IndexSpecs.<Moment, String>single("spec.owner", String.class)
188188
.indexFunc(moment -> moment.getSpec().getOwner()));
189189
190190
// 索引值不再局限于字符串,也可以使用 Boolean、Integer、Instant 等可比较类型
191-
indexSpecs.add(single("spec.pinned", Boolean.class)
191+
indexSpecs.add(IndexSpecs.<Moment, Boolean>single("spec.pinned", Boolean.class)
192192
.indexFunc(moment -> moment.getSpec().getPinned()));
193-
indexSpecs.add(single("spec.priority", Integer.class)
193+
indexSpecs.add(IndexSpecs.<Moment, Integer>single("spec.priority", Integer.class)
194194
.indexFunc(moment -> moment.getSpec().getPriority()));
195-
indexSpecs.add(single("spec.publishTime", Instant.class)
195+
indexSpecs.add(IndexSpecs.<Moment, Instant>single("spec.publishTime", Instant.class)
196196
.indexFunc(moment -> moment.getSpec().getPublishTime()));
197197
});
198198
}

0 commit comments

Comments
 (0)