You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by mc...@apache.org on 2026/04/08 08:40:22 UTC
(hop) branch main updated: Fix Sonar warning in IRowSet implementation and improve DataStream i18n messages (#6970)
This is an automated email from the ASF dual-hosted git repository.
mcasters pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new 38484305d4 Fix Sonar warning in IRowSet implementation and improve DataStream i18n messages (#6970)
38484305d4 is described below
commit 38484305d4160d9b2fbf84960e77ea89dba73911
Author: Lance <le...@gmail.com>
AuthorDate: Wed Apr 8 16:40:16 2026 +0800
Fix Sonar warning in IRowSet implementation and improve DataStream i18n messages (#6970)
* Fix Sonar warning in IRowSet implementation and improve DataStream i18n messages
Signed-off-by: lance <le...@gmail.com>
* Fix Sonar warning in IRowSet implementation and improve DataStream i18n messages
Signed-off-by: lance <le...@gmail.com>
---------
Signed-off-by: lance <le...@gmail.com>
---
core/pom.xml | 4 +
.../main/java/org/apache/hop/core/BaseRowSet.java | 145 +++--------------
.../apache/hop/core/database/BaseDatabaseMeta.java | 7 +-
.../java/org/apache/hop/core/BaseRowSetTests.java | 177 +++++++++++++++++++++
.../file/messages/messages_en_US.properties | 2 +-
..._en_US.properties => messages_zh_CN.properties} | 9 +-
.../flight/messages/messages_zh_CN.properties | 28 ++++
.../messages/messages_zh_CN.properties} | 6 -
.../messages/messages_zh_CN.properties} | 9 +-
.../streaminput/DataStreamInputMeta.java | 5 +-
.../streamoutput/DataStreamOutputMeta.java | 4 +-
.../messages/messages_zh_CN.properties} | 10 +-
.../messages/messages_zh_CN.properties} | 10 +-
.../apache/hop/ui/hopgui/file/HopFileTypeBase.java | 13 +-
14 files changed, 261 insertions(+), 168 deletions(-)
diff --git a/core/pom.xml b/core/pom.xml
index c2a126e90b..fb80755901 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -430,6 +430,10 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.jspecify</groupId>
+ <artifactId>jspecify</artifactId>
+ </dependency>
<dependency>
<groupId>org.owasp.encoder</groupId>
<artifactId>encoder</artifactId>
diff --git a/core/src/main/java/org/apache/hop/core/BaseRowSet.java b/core/src/main/java/org/apache/hop/core/BaseRowSet.java
index 520eec0cee..45b3905c07 100644
--- a/core/src/main/java/org/apache/hop/core/BaseRowSet.java
+++ b/core/src/main/java/org/apache/hop/core/BaseRowSet.java
@@ -17,28 +17,30 @@
package org.apache.hop.core;
-import java.util.concurrent.TimeUnit;
+import java.util.Objects;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
+import lombok.Getter;
+import lombok.Setter;
import org.apache.hop.core.row.IRowMeta;
import org.apache.hop.core.util.Utils;
+import org.jspecify.annotations.NonNull;
/** Contains the base IRowSet class to help implement IRowSet variants. */
abstract class BaseRowSet implements Comparable<IRowSet>, IRowSet {
- protected IRowMeta rowMeta;
+ @Getter @Setter protected IRowMeta rowMeta;
protected AtomicBoolean done;
- protected volatile String originTransformName;
+ @Getter protected volatile String originTransformName;
protected AtomicInteger originTransformCopy;
- protected volatile String destinationTransformName;
+ @Getter protected volatile String destinationTransformName;
protected AtomicInteger destinationTransformCopy;
+ @Getter @Setter protected volatile String remoteHopServerName;
+ private final ReadWriteLock lock;
- protected volatile String remoteHopServerName;
- private ReadWriteLock lock;
-
- public BaseRowSet() {
+ protected BaseRowSet() {
// not done putting data into this IRowSet
done = new AtomicBoolean(false);
@@ -52,7 +54,7 @@ abstract class BaseRowSet implements Comparable<IRowSet>, IRowSet {
* always done in the same way.
*/
@Override
- public int compareTo(IRowSet rowSet) {
+ public int compareTo(@NonNull IRowSet rowSet) {
lock.readLock().lock();
String target;
@@ -77,52 +79,23 @@ abstract class BaseRowSet implements Comparable<IRowSet>, IRowSet {
return target.compareTo(comp);
}
- public boolean equals(BaseRowSet rowSet) {
- return compareTo(rowSet) == 0;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.hop.core.RowSetInterface#putRow(org.apache.hop.core.row.IRowMeta, java.lang.Object[])
- */
- @Override
- public abstract boolean putRow(IRowMeta rowMeta, Object[] rowData);
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.hop.core.RowSetInterface#putRowWait(org.apache.hop.core.row.IRowMeta, java.lang.Object[],
- * long, java.util.concurrent.TimeUnit)
- */
- @Override
- public abstract boolean putRowWait(IRowMeta rowMeta, Object[] rowData, long time, TimeUnit tu);
-
- // default getRow with wait time = 100ms
- //
- /*
- * (non-Javadoc)
- *
- * @see org.apache.hop.core.RowSetInterface#getRow()
- */
@Override
- public abstract Object[] getRow();
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof IRowSet other)) {
+ return false;
+ }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.hop.core.RowSetInterface#getRowImmediate()
- */
- @Override
- public abstract Object[] getRowImmediate();
+ return compareTo(other) == 0;
+ }
- /*
- * (non-Javadoc)
- *
- * @see org.apache.hop.core.RowSetInterface#getRowWait(long, java.util.concurrent.TimeUnit)
- */
@Override
- public abstract Object[] getRowWait(long timeout, TimeUnit tu);
+ public int hashCode() {
+ return Objects.hash(
+ remoteHopServerName, destinationTransformName, destinationTransformCopy.get());
+ }
/*
* (non-Javadoc)
@@ -144,16 +117,6 @@ abstract class BaseRowSet implements Comparable<IRowSet>, IRowSet {
return done.get();
}
- /*
- * (non-Javadoc)
- *
- * @see org.apache.hop.core.RowSetInterface#getOriginTransformName()
- */
- @Override
- public String getOriginTransformName() {
- return originTransformName;
- }
-
/*
* (non-Javadoc)
*
@@ -164,16 +127,6 @@ abstract class BaseRowSet implements Comparable<IRowSet>, IRowSet {
return originTransformCopy.get();
}
- /*
- * (non-Javadoc)
- *
- * @see org.apache.hop.core.RowSetInterface#getDestinationTransformName()
- */
- @Override
- public String getDestinationTransformName() {
- return destinationTransformName;
- }
-
/*
* (non-Javadoc)
*
@@ -194,14 +147,6 @@ abstract class BaseRowSet implements Comparable<IRowSet>, IRowSet {
return toString();
}
- /*
- * (non-Javadoc)
- *
- * @see org.apache.hop.core.RowSetInterface#size()
- */
- @Override
- public abstract int size();
-
/*
* (non-Javadoc)
*
@@ -247,48 +192,8 @@ abstract class BaseRowSet implements Comparable<IRowSet>, IRowSet {
return str.toString();
}
- /*
- * (non-Javadoc)
- *
- * @see org.apache.hop.core.RowSetInterface#getRowMeta()
- */
- @Override
- public IRowMeta getRowMeta() {
- return rowMeta;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.hop.core.RowSetInterface#setRowMeta(org.apache.hop.core.row.IRowMeta)
- */
- @Override
- public void setRowMeta(IRowMeta rowMeta) {
- this.rowMeta = rowMeta;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.hop.core.RowSetInterface#getRemoteHopServerName()
- */
- @Override
- public String getRemoteHopServerName() {
- return remoteHopServerName;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.hop.core.RowSetInterface#setRemoteHopServerName(java.lang.String)
- */
- @Override
- public void setRemoteHopServerName(String remoteHopServerName) {
- this.remoteHopServerName = remoteHopServerName;
- }
-
/**
- * By default we don't report blocking, only for monitored pipelines.
+ * By default, we don't report blocking, only for monitored pipelines.
*
* @return true if this row set is blocking on reading or writing.
*/
diff --git a/core/src/main/java/org/apache/hop/core/database/BaseDatabaseMeta.java b/core/src/main/java/org/apache/hop/core/database/BaseDatabaseMeta.java
index 0fed4b43d2..d44a0e4ea6 100644
--- a/core/src/main/java/org/apache/hop/core/database/BaseDatabaseMeta.java
+++ b/core/src/main/java/org/apache/hop/core/database/BaseDatabaseMeta.java
@@ -120,8 +120,8 @@ public abstract class BaseDatabaseMeta implements Cloneable, IDatabase {
public static final String ELEMENT_ID_PASSWORD = "password";
/**
- * Boolean to indicate if savepoints can be released Most databases do, so we set it to true.
- * Child classes can overwrite with false if need be.
+ * Boolean to indicate if savepoint can be released Most databases do, so we set it to true. Child
+ * classes can overwrite with false if need be.
*/
protected boolean releaseSavepoint = true;
@@ -240,9 +240,6 @@ public abstract class BaseDatabaseMeta implements Cloneable, IDatabase {
this.pluginName = pluginName;
}
- @Override
- public abstract int[] getAccessTypeList();
-
/**
* @return Returns the accessType.
*/
diff --git a/core/src/test/java/org/apache/hop/core/BaseRowSetTests.java b/core/src/test/java/org/apache/hop/core/BaseRowSetTests.java
new file mode 100644
index 0000000000..4f0f4bff10
--- /dev/null
+++ b/core/src/test/java/org/apache/hop/core/BaseRowSetTests.java
@@ -0,0 +1,177 @@
+/*
+ * 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.hop.core;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.hop.core.row.IRowMeta;
+import org.apache.hop.junit.rules.RestoreHopEnvironmentExtension;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+/** Unit test for {@link BaseRowSet} */
+@ExtendWith(RestoreHopEnvironmentExtension.class)
+class BaseRowSetTests {
+
+ @Test
+ void testCompareToEqualsHashCode() {
+ TestRowSet r1 = new TestRowSet();
+ TestRowSet r2 = new TestRowSet();
+
+ r1.setRemoteHopServerName("server");
+ r2.setRemoteHopServerName("server");
+
+ r1.setThreadNameFromToCopy("A", 1, "B", 2);
+ r2.setThreadNameFromToCopy("X", 9, "B", 2);
+
+ assertEquals(0, r1.compareTo(r2));
+ assertEquals(r1, r2);
+ assertEquals(r1.hashCode(), r2.hashCode());
+ }
+
+ @Test
+ void testCompareToNotEqual() {
+ TestRowSet r1 = new TestRowSet();
+ TestRowSet r2 = new TestRowSet();
+
+ r1.setRemoteHopServerName("server");
+ r2.setRemoteHopServerName("server");
+
+ r1.setThreadNameFromToCopy("A", 1, "B", 2);
+ r2.setThreadNameFromToCopy("A", 1, "C", 2);
+
+ assertNotEquals(0, r1.compareTo(r2));
+ assertNotEquals(r1, r2);
+ }
+
+ @Test
+ void testDoneFlag() {
+ TestRowSet rowSet = new TestRowSet();
+ assertFalse(rowSet.isDone());
+
+ rowSet.setDone();
+ assertTrue(rowSet.isDone());
+ }
+
+ @Test
+ void testSetThreadName() {
+ TestRowSet rowSet = new TestRowSet();
+ rowSet.setThreadNameFromToCopy("from", 1, "to", 2);
+
+ assertEquals("from", rowSet.getOriginTransformName());
+ assertEquals(1, rowSet.getOriginTransformCopy());
+ assertEquals("to", rowSet.getDestinationTransformName());
+ assertEquals(2, rowSet.getDestinationTransformCopy());
+ }
+
+ @Test
+ void testToString() {
+ TestRowSet rowSet = new TestRowSet();
+ rowSet.setThreadNameFromToCopy("A", 1, "B", 2);
+ rowSet.setRemoteHopServerName("server");
+
+ String result = rowSet.toString();
+
+ assertTrue(result.contains("A"));
+ assertTrue(result.contains("B"));
+ assertTrue(result.contains("server"));
+ }
+
+ @Test
+ void testConcurrentReadWrite() throws Exception {
+ TestRowSet rowSet = new TestRowSet();
+
+ try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()) {
+ Runnable writer =
+ () -> {
+ for (int i = 0; i < 1000; i++) {
+ rowSet.setThreadNameFromToCopy("A" + i, i, "B" + i, i);
+ }
+ };
+
+ Callable<Boolean> reader =
+ () -> {
+ for (int i = 0; i < 1000; i++) {
+ String string = rowSet.toString();
+ assertNotNull(string);
+
+ String dest = rowSet.getDestinationTransformName();
+ if (StringUtils.isNotBlank(dest)) {
+ assertTrue(dest.startsWith("B"));
+ }
+ }
+ return true;
+ };
+
+ Future<?> w = executor.submit(writer);
+ Future<Boolean> r = executor.submit(reader);
+
+ w.get();
+ assertTrue(r.get());
+ }
+ }
+
+ static class TestRowSet extends BaseRowSet {
+ @Override
+ public boolean putRow(IRowMeta rowMeta, Object[] rowData) {
+ this.rowMeta = rowMeta;
+ return false;
+ }
+
+ @Override
+ public boolean putRowWait(IRowMeta rowMeta, Object[] rowData, long time, TimeUnit tu) {
+ this.rowMeta = rowMeta;
+ return false;
+ }
+
+ @Override
+ public Object[] getRow() {
+ return new Object[0];
+ }
+
+ @Override
+ public Object[] getRowImmediate() {
+ return new Object[0];
+ }
+
+ @Override
+ public Object[] getRowWait(long timeout, TimeUnit tu) {
+ return new Object[0];
+ }
+
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public void clear() {
+ // ignore code
+ }
+ }
+}
diff --git a/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties b/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties
index 2db865b545..21c4e2fb18 100644
--- a/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties
+++ b/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties
@@ -16,7 +16,7 @@
#
#
-ArrowFileDataStream.Filename.LabelArrowBaseDataStream.Filename.Label=File name
+ArrowFileDataStream.Filename.Label=File name
ArrowFileDataStream.Filename.Tooltip=The file to which Arrow will stream data to. IMPORTANT: This needs to be a local file. VFS is not supported.
ArrowFileDataStream.BufferSize.Label=Buffer size
ArrowFileDataStream.BufferSize.Tooltip=The number of rows to read or write at once
diff --git a/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties b/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_zh_CN.properties
similarity index 65%
copy from plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties
copy to plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_zh_CN.properties
index 2db865b545..711b26ea85 100644
--- a/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties
+++ b/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_zh_CN.properties
@@ -16,8 +16,7 @@
#
#
-ArrowFileDataStream.Filename.LabelArrowBaseDataStream.Filename.Label=File name
-ArrowFileDataStream.Filename.Tooltip=The file to which Arrow will stream data to. IMPORTANT: This needs to be a local file. VFS is not supported.
-ArrowFileDataStream.BufferSize.Label=Buffer size
-ArrowFileDataStream.BufferSize.Tooltip=The number of rows to read or write at once
-
+ArrowFileDataStream.Filename.Label=\u6587\u4EF6\u540D
+ArrowFileDataStream.Filename.Tooltip=Arrow \u5C06\u6570\u636E\u6D41\u5199\u5165\u7684\u6587\u4EF6\u3002\u91CD\u8981\uFF1A\u5FC5\u987B\u662F\u672C\u5730\u6587\u4EF6\uFF0C\u4E0D\u652F\u6301 VFS\u3002
+ArrowFileDataStream.BufferSize.Label=\u7F13\u51B2\u533A\u5927\u5C0F
+ArrowFileDataStream.BufferSize.Tooltip=\u6BCF\u6B21\u8BFB\u53D6\u6216\u5199\u5165\u7684\u884C\u6570
diff --git a/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/flight/messages/messages_zh_CN.properties b/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/flight/messages/messages_zh_CN.properties
new file mode 100644
index 0000000000..3d3e088552
--- /dev/null
+++ b/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/flight/messages/messages_zh_CN.properties
@@ -0,0 +1,28 @@
+#
+# 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.
+#
+#
+
+ArrowFlightDataStream.BufferSize.Label=\u6D41\u6700\u5927\u7F13\u51B2\u533A\u5927\u5C0F
+ArrowFlightDataStream.BufferSize.Tooltip=\u5728\u629B\u51FA\u9519\u8BEF\u4EE5\u9632\u6B62\u670D\u52A1\u5668\u5185\u5B58\u8017\u5C3D\u4E4B\u524D\uFF0C\u670D\u52A1\u5668\u7AEF\u53EF\u7F13\u51B2\u7684\u6700\u5927\u884C\u6570
+ArrowFlightDataStream.BatchSize.Label=\u6279\u5904\u7406\u5927\u5C0F
+ArrowFlightDataStream.BatchSize.Tooltip=\u4ECE\u670D\u52A1\u5668\u8BFB\u53D6\u6D41\u65F6\u4F7F\u7528\u7684 Apache Arrow \u6279\u5904\u7406\u5927\u5C0F
+ArrowFlightDataStream.SchemaDefinition.Label=\u6A21\u5F0F\u5B9A\u4E49
+ArrowFlightDataStream.SchemaDefinition.Tooltip=\u670D\u52A1\u5668\u7AEF\u4F20\u5165\u6570\u636E\u6D41\u7684\u9884\u671F\u6A21\u5F0F\u5B9A\u4E49
+ArrowFlightDataStream.Hostname.Label=Hop Flight \u4E3B\u673A\u540D
+ArrowFlightDataStream.Hostname.Tooltip=\u7528\u4E8E\u8BBF\u95EE Hop Apache Arrow Flight \u670D\u52A1\u5668\u7684\u4E3B\u673A\u540D
+ArrowFlightDataStream.Port.Label=Hop Flight \u7AEF\u53E3
+ArrowFlightDataStream.Port.Tooltip=\u7528\u4E8E\u8BBF\u95EE Hop Apache Arrow Flight \u670D\u52A1\u5668\u7684\u7AEF\u53E3
diff --git a/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties b/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/shared/messages/messages_zh_CN.properties
similarity index 68%
copy from plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties
copy to plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/shared/messages/messages_zh_CN.properties
index 2db865b545..4ce52bac9d 100644
--- a/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties
+++ b/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/shared/messages/messages_zh_CN.properties
@@ -15,9 +15,3 @@
# limitations under the License.
#
#
-
-ArrowFileDataStream.Filename.LabelArrowBaseDataStream.Filename.Label=File name
-ArrowFileDataStream.Filename.Tooltip=The file to which Arrow will stream data to. IMPORTANT: This needs to be a local file. VFS is not supported.
-ArrowFileDataStream.BufferSize.Label=Buffer size
-ArrowFileDataStream.BufferSize.Tooltip=The number of rows to read or write at once
-
diff --git a/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties b/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/streamfile/messages/messages_zh_CN.properties
similarity index 64%
copy from plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties
copy to plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/streamfile/messages/messages_zh_CN.properties
index 2db865b545..954c8c0d73 100644
--- a/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties
+++ b/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/streamfile/messages/messages_zh_CN.properties
@@ -16,8 +16,7 @@
#
#
-ArrowFileDataStream.Filename.LabelArrowBaseDataStream.Filename.Label=File name
-ArrowFileDataStream.Filename.Tooltip=The file to which Arrow will stream data to. IMPORTANT: This needs to be a local file. VFS is not supported.
-ArrowFileDataStream.BufferSize.Label=Buffer size
-ArrowFileDataStream.BufferSize.Tooltip=The number of rows to read or write at once
-
+ArrowFileStreamDataStream.Filename.Label=\u6587\u4EF6\u540D
+ArrowFileStreamDataStream.Filename.Tooltip=Arrow \u5C06\u6570\u636E\u6D41\u5199\u5165\u7684\u6587\u4EF6\u3002\u91CD\u8981\uFF1A\u5FC5\u987B\u662F\u672C\u5730\u6587\u4EF6\uFF0C\u4E0D\u652F\u6301 VFS
+ArrowFileStreamDataStream.BufferSize.Label=\u7F13\u51B2\u533A\u5927\u5C0F
+ArrowFileStreamDataStream.BufferSize.Tooltip=\u6BCF\u6B21\u8BFB\u53D6\u6216\u5199\u5165\u7684\u884C\u6570
diff --git a/plugins/transforms/datastream/src/main/java/org/apache/hop/pipeline/transforms/streaminput/DataStreamInputMeta.java b/plugins/transforms/datastream/src/main/java/org/apache/hop/pipeline/transforms/streaminput/DataStreamInputMeta.java
index f21f341cd9..f26560d848 100644
--- a/plugins/transforms/datastream/src/main/java/org/apache/hop/pipeline/transforms/streaminput/DataStreamInputMeta.java
+++ b/plugins/transforms/datastream/src/main/java/org/apache/hop/pipeline/transforms/streaminput/DataStreamInputMeta.java
@@ -41,9 +41,8 @@ import org.jspecify.annotations.NonNull;
@Setter
@Transform(
id = "DataStreamInput",
- name = "i18:org.apache.hop.pipeline.transforms.streaminput:DataStreamInputMeta.Name",
- description =
- "i18:org.apache.hop.pipeline.transforms.streaminput:DataStreamInputMeta.Description",
+ name = "i18n::DataStreamInputMeta.Name",
+ description = "i18n::DataStreamInputMeta.Description",
image = "stream-input.svg",
categoryDescription = "i18n:org.apache.hop.pipeline.transform:BaseTransform.Category.Input",
keywords = "i18n::DataStreamInputMeta.keyword",
diff --git a/plugins/transforms/datastream/src/main/java/org/apache/hop/pipeline/transforms/streamoutput/DataStreamOutputMeta.java b/plugins/transforms/datastream/src/main/java/org/apache/hop/pipeline/transforms/streamoutput/DataStreamOutputMeta.java
index d5cbb11eeb..e0daf5e497 100644
--- a/plugins/transforms/datastream/src/main/java/org/apache/hop/pipeline/transforms/streamoutput/DataStreamOutputMeta.java
+++ b/plugins/transforms/datastream/src/main/java/org/apache/hop/pipeline/transforms/streamoutput/DataStreamOutputMeta.java
@@ -33,8 +33,8 @@ import org.apache.hop.pipeline.transform.ITransformMeta;
@Setter
@Transform(
id = "DataStreamOutput",
- name = "i18::DataStreamOutputMeta.Name",
- description = "i18::DataStreamOutputMeta.Description",
+ name = "i18n::DataStreamOutputMeta.Name",
+ description = "i18n::DataStreamOutputMeta.Description",
image = "stream-output.svg",
categoryDescription = "i18n:org.apache.hop.pipeline.transform:BaseTransform.Category.Output",
keywords = "i18n::DataStreamOutputMeta.keyword",
diff --git a/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties b/plugins/transforms/datastream/src/main/resources/org/apache/hop/pipeline/transforms/streaminput/messages/messages_zh_CN.properties
similarity index 66%
copy from plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties
copy to plugins/transforms/datastream/src/main/resources/org/apache/hop/pipeline/transforms/streaminput/messages/messages_zh_CN.properties
index 2db865b545..97b0befca8 100644
--- a/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties
+++ b/plugins/transforms/datastream/src/main/resources/org/apache/hop/pipeline/transforms/streaminput/messages/messages_zh_CN.properties
@@ -16,8 +16,8 @@
#
#
-ArrowFileDataStream.Filename.LabelArrowBaseDataStream.Filename.Label=File name
-ArrowFileDataStream.Filename.Tooltip=The file to which Arrow will stream data to. IMPORTANT: This needs to be a local file. VFS is not supported.
-ArrowFileDataStream.BufferSize.Label=Buffer size
-ArrowFileDataStream.BufferSize.Tooltip=The number of rows to read or write at once
-
+DataStreamInputMeta.Name=\u6570\u636E\u6D41\u8F93\u5165
+DataStreamInputMeta.Description=\u4ECE\u6570\u636E\u6D41\u4E2D\u8BFB\u53D6\u6570\u636E\u884C
+DataStreamInputMeta.keyword=\u6570\u636E\u6D41,\u6570\u636E,\u6D41,Arrow,IPC
+DataStreamInputMeta.DataStreamName.Label=\u6570\u636E\u6D41\u540D\u79F0
+DataStreamInputMeta.DataStreamName.Tooltip=\u8981\u8BFB\u53D6\u7684\u6570\u636E\u6D41\u540D\u79F0
diff --git a/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties b/plugins/transforms/datastream/src/main/resources/org/apache/hop/pipeline/transforms/streamoutput/messages/messages_zh_CN.properties
similarity index 66%
copy from plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties
copy to plugins/transforms/datastream/src/main/resources/org/apache/hop/pipeline/transforms/streamoutput/messages/messages_zh_CN.properties
index 2db865b545..c0fbf9beed 100644
--- a/plugins/tech/arrow/src/main/resources/org/apache/hop/arrow/datastream/file/messages/messages_en_US.properties
+++ b/plugins/transforms/datastream/src/main/resources/org/apache/hop/pipeline/transforms/streamoutput/messages/messages_zh_CN.properties
@@ -16,8 +16,8 @@
#
#
-ArrowFileDataStream.Filename.LabelArrowBaseDataStream.Filename.Label=File name
-ArrowFileDataStream.Filename.Tooltip=The file to which Arrow will stream data to. IMPORTANT: This needs to be a local file. VFS is not supported.
-ArrowFileDataStream.BufferSize.Label=Buffer size
-ArrowFileDataStream.BufferSize.Tooltip=The number of rows to read or write at once
-
+DataStreamOutputMeta.Name=\u6570\u636E\u6D41\u8F93\u51FA
+DataStreamOutputMeta.Description=\u5C06\u6570\u636E\u884C\u5199\u5165\u6570\u636E\u6D41
+DataStreamOutputMeta.keyword=\u6570\u636E\u6D41,\u6570\u636E,\u6D41,Arrow,IPC
+DataStreamOutputMeta.DataStreamName.Label=\u6570\u636E\u6D41\u540D\u79F0
+DataStreamOutputMeta.DataStreamName.Tooltip=\u8981\u5199\u5165\u7684\u6570\u636E\u6D41\u540D\u79F0
diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypeBase.java b/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypeBase.java
index 56a055c2a8..b5d2a6ab36 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypeBase.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypeBase.java
@@ -17,7 +17,6 @@
package org.apache.hop.ui.hopgui.file;
-import java.util.Properties;
import org.apache.commons.vfs2.FileName;
import org.apache.commons.vfs2.FileObject;
import org.apache.hop.core.exception.HopException;
@@ -26,21 +25,13 @@ import org.apache.hop.core.vfs.HopVfs;
public abstract class HopFileTypeBase implements IHopFileType {
- @Override
- public abstract String getName();
-
- @Override
- public abstract Properties getCapabilities();
-
- @Override
- public abstract String[] getFilterExtensions();
-
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
- return obj.getClass().equals(this.getClass()); // same class is enough
+ // same class is enough
+ return obj.getClass().equals(this.getClass());
}
@Override