This is an automated email from the ASF dual-hosted git repository.

namelchev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new ff1c7ed548e IGNITE-22203 Refactor CommandHandler, remove unnecessary 
code (#11343)
ff1c7ed548e is described below

commit ff1c7ed548e0af1fbf2b9a26e3c1c476002e6eb7
Author: Nikita Amelchev <[email protected]>
AuthorDate: Tue May 14 17:55:19 2024 +0300

    IGNITE-22203 Refactor CommandHandler, remove unnecessary code (#11343)
---
 .../internal/commandline/CliCommandInvoker.java    |  12 +-
 .../internal/commandline/CommandHandler.java       | 140 ++++++--------
 .../commandline/CommandHandlerParsingTest.java     | 209 ++++++++++-----------
 3 files changed, 161 insertions(+), 200 deletions(-)

diff --git 
a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CliCommandInvoker.java
 
b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CliCommandInvoker.java
index aa7d4ec6333..816910569fa 100644
--- 
a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CliCommandInvoker.java
+++ 
b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CliCommandInvoker.java
@@ -47,7 +47,7 @@ import static 
org.apache.ignite.internal.commandline.CommandHandler.DFLT_HOST;
  */
 public class CliCommandInvoker<A extends IgniteDataTransferObject> extends 
CommandInvoker<A> implements AutoCloseable {
     /** Client configuration. */
-    private GridClientConfiguration clientCfg;
+    private final GridClientConfiguration clientCfg;
 
     /** Client. */
     private GridClient client;
@@ -221,14 +221,4 @@ public class CliCommandInvoker<A extends 
IgniteDataTransferObject> extends Comma
 
         return compute.balancer().balancedNode(nodes);
     }
-
-    /** */
-    public void clientConfiguration(GridClientConfiguration clientCfg) {
-        this.clientCfg = clientCfg;
-    }
-
-    /** */
-    public GridClientConfiguration clientConfiguration() {
-        return clientCfg;
-    }
 }
diff --git 
a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
 
b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
index ca73e41bd0e..03193621665 100644
--- 
a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
+++ 
b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
@@ -255,81 +255,79 @@ public class CommandHandler {
 
             cmdName = 
toFormattedCommandName(args.cmdPath().peekLast().getClass()).toUpperCase();
 
-            try (CliCommandInvoker<A> invoker = new 
CliCommandInvoker<>(args.command(), args.commandArg(), 
getClientConfiguration(args))) {
-                int tryConnectMaxCnt = 3;
+            int tryConnectMaxCnt = 3;
 
-                boolean suppliedAuth = !F.isEmpty(args.userName()) && 
!F.isEmpty(args.password());
+            boolean suppliedAuth = !F.isEmpty(args.userName()) && 
!F.isEmpty(args.password());
 
-                boolean credentialsRequested = false;
+            boolean credentialsRequested = false;
 
-                while (true) {
-                    try {
-                        if (!invoker.prepare(logger::info))
-                            return EXIT_CODE_OK;
+            while (true) {
+                try (
+                    CliCommandInvoker<A> invoker =
+                        new CliCommandInvoker<>(args.command(), 
args.commandArg(), getClientConfiguration(args))
+                ) {
+                    if (!invoker.prepare(logger::info))
+                        return EXIT_CODE_OK;
 
-                        if (!args.autoConfirmation()) {
-                            if (!confirm(invoker.confirmationPrompt())) {
-                                logger.info("Operation cancelled.");
+                    if (!args.autoConfirmation()) {
+                        if (!confirm(invoker.confirmationPrompt())) {
+                            logger.info("Operation cancelled.");
 
-                                return EXIT_CODE_OK;
-                            }
+                            return EXIT_CODE_OK;
                         }
+                    }
+
+                    logger.info("Command [" + cmdName + "] started");
+                    logger.info("Arguments: " + argumentsToString(rawArgs));
+                    logger.info(U.DELIM);
+
+                    String deprecationMsg = 
args.command().deprecationMessage(args.commandArg());
+
+                    if (deprecationMsg != null)
+                        logger.warning(deprecationMsg);
 
-                        logger.info("Command [" + cmdName + "] started");
-                        logger.info("Arguments: " + 
argumentsToString(rawArgs));
-                        logger.info(U.DELIM);
-
-                        String deprecationMsg = 
args.command().deprecationMessage(args.commandArg());
-
-                        if (deprecationMsg != null)
-                            logger.warning(deprecationMsg);
-
-                        if (args.command() instanceof HelpCommand)
-                            printUsage(logger, args.cmdPath().peekLast());
-                        else {
-                            try {
-                                if (args.command() instanceof 
BeforeNodeStartCommand)
-                                    lastOperationRes = 
invoker.invokeBeforeNodeStart(logger::info);
-                                else
-                                    lastOperationRes = 
invoker.invoke(logger::info, args.verbose());
-                            }
-                            catch (Throwable e) {
-                                logger.error("Failed to perform operation.");
-                                logger.error(CommandLogger.errorMessage(e));
-
-                                throw e;
-                            }
+                    if (args.command() instanceof HelpCommand)
+                        printUsage(logger, args.cmdPath().peekLast());
+                    else {
+                        try {
+                            if (args.command() instanceof 
BeforeNodeStartCommand)
+                                lastOperationRes = 
invoker.invokeBeforeNodeStart(logger::info);
+                            else
+                                lastOperationRes = 
invoker.invoke(logger::info, args.verbose());
                         }
+                        catch (Throwable e) {
+                            logger.error("Failed to perform operation.");
+                            logger.error(CommandLogger.errorMessage(e));
 
-                        break;
-                    }
-                    catch (Throwable e) {
-                        if (!isAuthError(e))
                             throw e;
+                        }
+                    }
 
-                        if (suppliedAuth)
-                            throw new GridClientAuthenticationException("Wrong 
credentials.");
+                    break;
+                }
+                catch (Throwable e) {
+                    if (!isAuthError(e))
+                        throw e;
 
-                        if (tryConnectMaxCnt == 0) {
-                            throw new 
GridClientAuthenticationException("Maximum number of " +
-                                "retries exceeded");
-                        }
+                    if (suppliedAuth)
+                        throw new GridClientAuthenticationException("Wrong 
credentials.");
 
-                        logger.info(credentialsRequested ?
-                            "Authentication error, please try again." :
-                            "This cluster requires authentication.");
+                    if (tryConnectMaxCnt == 0)
+                        throw new GridClientAuthenticationException("Maximum 
number of retries exceeded");
 
-                        if (credentialsRequested)
-                            tryConnectMaxCnt--;
+                    logger.info(credentialsRequested ?
+                        "Authentication error, please try again." :
+                        "This cluster requires authentication.");
 
-                        invoker.clientConfiguration(getClientConfiguration(
-                            retrieveUserName(args, 
invoker.clientConfiguration()),
-                            new String(requestPasswordFromConsole("password: 
")),
-                            args
-                        ));
+                    if (credentialsRequested)
+                        tryConnectMaxCnt--;
 
-                        credentialsRequested = true;
-                    }
+                    if (F.isEmpty(args.userName()))
+                        args.userName(requestDataFromConsole("user: "));
+
+                    args.password(new 
String(requestPasswordFromConsole("password: ")));
+
+                    credentialsRequested = true;
                 }
             }
 
@@ -514,30 +512,6 @@ public class CommandHandler {
         return sb.toString();
     }
 
-    /**
-     * Does one of three things:
-     * <ul>
-     *     <li>returns user name from connection parameters if it is 
there;</li>
-     *     <li>returns user name from client configuration if it is there;</li>
-     *     <li>requests user input and returns entered name.</li>
-     * </ul>
-     *
-     * @param args Connection parameters.
-     * @param clientCfg Client configuration.
-     * @throws IgniteCheckedException If security credetials cannot be 
provided from client configuration.
-     */
-    private String retrieveUserName(
-        ConnectionAndSslParameters args,
-        GridClientConfiguration clientCfg
-    ) throws IgniteCheckedException {
-        if (!F.isEmpty(args.userName()))
-            return args.userName();
-        else if (clientCfg.getSecurityCredentialsProvider() == null)
-            return requestDataFromConsole("user: ");
-        else
-            return 
(String)clientCfg.getSecurityCredentialsProvider().credentials().getLogin();
-    }
-
     /**
      * @param args Common arguments.
      * @return Thin client configuration to connect to cluster.
diff --git 
a/modules/control-utility/src/test/java/org/apache/ignite/internal/commandline/CommandHandlerParsingTest.java
 
b/modules/control-utility/src/test/java/org/apache/ignite/internal/commandline/CommandHandlerParsingTest.java
index fb9f51ff9e2..ba4bb926417 100644
--- 
a/modules/control-utility/src/test/java/org/apache/ignite/internal/commandline/CommandHandlerParsingTest.java
+++ 
b/modules/control-utility/src/test/java/org/apache/ignite/internal/commandline/CommandHandlerParsingTest.java
@@ -47,33 +47,37 @@ import 
org.apache.ignite.internal.management.ShutdownPolicyCommandArg;
 import org.apache.ignite.internal.management.SystemViewCommand;
 import org.apache.ignite.internal.management.WarmUpCommand;
 import org.apache.ignite.internal.management.api.Argument;
-import org.apache.ignite.internal.management.api.BeforeNodeStartCommand;
 import org.apache.ignite.internal.management.api.Command;
 import org.apache.ignite.internal.management.api.CommandsRegistry;
-import org.apache.ignite.internal.management.api.ComputeCommand;
 import org.apache.ignite.internal.management.api.EnumDescription;
-import org.apache.ignite.internal.management.api.HelpCommand;
-import org.apache.ignite.internal.management.api.LocalCommand;
 import org.apache.ignite.internal.management.api.Positional;
-import org.apache.ignite.internal.management.baseline.BaselineAddCommand;
-import org.apache.ignite.internal.management.baseline.BaselineAddCommandArg;
-import org.apache.ignite.internal.management.baseline.BaselineCommand;
-import org.apache.ignite.internal.management.baseline.BaselineRemoveCommand;
-import org.apache.ignite.internal.management.baseline.BaselineSetCommand;
+import org.apache.ignite.internal.management.baseline.AbstractBaselineCommand;
+import 
org.apache.ignite.internal.management.baseline.BaselineAutoAdjustCommand;
+import org.apache.ignite.internal.management.baseline.BaselineVersionCommand;
+import org.apache.ignite.internal.management.cache.CacheClearCommand;
+import org.apache.ignite.internal.management.cache.CacheClearCommandArg;
 import org.apache.ignite.internal.management.cache.CacheCommand;
+import org.apache.ignite.internal.management.cache.CacheDestroyCommand;
+import org.apache.ignite.internal.management.cache.CacheDestroyCommandArg;
 import org.apache.ignite.internal.management.cache.CacheFindGarbageCommandArg;
 import 
org.apache.ignite.internal.management.cache.CacheScheduleIndexesRebuildCommandArg;
 import 
org.apache.ignite.internal.management.cache.CacheValidateIndexesCommandArg;
 import org.apache.ignite.internal.management.cdc.CdcCommand;
+import 
org.apache.ignite.internal.management.cdc.CdcDeleteLostSegmentLinksCommand;
 import org.apache.ignite.internal.management.consistency.ConsistencyCommand;
 import 
org.apache.ignite.internal.management.defragmentation.DefragmentationCommand;
+import 
org.apache.ignite.internal.management.encryption.EncryptionChangeCacheKeyCommand;
+import 
org.apache.ignite.internal.management.encryption.EncryptionChangeMasterKeyCommand;
 import org.apache.ignite.internal.management.encryption.EncryptionCommand;
 import org.apache.ignite.internal.management.kill.KillCommand;
 import org.apache.ignite.internal.management.meta.MetaCommand;
+import org.apache.ignite.internal.management.meta.MetaRemoveCommand;
+import org.apache.ignite.internal.management.meta.MetaUpdateCommand;
 import org.apache.ignite.internal.management.metric.MetricCommand;
 import 
org.apache.ignite.internal.management.performancestatistics.PerformanceStatisticsCommand;
 import org.apache.ignite.internal.management.property.PropertyCommand;
 import org.apache.ignite.internal.management.snapshot.SnapshotCommand;
+import org.apache.ignite.internal.management.snapshot.SnapshotRestoreCommand;
 import org.apache.ignite.internal.management.tx.TxCommand;
 import org.apache.ignite.internal.management.tx.TxCommandArg;
 import org.apache.ignite.internal.management.tx.TxSortOrder;
@@ -81,6 +85,7 @@ import org.apache.ignite.internal.management.wal.WalCommand;
 import org.apache.ignite.internal.management.wal.WalDeleteCommandArg;
 import org.apache.ignite.internal.management.wal.WalPrintCommand;
 import 
org.apache.ignite.internal.management.wal.WalPrintCommand.WalPrintCommandArg;
+import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.T2;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.testframework.GridTestUtils;
@@ -105,7 +110,6 @@ import static 
org.apache.ignite.internal.management.api.CommandUtils.cmdText;
 import static 
org.apache.ignite.internal.management.api.CommandUtils.executable;
 import static 
org.apache.ignite.internal.management.api.CommandUtils.visitCommandParams;
 import static org.apache.ignite.testframework.GridTestUtils.assertThrows;
-import static org.apache.ignite.util.CdcCommandTest.DELETE_LOST_SEGMENT_LINKS;
 import static 
org.apache.ignite.util.GridCommandHandlerIndexingCheckSizeTest.CACHE;
 import static org.apache.ignite.util.SystemViewCommandTest.NODE_ID;
 import static org.junit.Assert.assertArrayEquals;
@@ -439,122 +443,115 @@ public class CommandHandlerParsingTest {
      */
     @Test
     public <A extends IgniteDataTransferObject> void 
testParseAutoConfirmationFlag() {
-        new IgniteCommandRegistry().commands().forEachRemaining(e -> {
-            Command<A, ?> cmdL = (Command<A, ?>)e.getValue();
-
-            // SET_STATE command has mandatory argument used in confirmation 
message.
-            CliCommandInvoker<A> cmd = cmdL.getClass() != SetStateCommand.class
-                ? new CliCommandInvoker<>(cmdL, null, null)
-                : new CliCommandInvoker<>(parseArgs(asList(cmdText(cmdL), 
"ACTIVE")).command(), null, null);
-
-            if (!(cmd instanceof ComputeCommand)
-                && !(cmd instanceof LocalCommand)
-                && !(cmd instanceof BeforeNodeStartCommand)
-                && !(cmd instanceof HelpCommand)) {
-                return;
-            }
-
-            try {
-                if (cmdL.confirmationPrompt(cmdL.argClass().newInstance()) == 
null)
-                    return;
-            }
-            catch (InstantiationException | IllegalAccessException ex) {
-                throw new IgniteException(ex);
-            }
-
-            ConnectionAndSslParameters args;
+        new IgniteCommandRegistry().commands()
+            .forEachRemaining(e -> 
checkParseAutoConfirmationFlag(e.getValue(), null));
+    }
 
-            if (cmdL.getClass() == SetStateCommand.class)
-                args = parseArgs(asList(cmdText(cmdL), "ACTIVE"));
-            else if (cmdL.getClass() == ChangeTagCommand.class)
-                args = parseArgs(asList(cmdText(cmdL), "newTagValue"));
-            else if (cmdL.getClass() == WarmUpCommand.class)
-                args = parseArgs(asList(cmdText(cmdL), "--stop"));
-            else if (cmdL.getClass() == CdcCommand.class)
-                args = parseArgs(asList(cmdText(cmdL), 
DELETE_LOST_SEGMENT_LINKS, NODE_ID, UUID.randomUUID().toString()));
-            else
-                args = parseArgs(asList(cmdText(cmdL)));
+    /** */
+    private <A extends IgniteDataTransferObject> void 
checkParseAutoConfirmationFlag(
+        Command<A, ?> cmd,
+        CommandsRegistry<A, ?> parent
+    ) {
+        if (cmd instanceof CommandsRegistry) {
+            ((CommandsRegistry<A, ?>)cmd).commands().forEachRemaining(
+                e -> checkParseAutoConfirmationFlag((Command<A, 
?>)e.getValue(), (CommandsRegistry<A, ?>)cmd));
+        }
 
-            checkCommonParametersCorrectlyParsed(cmdL, args, false);
+        if (!executable(cmd))
+            return;
 
-            if (cmdL.getClass() == DeactivateCommand.class) {
-                args = parseArgs(asList(cmdText(cmdL), "--yes"));
+        try {
+            A arg;
 
-                checkCommonParametersCorrectlyParsed(cmdL, args, true);
+            if (cmd.getClass() == CacheDestroyCommand.class) {
+                CacheDestroyCommandArg a = new CacheDestroyCommandArg();
 
-                args = parseArgs(asList(cmdText(cmdL), "--force", "--yes"));
+                a.caches(F.asArray("cache1"));
 
-                checkCommonParametersCorrectlyParsed(cmdL, args, true);
+                arg = (A)a;
             }
-            else if (cmdL.getClass() == SetStateCommand.class) {
-                for (String newState : asList("ACTIVE_READ_ONLY", "ACTIVE", 
"INACTIVE")) {
-                    args = parseArgs(asList(cmdText(cmdL), newState, "--yes"));
-
-                    checkCommonParametersCorrectlyParsed(cmdL, args, true);
-
-                    ClusterState argState = 
(((SetStateCommandArg)args.commandArg())).state();
+            else if (cmd.getClass() == CacheClearCommand.class) {
+                CacheClearCommandArg a = new CacheClearCommandArg();
 
-                    assertEquals(newState, argState.toString());
-                }
+                a.caches(F.asArray("cache1"));
 
-                for (String newState : asList("ACTIVE_READ_ONLY", "ACTIVE", 
"INACTIVE")) {
-                    args = parseArgs(asList(cmdText(cmdL), newState, 
"--force", "--yes"));
-
-                    checkCommonParametersCorrectlyParsed(cmdL, args, true);
+                arg = (A)a;
+            }
+            else
+                arg = cmd.argClass().newInstance();
 
-                    ClusterState argState = 
(((SetStateCommandArg)args.commandArg())).state();
+            if (cmd.confirmationPrompt(arg) == null)
+                return;
+        }
+        catch (InstantiationException | IllegalAccessException ex) {
+            throw new IgniteException(ex);
+        }
 
-                    assertEquals(newState, argState.toString());
-                }
-            }
-            else if (cmdL.getClass() == BaselineCommand.class) {
-                for (String baselineAct : asList("add", "remove", "set")) {
-                    args = parseArgs(asList(cmdText(cmdL), baselineAct, 
"c_id1,c_id2", "--yes"));
+        CommandHandler.CommandName cmdPrinter = new 
CommandHandler.CommandName();
+
+        if (parent != null)
+            cmdPrinter.accept(parent);
+
+        cmdPrinter.accept(cmd);
+
+        String[] cmdText = cmdPrinter.name.substring(1).split(" ");
+
+        ConnectionAndSslParameters<A> args;
+
+        if (cmd.getClass() == SetStateCommand.class)
+            cmdText = F.concat(cmdText, "ACTIVE");
+        else if (cmd.getClass() == ChangeTagCommand.class)
+            cmdText = F.concat(cmdText, "newTagValue");
+        else if (cmd.getClass() == CdcDeleteLostSegmentLinksCommand.class)
+            cmdText = F.concat(cmdText, NODE_ID, UUID.randomUUID().toString());
+        else if (cmd.getClass() == BaselineVersionCommand.class)
+            cmdText = F.concat(cmdText, "1");
+        else if (cmd.getClass() == BaselineAutoAdjustCommand.class)
+            cmdText = F.concat(cmdText, "enable");
+        else if 
(AbstractBaselineCommand.class.isAssignableFrom(cmd.getClass()))
+            cmdText = F.concat(cmdText, "consistentId1");
+        else if (cmd.getClass() == CacheDestroyCommand.class || cmd.getClass() 
== CacheClearCommand.class)
+            cmdText = F.concat(cmdText, "--caches", "cache1");
+        else if (cmd.getClass() == EncryptionChangeMasterKeyCommand.class)
+            cmdText = F.concat(cmdText, "masterKeyName1");
+        else if (cmd.getClass() == EncryptionChangeCacheKeyCommand.class)
+            cmdText = F.concat(cmdText, "cacheGroup1");
+        else if (cmd.getClass() == SnapshotRestoreCommand.class)
+            cmdText = F.concat(cmdText, "snp1");
+        else if (cmd.getClass() == MetaUpdateCommand.class)
+            return;
+        else if (cmd.getClass() == MetaRemoveCommand.class)
+            cmdText = F.concat(cmdText, "--typeId", "1");
 
-                    checkCommonParametersCorrectlyParsed(cmdL, args, true);
+        args = parseArgs(asList(cmdText));
 
-                    BaselineAddCommandArg arg = 
(BaselineAddCommandArg)args.commandArg();
+        checkCommonParametersCorrectlyParsed(cmd, args, false);
 
-                    if (baselineAct.equals("add"))
-                        assertEquals(BaselineAddCommand.class, 
args.command().getClass());
-                    else if (baselineAct.equals("remove"))
-                        assertEquals(BaselineRemoveCommand.class, 
args.command().getClass());
-                    else if (baselineAct.equals("set"))
-                        assertEquals(BaselineSetCommand.class, 
args.command().getClass());
+        args = parseArgs(asList(F.concat(cmdText, "--yes")));
 
-                    assertEquals(new HashSet<>(asList("c_id1", "c_id2")), new 
HashSet<>(Arrays.asList(arg.consistentIDs())));
-                }
-            }
-            else if (cmdL.getClass() == TxCommand.class) {
-                args = parseArgs(asList(cmdText(cmdL), "--xid", "xid1", 
"--min-duration", "10", "--kill", "--yes"));
+        checkCommonParametersCorrectlyParsed(cmd, args, true);
 
-                checkCommonParametersCorrectlyParsed(cmdL, args, true);
+        if (cmd.getClass() == DeactivateCommand.class) {
+            args = parseArgs(asList(F.concat(cmdText, "--force", "--yes")));
 
-                TxCommandArg txTaskArg = (TxCommandArg)args.commandArg();
+            checkCommonParametersCorrectlyParsed(cmd, args, true);
+        }
+        else if (cmd.getClass() == SetStateCommand.class) {
+            ClusterState argState = 
(((SetStateCommandArg)args.commandArg())).state();
 
-                assertEquals("xid1", txTaskArg.xid());
-                assertEquals(10_000, txTaskArg.minDuration().longValue());
-                assertTrue(txTaskArg.kill());
-            }
-            else if (cmdL.getClass() == ChangeTagCommand.class) {
-                args = parseArgs(asList(cmdText(cmdL), "newTagValue", 
"--yes"));
+            assertEquals("ACTIVE", argState.toString());
+        }
+        else if (cmd.getClass() == TxCommand.class) {
+            args = parseArgs(asList(F.concat(cmdText, "--xid", "xid1", 
"--min-duration", "10", "--kill", "--yes")));
 
-                checkCommonParametersCorrectlyParsed(cmdL, args, true);
-            }
-            else if (cmdL.getClass() == WarmUpCommand.class) {
-                args = parseArgs(asList(cmdText(cmdL), "--stop", "--yes"));
+            checkCommonParametersCorrectlyParsed(cmd, args, true);
 
-                checkCommonParametersCorrectlyParsed(cmdL, args, true);
-            }
-            else if (cmdL.getClass() == CdcCommand.class) {
-                args = parseArgs(asList(cmdText(cmdL), 
DELETE_LOST_SEGMENT_LINKS,
-                    NODE_ID, UUID.randomUUID().toString(), "--yes"));
+            TxCommandArg txTaskArg = (TxCommandArg)args.commandArg();
 
-                checkCommonParametersCorrectlyParsed(cmdL, args, true);
-            }
-            else
-                fail("Unknown command: " + cmd);
-        });
+            assertEquals("xid1", txTaskArg.xid());
+            assertEquals(10_000, txTaskArg.minDuration().longValue());
+            assertTrue(txTaskArg.kill());
+        }
     }
 
     /** */
@@ -1346,7 +1343,7 @@ public class CommandHandlerParsingTest {
      * @param args Raw arg list.
      * @return Common parameters container object.
      */
-    private ConnectionAndSslParameters parseArgs(List<String> args) {
+    private <A extends IgniteDataTransferObject> ConnectionAndSslParameters<A> 
parseArgs(List<String> args) {
         return new ArgumentParser(setupTestLogger(), new 
IgniteCommandRegistry()).parseAndValidate(args);
     }
 

Reply via email to