This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 9a02c8fa2f6 CAMEL-22019: camel-smb: Expose UncPath for
backwardcompatibility
9a02c8fa2f6 is described below
commit 9a02c8fa2f687d4ae3f2f53f2a8b307849514981
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri Apr 25 09:33:30 2025 +0200
CAMEL-22019: camel-smb: Expose UncPath for backwardcompatibility
---
.../resources/org/apache/camel/catalog/components/smb.json | 3 ++-
.../META-INF/org/apache/camel/component/smb/smb.json | 3 ++-
components/camel-smb/src/main/docs/smb-component.adoc | 2 ++
.../java/org/apache/camel/component/smb/SmbConstants.java | 2 ++
.../java/org/apache/camel/component/smb/SmbOperations.java | 5 +++++
.../java/org/apache/camel/component/smb/SmbComponentIT.java | 3 ++-
.../builder/endpoint/dsl/SmbEndpointBuilderFactory.java | 12 ++++++++++++
7 files changed, 27 insertions(+), 3 deletions(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/smb.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/smb.json
index aad41b0e5bb..3f242e27660 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/smb.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/smb.json
@@ -46,7 +46,8 @@
"CamelFileHost": { "index": 12, "kind": "header", "displayName": "",
"group": "consumer", "label": "consumer", "required": false, "javaType":
"String", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "The remote hostname.", "constantName":
"org.apache.camel.component.smb.SmbConstants#FILE_HOST" },
"CamelSmbFileInputStream": { "index": 13, "kind": "header", "displayName":
"", "group": "consumer", "label": "consumer", "required": false, "javaType":
"java.io.InputStream", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The remote file input stream.",
"constantName":
"org.apache.camel.component.smb.SmbConstants#SMB_FILE_INPUT_STREAM" },
"CamelFileLocalWorkPath": { "index": 14, "kind": "header", "displayName":
"", "group": "common", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "Path to the local work file, if local work directory is
used.", "constantName":
"org.apache.camel.component.smb.SmbConstants#FILE_LOCAL_WORK_PATH" },
- "CamelSmbFileExists": { "index": 15, "kind": "header", "displayName": "",
"group": "producer", "label": "producer", "required": false, "javaType":
"org.apache.camel.component.file.GenericFileExist", "enum": [ "Override",
"Append", "Fail", "Ignore", "Move", "TryRename" ], "deprecated": true,
"deprecationNote": "", "autowired": false, "secret": false, "description": "The
expected behavior if the file already exists.", "constantName":
"org.apache.camel.component.smb.SmbConstants#SMB_FIL [...]
+ "CamelSmbFileExists": { "index": 15, "kind": "header", "displayName": "",
"group": "producer", "label": "producer", "required": false, "javaType":
"org.apache.camel.component.file.GenericFileExist", "enum": [ "Override",
"Append", "Fail", "Ignore", "Move", "TryRename" ], "deprecated": true,
"deprecationNote": "", "autowired": false, "secret": false, "description": "The
expected behavior if the file already exists.", "constantName":
"org.apache.camel.component.smb.SmbConstants#SMB_FIL [...]
+ "CamelSmbUncPath": { "index": 16, "kind": "header", "displayName": "",
"group": "consumer", "label": "consumer", "required": false, "javaType":
"String", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "UNC path to the retrieved file",
"constantName": "org.apache.camel.component.smb.SmbConstants#SMB_UNC_PATH" }
},
"properties": {
"hostname": { "index": 0, "kind": "path", "displayName": "Hostname",
"group": "common", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.smb.SmbConfiguration", "configurationField":
"configuration", "description": "The share hostname or IP address" },
diff --git
a/components/camel-smb/src/generated/resources/META-INF/org/apache/camel/component/smb/smb.json
b/components/camel-smb/src/generated/resources/META-INF/org/apache/camel/component/smb/smb.json
index aad41b0e5bb..3f242e27660 100644
---
a/components/camel-smb/src/generated/resources/META-INF/org/apache/camel/component/smb/smb.json
+++
b/components/camel-smb/src/generated/resources/META-INF/org/apache/camel/component/smb/smb.json
@@ -46,7 +46,8 @@
"CamelFileHost": { "index": 12, "kind": "header", "displayName": "",
"group": "consumer", "label": "consumer", "required": false, "javaType":
"String", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "The remote hostname.", "constantName":
"org.apache.camel.component.smb.SmbConstants#FILE_HOST" },
"CamelSmbFileInputStream": { "index": 13, "kind": "header", "displayName":
"", "group": "consumer", "label": "consumer", "required": false, "javaType":
"java.io.InputStream", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The remote file input stream.",
"constantName":
"org.apache.camel.component.smb.SmbConstants#SMB_FILE_INPUT_STREAM" },
"CamelFileLocalWorkPath": { "index": 14, "kind": "header", "displayName":
"", "group": "common", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "Path to the local work file, if local work directory is
used.", "constantName":
"org.apache.camel.component.smb.SmbConstants#FILE_LOCAL_WORK_PATH" },
- "CamelSmbFileExists": { "index": 15, "kind": "header", "displayName": "",
"group": "producer", "label": "producer", "required": false, "javaType":
"org.apache.camel.component.file.GenericFileExist", "enum": [ "Override",
"Append", "Fail", "Ignore", "Move", "TryRename" ], "deprecated": true,
"deprecationNote": "", "autowired": false, "secret": false, "description": "The
expected behavior if the file already exists.", "constantName":
"org.apache.camel.component.smb.SmbConstants#SMB_FIL [...]
+ "CamelSmbFileExists": { "index": 15, "kind": "header", "displayName": "",
"group": "producer", "label": "producer", "required": false, "javaType":
"org.apache.camel.component.file.GenericFileExist", "enum": [ "Override",
"Append", "Fail", "Ignore", "Move", "TryRename" ], "deprecated": true,
"deprecationNote": "", "autowired": false, "secret": false, "description": "The
expected behavior if the file already exists.", "constantName":
"org.apache.camel.component.smb.SmbConstants#SMB_FIL [...]
+ "CamelSmbUncPath": { "index": 16, "kind": "header", "displayName": "",
"group": "consumer", "label": "consumer", "required": false, "javaType":
"String", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "UNC path to the retrieved file",
"constantName": "org.apache.camel.component.smb.SmbConstants#SMB_UNC_PATH" }
},
"properties": {
"hostname": { "index": 0, "kind": "path", "displayName": "Hostname",
"group": "common", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.smb.SmbConfiguration", "configurationField":
"configuration", "description": "The share hostname or IP address" },
diff --git a/components/camel-smb/src/main/docs/smb-component.adoc
b/components/camel-smb/src/main/docs/smb-component.adoc
index 97a08949a08..6b351270799 100644
--- a/components/camel-smb/src/main/docs/smb-component.adoc
+++ b/components/camel-smb/src/main/docs/smb-component.adoc
@@ -101,6 +101,8 @@ public void configure() {
Beware that the File object provided is not a `java.io.File` instance, but,
instead a `org.apache.camel.component.smb.SmbFile` instance that extends
Camel's `GenericFile`.
Relying on the underlying implementation may make your code more susceptible
to problems between version upgrades of the library
used to implement this component.
+
+To maintain backward compatibility, a new Camel Header `CamelSmbUncPath` has
been introduced that provides the full absolute path when a File is consumed
from the SMB server.
====
diff --git
a/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbConstants.java
b/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbConstants.java
index b3d10f388b0..6a6abc590eb 100644
---
a/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbConstants.java
+++
b/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbConstants.java
@@ -81,4 +81,6 @@ public class SmbConstants {
javaType = "org.apache.camel.component.file.GenericFileExist")
@Deprecated
public static final String SMB_FILE_EXISTS = "CamelSmbFileExists";
+ @Metadata(label = "consumer", description = "UNC path to the retrieved
file", javaType = "String")
+ public static final String SMB_UNC_PATH = "CamelSmbUncPath";
}
diff --git
a/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbOperations.java
b/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbOperations.java
index 28ef8efbd24..333d28b0092 100644
---
a/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbOperations.java
+++
b/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbOperations.java
@@ -240,6 +240,8 @@ public class SmbOperations implements SmbFileOperations {
throw new
GenericFileOperationFailedException(e.getMessage(), e);
}
}
+
+ exchange.getIn().setHeader(SmbConstants.SMB_UNC_PATH,
shareFile.getUncPath());
}
return true;
}
@@ -291,6 +293,8 @@ public class SmbOperations implements SmbFileOperations {
// store content as a file in the local work directory in
the temp handle
java.nio.file.Files.copy(is, temp.toPath(),
StandardCopyOption.REPLACE_EXISTING);
}
+
+ exchange.getIn().setHeader(SmbConstants.SMB_UNC_PATH,
shareFile.getUncPath());
}
} catch (IOException e) {
@@ -508,6 +512,7 @@ public class SmbOperations implements SmbFileOperations {
SMB2ShareAccess.ALL, SMB2CreateDisposition.FILE_OPEN, null);
InputStream is = shareFile.getInputStream();
exchange.getIn().setHeader(SmbComponent.SMB_FILE_INPUT_STREAM, is);
+ exchange.getIn().setHeader(SmbConstants.SMB_UNC_PATH,
shareFile.getUncPath());
return is;
}
diff --git
a/components/camel-smb/src/test/java/org/apache/camel/component/smb/SmbComponentIT.java
b/components/camel-smb/src/test/java/org/apache/camel/component/smb/SmbComponentIT.java
index 6d3e02cc8c2..c2d4b34c8da 100644
---
a/components/camel-smb/src/test/java/org/apache/camel/component/smb/SmbComponentIT.java
+++
b/components/camel-smb/src/test/java/org/apache/camel/component/smb/SmbComponentIT.java
@@ -48,6 +48,7 @@ public class SmbComponentIT extends CamelTestSupport {
public void testSmbRead() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectedMessageCount(100);
+
mock.allMessages().header(SmbConstants.SMB_UNC_PATH).startsWith("\\\\localhost\\data-rw\\");
mock.assertIsSatisfied();
}
@@ -55,7 +56,7 @@ public class SmbComponentIT extends CamelTestSupport {
@Test
public void testSmbSendFile() throws Exception {
mockResultEndpoint.expectedMinimumMessageCount(1);
- Exchange exchange = template.request("direct:smbSendFile", null);
+ template.request("direct:smbSendFile", null);
MockEndpoint.assertIsSatisfied(context);
}
diff --git
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SmbEndpointBuilderFactory.java
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SmbEndpointBuilderFactory.java
index 3718d0077a4..04d92079573 100644
---
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SmbEndpointBuilderFactory.java
+++
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SmbEndpointBuilderFactory.java
@@ -3909,6 +3909,18 @@ public interface SmbEndpointBuilderFactory {
public String smbFileExists() {
return "CamelSmbFileExists";
}
+ /**
+ * UNC path to the retrieved file.
+ *
+ * The option is a: {@code String} type.
+ *
+ * Group: consumer
+ *
+ * @return the name of the header {@code SmbUncPath}.
+ */
+ public String smbUncPath() {
+ return "CamelSmbUncPath";
+ }
}
static SmbEndpointBuilder endpointBuilder(String componentName, String
path) {
class SmbEndpointBuilderImpl extends AbstractEndpointBuilder
implements SmbEndpointBuilder, AdvancedSmbEndpointBuilder {