Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[kie-issues#394] Unnecessary warning when DRL file is placed in BOOT-INF/classes directory #5410

Merged
merged 2 commits into from
Aug 3, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -378,18 +378,13 @@ private static boolean isFileInKieBase( KieBaseModel kieBase, String fileName, S
return true;
} else {
String folderNameForFile = lastSep > 0 ? fileName.substring( 0, lastSep ) : "";
int resourcesPos = folderNameForFile.indexOf( RESOURCES_ROOT );
if (resourcesPos >= 0) {
folderNameForFile = folderNameForFile.substring( resourcesPos + RESOURCES_ROOT.length() );
}
String pkgNameForFile = packageNameForFile( fileName, folderNameForFile, !useFolders, file );
return isPackageInKieBase( kieBase, pkgNameForFile );
}
}

private static String packageNameForFile( String fileName, String folderNameForFile, boolean discoverPackage, Supplier<InternalResource> file ) {
String packageNameFromFolder = folderNameForFile.replace( '/', '.' );

String packageNameFromFolder = getRelativePackageName(folderNameForFile.replace( '/', '.' ));
Copy link
Contributor

@gitgabrio gitgabrio Jul 27, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

THanks @baldimir . Could you please replace / with the filesystem separator ? We have fixed that in a lot of different places, and wherever possible I think it is better (the hardcoded use of / led to different unexpected issues on Windows machines)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gitgabrio I'm not sure this is necessary, this is handling InternalResource so the separator should be already normalized with a '/'.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I thought the same. As far as I remember, KieMemoryFileSystem works internally with "/".

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @mariofusco @baldimir - please bear with me 🙏 😄
It may very well as you say, currently.
My concern is that the method itself is "generic", and nothing prevent that an unexpected code path, now or in the future, will get there with different separator.
IMO currently the method works only by a series of hidden side-effects.
If it is possible to use my suggestion here, I think that method would be more robust.

Side-note: I just noticed
int lastSep = fileName.lastIndexOf( "/" );
at line 372, with the same issue.
The whole point of this discussion is that if all those methods are guaranteed to work ONLY with un underlying KieMemoryFileSystem, then this should be enforced as much as possible: does this make sense ?

(One sort of "hack" could be to add a KieMemoryFileSystem parameter to ththe involeved methods - even if unused - to be sure that this method get's invoked ONLY when there is an underlying KieMemoryFileSystem.)

Copy link
Contributor Author

@baldimir baldimir Aug 3, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changing the separator here may actually break things. Because if the KIE memory file system uses "/" everywhere internally, and we start working with the OS dependant separator here, the replace method would stop working on e.g. Windows. If we want to do a review of file separators, I would advice to do it in a separate issue, because it would be a much more complex task than changing it only here. Would that be ok please? Currently all tests pass on Windows, except a random failure reported in MBeans test (which is random because it doesn't show up in the backported PRs and the tests and the code around are pretty much the same there as far as I know).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @baldimir.
fine for me

if (discoverPackage) {
String packageNameForFile = packageNameFromAsset(fileName, file.get());
if (packageNameForFile != null) {
Expand Down
Loading