Spring 如何实现自定义SftpSimplePatternFileListFilter?

Spring 如何实现自定义SftpSimplePatternFileListFilter?,spring,filter,spring-integration,sftp,Spring,Filter,Spring Integration,Sftp,我是Spring集成的新手。我正在尝试实现客户sftp过滤器,以列出sftp服务器中的文件。我在构造函数中得到“看到的空白最终字段可能尚未初始化”。您能建议我从sftp服务器获取文件名列表吗 我不知道我的代码出了什么问题 提前谢谢 java代码 public class SFTPFileFilter extends SftpSimplePatternFileListFilter { public SFTPFileFilter(String pattern) {

我是Spring集成的新手。我正在尝试实现客户sftp过滤器,以列出sftp服务器中的文件。我在构造函数中得到“看到的空白最终字段可能尚未初始化”。您能建议我从sftp服务器获取文件名列表吗

我不知道我的代码出了什么问题

提前谢谢

java代码

public class SFTPFileFilter extends SftpSimplePatternFileListFilter {






    public SFTPFileFilter(String pattern) {
        super(pattern);
        // TODO Auto-generated constructor stub
    }


    final static Logger logger = LoggerFactory.getLogger(SFTPFileFilter.class);

    private final Queue<File> seen;

    private final Set<File> seenSet = new HashSet<File>();

    private final Object monitor = new Object();

    public static int fileCount = 0;

    @Autowired
    private SourcePollingChannelAdapter sftpInbondAdapter;



     public List<File> filterFiles(File[] files)
    {
         List<File> accepted = new ArrayList<File>();
            for (File file : files) {
                System.out.println(file.getName());
                accepted.add(file);
            }
            return accepted;
    }


    public boolean accept(File file) {
        synchronized (this.monitor) {
            if (this.seenSet.contains(file)) {
                logger.info(file.getName()+" is already copied earlier");
                return false;
            }
            if (this.seen != null) {
                if (!this.seen.offer(file)) {
                    File removed = this.seen.poll();
                    this.seenSet.remove(removed);
                    this.seen.add(file);
                }
            }
            this.seenSet.add(file);
            return true;
        }
    }


}
公共类SFTPFileFilter扩展了SftpSimplePatternFileListFilter{
公共SFTPFileFilter(字符串模式){
超级(模式);
//TODO自动生成的构造函数存根
}
最终静态记录器Logger=LoggerFactory.getLogger(SFTPFileFilter.class);
看到私有最终队列;
私有最终集seenSet=newhashset();
私有最终对象监视器=新对象();
公共静态int fileCount=0;
@自动连线
私有SourcePollingChannelAdapter sftpInbondAdapter;
公共列表筛选器文件(文件[]文件)
{
已接受列表=新的ArrayList();
用于(文件:文件){
System.out.println(file.getName());
接受。添加(文件);
}
接受退货;
}
公共布尔接受(文件){
已同步(此.monitor){
if(this.seenSet.contains(文件)){
logger.info(文件.getName()+“已在前面复制”);
返回false;
}
if(this.seen!=null){
如果(!this.seen.offer(文件)){
File removed=this.seen.poll();
此。请参见。删除(已删除);
this.seen.add(文件);
}
}
this.seenSet.add(文件);
返回true;
}
}
}
看到私有最终队列;
您没有在构造函数中初始化该字段

你不能这样扩展它;只需像这样重写该方法

 public List<File> filterFiles(File[] files) {
        for (File file : files) {
            System.out.println("received:" + file.getName());
        }
        List<File> filtered = super.filterFiles(files);
        for (File file : flteredFiles) {
            System.out.println("after filter:" + file.getName());
        }
        return filteredFiles;
}
公共列表过滤器文件(文件[]文件){
用于(文件:文件){
System.out.println(“接收:“+file.getName());
}
List filtered=super.filterFiles(文件);
用于(文件:flteredFiles){
System.out.println(“过滤器后面:+file.getName());
}
返回过滤器文件;
}
看到私有最终队列;
您没有在构造函数中初始化该字段

你不能这样扩展它;只需像这样重写该方法

 public List<File> filterFiles(File[] files) {
        for (File file : files) {
            System.out.println("received:" + file.getName());
        }
        List<File> filtered = super.filterFiles(files);
        for (File file : flteredFiles) {
            System.out.println("after filter:" + file.getName());
        }
        return filteredFiles;
}
公共列表过滤器文件(文件[]文件){
用于(文件:文件){
System.out.println(“接收:“+file.getName());
}
List filtered=super.filterFiles(文件);
用于(文件:flteredFiles){
System.out.println(“过滤器后面:+file.getName());
}
返回过滤器文件;
}