diff --git a/privilege/src/main/java/li/strolch/privilege/model/CertificateThreadLocal.java b/privilege/src/main/java/li/strolch/privilege/model/CertificateThreadLocal.java new file mode 100644 index 000000000..7132f5f7c --- /dev/null +++ b/privilege/src/main/java/li/strolch/privilege/model/CertificateThreadLocal.java @@ -0,0 +1,27 @@ +package li.strolch.privilege.model; + +public class CertificateThreadLocal extends ThreadLocal { + + private static final CertificateThreadLocal instance = new CertificateThreadLocal(); + + public static boolean hasCert() { + return instance.get() != null; + } + + public static Certificate getCert() { + Certificate cert = instance.get(); + if (cert == null) + throw new IllegalStateException("No Cert available on thread " + Thread.currentThread().getName()); + return cert; + } + + public static void setCert(Certificate cert) { + if (instance.get() != null) + throw new IllegalStateException("THIS THREAD HAS ALREADY HAS A CERT!"); + instance.set(cert); + } + + public static void removeCert() { + instance.remove(); + } +}