Setup ChipDeviceController for all Matter commands (#23712)

diff --git a/examples/java-matter-controller/java/src/com/matter/controller/Main.java b/examples/java-matter-controller/java/src/com/matter/controller/Main.java
index 11b067a..52c84f5 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/Main.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/Main.java
@@ -27,13 +27,15 @@
 
 public class Main {
   private static void registerCommandsDiscover(
-      CommandManager commandManager, CredentialsIssuer credentialsIssuer) {
+      ChipDeviceController controller,
+      CommandManager commandManager,
+      CredentialsIssuer credentialsIssuer) {
     ArrayList<Command> clusterCommands = new ArrayList<Command>();
-    DiscoverCommand discoverCommand = new DiscoverCommand(credentialsIssuer);
+    DiscoverCommand discoverCommand = new DiscoverCommand(controller, credentialsIssuer);
     DiscoverCommissionablesCommand discoverCommissionablesCommand =
-        new DiscoverCommissionablesCommand(credentialsIssuer);
+        new DiscoverCommissionablesCommand(controller, credentialsIssuer);
     DiscoverCommissionersCommand discoverCommissionersCommand =
-        new DiscoverCommissionersCommand(credentialsIssuer);
+        new DiscoverCommissionersCommand(controller, credentialsIssuer);
     clusterCommands.add(discoverCommand);
     clusterCommands.add(discoverCommissionablesCommand);
     clusterCommands.add(discoverCommissionersCommand);
@@ -42,29 +44,36 @@
   }
 
   private static void registerCommandsPairing(
-      CommandManager commandManager, CredentialsIssuer credentialsIssuer) {
+      ChipDeviceController controller,
+      CommandManager commandManager,
+      CredentialsIssuer credentialsIssuer) {
     ArrayList<Command> clusterCommands = new ArrayList<Command>();
-    UnpairCommand unpairCommand = new UnpairCommand(credentialsIssuer);
-    PairCodeCommand pairCodeCommand = new PairCodeCommand(credentialsIssuer);
-    PairCodePaseCommand pairCodePaseCommand = new PairCodePaseCommand(credentialsIssuer);
-    PairCodeWifiCommand pairCodeWifiCommand = new PairCodeWifiCommand(credentialsIssuer);
-    PairCodeThreadCommand pairCodeThreadCommand = new PairCodeThreadCommand(credentialsIssuer);
-    PairEthernetCommand pairEthernetCommand = new PairEthernetCommand(credentialsIssuer);
-    PairOnNetworkCommand pairOnNetworkCommand = new PairOnNetworkCommand(credentialsIssuer);
+    UnpairCommand unpairCommand = new UnpairCommand(controller, credentialsIssuer);
+    PairCodeCommand pairCodeCommand = new PairCodeCommand(controller, credentialsIssuer);
+    PairCodePaseCommand pairCodePaseCommand =
+        new PairCodePaseCommand(controller, credentialsIssuer);
+    PairCodeWifiCommand pairCodeWifiCommand =
+        new PairCodeWifiCommand(controller, credentialsIssuer);
+    PairCodeThreadCommand pairCodeThreadCommand =
+        new PairCodeThreadCommand(controller, credentialsIssuer);
+    PairEthernetCommand pairEthernetCommand =
+        new PairEthernetCommand(controller, credentialsIssuer);
+    PairOnNetworkCommand pairOnNetworkCommand =
+        new PairOnNetworkCommand(controller, credentialsIssuer);
     PairOnNetworkShortCommand pairOnNetworkShortCommand =
-        new PairOnNetworkShortCommand(credentialsIssuer);
+        new PairOnNetworkShortCommand(controller, credentialsIssuer);
     PairOnNetworkLongCommand pairOnNetworkLongCommand =
-        new PairOnNetworkLongCommand(credentialsIssuer);
+        new PairOnNetworkLongCommand(controller, credentialsIssuer);
     PairOnNetworkVendorCommand pairOnNetworkVendorCommand =
-        new PairOnNetworkVendorCommand(credentialsIssuer);
+        new PairOnNetworkVendorCommand(controller, credentialsIssuer);
     PairOnNetworkCommissioningModeCommand pairOnNetworkCommissioningModeCommand =
-        new PairOnNetworkCommissioningModeCommand(credentialsIssuer);
+        new PairOnNetworkCommissioningModeCommand(controller, credentialsIssuer);
     PairOnNetworkCommissionerCommand pairOnNetworkCommissionerCommand =
-        new PairOnNetworkCommissionerCommand(credentialsIssuer);
+        new PairOnNetworkCommissionerCommand(controller, credentialsIssuer);
     PairOnNetworkDeviceTypeCommand pairOnNetworkDeviceTypeCommand =
-        new PairOnNetworkDeviceTypeCommand(credentialsIssuer);
+        new PairOnNetworkDeviceTypeCommand(controller, credentialsIssuer);
     PairOnNetworkInstanceNameCommand pairOnNetworkInstanceNameCommand =
-        new PairOnNetworkInstanceNameCommand(credentialsIssuer);
+        new PairOnNetworkInstanceNameCommand(controller, credentialsIssuer);
     clusterCommands.add(unpairCommand);
     clusterCommands.add(pairCodeCommand);
     clusterCommands.add(pairCodePaseCommand);
@@ -94,8 +103,8 @@
     CredentialsIssuer credentialsIssuer = new CredentialsIssuer();
     CommandManager commandManager = new CommandManager();
 
-    registerCommandsDiscover(commandManager, credentialsIssuer);
-    registerCommandsPairing(commandManager, credentialsIssuer);
+    registerCommandsDiscover(controller, commandManager, credentialsIssuer);
+    registerCommandsPairing(controller, commandManager, credentialsIssuer);
 
     try {
       commandManager.run(args);
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/common/MatterCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/common/MatterCommand.java
index 8b0b068..18f9cec 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/common/MatterCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/common/MatterCommand.java
@@ -18,6 +18,7 @@
 
 package com.matter.controller.commands.common;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.config.PersistentStorage;
 import com.matter.controller.config.PersistentStorageOpCertStore;
 import com.matter.controller.config.PersistentStorageOperationalKeystore;
@@ -26,6 +27,7 @@
 import java.util.concurrent.atomic.AtomicLong;
 
 public abstract class MatterCommand extends Command {
+  private final ChipDeviceController mChipDeviceController;
   private final PersistentStorage mDefaultStorage = new PersistentStorage();
   private final PersistentStorage mCommissionerStorage = new PersistentStorage();
   private final PersistentStorageOperationalKeystore mOperationalKeystore =
@@ -40,13 +42,19 @@
   private final AtomicBoolean mUseMaxSizedCerts = new AtomicBoolean();;
   private final AtomicBoolean mOnlyAllowTrustedCdKeys = new AtomicBoolean();;
 
-  public MatterCommand(String commandName, CredentialsIssuer credIssuerCmds) {
-    this(commandName, credIssuerCmds, null);
+  public MatterCommand(
+      ChipDeviceController controller, String commandName, CredentialsIssuer credIssuerCmds) {
+    this(controller, commandName, credIssuerCmds, null);
   }
 
-  public MatterCommand(String commandName, CredentialsIssuer credIssuerCmds, String helpText) {
+  public MatterCommand(
+      ChipDeviceController controller,
+      String commandName,
+      CredentialsIssuer credIssuerCmds,
+      String helpText) {
     super(commandName, helpText);
     this.mCredIssuerCmds = Optional.ofNullable(credIssuerCmds);
+    this.mChipDeviceController = controller;
 
     addArgument(
         "paa-trust-store-path",
@@ -81,6 +89,11 @@
             + "verifying keys are allowed. If 1 (\"true\"), test keys are disallowed.");
   }
 
+  // This method returns the commissioner instance to be used for running the command.
+  public ChipDeviceController currentCommissioner() {
+    return mChipDeviceController;
+  }
+
   /////////// Command Interface /////////
   @Override
   public void run() throws Exception {
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommand.java
index 00c81d1..3d0bf25 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommand.java
@@ -18,6 +18,7 @@
 

 package com.matter.controller.commands.discover;

 

+import chip.devicecontroller.ChipDeviceController;

 import com.matter.controller.commands.common.CredentialsIssuer;

 import com.matter.controller.commands.common.MatterCommand;

 import java.util.concurrent.atomic.AtomicLong;

@@ -26,8 +27,8 @@
   private final AtomicLong mNodeId = new AtomicLong();

   private final AtomicLong mFabricId = new AtomicLong();

 

-  public DiscoverCommand(CredentialsIssuer credsIssuer) {

-    super("resolve", credsIssuer);

+  public DiscoverCommand(ChipDeviceController controller, CredentialsIssuer credsIssuer) {

+    super(controller, "resolve", credsIssuer);

     addArgument("nodeid", 0, Long.MAX_VALUE, mNodeId, null);

     addArgument("fabricid", 0, Long.MAX_VALUE, mFabricId, null);

   }

diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionablesCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionablesCommand.java
index cb128c4..dd6de25 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionablesCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionablesCommand.java
@@ -18,12 +18,14 @@
 
 package com.matter.controller.commands.discover;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 import com.matter.controller.commands.common.MatterCommand;
 
 public final class DiscoverCommissionablesCommand extends MatterCommand {
-  public DiscoverCommissionablesCommand(CredentialsIssuer credsIssuer) {
-    super("commissionables", credsIssuer);
+  public DiscoverCommissionablesCommand(
+      ChipDeviceController controller, CredentialsIssuer credsIssuer) {
+    super(controller, "commissionables", credsIssuer);
   }
 
   @Override
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionersCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionersCommand.java
index a7a3736..ed5eca2 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionersCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/discover/DiscoverCommissionersCommand.java
@@ -18,12 +18,14 @@
 

 package com.matter.controller.commands.discover;

 

+import chip.devicecontroller.ChipDeviceController;

 import com.matter.controller.commands.common.CredentialsIssuer;

 import com.matter.controller.commands.common.MatterCommand;

 

 public final class DiscoverCommissionersCommand extends MatterCommand {

-  public DiscoverCommissionersCommand(CredentialsIssuer credsIssuer) {

-    super("commissioners", credsIssuer);

+  public DiscoverCommissionersCommand(

+      ChipDeviceController controller, CredentialsIssuer credsIssuer) {

+    super(controller, "commissioners", credsIssuer);

   }

 

   @Override

diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/CloseSessionCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/CloseSessionCommand.java
index f756f53..ce3e263 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/CloseSessionCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/CloseSessionCommand.java
@@ -18,6 +18,7 @@
 

 package com.matter.controller.commands.pairing;

 

+import chip.devicecontroller.ChipDeviceController;

 import com.matter.controller.commands.common.CredentialsIssuer;

 import com.matter.controller.commands.common.MatterCommand;

 import java.util.concurrent.atomic.AtomicInteger;

@@ -27,8 +28,8 @@
   private final AtomicLong mDestinationId = new AtomicLong();

   private final AtomicInteger mTimeoutSecs = new AtomicInteger();

 

-  public CloseSessionCommand(CredentialsIssuer credsIssuer) {

-    super("close-session", credsIssuer);

+  public CloseSessionCommand(ChipDeviceController controller, CredentialsIssuer credsIssuer) {

+    super(controller, "close-session", credsIssuer);

     addArgument("destination-id", 0, Long.MAX_VALUE, mDestinationId, null);

     addArgument(

         "timeout",

diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodeCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodeCommand.java
index ceadf2f..a95237b 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodeCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodeCommand.java
@@ -1,10 +1,11 @@
 package com.matter.controller.commands.pairing;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 
 public final class PairCodeCommand extends PairingCommand {
-  public PairCodeCommand(CredentialsIssuer credsIssue) {
-    super("code", PairingModeType.CODE, PairingNetworkType.NONE, credsIssue);
+  public PairCodeCommand(ChipDeviceController controller, CredentialsIssuer credsIssue) {
+    super(controller, "code", PairingModeType.CODE, PairingNetworkType.NONE, credsIssue);
   }
 
   @Override
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodePaseCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodePaseCommand.java
index 32a3bad..b56ce3a 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodePaseCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodePaseCommand.java
@@ -1,10 +1,16 @@
 package com.matter.controller.commands.pairing;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 
 public final class PairCodePaseCommand extends PairingCommand {
-  public PairCodePaseCommand(CredentialsIssuer credsIssue) {
-    super("code-paseonly", PairingModeType.CODE_PASE_ONLY, PairingNetworkType.NONE, credsIssue);
+  public PairCodePaseCommand(ChipDeviceController controller, CredentialsIssuer credsIssue) {
+    super(
+        controller,
+        "code-paseonly",
+        PairingModeType.CODE_PASE_ONLY,
+        PairingNetworkType.NONE,
+        credsIssue);
   }
 
   @Override
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodeThreadCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodeThreadCommand.java
index 8d036d2..150ca17 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodeThreadCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodeThreadCommand.java
@@ -1,10 +1,11 @@
 package com.matter.controller.commands.pairing;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 
 public final class PairCodeThreadCommand extends PairingCommand {
-  public PairCodeThreadCommand(CredentialsIssuer credsIssue) {
-    super("code-thread", PairingModeType.CODE, PairingNetworkType.THREAD, credsIssue);
+  public PairCodeThreadCommand(ChipDeviceController controller, CredentialsIssuer credsIssue) {
+    super(controller, "code-thread", PairingModeType.CODE, PairingNetworkType.THREAD, credsIssue);
   }
 
   @Override
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodeWifiCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodeWifiCommand.java
index 80c8098..2aa7640 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodeWifiCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairCodeWifiCommand.java
@@ -1,10 +1,11 @@
 package com.matter.controller.commands.pairing;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 
 public final class PairCodeWifiCommand extends PairingCommand {
-  public PairCodeWifiCommand(CredentialsIssuer credsIssue) {
-    super("code-wifi", PairingModeType.CODE, PairingNetworkType.WIFI, credsIssue);
+  public PairCodeWifiCommand(ChipDeviceController controller, CredentialsIssuer credsIssue) {
+    super(controller, "code-wifi", PairingModeType.CODE, PairingNetworkType.WIFI, credsIssue);
   }
 
   @Override
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairEthernetCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairEthernetCommand.java
index 4296df7..b289776 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairEthernetCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairEthernetCommand.java
@@ -1,10 +1,12 @@
 package com.matter.controller.commands.pairing;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 
 public final class PairEthernetCommand extends PairingCommand {
-  public PairEthernetCommand(CredentialsIssuer credsIssue) {
-    super("ethernet", PairingModeType.ETHERNET, PairingNetworkType.ETHERNET, credsIssue);
+  public PairEthernetCommand(ChipDeviceController controller, CredentialsIssuer credsIssue) {
+    super(
+        controller, "ethernet", PairingModeType.ETHERNET, PairingNetworkType.ETHERNET, credsIssue);
   }
 
   @Override
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkCommand.java
index 073e13f..de03adc 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkCommand.java
@@ -1,10 +1,11 @@
 package com.matter.controller.commands.pairing;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 
 public final class PairOnNetworkCommand extends PairingCommand {
-  public PairOnNetworkCommand(CredentialsIssuer credsIssue) {
-    super("onnetwork", PairingModeType.ON_NETWORK, PairingNetworkType.NONE, credsIssue);
+  public PairOnNetworkCommand(ChipDeviceController controller, CredentialsIssuer credsIssue) {
+    super(controller, "onnetwork", PairingModeType.ON_NETWORK, PairingNetworkType.NONE, credsIssue);
   }
 
   @Override
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkCommissionerCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkCommissionerCommand.java
index 6feb9d9..2a73750 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkCommissionerCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkCommissionerCommand.java
@@ -1,10 +1,13 @@
 package com.matter.controller.commands.pairing;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 
 public final class PairOnNetworkCommissionerCommand extends PairingCommand {
-  public PairOnNetworkCommissionerCommand(CredentialsIssuer credsIssue) {
+  public PairOnNetworkCommissionerCommand(
+      ChipDeviceController controller, CredentialsIssuer credsIssue) {
     super(
+        controller,
         "onnetwork-commissioner",
         PairingModeType.ON_NETWORK,
         PairingNetworkType.NONE,
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkCommissioningModeCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkCommissioningModeCommand.java
index 4b44e5c..62a3c14 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkCommissioningModeCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkCommissioningModeCommand.java
@@ -1,10 +1,13 @@
 package com.matter.controller.commands.pairing;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 
 public final class PairOnNetworkCommissioningModeCommand extends PairingCommand {
-  public PairOnNetworkCommissioningModeCommand(CredentialsIssuer credsIssue) {
+  public PairOnNetworkCommissioningModeCommand(
+      ChipDeviceController controller, CredentialsIssuer credsIssue) {
     super(
+        controller,
         "onnetwork-commissioning-mode",
         PairingModeType.ON_NETWORK,
         PairingNetworkType.NONE,
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkDeviceTypeCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkDeviceTypeCommand.java
index ad6e98f..5a16ae3 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkDeviceTypeCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkDeviceTypeCommand.java
@@ -1,10 +1,13 @@
 package com.matter.controller.commands.pairing;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 
 public final class PairOnNetworkDeviceTypeCommand extends PairingCommand {
-  public PairOnNetworkDeviceTypeCommand(CredentialsIssuer credsIssue) {
+  public PairOnNetworkDeviceTypeCommand(
+      ChipDeviceController controller, CredentialsIssuer credsIssue) {
     super(
+        controller,
         "onnetwork-device-type",
         PairingModeType.ON_NETWORK,
         PairingNetworkType.NONE,
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkFabricCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkFabricCommand.java
index c430cd7..c0db4cd 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkFabricCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkFabricCommand.java
@@ -1,11 +1,14 @@
 package com.matter.controller.commands.pairing;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 import java.net.UnknownHostException;
 
 public final class PairOnNetworkFabricCommand extends PairingCommand {
-  public PairOnNetworkFabricCommand(CredentialsIssuer credsIssue) throws UnknownHostException {
+  public PairOnNetworkFabricCommand(ChipDeviceController controller, CredentialsIssuer credsIssue)
+      throws UnknownHostException {
     super(
+        controller,
         "onnetwork-fabric",
         PairingModeType.ON_NETWORK,
         PairingNetworkType.NONE,
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkInstanceNameCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkInstanceNameCommand.java
index c3dd7f7..45d9166 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkInstanceNameCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkInstanceNameCommand.java
@@ -1,10 +1,13 @@
 package com.matter.controller.commands.pairing;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 
 public final class PairOnNetworkInstanceNameCommand extends PairingCommand {
-  public PairOnNetworkInstanceNameCommand(CredentialsIssuer credsIssue) {
+  public PairOnNetworkInstanceNameCommand(
+      ChipDeviceController controller, CredentialsIssuer credsIssue) {
     super(
+        controller,
         "onnetwork-instance-name",
         PairingModeType.ON_NETWORK,
         PairingNetworkType.NONE,
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkLongCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkLongCommand.java
index 62ee8c0..23c4cb5 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkLongCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkLongCommand.java
@@ -1,10 +1,12 @@
 package com.matter.controller.commands.pairing;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 
 public final class PairOnNetworkLongCommand extends PairingCommand {
-  public PairOnNetworkLongCommand(CredentialsIssuer credsIssue) {
+  public PairOnNetworkLongCommand(ChipDeviceController controller, CredentialsIssuer credsIssue) {
     super(
+        controller,
         "onnetwork-long",
         PairingModeType.ON_NETWORK,
         PairingNetworkType.NONE,
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkShortCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkShortCommand.java
index e6af8dc..1356946 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkShortCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkShortCommand.java
@@ -1,10 +1,12 @@
 package com.matter.controller.commands.pairing;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 
 public final class PairOnNetworkShortCommand extends PairingCommand {
-  public PairOnNetworkShortCommand(CredentialsIssuer credsIssue) {
+  public PairOnNetworkShortCommand(ChipDeviceController controller, CredentialsIssuer credsIssue) {
     super(
+        controller,
         "onnetwork-short",
         PairingModeType.ON_NETWORK,
         PairingNetworkType.NONE,
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkVendorCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkVendorCommand.java
index 398203d..65bdfc5 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkVendorCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairOnNetworkVendorCommand.java
@@ -1,10 +1,12 @@
 package com.matter.controller.commands.pairing;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 
 public final class PairOnNetworkVendorCommand extends PairingCommand {
-  public PairOnNetworkVendorCommand(CredentialsIssuer credsIssue) {
+  public PairOnNetworkVendorCommand(ChipDeviceController controller, CredentialsIssuer credsIssue) {
     super(
+        controller,
         "onnetwork-vendor",
         PairingModeType.ON_NETWORK,
         PairingNetworkType.NONE,
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairingCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairingCommand.java
index 151c88b..ead0912 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairingCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/PairingCommand.java
@@ -18,6 +18,7 @@
 

 package com.matter.controller.commands.pairing;

 

+import chip.devicecontroller.ChipDeviceController;

 import com.matter.controller.commands.common.CredentialsIssuer;

 import com.matter.controller.commands.common.IPAddress;

 import com.matter.controller.commands.common.MatterCommand;

@@ -47,20 +48,22 @@
   private final StringBuffer mDiscoveryFilterInstanceName = new StringBuffer();

 

   public PairingCommand(

+      ChipDeviceController controller,

       String commandName,

       PairingModeType mode,

       PairingNetworkType networkType,

       CredentialsIssuer credsIssuer) {

-    this(commandName, mode, networkType, credsIssuer, DiscoveryFilterType.NONE);

+    this(controller, commandName, mode, networkType, credsIssuer, DiscoveryFilterType.NONE);

   }

 

   public PairingCommand(

+      ChipDeviceController controller,

       String commandName,

       PairingModeType mode,

       PairingNetworkType networkType,

       CredentialsIssuer credsIssuer,

       DiscoveryFilterType filterType) {

-    super(commandName, credsIssuer);

+    super(controller, commandName, credsIssuer);

     this.mPairingMode = mode;

     this.mNetworkType = networkType;

     this.mFilterType = filterType;

diff --git a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/UnpairCommand.java b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/UnpairCommand.java
index 8cf1f84..2c33c8d 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/UnpairCommand.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/commands/pairing/UnpairCommand.java
@@ -1,10 +1,11 @@
 package com.matter.controller.commands.pairing;
 
+import chip.devicecontroller.ChipDeviceController;
 import com.matter.controller.commands.common.CredentialsIssuer;
 
 public final class UnpairCommand extends PairingCommand {
-  public UnpairCommand(CredentialsIssuer credsIssue) {
-    super("unpair", PairingModeType.NONE, PairingNetworkType.NONE, credsIssue);
+  public UnpairCommand(ChipDeviceController controller, CredentialsIssuer credsIssue) {
+    super(controller, "unpair", PairingModeType.NONE, PairingNetworkType.NONE, credsIssue);
   }
 
   @Override