dev.alangomes.springspigot.util.UtilAspect Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of spigot-spring-boot-starter Show documentation
Show all versions of spigot-spring-boot-starter Show documentation
Spring support for spigot plugins
package dev.alangomes.springspigot.util;
import dev.alangomes.springspigot.util.scheduler.SchedulerService;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.bukkit.Server;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import static org.springframework.beans.factory.config.ConfigurableBeanFactory.SCOPE_SINGLETON;
@Slf4j
@Aspect
@Component
@Scope(SCOPE_SINGLETON)
class UtilAspect {
@Autowired
private SchedulerService schedulerService;
@Autowired
private Server server;
@Order(0)
@Around("within(@(@dev.alangomes.springspigot.util.Synchronize *) *) " +
"|| execution(@(@dev.alangomes.springspigot.util.Synchronize *) * *(..)) " +
"|| @within(dev.alangomes.springspigot.util.Synchronize)" +
"|| execution(@dev.alangomes.springspigot.util.Synchronize * *(..))")
public Object synchronizeCall(ProceedingJoinPoint joinPoint) throws Throwable {
if (server.isPrimaryThread()) {
return joinPoint.proceed();
}
schedulerService.scheduleSyncDelayedTask(() -> {
try {
joinPoint.proceed();
} catch (Throwable throwable) {
log.error("Error in synchronous task", throwable);
}
}, 0);
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy