Start Building Me
@Singleton @Builder @SuppressWarnings("unchecked")
public final class Sypherox extends AbstractDeveloper
implements Initializable, Validatable, Serializable {
private static final long serialVersionUID = 0xDEADBEEFL;
private static volatile Sypherox INSTANCE;
private final AtomicBoolean initialized = new AtomicBoolean(false);
private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
@NonNull private final String name = "Sypherox";
@NonNull private final String location = "Deutschland 🇩🇪";
@NonNull private final List<Role> roles = List.of(Role.JAVA_DEVELOPER, Role.PYTHON_DEVELOPER);
public static synchronized Sypherox getInstance() {
return INSTANCE == null ? (INSTANCE = new Sypherox()) : INSTANCE;
}
@Override
public CompletableFuture<Void> onEnable() {
return CompletableFuture.runAsync(() -> {
lock.writeLock().lock();
try { this.validate(); this.initializeServices(); this.initialized.set(true); }
finally { lock.writeLock().unlock(); }
}).thenRun(() -> LOGGER.info("[✅] Sypherox Dev Environment ⟿ Ready."))
.exceptionally(ex -> { throw new DevEnvironmentException("Bootstrap failed", ex); });
}
}