package rocks.inspectit.server.service;
import java.util.UUID;
import javax.annotation.PostConstruct;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import rocks.inspectit.server.spring.aop.MethodLog;
import rocks.inspectit.shared.all.spring.logger.Log;
import rocks.inspectit.shared.all.version.VersionService;
import rocks.inspectit.shared.cs.cmr.service.IServerStatusService;
/**
* Implementation of the {@link IServerStatusService} interface to provide information about the
* current status of the CMR.
*
* @author Patrice Bouillet
*
*/
@Service
public class ServerStatusService implements IServerStatusService {
/** The logger of this class. */
@Log
Logger log;
/**
* {@link VersionService}.
*/
@Autowired
VersionService versionService;
/**
* The status of the CMR.
*/
private ServerStatus status = ServerStatus.SERVER_STARTING;
/**
* {@inheritDoc}
*/
@Override
@MethodLog
public ServerStatus getServerStatus() {
return status;
}
/**
* {@inheritDoc}
*/
@Override
@MethodLog
public String getVersion() {
return versionService.getVersionAsString();
}
/**
* Is executed after dependency injection is done to perform any initialization.
*
* @throws Exception
* if an error occurs during {@link PostConstruct}
*/
@PostConstruct
public void postConstruct() throws Exception {
status = ServerStatus.SERVER_ONLINE;
status.setRegistrationIdsValidationKey(UUID.randomUUID().toString());
if (log.isInfoEnabled()) {
log.info("|-Server Status Service active...");
}
}
}