CtanAnnHealthCheck.java
/*
* Copyright © 2024-2025 The CTAN Team and individual authors
*
* This file is distributed under the 3-clause BSD license.
* See file LICENSE for details.
*/
package org.ctan.site.health;
import java.io.File;
import org.ctan.site.CtanConfiguration;
import com.codahale.metrics.health.HealthCheck;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
/**
* The class <code>CtanAnnHealthCheck</code> contains the health check for the
* ctan-ann section.
*
* @author <a href="mailto:gene@ctan.org">Gerd Neugebauer</a>
*/
@SuppressFBWarnings(value = "EI_EXPOSE_REP2")
public class CtanAnnHealthCheck extends HealthCheck {
/**
* The field <code>config</code> contains the configuration.
*/
private CtanConfiguration config;
/**
* This is the constructor for the class <code>ContentHealthCheck</code>.
*
* @param config the configuration
*/
public CtanAnnHealthCheck(CtanConfiguration config) {
this.config = config;
}
/**
* {@inheritDoc}
*
* @see com.codahale.metrics.health.HealthCheck#check()
*/
@Override
protected Result check() throws Exception {
if (config == null) {
return Result.unhealthy("Missing CTAN config");
}
var ann = config.getCtanAnnounce();
if (ann == null) {
return Result.unhealthy("Missing ctanAnnounce config section");
}
var ctanAnn = config.getCtanAnnounce().getDirectory();
if (ctanAnn == null || "".equals(ctanAnn)) {
return Result.unhealthy("Missing config ctanAnnounce.directory");
}
var dir = new File(ctanAnn);
if (!dir.exists()) {
return Result.unhealthy(
String.format(
"Config ctanAnnounce.directory '%s' does not exist",
ctanAnn));
}
if (!dir.isDirectory()) {
return Result.unhealthy(
String.format(
"Config ctanAnnounce.directory '%s' isn't a directory",
ctanAnn));
}
return Result.healthy();
}
}