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

isapego pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new 637fb4f1b1c IGNITE-26070 Improve migration tools configuration 
converter error messages (#6340)
637fb4f1b1c is described below

commit 637fb4f1b1ca6bc033a1f9edb7314fee6d5556de
Author: Tiago Marques Godinho <[email protected]>
AuthorDate: Thu Jul 31 11:36:37 2025 +0100

    IGNITE-26070 Improve migration tools configuration converter error messages 
(#6340)
    
    Co-authored-by: Igor Sapego <[email protected]>
---
 .../commands/ConfigurationConverterCmd.java        |  2 +
 .../ErrorLoadingInputConfigurationHandlers.java    | 68 ++++++++++++++++++++++
 .../cli/persistence/commands/ListCachesCmd.java    |  2 +
 .../cli/persistence/commands/MigrateCacheCmd.java  |  2 +
 .../cli/sql/commands/SqlDdlGeneratorCmd.java       |  2 +
 5 files changed, 76 insertions(+)

diff --git 
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/configs/commands/ConfigurationConverterCmd.java
 
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/configs/commands/ConfigurationConverterCmd.java
index d221a1c1b47..1f10ad83d65 100644
--- 
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/configs/commands/ConfigurationConverterCmd.java
+++ 
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/configs/commands/ConfigurationConverterCmd.java
@@ -20,6 +20,7 @@ package org.apache.ignite.migrationtools.cli.configs.commands;
 import java.nio.file.Path;
 import java.util.concurrent.Callable;
 import 
org.apache.ignite.migrationtools.cli.configs.calls.ConfigurationConverterCall;
+import 
org.apache.ignite.migrationtools.cli.exceptions.ErrorLoadingInputConfigurationHandlers;
 import org.apache.ignite.migrationtools.cli.mixins.ClassloaderOption;
 import org.apache.ignite3.internal.cli.commands.BaseCommand;
 import org.apache.ignite3.internal.cli.core.call.CallExecutionPipeline;
@@ -52,6 +53,7 @@ public class ConfigurationConverterCmd extends BaseCommand 
implements Callable<I
     public Integer call() {
         var call = new ConfigurationConverterCall();
         return runPipeline(CallExecutionPipeline.builder(call)
+                
.exceptionHandlers(ErrorLoadingInputConfigurationHandlers.create())
                 .inputProvider(() -> new 
ConfigurationConverterCall.Input(inputFile, locCfgFile, distCfgFile, 
includeDefaults,
                         classloaderOption.clientClassLoader()))
         );
diff --git 
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/exceptions/ErrorLoadingInputConfigurationHandlers.java
 
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/exceptions/ErrorLoadingInputConfigurationHandlers.java
new file mode 100644
index 00000000000..91a918a105f
--- /dev/null
+++ 
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/exceptions/ErrorLoadingInputConfigurationHandlers.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.migrationtools.cli.exceptions;
+
+import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.apache.ignite3.internal.cli.core.exception.ExceptionHandler;
+import org.apache.ignite3.internal.cli.core.exception.ExceptionHandlers;
+import org.apache.ignite3.internal.cli.core.exception.ExceptionWriter;
+import org.apache.ignite3.internal.cli.core.style.component.ErrorUiComponent;
+import 
org.apache.ignite3.internal.cli.core.style.component.ErrorUiComponent.ErrorComponentBuilder;
+import org.springframework.beans.factory.BeanDefinitionStoreException;
+import org.springframework.beans.factory.BeanInitializationException;
+
+/** ExceptionHandlers for Error loading input configurations. */
+public class ErrorLoadingInputConfigurationHandlers {
+    /**
+     * Create method.
+     *
+     * @return A new instance of these handlers.
+     */
+    public static ExceptionHandlers create() {
+        var handlers = new ExceptionHandlers();
+        handlers.addExceptionHandler(new 
Base<>(BeanInitializationException.class));
+        handlers.addExceptionHandler(new 
Base<>(BeanDefinitionStoreException.class));
+        return handlers;
+    }
+
+    private static class Base<T extends Throwable> implements 
ExceptionHandler<T> {
+        private final Class<T> klass;
+
+        Base(Class<T> klass) {
+            this.klass = klass;
+        }
+
+        @Override
+        public int handle(ExceptionWriter writer, T e) {
+            Throwable rootCause = ExceptionUtils.getRootCause(e);
+
+            ErrorComponentBuilder errorUiBuilder = ErrorUiComponent.builder()
+                    .header("Error loading input configurations")
+                    .details(rootCause.getMessage());
+
+            writer.write(errorUiBuilder.build().render());
+
+            return 1;
+        }
+
+        @Override
+        public Class<T> applicableException() {
+            return klass;
+        }
+    }
+}
diff --git 
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/ListCachesCmd.java
 
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/ListCachesCmd.java
index c529f46d811..db8c50a2c91 100644
--- 
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/ListCachesCmd.java
+++ 
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/ListCachesCmd.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.migrationtools.cli.persistence.commands;
 
 import java.util.concurrent.Callable;
+import 
org.apache.ignite.migrationtools.cli.exceptions.ErrorLoadingInputConfigurationHandlers;
 import org.apache.ignite.migrationtools.cli.persistence.calls.ListCachesCall;
 import org.apache.ignite3.internal.cli.commands.BaseCommand;
 import org.apache.ignite3.internal.cli.core.call.CallExecutionPipeline;
@@ -37,6 +38,7 @@ public class ListCachesCmd extends BaseCommand implements 
Callable<Integer> {
     public Integer call() {
         var call = new ListCachesCall();
         return runPipeline(CallExecutionPipeline.builder(call)
+                
.exceptionHandlers(ErrorLoadingInputConfigurationHandlers.create())
                 .inputProvider(() -> new ListCachesCall.Input(parent.params()))
                 .decorator(data -> () -> PlainTableRenderer.render(new 
String[] {"id", "name"},
                         data.stream().map(o -> new String[] 
{String.valueOf(o.cacheId()), o.cacheName()}).toArray(Object[][]::new)))
diff --git 
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/MigrateCacheCmd.java
 
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/MigrateCacheCmd.java
index 9cd58060245..05bd96a013d 100644
--- 
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/MigrateCacheCmd.java
+++ 
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/MigrateCacheCmd.java
@@ -23,6 +23,7 @@ import java.util.concurrent.Callable;
 import org.apache.commons.lang3.StringUtils;
 import 
org.apache.ignite.migrationtools.cli.exceptions.DataStreamerExceptionHandler;
 import 
org.apache.ignite.migrationtools.cli.exceptions.DefaultMigrateCacheExceptionHandler;
+import 
org.apache.ignite.migrationtools.cli.exceptions.ErrorLoadingInputConfigurationHandlers;
 import 
org.apache.ignite.migrationtools.cli.exceptions.IgniteClientConnectionExceptionHandler;
 import org.apache.ignite.migrationtools.cli.persistence.calls.MigrateCacheCall;
 import 
org.apache.ignite.migrationtools.cli.persistence.calls.RetriableMigrateCacheCall;
@@ -61,6 +62,7 @@ public class MigrateCacheCmd extends BaseCommand implements 
Callable<Integer> {
                         .defaultExceptionHandler(new 
DefaultExceptionHandlers(DefaultMigrateCacheExceptionHandler.INSTANCE))
                         .exceptionHandler(new 
IgniteClientConnectionExceptionHandler())
                         .exceptionHandler(new DataStreamerExceptionHandler())
+                        
.exceptionHandlers(ErrorLoadingInputConfigurationHandlers.create())
                         .inputProvider(() -> new 
RetriableMigrateCacheCall.Input(
                                 parent.params(),
                                 migrateCacheParams,
diff --git 
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/sql/commands/SqlDdlGeneratorCmd.java
 
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/sql/commands/SqlDdlGeneratorCmd.java
index 0908e927d30..135c60368c9 100644
--- 
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/sql/commands/SqlDdlGeneratorCmd.java
+++ 
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/sql/commands/SqlDdlGeneratorCmd.java
@@ -19,6 +19,7 @@ package org.apache.ignite.migrationtools.cli.sql.commands;
 
 import java.nio.file.Path;
 import java.util.concurrent.Callable;
+import 
org.apache.ignite.migrationtools.cli.exceptions.ErrorLoadingInputConfigurationHandlers;
 import org.apache.ignite.migrationtools.cli.mixins.ClassloaderOption;
 import org.apache.ignite.migrationtools.cli.sql.calls.SqlDdlGeneratorCall;
 import org.apache.ignite3.internal.cli.commands.BaseCommand;
@@ -56,6 +57,7 @@ public class SqlDdlGeneratorCmd extends BaseCommand 
implements Callable<Integer>
     public Integer call() {
         var call = new SqlDdlGeneratorCall();
         return runPipeline(CallExecutionPipeline.builder(call)
+                
.exceptionHandlers(ErrorLoadingInputConfigurationHandlers.create())
                 .inputProvider(() -> new SqlDdlGeneratorCall.Input(
                         inputFile,
                         targetFile,

Reply via email to