You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by ha...@apache.org on 2021/09/29 11:23:24 UTC
[incubator-hop] branch master updated: HOP-3321 - Kafka producer
unhandled ArrayIndexOutOfBoundsException
This is an automated email from the ASF dual-hosted git repository.
hansva pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop.git
The following commit(s) were added to refs/heads/master by this push:
new 357346a HOP-3321 - Kafka producer unhandled ArrayIndexOutOfBoundsException
new d60dd00 Merge pull request #1092 from sramazzina/HOP-3321
357346a is described below
commit 357346a7e13f11d90bf8e4c58d27e588f8256a62
Author: sergio.ramazzina <se...@serasoft.it>
AuthorDate: Wed Sep 29 12:54:25 2021 +0200
HOP-3321 - Kafka producer unhandled ArrayIndexOutOfBoundsException
---
.../kafka/producer/KafkaProducerOutputDialog.java | 62 ++++++++++++++++++++++
.../producer/messages/messages_en_US.properties | 8 +++
.../producer/messages/messages_it_IT.properties | 20 ++++---
3 files changed, 84 insertions(+), 6 deletions(-)
diff --git a/plugins/transforms/kafka/src/main/java/org/apache/hop/pipeline/transforms/kafka/producer/KafkaProducerOutputDialog.java b/plugins/transforms/kafka/src/main/java/org/apache/hop/pipeline/transforms/kafka/producer/KafkaProducerOutputDialog.java
index a7f0180..f5bcd1c 100644
--- a/plugins/transforms/kafka/src/main/java/org/apache/hop/pipeline/transforms/kafka/producer/KafkaProducerOutputDialog.java
+++ b/plugins/transforms/kafka/src/main/java/org/apache/hop/pipeline/transforms/kafka/producer/KafkaProducerOutputDialog.java
@@ -20,6 +20,9 @@ package org.apache.hop.pipeline.transforms.kafka.producer;
import com.google.common.collect.ImmutableMap;
import org.apache.hop.core.Const;
import org.apache.hop.core.Props;
+import org.apache.hop.core.exception.HopTransformException;
+import org.apache.hop.core.row.IRowMeta;
+import org.apache.hop.core.util.Utils;
import org.apache.hop.core.variables.IVariables;
import org.apache.hop.i18n.BaseMessages;
import org.apache.hop.pipeline.PipelineMeta;
@@ -28,6 +31,7 @@ import org.apache.hop.pipeline.transform.ITransformDialog;
import org.apache.hop.pipeline.transforms.kafka.shared.KafkaDialogHelper;
import org.apache.hop.pipeline.transforms.kafka.shared.KafkaFactory;
import org.apache.hop.ui.core.dialog.BaseDialog;
+import org.apache.hop.ui.core.dialog.ErrorDialog;
import org.apache.hop.ui.core.widget.ColumnInfo;
import org.apache.hop.ui.core.widget.ComboVar;
import org.apache.hop.ui.core.widget.TableView;
@@ -417,6 +421,27 @@ public class KafkaProducerOutputDialog extends BaseTransformDialog implements IT
populateOptionsData();
}
+ private boolean checkIfFieldExists(String fieldName) {
+ boolean fieldFound = false;
+ try {
+ IRowMeta r = pipelineMeta.getPrevTransformFields(variables, transformName);
+ String[] fieldNames = r.getFieldNames();
+ for (int count = 0; count < fieldNames.length; count++) {
+ if (fieldName.equals(fieldNames[count])) {
+ fieldFound = true;
+ break;
+ }
+ }
+ } catch (HopTransformException ke) {
+ new ErrorDialog(
+ shell,
+ BaseMessages.getString(PKG, "KafkaProducerOutputDialog.FailedToGetFields.DialogTitle"),
+ BaseMessages.getString(PKG, "KafkaProducerOutputDialog.FailedToGetFields.DialogMessage"),
+ ke);
+ }
+ return fieldFound;
+ }
+
private void cancel() {
meta.setChanged(false);
dispose();
@@ -424,10 +449,47 @@ public class KafkaProducerOutputDialog extends BaseTransformDialog implements IT
private void ok() {
transformName = wTransformName.getText();
+
+ if (Utils.isEmpty(wBootstrapServers.getText())) {
+ MessageBox mb = new MessageBox(shell, SWT.OK | SWT.ICON_ERROR);
+ mb.setMessage(
+ BaseMessages.getString(PKG, "KafkaProducerOutputDialog.BootstrapServerMandatory.Message"));
+ mb.setText(BaseMessages.getString(PKG, "KafkaProducerOutputDialog.FieldNotExists.Title"));
+ mb.open();
+ return;
+ }
+
meta.setDirectBootstrapServers(wBootstrapServers.getText());
meta.setClientId(wClientId.getText());
meta.setTopic(wTopic.getText());
+ if (!Utils.isEmpty(wKeyField.getText()) && !checkIfFieldExists(wKeyField.getText())) {
+ MessageBox mb = new MessageBox(shell, SWT.OK | SWT.ICON_ERROR);
+ mb.setMessage(
+ BaseMessages.getString(PKG, "KafkaProducerOutputDialog.KeyFieldNotExists.Message", wKeyField.getText()));
+ mb.setText(BaseMessages.getString(PKG, "KafkaProducerOutputDialog.FieldNotExists.Title"));
+ mb.open();
+ return;
+ }
+
meta.setKeyField(wKeyField.getText());
+ if (Utils.isEmpty(wMessageField.getText())) {
+ MessageBox mb = new MessageBox(shell, SWT.OK | SWT.ICON_ERROR);
+ mb.setMessage(
+ BaseMessages.getString(PKG, "KafkaProducerOutputDialog.MessageFieldMandatory.Message"));
+ mb.setText(BaseMessages.getString(PKG, "KafkaProducerOutputDialog.FieldNotExists.Title"));
+ mb.open();
+ return;
+ }
+
+ if (!checkIfFieldExists(wMessageField.getText())) {
+ MessageBox mb = new MessageBox(shell, SWT.OK | SWT.ICON_ERROR);
+ mb.setMessage(
+ BaseMessages.getString(PKG, "KafkaProducerOutputDialog.MessageFieldNotExists.Message", wMessageField.getText()));
+ mb.setText(BaseMessages.getString(PKG, "KafkaProducerOutputDialog.FieldNotExists.Title"));
+ mb.open();
+ return;
+ }
+
meta.setMessageField(wMessageField.getText());
meta.setConfig(KafkaDialogHelper.getConfig(optionsTable));
dispose();
diff --git a/plugins/transforms/kafka/src/main/resources/org/apache/hop/pipeline/transforms/kafka/producer/messages/messages_en_US.properties b/plugins/transforms/kafka/src/main/resources/org/apache/hop/pipeline/transforms/kafka/producer/messages/messages_en_US.properties
index 5c4d374..930b81a 100644
--- a/plugins/transforms/kafka/src/main/resources/org/apache/hop/pipeline/transforms/kafka/producer/messages/messages_en_US.properties
+++ b/plugins/transforms/kafka/src/main/resources/org/apache/hop/pipeline/transforms/kafka/producer/messages/messages_en_US.properties
@@ -38,3 +38,11 @@ KafkaProducerOutputMeta.Injection.CONFIGURATION_PROPERTIES=The Kafka producer co
KafkaProducerOutputMeta.Injection.NAMES=The name(s) of the Kafka producer configuration properties.
KafkaProducerOutputMeta.Injection.VALUES=The value(s) of the Kafka producer configuration properties.
KafkaConsumerOutput.Log.LineNumber=Linenr {0}
+KafkaProducerOutputDialog.FailedToGetFields.DialogTitle=Field not present
+KafkaProducerOutputDialog.FailedToGetFields.DialogMessage=Unable to get fields from previous transforms because of an error
+
+KafkaProducerOutputDialog.FieldNotExists.Title=Error
+KafkaProducerOutputDialog.KeyFieldNotExists.Message=Field ''{0}'' containing key value is not present in input stream
+KafkaProducerOutputDialog.MessageFieldNotExists.Message=Field ''{0}'' containing message value is not present in input stream
+KafkaProducerOutputDialog.MessageFieldMandatory.Message=Field containing message value is mandatory!
+KafkaProducerOutputDialog.BootstrapServerMandatory.Message=''Bootstrap servers'' field''s value is mandatory!
diff --git a/plugins/transforms/kafka/src/main/resources/org/apache/hop/pipeline/transforms/kafka/producer/messages/messages_it_IT.properties b/plugins/transforms/kafka/src/main/resources/org/apache/hop/pipeline/transforms/kafka/producer/messages/messages_it_IT.properties
index 5c4d374..ed0c8b8 100644
--- a/plugins/transforms/kafka/src/main/resources/org/apache/hop/pipeline/transforms/kafka/producer/messages/messages_it_IT.properties
+++ b/plugins/transforms/kafka/src/main/resources/org/apache/hop/pipeline/transforms/kafka/producer/messages/messages_it_IT.properties
@@ -15,18 +15,18 @@
# limitations under the License.
#
KafkaProducer.TypeLongDesc=Kafka Producer
-KafkaProducer.TypeTooltipDesc=Sends messages to a Kafka producer for a certain topic
+KafkaProducer.TypeTooltipDesc=Invia messaggi ad un producer Kafka per un topic specifico
KafkaProducerOutputDialog.TransformName.Label=Transform name\:
KafkaProducerOutputDialog.Shell.Title=Kafka producer
KafkaProducerOutputDialog.ClientId=Client ID\:
KafkaProducerOutputDialog.Topic=Topic\:
-KafkaProducerOutputDialog.KeyField=Key field\:
-KafkaProducerOutputDialog.MessageField=Message field\:
+KafkaProducerOutputDialog.KeyField=Campo con chiave\:
+KafkaProducerOutputDialog.MessageField=Campo con messaggio\:
KafkaProducerOutputDialog.SetupTab=Setup
KafkaProducerOutputDialog.BootstrapServers=Bootstrap servers:
-KafkaProducerOutputDialog.Options.Tab=Options
-KafkaProducerOutputDialog.Options.Column.Name=Name
-KafkaProducerOutputDialog.Options.Column.Value=Value
+KafkaProducerOutputDialog.Options.Tab=Opzioni
+KafkaProducerOutputDialog.Options.Column.Name=Nome
+KafkaProducerOutputDialog.Options.Column.Value=Valore
KafkaProducerOutputMeta.Injection.CLUSTER_NAME=The cluster containing the Kafka connections details.
KafkaProducerOutputMeta.Injection.CLIENT_ID=The ID used to identify and track requests made to the server.
KafkaProducerOutputMeta.Injection.TOPIC=The name of the topic to publish to.
@@ -38,3 +38,11 @@ KafkaProducerOutputMeta.Injection.CONFIGURATION_PROPERTIES=The Kafka producer co
KafkaProducerOutputMeta.Injection.NAMES=The name(s) of the Kafka producer configuration properties.
KafkaProducerOutputMeta.Injection.VALUES=The value(s) of the Kafka producer configuration properties.
KafkaConsumerOutput.Log.LineNumber=Linenr {0}
+KafkaProducerOutputDialog.FailedToGetFields.DialogTitle=Campo non presente
+KafkaProducerOutputDialog.FailedToGetFields.DialogMessage=Impossibile prelevare i campi dai transforms precedenti a causa di un errore
+
+KafkaProducerOutputDialog.FieldNotExists.Title=Errore
+KafkaProducerOutputDialog.KeyFieldNotExists.Message=Il campo ''{0}'' contenete il valore della chiave non \uE008 stato trovato leggendo dai transforms precedenti
+KafkaProducerOutputDialog.MessageFieldNotExists.Message=Il campo ''{0}'' contenete il valore del messaggio non \uE008 stato trovato leggendo dai transforms precedenti
+KafkaProducerOutputDialog.MessageFieldMandatory.Message=Il campo contenente il valore del messaggio \uE008 obbligatorio!
+KafkaProducerOutputDialog.BootstrapServerMandatory.Message=Il valore del campo ''Bootstrap servers'' \uE008 obbligatorio!