mirror of
https://github.com/fabioformosa/quartz-manager.git
synced 2026-01-01 15:13:16 +09:00
renaming
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
package it.fabioformosa.quartzmanager.aspects;
|
||||
|
||||
import org.quartz.SchedulerException;
|
||||
|
||||
/**
|
||||
*
|
||||
* Notify the progress of the trigger to all consumers
|
||||
*
|
||||
* @author Fabio Formosa
|
||||
*
|
||||
*/
|
||||
public interface ProgressNotifier {
|
||||
|
||||
void send() throws SchedulerException;
|
||||
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package it.fabioformosa.quartzmanager.aspects;
|
||||
|
||||
import org.quartz.SchedulerException;
|
||||
|
||||
public interface ProgressUpdater {
|
||||
|
||||
void update() throws SchedulerException;
|
||||
|
||||
}
|
||||
@@ -11,12 +11,19 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.messaging.simp.SimpMessageSendingOperations;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import it.fabioformosa.quartzmanager.dto.TriggerProgress;
|
||||
import it.fabioformosa.quartzmanager.dto.TriggerStatus;
|
||||
import it.fabioformosa.quartzmanager.scheduler.TriggerMonitor;
|
||||
|
||||
/**
|
||||
*
|
||||
* Notify the progress of the trigger through websocket
|
||||
*
|
||||
* @author Fabio Formosa
|
||||
*
|
||||
*/
|
||||
//@Aspect
|
||||
@Component
|
||||
public class ProgressUpdaterImpl implements ProgressUpdater {
|
||||
public class WebSocketProgressNotifier implements ProgressNotifier {
|
||||
|
||||
@Autowired
|
||||
private SimpMessageSendingOperations messagingTemplate;
|
||||
@@ -34,13 +41,13 @@ public class ProgressUpdaterImpl implements ProgressUpdater {
|
||||
// }
|
||||
|
||||
@Override
|
||||
public void update() throws SchedulerException {
|
||||
TriggerProgress progress = new TriggerProgress();
|
||||
public void send() throws SchedulerException {
|
||||
TriggerStatus currTriggerStatus = new TriggerStatus();
|
||||
|
||||
Trigger trigger = scheduler.getTrigger(triggerMonitor.getTrigger().getKey());
|
||||
progress.setFinalFireTime(trigger.getFinalFireTime());
|
||||
progress.setNextFireTime(trigger.getNextFireTime());
|
||||
progress.setPreviousFireTime(trigger.getPreviousFireTime());
|
||||
currTriggerStatus.setFinalFireTime(trigger.getFinalFireTime());
|
||||
currTriggerStatus.setNextFireTime(trigger.getNextFireTime());
|
||||
currTriggerStatus.setPreviousFireTime(trigger.getPreviousFireTime());
|
||||
|
||||
int timesTriggered = 0;
|
||||
int repeatCount = 0;
|
||||
@@ -57,13 +64,13 @@ public class ProgressUpdaterImpl implements ProgressUpdater {
|
||||
|
||||
Trigger jobTrigger = triggerMonitor.getTrigger();
|
||||
if (jobTrigger != null && jobTrigger.getJobKey() != null) {
|
||||
progress.setJobKey(jobTrigger.getJobKey().getName());
|
||||
progress.setJobClass(jobTrigger.getClass().getSimpleName());
|
||||
progress.setTimesTriggered(timesTriggered);
|
||||
progress.setRepeatCount(repeatCount + 1);
|
||||
currTriggerStatus.setJobKey(jobTrigger.getJobKey().getName());
|
||||
currTriggerStatus.setJobClass(jobTrigger.getClass().getSimpleName());
|
||||
currTriggerStatus.setTimesTriggered(timesTriggered);
|
||||
currTriggerStatus.setRepeatCount(repeatCount + 1);
|
||||
}
|
||||
|
||||
messagingTemplate.convertAndSend("/topic/progress", progress);
|
||||
messagingTemplate.convertAndSend("/topic/progress", currTriggerStatus);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -15,11 +15,11 @@ import lombok.extern.slf4j.Slf4j;
|
||||
@Api(value = "Healthy Check")
|
||||
public class QuartzManagerController {
|
||||
|
||||
@ResponseStatus(code = HttpStatus.OK)
|
||||
@GetMapping("/")
|
||||
public void healthyCheck() {
|
||||
log.debug("Healthy check called");
|
||||
}
|
||||
@ResponseStatus(code = HttpStatus.OK)
|
||||
@GetMapping("/")
|
||||
public void healthyCheck() {
|
||||
log.debug("Healthy check called");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import it.fabioformosa.quartzmanager.dto.SchedulerConfigParam;
|
||||
import it.fabioformosa.quartzmanager.dto.TriggerProgress;
|
||||
import it.fabioformosa.quartzmanager.dto.TriggerStatus;
|
||||
import it.fabioformosa.quartzmanager.enums.SchedulerStates;
|
||||
import it.fabioformosa.quartzmanager.scheduler.TriggerMonitor;
|
||||
|
||||
@@ -63,9 +63,9 @@ public class SchedulerController {
|
||||
}
|
||||
|
||||
@GetMapping("/progress")
|
||||
public TriggerProgress getProgressInfo() throws SchedulerException {
|
||||
public TriggerStatus getProgressInfo() throws SchedulerException {
|
||||
log.trace("SCHEDULER - GET PROGRESS INFO");
|
||||
TriggerProgress progress = new TriggerProgress();
|
||||
TriggerStatus progress = new TriggerStatus();
|
||||
|
||||
SimpleTriggerImpl jobTrigger = (SimpleTriggerImpl) scheduler.getTrigger(triggerMonitor.getTrigger().getKey());
|
||||
if (jobTrigger != null && jobTrigger.getJobKey() != null) {
|
||||
|
||||
@@ -2,7 +2,7 @@ package it.fabioformosa.quartzmanager.dto;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class TriggerProgress {
|
||||
public class TriggerStatus {
|
||||
|
||||
private int timesTriggered;
|
||||
|
||||
@@ -10,7 +10,7 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.messaging.simp.SimpMessageSendingOperations;
|
||||
|
||||
import it.fabioformosa.quartzmanager.aspects.ProgressUpdater;
|
||||
import it.fabioformosa.quartzmanager.aspects.ProgressNotifier;
|
||||
import it.fabioformosa.quartzmanager.jobs.entities.LogRecord;
|
||||
|
||||
/**
|
||||
@@ -28,7 +28,7 @@ public abstract class AbstractLoggingJob implements Job {
|
||||
private SimpMessageSendingOperations messagingTemplate;
|
||||
|
||||
@Resource
|
||||
private ProgressUpdater progressUpdater;
|
||||
private ProgressNotifier progressNotifier;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -42,7 +42,7 @@ public abstract class AbstractLoggingJob implements Job {
|
||||
try {
|
||||
LogRecord logMsg = doIt(jobExecutionContext);
|
||||
logAndSend(logMsg);
|
||||
progressUpdater.update();
|
||||
progressNotifier.send();
|
||||
} catch (SchedulerException e) {
|
||||
log.error("Error updating progress " + e.getMessage());
|
||||
}
|
||||
|
||||
@@ -26,133 +26,133 @@ import lombok.extern.slf4j.Slf4j;
|
||||
@Component
|
||||
public class TokenHelper {
|
||||
|
||||
@Value("${app.name}")
|
||||
private String APP_NAME;
|
||||
@Value("${app.name}")
|
||||
private String APP_NAME;
|
||||
|
||||
@Value("${jwt.secret}")
|
||||
private String SECRET;
|
||||
@Value("${jwt.secret}")
|
||||
private String SECRET;
|
||||
|
||||
@Value("${jwt.expires_in_sec}")
|
||||
private int EXPIRES_IN_SEC;
|
||||
@Value("${jwt.expires_in_sec}")
|
||||
private int EXPIRES_IN_SEC;
|
||||
|
||||
@Value("${jwt.header}")
|
||||
private String AUTH_HEADER;
|
||||
@Value("${jwt.header}")
|
||||
private String AUTH_HEADER;
|
||||
|
||||
@Value("${jwt.cookie}")
|
||||
private String AUTH_COOKIE;
|
||||
@Value("${jwt.cookie}")
|
||||
private String AUTH_COOKIE;
|
||||
|
||||
// @Autowired
|
||||
// UserDetailsService userDetailsService;
|
||||
// @Autowired
|
||||
// UserDetailsService userDetailsService;
|
||||
|
||||
private SignatureAlgorithm SIGNATURE_ALGORITHM = SignatureAlgorithm.HS512;
|
||||
private SignatureAlgorithm SIGNATURE_ALGORITHM = SignatureAlgorithm.HS512;
|
||||
|
||||
public Boolean canTokenBeRefreshed(String token) {
|
||||
try {
|
||||
final Date expirationDate = getClaimsFromToken(token).getExpiration();
|
||||
// String username = getUsernameFromToken(token);
|
||||
// UserDetails userDetails = userDetailsService.loadUserByUsername(username);
|
||||
return expirationDate.compareTo(generateCurrentDate()) > 0;
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public Boolean canTokenBeRefreshed(String token) {
|
||||
try {
|
||||
final Date expirationDate = getClaimsFromToken(token).getExpiration();
|
||||
// String username = getUsernameFromToken(token);
|
||||
// UserDetails userDetails = userDetailsService.loadUserByUsername(username);
|
||||
return expirationDate.compareTo(generateCurrentDate()) > 0;
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public String generateToken(String username) {
|
||||
return Jwts.builder()
|
||||
.setIssuer(APP_NAME)
|
||||
.setSubject(username)
|
||||
.setIssuedAt(generateCurrentDate())
|
||||
.setExpiration(generateExpirationDate())
|
||||
.signWith(SIGNATURE_ALGORITHM, SECRET)
|
||||
.compact();
|
||||
}
|
||||
private Date generateCurrentDate() {
|
||||
return new Date(getCurrentTimeMillis());
|
||||
}
|
||||
|
||||
/**
|
||||
* Find a specific HTTP cookie in a request.
|
||||
*
|
||||
* @param request
|
||||
* The HTTP request object.
|
||||
* @param name
|
||||
* The cookie name to look for.
|
||||
* @return The cookie, or <code>null</code> if not found.
|
||||
*/
|
||||
public Cookie getCookieValueByName(HttpServletRequest request, String name) {
|
||||
if (request.getCookies() == null)
|
||||
return null;
|
||||
for (int i = 0; i < request.getCookies().length; i++)
|
||||
if (request.getCookies()[i].getName().equals(name))
|
||||
return request.getCookies()[i];
|
||||
return null;
|
||||
}
|
||||
private Date generateExpirationDate() {
|
||||
return new Date(getCurrentTimeMillis() + EXPIRES_IN_SEC * 1000);
|
||||
}
|
||||
|
||||
public String getToken( HttpServletRequest request ) {
|
||||
Cookie authCookie = getCookieValueByName( request, AUTH_COOKIE );
|
||||
if ( authCookie != null )
|
||||
return authCookie.getValue();
|
||||
String generateToken(Map<String, Object> claims) {
|
||||
return Jwts.builder()
|
||||
.setClaims(claims)
|
||||
.setExpiration(generateExpirationDate())
|
||||
.signWith( SIGNATURE_ALGORITHM, SECRET )
|
||||
.compact();
|
||||
}
|
||||
|
||||
String authHeader = request.getHeader(AUTH_HEADER);
|
||||
if ( authHeader != null && authHeader.startsWith("Bearer "))
|
||||
return authHeader.substring(7);
|
||||
public String generateToken(String username) {
|
||||
return Jwts.builder()
|
||||
.setIssuer(APP_NAME)
|
||||
.setSubject(username)
|
||||
.setIssuedAt(generateCurrentDate())
|
||||
.setExpiration(generateExpirationDate())
|
||||
.signWith(SIGNATURE_ALGORITHM, SECRET)
|
||||
.compact();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
private Claims getClaimsFromToken(String token) {
|
||||
Claims claims;
|
||||
try {
|
||||
claims = Jwts.parser()
|
||||
.setSigningKey(SECRET)
|
||||
.parseClaimsJws(token)
|
||||
.getBody();
|
||||
} catch (Exception e) {
|
||||
claims = null;
|
||||
log.error("Error getting claims from jwt token due to " + e.getMessage(), e);
|
||||
}
|
||||
return claims;
|
||||
}
|
||||
|
||||
public String getUsernameFromToken(String token) {
|
||||
String username;
|
||||
try {
|
||||
final Claims claims = getClaimsFromToken(token);
|
||||
username = claims.getSubject();
|
||||
} catch (Exception e) {
|
||||
username = null;
|
||||
log.error("Error getting claims from jwt token due to " + e.getMessage(), e);
|
||||
}
|
||||
return username;
|
||||
}
|
||||
/**
|
||||
* Find a specific HTTP cookie in a request.
|
||||
*
|
||||
* @param request
|
||||
* The HTTP request object.
|
||||
* @param name
|
||||
* The cookie name to look for.
|
||||
* @return The cookie, or <code>null</code> if not found.
|
||||
*/
|
||||
public Cookie getCookieValueByName(HttpServletRequest request, String name) {
|
||||
if (request.getCookies() == null)
|
||||
return null;
|
||||
for (int i = 0; i < request.getCookies().length; i++)
|
||||
if (request.getCookies()[i].getName().equals(name))
|
||||
return request.getCookies()[i];
|
||||
return null;
|
||||
}
|
||||
|
||||
public String refreshToken(String token) {
|
||||
String refreshedToken;
|
||||
try {
|
||||
final Claims claims = getClaimsFromToken(token);
|
||||
claims.setIssuedAt(generateCurrentDate());
|
||||
refreshedToken = generateToken(claims);
|
||||
} catch (Exception e) {
|
||||
log.error("Error refreshing jwt token due to " + e.getMessage(), e);
|
||||
refreshedToken = null;
|
||||
}
|
||||
return refreshedToken;
|
||||
}
|
||||
private long getCurrentTimeMillis() {
|
||||
return DateTime.now().getMillis();
|
||||
}
|
||||
|
||||
private Date generateCurrentDate() {
|
||||
return new Date(getCurrentTimeMillis());
|
||||
}
|
||||
public String getToken( HttpServletRequest request ) {
|
||||
Cookie authCookie = getCookieValueByName( request, AUTH_COOKIE );
|
||||
if ( authCookie != null )
|
||||
return authCookie.getValue();
|
||||
|
||||
private Date generateExpirationDate() {
|
||||
return new Date(getCurrentTimeMillis() + EXPIRES_IN_SEC * 1000);
|
||||
}
|
||||
String authHeader = request.getHeader(AUTH_HEADER);
|
||||
if ( authHeader != null && authHeader.startsWith("Bearer "))
|
||||
return authHeader.substring(7);
|
||||
|
||||
private Claims getClaimsFromToken(String token) {
|
||||
Claims claims;
|
||||
try {
|
||||
claims = Jwts.parser()
|
||||
.setSigningKey(SECRET)
|
||||
.parseClaimsJws(token)
|
||||
.getBody();
|
||||
} catch (Exception e) {
|
||||
claims = null;
|
||||
log.error("Error getting claims from jwt token due to " + e.getMessage(), e);
|
||||
}
|
||||
return claims;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private long getCurrentTimeMillis() {
|
||||
return DateTime.now().getMillis();
|
||||
}
|
||||
public String getUsernameFromToken(String token) {
|
||||
String username;
|
||||
try {
|
||||
final Claims claims = getClaimsFromToken(token);
|
||||
username = claims.getSubject();
|
||||
} catch (Exception e) {
|
||||
username = null;
|
||||
log.error("Error getting claims from jwt token due to " + e.getMessage(), e);
|
||||
}
|
||||
return username;
|
||||
}
|
||||
|
||||
String generateToken(Map<String, Object> claims) {
|
||||
return Jwts.builder()
|
||||
.setClaims(claims)
|
||||
.setExpiration(generateExpirationDate())
|
||||
.signWith( SIGNATURE_ALGORITHM, SECRET )
|
||||
.compact();
|
||||
}
|
||||
public String refreshToken(String token) {
|
||||
String refreshedToken;
|
||||
try {
|
||||
final Claims claims = getClaimsFromToken(token);
|
||||
claims.setIssuedAt(generateCurrentDate());
|
||||
refreshedToken = generateToken(claims);
|
||||
} catch (Exception e) {
|
||||
log.error("Error refreshing jwt token due to " + e.getMessage(), e);
|
||||
refreshedToken = null;
|
||||
}
|
||||
return refreshedToken;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,9 @@
|
||||
<logger name="org.springframework" level="WARN" additivity="false">
|
||||
<appender-ref ref="STDOUT" />
|
||||
</logger>
|
||||
<logger name="org.quartz" level="WARN" additivity="false">
|
||||
<appender-ref ref="STDOUT" />
|
||||
</logger>
|
||||
|
||||
<root level="WARN">
|
||||
<appender-ref ref="STDOUT" />
|
||||
|
||||
Reference in New Issue
Block a user