Skip to content

Commit

Permalink
Add XSD for new SMB components
Browse files Browse the repository at this point in the history
* Add namespace handler support for new XSD configs
* Add JUnit tests for outbound gateway XML config
* Add JUnit tests for streaming inbound adapter XML config
* Add Javadoc to new parser classes as per PR feedback
* Some code clean up
  • Loading branch information
GregBragg authored and artembilan committed May 31, 2022
1 parent 0cf1dfe commit 7174e88
Show file tree
Hide file tree
Showing 9 changed files with 1,182 additions and 104 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,17 @@
*
* @author Markus Spann
* @author Artem Bilan
* @author Gregory Bragg
*
* @since 6.0
*/
public class SmbNamespaceHandler extends AbstractIntegrationNamespaceHandler {

public void init() {
registerBeanDefinitionParser("inbound-channel-adapter", new SmbInboundChannelAdapterParser());
registerBeanDefinitionParser("inbound-streaming-channel-adapter", new SmbStreamingInboundChannelAdapterParser());
registerBeanDefinitionParser("outbound-channel-adapter", new SmbOutboundChannelAdapterParser());
registerBeanDefinitionParser("outbound-gateway", new SmbOutboundGatewayParser());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
* Copyright 2022 the original author or authors.
*
* Licensed 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
*
* https://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.springframework.integration.smb.config;

import org.springframework.integration.file.config.AbstractRemoteFileOutboundGatewayParser;
import org.springframework.integration.file.remote.RemoteFileOperations;
import org.springframework.integration.smb.filters.SmbRegexPatternFileListFilter;
import org.springframework.integration.smb.filters.SmbSimplePatternFileListFilter;
import org.springframework.integration.smb.outbound.SmbOutboundGateway;
import org.springframework.integration.smb.session.SmbRemoteFileTemplate;

/**
* Parser for the SMB 'outbound-gateway' element.
*
* @author Gregory Bragg
*
* @since 6.0
*/
public class SmbOutboundGatewayParser extends AbstractRemoteFileOutboundGatewayParser {

@Override
public String getGatewayClassName() {
return SmbOutboundGateway.class.getName();
}

@Override
protected String getSimplePatternFileListFilterClassName() {
return SmbSimplePatternFileListFilter.class.getName();
}

@Override
protected String getRegexPatternFileListFilterClassName() {
return SmbRegexPatternFileListFilter.class.getName();
}

@Override
protected Class<? extends RemoteFileOperations<?>> getTemplateClass() {
return SmbRemoteFileTemplate.class;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/*
* Copyright 2022 the original author or authors.
*
* Licensed 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
*
* https://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.springframework.integration.smb.config;

import org.springframework.integration.core.MessageSource;
import org.springframework.integration.file.config.AbstractRemoteFileStreamingInboundChannelAdapterParser;
import org.springframework.integration.file.filters.AbstractPersistentAcceptOnceFileListFilter;
import org.springframework.integration.file.filters.FileListFilter;
import org.springframework.integration.file.remote.RemoteFileOperations;
import org.springframework.integration.smb.filters.SmbPersistentAcceptOnceFileListFilter;
import org.springframework.integration.smb.filters.SmbRegexPatternFileListFilter;
import org.springframework.integration.smb.filters.SmbSimplePatternFileListFilter;
import org.springframework.integration.smb.inbound.SmbStreamingMessageSource;
import org.springframework.integration.smb.session.SmbRemoteFileTemplate;

/**
* Parser for the SMB 'inbound-streaming-channel-adapter' element.
*
* @author Gregory Bragg
*
* @since 6.0
*/
public class SmbStreamingInboundChannelAdapterParser extends AbstractRemoteFileStreamingInboundChannelAdapterParser {

@Override
protected Class<? extends RemoteFileOperations<?>> getTemplateClass() {
return SmbRemoteFileTemplate.class;
}

@Override
protected Class<? extends MessageSource<?>> getMessageSourceClass() {
return SmbStreamingMessageSource.class;
}

@Override
protected Class<? extends FileListFilter<?>> getSimplePatternFileListFilterClass() {
return SmbSimplePatternFileListFilter.class;
}

@Override
protected Class<? extends FileListFilter<?>> getRegexPatternFileListFilterClass() {
return SmbRegexPatternFileListFilter.class;
}

@Override
protected Class<? extends AbstractPersistentAcceptOnceFileListFilter<?>> getPersistentAcceptOnceFileListFilterClass() {
return SmbPersistentAcceptOnceFileListFilter.class;
}

}

0 comments on commit 7174e88

Please sign in to comment.