From c472e4836a0a85cda5db114f2e4c80564b7963c0 Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" Date: Tue, 23 Jan 2024 14:03:05 +0700 Subject: [PATCH] Refactor CMSEngine.initSubsystem() --- .../org/dogtagpki/server/ca/CAEngine.java | 14 +++++++++++-- .../org/dogtagpki/server/kra/KRAEngine.java | 14 +++++++++++-- .../org/dogtagpki/server/ocsp/OCSPEngine.java | 15 +++++++++++-- .../com/netscape/cmscore/apps/CMSEngine.java | 21 ++++++++++--------- .../org/dogtagpki/server/tks/TKSEngine.java | 14 +++++++++++-- 5 files changed, 60 insertions(+), 18 deletions(-) diff --git a/base/ca/src/main/java/org/dogtagpki/server/ca/CAEngine.java b/base/ca/src/main/java/org/dogtagpki/server/ca/CAEngine.java index 8e326be13ad..ff92127afbc 100644 --- a/base/ca/src/main/java/org/dogtagpki/server/ca/CAEngine.java +++ b/base/ca/src/main/java/org/dogtagpki/server/ca/CAEngine.java @@ -109,6 +109,7 @@ import com.netscape.cms.servlet.processors.CAProcessor; import com.netscape.cmscore.apps.CMS; import com.netscape.cmscore.apps.CMSEngine; +import com.netscape.cmscore.apps.SubsystemInfoConfig; import com.netscape.cmscore.authentication.VerifiedCert; import com.netscape.cmscore.base.ArgBlock; import com.netscape.cmscore.base.ConfigStorage; @@ -1085,14 +1086,23 @@ public void initSubsystems() throws Exception { } @Override - public void initSubsystem(Subsystem subsystem, ConfigStore subsystemConfig) throws Exception { + public void initSubsystem(SubsystemInfoConfig subsystemInfoConfig, ConfigStore subsystemConfig) throws Exception { + + String className = subsystemInfoConfig.getClassName(); + Class clazz = Class.forName(className); + + Subsystem subsystem = (Subsystem) clazz.getDeclaredConstructor().newInstance(); + subsystem.setCMSEngine(this); + subsystem.setId(subsystemInfoConfig.getID()); + + subsystems.put(subsystemInfoConfig.getID(), subsystem); if (subsystem instanceof CertificateAuthority || subsystem instanceof CrossCertPairSubsystem) { // skip initialization during installation if (isPreOpMode()) return; } - super.initSubsystem(subsystem, subsystemConfig); + subsystem.init(subsystemConfig); if (subsystem instanceof CertificateAuthority ca) { diff --git a/base/kra/src/main/java/org/dogtagpki/server/kra/KRAEngine.java b/base/kra/src/main/java/org/dogtagpki/server/kra/KRAEngine.java index 212241957df..26029cd8b9c 100644 --- a/base/kra/src/main/java/org/dogtagpki/server/kra/KRAEngine.java +++ b/base/kra/src/main/java/org/dogtagpki/server/kra/KRAEngine.java @@ -20,6 +20,7 @@ import com.netscape.certsrv.base.Subsystem; import com.netscape.cmscore.apps.CMSEngine; +import com.netscape.cmscore.apps.SubsystemInfoConfig; import com.netscape.cmscore.base.ConfigStorage; import com.netscape.cmscore.base.ConfigStore; import com.netscape.cmscore.request.KeyRequestRepository; @@ -57,14 +58,23 @@ public KeyRequestRepository getKeyRequestRepository() { } @Override - public void initSubsystem(Subsystem subsystem, ConfigStore subsystemConfig) throws Exception { + public void initSubsystem(SubsystemInfoConfig subsystemInfoConfig, ConfigStore subsystemConfig) throws Exception { + + String className = subsystemInfoConfig.getClassName(); + Class clazz = Class.forName(className); + + Subsystem subsystem = (Subsystem) clazz.getDeclaredConstructor().newInstance(); + subsystem.setCMSEngine(this); + subsystem.setId(subsystemInfoConfig.getID()); + + subsystems.put(subsystemInfoConfig.getID(), subsystem); if (subsystem instanceof KeyRecoveryAuthority) { // skip initialization during installation if (isPreOpMode()) return; } - super.initSubsystem(subsystem, subsystemConfig); + subsystem.init(subsystemConfig); } @Override diff --git a/base/ocsp/src/main/java/org/dogtagpki/server/ocsp/OCSPEngine.java b/base/ocsp/src/main/java/org/dogtagpki/server/ocsp/OCSPEngine.java index 37d9bd8b617..fa4c68026a2 100644 --- a/base/ocsp/src/main/java/org/dogtagpki/server/ocsp/OCSPEngine.java +++ b/base/ocsp/src/main/java/org/dogtagpki/server/ocsp/OCSPEngine.java @@ -38,6 +38,7 @@ import com.netscape.cms.ocsp.LDAPStore; import com.netscape.cmscore.apps.CMSEngine; import com.netscape.cmscore.apps.DatabaseConfig; +import com.netscape.cmscore.apps.SubsystemInfoConfig; import com.netscape.cmscore.base.ConfigStorage; import com.netscape.cmscore.base.ConfigStore; import com.netscape.cmscore.cert.CertUtils; @@ -83,14 +84,24 @@ public void initDBSubsystem() throws Exception { dbSubsystem.setEngineConfig(config); } @Override - public void initSubsystem(Subsystem subsystem, ConfigStore subsystemConfig) throws Exception { + public void initSubsystem(SubsystemInfoConfig subsystemInfoConfig, ConfigStore subsystemConfig) throws Exception { + + String className = subsystemInfoConfig.getClassName(); + Class clazz = Class.forName(className); + + Subsystem subsystem = (Subsystem) clazz.getDeclaredConstructor().newInstance(); + subsystem.setCMSEngine(this); + subsystem.setId(subsystemInfoConfig.getID()); + + subsystems.put(subsystemInfoConfig.getID(), subsystem); if (subsystem instanceof OCSPAuthority) { // skip initialization during installation if (isPreOpMode()) return; } - super.initSubsystem(subsystem, subsystemConfig); + subsystem.init(subsystemConfig); + if (subsystem instanceof OCSPAuthority) { subsystem.startup(); } diff --git a/base/server/src/main/java/com/netscape/cmscore/apps/CMSEngine.java b/base/server/src/main/java/com/netscape/cmscore/apps/CMSEngine.java index b154f1896a6..00a0837db36 100644 --- a/base/server/src/main/java/com/netscape/cmscore/apps/CMSEngine.java +++ b/base/server/src/main/java/com/netscape/cmscore/apps/CMSEngine.java @@ -960,7 +960,16 @@ public Subsystem getSubsystem(String name) { return subsystems.get(name); } - public void initSubsystem(Subsystem subsystem, ConfigStore subsystemConfig) throws Exception { + public void initSubsystem(SubsystemInfoConfig subsystemInfoConfig, ConfigStore subsystemConfig) throws Exception { + + String className = subsystemInfoConfig.getClassName(); + Class clazz = Class.forName(className); + + Subsystem subsystem = (Subsystem) clazz.getDeclaredConstructor().newInstance(); + subsystem.setCMSEngine(this); + subsystem.setId(subsystemInfoConfig.getID()); + + subsystems.put(subsystemInfoConfig.getID(), subsystem); if (subsystem instanceof SelfTestSubsystem) { // skip SelfTestSubsystem during installation @@ -986,16 +995,8 @@ public void initSubsystems() throws Exception { continue; } - String className = subsystemInfoConfig.getClassName(); - - Subsystem subsystem = (Subsystem) Class.forName(className).getDeclaredConstructor().newInstance(); - subsystem.setCMSEngine(this); - subsystem.setId(id); - - subsystems.put(id, subsystem); - ConfigStore subsystemConfig = mConfig.getSubStore(id, ConfigStore.class); - initSubsystem(subsystem, subsystemConfig); + initSubsystem(subsystemInfoConfig, subsystemConfig); } } diff --git a/base/tks/src/main/java/org/dogtagpki/server/tks/TKSEngine.java b/base/tks/src/main/java/org/dogtagpki/server/tks/TKSEngine.java index 18955747f47..900032b6d88 100644 --- a/base/tks/src/main/java/org/dogtagpki/server/tks/TKSEngine.java +++ b/base/tks/src/main/java/org/dogtagpki/server/tks/TKSEngine.java @@ -20,6 +20,7 @@ import com.netscape.certsrv.base.Subsystem; import com.netscape.cmscore.apps.CMSEngine; +import com.netscape.cmscore.apps.SubsystemInfoConfig; import com.netscape.cmscore.base.ConfigStorage; import com.netscape.cmscore.base.ConfigStore; import com.netscape.tks.TKSAuthority; @@ -48,13 +49,22 @@ public TKSEngineConfig getConfig() { } @Override - public void initSubsystem(Subsystem subsystem, ConfigStore subsystemConfig) throws Exception { + public void initSubsystem(SubsystemInfoConfig subsystemInfoConfig, ConfigStore subsystemConfig) throws Exception { + + String className = subsystemInfoConfig.getClassName(); + Class clazz = Class.forName(className); + + Subsystem subsystem = (Subsystem) clazz.getDeclaredConstructor().newInstance(); + subsystem.setCMSEngine(this); + subsystem.setId(subsystemInfoConfig.getID()); + + subsystems.put(subsystemInfoConfig.getID(), subsystem); if (subsystem instanceof TKSAuthority) { // skip initialization during installation if (isPreOpMode()) return; } - super.initSubsystem(subsystem, subsystemConfig); + subsystem.init(subsystemConfig); } }