You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Huang (Jira)" <ji...@apache.org> on 2021/06/23 01:46:00 UTC
[jira] [Updated] (CAMEL-16745) excludeExt/includeExt not getting
the right filename extension
[ https://issues.apache.org/jira/browse/CAMEL-16745?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Huang updated CAMEL-16745:
--------------------------
Description:
When I use includeExt=zip to filter files in FTP component, it not worked as I expected.
If I have a file named aaa.bbb.ccc.zip, it will get "bbb.ccc.zip" as the extension, which I expected was "zip".
From the code of GenericFileConsumer<T>.isMatched in camel-file I found that
{code:java}
if (includeExt != null) {
String ext = FileUtil.onlyExt(file.getFileName());
boolean any = false;
for (String include : includeExt) {
any |= include.equalsIgnoreCase(ext);
}
if (!any) {
return false;
}
}
{code}
Class FileUtil from camel-util:
{code:java}
public static String onlyExt(String name) {
return onlyExt(name, false);
}
public static String onlyExt(String name, boolean singleMode) {
if (name == null) {
return null;
}
name = stripPath(name); // extension is the first dot, as a file may have double extension such as .tar.gz
// if single ext mode, then only return last extension
int pos = singleMode ? name.lastIndexOf('.') : name.indexOf('.');
if (pos != -1) {
return name.substring(pos + 1);
}
return null;
}
{code}
May be we should change "String ext = FileUtil.onlyExt(file.getFileName());" to "String ext = FileUtil.onlyExt(file.getFileName(), true);" or add an "singleMode" parameter for compatibility。
was:
When I use includeExt=zip to filter files in FTP component, it not worked as I expected.
If I have a file named aaa.bbb.ccc.zip, it will get "bbb.ccc.zip" as the extension, which I expected was "zip".
From the code of GenericFileConsumer<T>.isMatched in camel-file I found that
{code:java}
if (includeExt != null) {
String ext = FileUtil.onlyExt(file.getFileName());
boolean any = false;
for (String include : includeExt) {
any |= include.equalsIgnoreCase(ext);
}
if (!any) {
return false;
}
}
{code}
{code:java}
public static String onlyExt(String name) {
return onlyExt(name, false);
} public static String onlyExt(String name, boolean singleMode) {
if (name == null) {
return null;
}
name = stripPath(name); // extension is the first dot, as a file may have double extension such as .tar.gz
// if single ext mode, then only return last extension
int pos = singleMode ? name.lastIndexOf('.') : name.indexOf('.');
if (pos != -1) {
return name.substring(pos + 1);
}
return null;
}
{code}
May be we should change "String ext = FileUtil.onlyExt(file.getFileName());" to "String ext = FileUtil.onlyExt(file.getFileName(), true);" or add an "singleMode" parameter for compatibility。
> excludeExt/includeExt not getting the right filename extension
> --------------------------------------------------------------
>
> Key: CAMEL-16745
> URL: https://issues.apache.org/jira/browse/CAMEL-16745
> Project: Camel
> Issue Type: Improvement
> Components: camel-ftp
> Affects Versions: 3.10.0
> Reporter: Huang
> Priority: Major
> Labels: excludeExt, includeExt
> Fix For: Future
>
> Original Estimate: 12h
> Remaining Estimate: 12h
>
> When I use includeExt=zip to filter files in FTP component, it not worked as I expected.
> If I have a file named aaa.bbb.ccc.zip, it will get "bbb.ccc.zip" as the extension, which I expected was "zip".
> From the code of GenericFileConsumer<T>.isMatched in camel-file I found that
>
> {code:java}
> if (includeExt != null) {
> String ext = FileUtil.onlyExt(file.getFileName());
> boolean any = false;
> for (String include : includeExt) {
> any |= include.equalsIgnoreCase(ext);
> }
> if (!any) {
> return false;
> }
> }
> {code}
> Class FileUtil from camel-util:
> {code:java}
> public static String onlyExt(String name) {
> return onlyExt(name, false);
> }
> public static String onlyExt(String name, boolean singleMode) {
> if (name == null) {
> return null;
> }
> name = stripPath(name); // extension is the first dot, as a file may have double extension such as .tar.gz
> // if single ext mode, then only return last extension
> int pos = singleMode ? name.lastIndexOf('.') : name.indexOf('.');
> if (pos != -1) {
> return name.substring(pos + 1);
> }
> return null;
> }
> {code}
>
> May be we should change "String ext = FileUtil.onlyExt(file.getFileName());" to "String ext = FileUtil.onlyExt(file.getFileName(), true);" or add an "singleMode" parameter for compatibility。
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)