Incorrect URI to File conversion in GenericExporter

Bug #755034 reported by cowwoc on 2011-04-08
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Querydsl
Fix Released
Undecided
Unassigned

Bug Description

GenericExporter converts a URI to a File incorrectly which causes it to fail under Windows. For example:

packagePath=/C:/Users/Gili/Documents/querydsl/trunk/querydsl-core/target/test-classes/com/mysema/query/codegen

(notice the leading slash)

but then later on:

child=C:\Users\Gili\Documents\querydsl\trunk\querydsl-core\target\test-classes\com\mysema\query\codegen\BeanSerializerTest.class

(notice the lack of leading slash)

So later on when you invoke "child.getPath().substring(packagePath.length()+1)" you're actually chopping off the first character of the filename.

To fix this bug simply replace:

                    packagePath = url.toURI().getPath();
                    files.add(new File(packagePath));

with

                    File packageAsFile = new File(url.toURI());
                    packagePath = packageAsFile.getPath();
                    files.add(packageAsFile);

Please also scan for similar instances of this bug in the rest of the codebase.

I just commited this fix, could you retry?

cowwoc (gili) wrote :

Both revisions 13951 and 13952 work for me. I suggest you use File.getName() from r13951 because it's easier to read, and the URI to File fix from r13952 because of correctness.

Actually 13952 is probably the correct one, since the previous won't work for subpackages, but I will re-test.

Commited the final fix.

Changed in querydsl:
status: New → Fix Committed

Released in 2.2.0-beta4

Changed in querydsl:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers