mirror of https://github.com/halo-dev/halo
Move post events into api modules (#6052)
Signed-off-by: JohnNiang <johnniang@foxmail.com>pull/6059/head
parent
ccbe18567f
commit
b692db1f57
|
@ -0,0 +1,24 @@
|
|||
package run.halo.app.event.post;
|
||||
|
||||
import run.halo.app.core.extension.content.Post;
|
||||
import run.halo.app.plugin.SharedEvent;
|
||||
|
||||
@SharedEvent
|
||||
public class PostDeletedEvent extends PostEvent {
|
||||
|
||||
private final Post post;
|
||||
|
||||
public PostDeletedEvent(Object source, Post post) {
|
||||
super(source, post.getMetadata().getName());
|
||||
this.post = post;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get original post.
|
||||
*
|
||||
* @return original post.
|
||||
*/
|
||||
public Post getPost() {
|
||||
return post;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package run.halo.app.event.post;
|
||||
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
|
||||
/**
|
||||
* An abstract class for post events.
|
||||
*
|
||||
* @author johnniang
|
||||
*/
|
||||
public abstract class PostEvent extends ApplicationEvent {
|
||||
|
||||
private final String name;
|
||||
|
||||
public PostEvent(Object source, String name) {
|
||||
super(source);
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets post metadata name.
|
||||
*
|
||||
* @return post metadata name
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package run.halo.app.event.post;
|
||||
|
||||
import run.halo.app.plugin.SharedEvent;
|
||||
|
||||
@SharedEvent
|
||||
public class PostPublishedEvent extends PostEvent {
|
||||
|
||||
public PostPublishedEvent(Object source, String postName) {
|
||||
super(source, postName);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package run.halo.app.event.post;
|
||||
|
||||
import run.halo.app.plugin.SharedEvent;
|
||||
|
||||
@SharedEvent
|
||||
public class PostUnpublishedEvent extends PostEvent {
|
||||
|
||||
public PostUnpublishedEvent(Object source, String postName) {
|
||||
super(source, postName);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package run.halo.app.event.post;
|
||||
|
||||
import run.halo.app.plugin.SharedEvent;
|
||||
|
||||
@SharedEvent
|
||||
public class PostUpdatedEvent extends PostEvent {
|
||||
|
||||
public PostUpdatedEvent(Object source, String postName) {
|
||||
super(source, postName);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package run.halo.app.event.post;
|
||||
|
||||
import org.springframework.lang.Nullable;
|
||||
import run.halo.app.core.extension.content.Post;
|
||||
import run.halo.app.plugin.SharedEvent;
|
||||
|
||||
@SharedEvent
|
||||
public class PostVisibleChangedEvent extends PostEvent {
|
||||
|
||||
@Nullable
|
||||
private final Post.VisibleEnum oldVisible;
|
||||
|
||||
private final Post.VisibleEnum newVisible;
|
||||
|
||||
public PostVisibleChangedEvent(Object source, String postName,
|
||||
@Nullable Post.VisibleEnum oldVisible, Post.VisibleEnum newVisible) {
|
||||
super(source, postName);
|
||||
this.oldVisible = oldVisible;
|
||||
this.newVisible = newVisible;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Post.VisibleEnum getOldVisible() {
|
||||
return oldVisible;
|
||||
}
|
||||
|
||||
public Post.VisibleEnum getNewVisible() {
|
||||
return newVisible;
|
||||
}
|
||||
}
|
|
@ -9,8 +9,7 @@ import java.lang.annotation.Target;
|
|||
/**
|
||||
* <p>It is a symbolic annotation.</p>
|
||||
* <p>When the event marked with {@link SharedEvent} annotation is published, it will be
|
||||
* broadcast to the application context of the plugin by
|
||||
* {@link PluginApplicationEventBridgeDispatcher}.</p>
|
||||
* broadcast to the application context of the plugin.
|
||||
*
|
||||
* @author guqing
|
||||
* @since 2.0.0
|
|
@ -15,6 +15,7 @@ import com.google.common.hash.Hashing;
|
|||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
@ -88,7 +89,7 @@ public class PostReconciler implements Reconciler<Reconciler.Request> {
|
|||
|
||||
@Override
|
||||
public Result reconcile(Request request) {
|
||||
var events = new HashSet<ApplicationEvent>();
|
||||
var events = new LinkedHashSet<ApplicationEvent>();
|
||||
client.fetch(Post.class, request.name())
|
||||
.ifPresent(post -> {
|
||||
if (ExtensionOperator.isDeleted(post)) {
|
||||
|
@ -104,7 +105,7 @@ public class PostReconciler implements Reconciler<Reconciler.Request> {
|
|||
}
|
||||
addFinalizers(post.getMetadata(), Set.of(FINALIZER_NAME));
|
||||
|
||||
populateLabels(post);
|
||||
populateLabels(post, events);
|
||||
|
||||
schedulePublishIfNecessary(post);
|
||||
|
||||
|
@ -195,7 +196,7 @@ public class PostReconciler implements Reconciler<Reconciler.Request> {
|
|||
return Result.doNotRetry();
|
||||
}
|
||||
|
||||
private void populateLabels(Post post) {
|
||||
private void populateLabels(Post post, Set<ApplicationEvent> events) {
|
||||
var labels = nullSafeLabels(post);
|
||||
labels.put(Post.DELETED_LABEL, String.valueOf(isTrue(post.getSpec().getDeleted())));
|
||||
|
||||
|
@ -203,8 +204,7 @@ public class PostReconciler implements Reconciler<Reconciler.Request> {
|
|||
var oldVisible = VisibleEnum.from(labels.get(Post.VISIBLE_LABEL));
|
||||
if (!Objects.equals(oldVisible, expectVisible)) {
|
||||
var postName = post.getMetadata().getName();
|
||||
eventPublisher.publishEvent(
|
||||
new PostVisibleChangedEvent(postName, oldVisible, expectVisible));
|
||||
events.add(new PostVisibleChangedEvent(this, postName, oldVisible, expectVisible));
|
||||
}
|
||||
labels.put(Post.VISIBLE_LABEL, expectVisible.toString());
|
||||
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
package run.halo.app.event.post;
|
||||
|
||||
import lombok.Getter;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
import run.halo.app.core.extension.content.Post;
|
||||
|
||||
@Getter
|
||||
public class PostDeletedEvent extends ApplicationEvent implements PostEvent {
|
||||
|
||||
private final Post post;
|
||||
|
||||
public PostDeletedEvent(Object source, Post post) {
|
||||
super(source);
|
||||
this.post = post;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return post.getMetadata().getName();
|
||||
}
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
package run.halo.app.event.post;
|
||||
|
||||
public interface PostEvent {
|
||||
|
||||
String getName();
|
||||
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
package run.halo.app.event.post;
|
||||
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
import run.halo.app.plugin.SharedEvent;
|
||||
|
||||
@SharedEvent
|
||||
public class PostPublishedEvent extends ApplicationEvent implements PostEvent {
|
||||
|
||||
private final String postName;
|
||||
|
||||
public PostPublishedEvent(Object source, String postName) {
|
||||
super(source);
|
||||
this.postName = postName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return postName;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
package run.halo.app.event.post;
|
||||
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
|
||||
public class PostUnpublishedEvent extends ApplicationEvent implements PostEvent {
|
||||
|
||||
private final String postName;
|
||||
|
||||
public PostUnpublishedEvent(Object source, String postName) {
|
||||
super(source);
|
||||
this.postName = postName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return postName;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
package run.halo.app.event.post;
|
||||
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
|
||||
public class PostUpdatedEvent extends ApplicationEvent implements PostEvent {
|
||||
|
||||
private final String postName;
|
||||
|
||||
public PostUpdatedEvent(Object source, String postName) {
|
||||
super(source);
|
||||
this.postName = postName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return postName;
|
||||
}
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
package run.halo.app.event.post;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.lang.Nullable;
|
||||
import run.halo.app.core.extension.content.Post;
|
||||
|
||||
@Data
|
||||
public class PostVisibleChangedEvent implements PostEvent {
|
||||
|
||||
private final String postName;
|
||||
|
||||
@Nullable
|
||||
private final Post.VisibleEnum oldVisible;
|
||||
|
||||
private final Post.VisibleEnum newVisible;
|
||||
|
||||
public PostVisibleChangedEvent(String postName, Post.VisibleEnum oldVisible,
|
||||
Post.VisibleEnum newVisible) {
|
||||
this.postName = postName;
|
||||
this.oldVisible = oldVisible;
|
||||
this.newVisible = newVisible;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return postName;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue