Skip to content

Commit

Permalink
Fix tests on windows
Browse files Browse the repository at this point in the history
  • Loading branch information
Jesse Eichar committed Aug 14, 2014
1 parent f9b8a86 commit 55742ac
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -155,24 +155,27 @@ public final Print getJasperPrint(final PJsonObject requestData, final Configura
}

final Object iterator = values.getObject(template.getIterValue(), Object.class);
if (!(iterator instanceof Iterable)) {
throw new IllegalArgumentException(template.getIterValue() + " is supposed to be an iterable but was a "
+ iterator.getClass());
}

final ForkJoinTask<List<Map<String, ?>>> iterTaskFuture =
this.forkJoinPool.submit(new ExecuteIterProcessorsTask(values, template));

List<Map<String, ?>> dataSource;
try {
dataSource = iterTaskFuture.get();
} catch (InterruptedException exc) {
iterTaskFuture.cancel(true);
Thread.currentThread().interrupt();
throw new CancellationException();
}

final JRDataSource jrDataSource = new JRMapCollectionDataSource(dataSource);
final JRDataSource jrDataSource;
if (iterator instanceof Iterable) {
Iterable iterable = (Iterable) iterator;

final ForkJoinTask<List<Map<String, ?>>> iterTaskFuture =
this.forkJoinPool.submit(new ExecuteIterProcessorsTask(values, template));

List<Map<String, ?>> dataSource;
try {
dataSource = iterTaskFuture.get();
} catch (InterruptedException exc) {
iterTaskFuture.cancel(true);
Thread.currentThread().interrupt();
throw new CancellationException();
}

jrDataSource = new JRMapCollectionDataSource(dataSource);
} else {
jrDataSource = new JREmptyDataSource();
}
print = JasperFillManager.fillReport(
jasperTemplateBuild.getAbsolutePath(),
values.getParameters(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,12 @@ private static InputStream loadGraphic(final String graphicFile,
}

// try to load the given graphic
final URI uri = new URI(graphicFile);
final URI uri;
if (graphicFile.startsWith("file:")) {
uri = new URI(graphicFile.replace("\\", "/"));
} else {
uri = new URI(graphicFile);
}
final ClientHttpRequest request = clientHttpRequestFactory.createRequest(uri, HttpMethod.GET);
final ClientHttpResponse response = closer.register(request.execute());
return new BufferedInputStream(response.getBody());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,35 +139,30 @@ private Optional<File> resolveChildFile(final URI configFileUri, final String pa
try {
final URI uri = new URI(pathToSubResource);

final File configDir = configFile.getParentFile();
if (pathToSubResource.startsWith(getUriScheme())) {
try {
final Iterator<File> fileIterator = resolveFiles(uri);

while (fileIterator.hasNext()) {
File next = fileIterator.next();
if (next.exists()) {
FileUtils.assertIsSubDirectory("configuration", configFile.getParentFile(), next);
return Optional.of(next);
}
}
} catch (IllegalArgumentException iae) {
// See if the file is a relative file and see if we can load that.
String relativePart = pathToSubResource.substring((getUriScheme() + ":/").length());
final File file = new File(configFile.getParentFile(), relativePart);

if (file.exists()) {
return Optional.of(file);
} else {
return Optional.absent();
final Iterator<File> fileIterator = resolveFiles(uri);

while (fileIterator.hasNext()) {
File next = fileIterator.next();
if (next.exists()) {
FileUtils.assertIsSubDirectory("configuration", configDir, next);
return Optional.of(next);
}
}

final File childFile = new File(configDir, platformIndependentUriToFile(uri).getPath());
if (childFile.exists()) {
FileUtils.assertIsSubDirectory("configuration", configDir, childFile);
return Optional.of(childFile);
}
}

try {
final File childFile = new File(uri);
final File childFile = platformIndependentUriToFile(uri);

if (childFile.exists()) {
FileUtils.assertIsSubDirectory("configuration", configFile.getParentFile(), childFile);
FileUtils.assertIsSubDirectory("configuration", configDir, childFile);
return Optional.of(childFile);
} else {
return Optional.absent();
Expand Down Expand Up @@ -197,4 +192,23 @@ private Optional<File> resolveFileAssumingPathIsFile(final String pathToSubResou

return Optional.absent();
}

/**
* Convert a url to a file object. No checks are made to see if file exists but there are some hacks that are needed
* to convert uris to files across platforms.
* @param fileURI the uri to convert
*/
protected static File platformIndependentUriToFile(final URI fileURI) {
File file;
try {
file = new File(fileURI);
} catch (IllegalArgumentException e) {
if (fileURI.toString().startsWith("file://")) {
file = new File(fileURI.toString().substring("file://".length()));
} else {
throw e;
}
}
return file;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public final class FileConfigFileLoader extends AbstractFileConfigFileLoader {

@Override
protected Iterator<File> resolveFiles(final URI fileURI) {
final File file = new File(fileURI);
File file = platformIndependentUriToFile(fileURI);

return Iterators.singletonIterator(file);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,10 @@ public void testAccessible() throws Exception {
assertFalse(loader.isAccessible(new URI(CONFIG_FILE.toURI() + "xzy")));
}

@Test(expected = IllegalArgumentException.class)
@Test
public void testAccessible_RelativePath() throws Exception {
final URI fileURI = new URI("file://relativePath/config.yaml");
loader.isAccessible(fileURI);
assertFalse(loader.isAccessible(fileURI));
}

@Test
Expand Down

0 comments on commit 55742ac

Please sign in to comment.