feat: add exit confirmation dialog, system tray enhancements, and diagnostic options

This commit is contained in:
Claudecio Martins
2026-10-12 12:32:35 -03:00
parent 16212702cb
commit edccfff7ff
10 changed files with 527 additions and 68 deletions
@@ -33,12 +33,27 @@ public class CertificateManager {
/**
* Cria e inicializa uma instância padrão do CertificateManager com os provedores nativos da plataforma.
* Suporta chaves de diagnóstico para isolamento de problemas de middleware:
* -Dcybercore.diag.no-wincert=true (não inicializa Windows Certificate Store)
* -Dcybercore.diag.no-pkcs11=true (não inicializa PKCS#11 / DLLs nativas)
*/
public static CertificateManager createDefault() {
CertificateManager manager = new CertificateManager();
manager.registerProvider(new WindowsCertificateStoreProvider());
if (Boolean.getBoolean("cybercore.diag.no-wincert")) {
logger.warn("Diagnóstico: Provedor Windows Certificate Store DESATIVADO via -Dcybercore.diag.no-wincert=true");
} else {
manager.registerProvider(new WindowsCertificateStoreProvider());
}
manager.registerProvider(new Pkcs12CertificateProvider());
manager.registerProvider(new Pkcs11CertificateProvider());
if (Boolean.getBoolean("cybercore.diag.no-pkcs11")) {
logger.warn("Diagnóstico: Provedor PKCS#11 DESATIVADO via -Dcybercore.diag.no-pkcs11=true");
} else {
manager.registerProvider(new Pkcs11CertificateProvider());
}
return manager;
}
@@ -63,4 +63,34 @@ class CertificateManagerTest {
assertThat(byCnpj).isPresent();
assertThat(byCnpj.get().id()).isEqualTo("cert-1");
}
@Test
@DisplayName("Deve desativar provider PKCS#11 quando chave de diagnóstico estiver ativa")
void shouldRespectDiagnosticsNoPkcs11() {
System.setProperty("cybercore.diag.no-pkcs11", "true");
try {
CertificateManager manager = CertificateManager.createDefault();
assertThat(manager.getProviders())
.extracting(CertificateProvider::getProviderId)
.doesNotContain("provider-pkcs11")
.contains("provider-a1");
} finally {
System.clearProperty("cybercore.diag.no-pkcs11");
}
}
@Test
@DisplayName("Deve desativar provider Windows Certificate Store quando chave de diagnóstico estiver ativa")
void shouldRespectDiagnosticsNoWinCert() {
System.setProperty("cybercore.diag.no-wincert", "true");
try {
CertificateManager manager = CertificateManager.createDefault();
assertThat(manager.getProviders())
.extracting(CertificateProvider::getProviderId)
.doesNotContain("provider-win-store")
.contains("provider-a1");
} finally {
System.clearProperty("cybercore.diag.no-wincert");
}
}
}