Add Java DSL for SMB module
* Added supporting classes for DSL, fixed checkstyle build errors * Added JUnit tests for DSL package * Updated Java Doc with instructions to setup an external SMB share * Updated AsciiDoc to include instructions on Java DSL configurations * Updated implementation based on PR review feedback * Clean up the code * Add more info to `whats-new.adoc` for these SMB changes
This commit is contained in:
committed by
Artem Bilan
parent
1790f235b7
commit
ac6af716e1
@@ -122,6 +122,55 @@ public MessageSource<File> smbMessageSource() {
|
||||
|
||||
For XML configuration the `<int-smb:inbound-channel-adapter>` component is provided.
|
||||
|
||||
==== Configuring with the Java DSL
|
||||
|
||||
The following Spring Boot application shows an example of how to configure the inbound adapter with the Java DSL:
|
||||
|
||||
====
|
||||
[source, java]
|
||||
----
|
||||
@SpringBootApplication
|
||||
public class SmbJavaApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
new SpringApplicationBuilder(SmbJavaApplication.class)
|
||||
.web(false)
|
||||
.run(args);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public SmbSessionFactory smbSessionFactory() {
|
||||
SmbSessionFactory smbSession = new SmbSessionFactory();
|
||||
smbSession.setHost("myHost");
|
||||
smbSession.setPort(445);
|
||||
smbSession.setDomain("myDomain");
|
||||
smbSession.setUsername("myUser");
|
||||
smbSession.setPassword("myPassword");
|
||||
smbSession.setShareAndDir("myShareAndDir");
|
||||
smbSession.setSmbMinVersion(DialectVersion.SMB210);
|
||||
smbSession.setSmbMaxVersion(DialectVersion.SMB311);
|
||||
return smbSession;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public IntegrationFlow smbInboundFlow() {
|
||||
return IntegrationFlows
|
||||
.from(Smb.inboundAdapter(smbSessionFactory())
|
||||
.preserveTimestamp(true)
|
||||
.remoteDirectory("smbSource")
|
||||
.regexFilter(".*\\.txt$")
|
||||
.localFilename(f -> f.toUpperCase() + ".a")
|
||||
.localDirectory(new File("d:\\smb_files")),
|
||||
e -> e.id("smbInboundAdapter")
|
||||
.autoStartup(true)
|
||||
.poller(Pollers.fixedDelay(5000)))
|
||||
.handle(m -> System.out.println(m.getPayload()))
|
||||
.get();
|
||||
}
|
||||
}
|
||||
----
|
||||
====
|
||||
|
||||
[[smb-outbound]]
|
||||
=== SMB Outbound Channel Adapter
|
||||
|
||||
@@ -142,3 +191,58 @@ public MessageHandler smbMessageHandler(SmbSessionFactory smbSessionFactory) {
|
||||
return handler;
|
||||
}
|
||||
----
|
||||
|
||||
==== Configuring with the Java DSL
|
||||
|
||||
The following Spring Boot application shows an example of how to configure the outbound adapter using the Java DSL:
|
||||
|
||||
====
|
||||
[source, java]
|
||||
----
|
||||
@SpringBootApplication
|
||||
@IntegrationComponentScan
|
||||
public class SmbJavaApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
ConfigurableApplicationContext context =
|
||||
new SpringApplicationBuilder(SmbJavaApplication.class)
|
||||
.web(false)
|
||||
.run(args);
|
||||
MyGateway gateway = context.getBean(MyGateway.class);
|
||||
gateway.sendToSmb(new File("/foo/bar.txt"));
|
||||
}
|
||||
|
||||
@Bean
|
||||
public SmbSessionFactory smbSessionFactory() {
|
||||
SmbSessionFactory smbSession = new SmbSessionFactory();
|
||||
smbSession.setHost("myHost");
|
||||
smbSession.setPort(445);
|
||||
smbSession.setDomain("myDomain");
|
||||
smbSession.setUsername("myUser");
|
||||
smbSession.setPassword("myPassword");
|
||||
smbSession.setShareAndDir("myShareAndDir");
|
||||
smbSession.setSmbMinVersion(DialectVersion.SMB210);
|
||||
smbSession.setSmbMaxVersion(DialectVersion.SMB311);
|
||||
return smbSession;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public IntegrationFlow smbOutboundFlow() {
|
||||
return IntegrationFlows.from("toSmbChannel")
|
||||
.handle(Smb.outboundAdapter(smbSessionFactory(), FileExistsMode.REPLACE)
|
||||
.useTemporaryFileName(false)
|
||||
.fileNameExpression("headers['" + FileHeaders.FILENAME + "']")
|
||||
.remoteDirectory("smbTarget")
|
||||
).get();
|
||||
}
|
||||
|
||||
@MessagingGateway
|
||||
public interface MyGateway {
|
||||
|
||||
@Gateway(requestChannel = "toSmbChannel")
|
||||
void sendToSmb(File file);
|
||||
}
|
||||
|
||||
}
|
||||
----
|
||||
====
|
||||
|
||||
@@ -26,7 +26,9 @@ See <<./graphql.adoc#graphql,GraphQL Support>> for more information.
|
||||
[[x6.0-smb]]
|
||||
=== SMB Support
|
||||
|
||||
SMB support has been added from the Spring Integration Extensions project.
|
||||
SMB support has been added from the Spring Integration Extensions project, including support for Java .
|
||||
The Java DSL (see `org.springframework.integration.smb.dsl.Smb` factory) also has been added to this module.
|
||||
An `SmbStreamingMessageSource` and `SmbOutboundGateway` implementation are introduced.
|
||||
See <<./smb.adoc#smb,SMB Support>> for more information.
|
||||
|
||||
[[x6.0-general]]
|
||||
|
||||
Reference in New Issue
Block a user