You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by so...@apache.org on 2018/01/02 17:17:38 UTC
[1/2] wicket git commit: WICKET-6504 Use a serializable model for
FileSystemResource's path
Repository: wicket
Updated Branches:
refs/heads/wicket-7.x d02bc37b0 -> ae7f324dd
WICKET-6504 Use a serializable model for FileSystemResource's path
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/74d0f9f5
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/74d0f9f5
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/74d0f9f5
Branch: refs/heads/wicket-7.x
Commit: 74d0f9f5bcf0bfa01f2bf0562afe51069c9ceb7f
Parents: d02bc37
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sat Dec 30 23:22:21 2017 +0200
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Wed Jan 3 00:06:54 2018 +0700
----------------------------------------------------------------------
.../wicket/resource/FileSystemResource.java | 58 +++++++++++++++++---
.../FileSystemResourceReferenceTest.java | 31 +++++++++++
2 files changed, 81 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/74d0f9f5/wicket-core/src/main/java/org/apache/wicket/resource/FileSystemResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/FileSystemResource.java b/wicket-core/src/main/java/org/apache/wicket/resource/FileSystemResource.java
index 3f0eca1..b142ae8 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/FileSystemResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/FileSystemResource.java
@@ -20,13 +20,16 @@ import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import org.apache.wicket.Application;
import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.resource.AbstractResource;
import org.apache.wicket.request.resource.PartWriterCallback;
+import org.apache.wicket.util.lang.Args;
/**
* Used to provide resources based on the on Java NIO FileSystem API.<br>
@@ -40,7 +43,7 @@ public class FileSystemResource extends AbstractResource
{
private static final long serialVersionUID = 1L;
- private Path path;
+ private LoadableDetachableModel<Path> path;
/**
* Creates a new file system resource based on the given path
@@ -50,7 +53,7 @@ public class FileSystemResource extends AbstractResource
*/
public FileSystemResource(Path path)
{
- this.path = path;
+ this.path = new PathModel(path);
}
/**
@@ -67,8 +70,23 @@ public class FileSystemResource extends AbstractResource
@Override
protected ResourceResponse newResourceResponse(Attributes attributes)
{
+ return createResourceResponse(getPath());
+ }
- return createResourceResponse(path);
+ @Override
+ public void respond(Attributes attributes)
+ {
+ try
+ {
+ super.respond(attributes);
+ }
+ finally
+ {
+ if (path != null)
+ {
+ path.detach();
+ }
+ }
}
/**
@@ -87,7 +105,7 @@ public class FileSystemResource extends AbstractResource
throw new WicketRuntimeException(
"Please override #newResourceResponse() and provide a path if using a constructor which doesn't take one as argument.");
}
- this.path = path;
+ this.path = new PathModel(path);
long size = getSize();
ResourceResponse resourceResponse = new ResourceResponse();
resourceResponse.setContentType(getMimeType());
@@ -116,7 +134,7 @@ public class FileSystemResource extends AbstractResource
*/
protected long getSize() throws IOException
{
- return Files.readAttributes(path, BasicFileAttributes.class).size();
+ return Files.readAttributes(getPath(), BasicFileAttributes.class).size();
}
/**
@@ -129,14 +147,15 @@ public class FileSystemResource extends AbstractResource
*/
protected String getMimeType() throws IOException
{
+ final Path _path = getPath();
String mimeType = null;
if (Application.exists())
{
- mimeType = Application.get().getMimeType(path.getFileName().toString());
+ mimeType = Application.get().getMimeType(_path.getFileName().toString());
}
if (mimeType == null)
{
- mimeType = Files.probeContentType(path);
+ mimeType = Files.probeContentType(_path);
}
return mimeType;
}
@@ -150,6 +169,29 @@ public class FileSystemResource extends AbstractResource
*/
protected InputStream getInputStream() throws IOException
{
- return Files.newInputStream(path);
+ return Files.newInputStream(getPath());
+ }
+
+ private Path getPath()
+ {
+ return path.getObject();
+ }
+
+ private static class PathModel extends LoadableDetachableModel<Path>
+ {
+ private final String pathAsString;
+
+ public PathModel(Path path)
+ {
+ super(path);
+ Args.notNull(path, "path");
+ this.pathAsString = path.toString();
+ }
+
+ @Override
+ protected Path load()
+ {
+ return Paths.get(pathAsString);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/74d0f9f5/wicket-core/src/test/java/org/apache/wicket/resource/FileSystemResourceReferenceTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/resource/FileSystemResourceReferenceTest.java b/wicket-core/src/test/java/org/apache/wicket/resource/FileSystemResourceReferenceTest.java
index acbb986..dab0e44 100644
--- a/wicket-core/src/test/java/org/apache/wicket/resource/FileSystemResourceReferenceTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/resource/FileSystemResourceReferenceTest.java
@@ -23,6 +23,7 @@ import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Path;
+import org.apache.wicket.core.util.lang.WicketObjects;
import org.apache.wicket.util.io.ByteArrayOutputStream;
import org.apache.wicket.util.io.IOUtils;
import org.apache.wicket.util.tester.WicketTestCase;
@@ -215,4 +216,34 @@ public class FileSystemResourceReferenceTest extends WicketTestCase
};
Assert.assertEquals("text/plain", fileSystemResourceMime.getMimeType());
}
+
+ /**
+ * Test serialization of {@link FileSystemResource}
+ */
+ @Test
+ public void testSerialization() throws IOException, URISyntaxException
+ {
+ InputStream inputStream = null;
+ try
+ {
+ URL resource = FileSystemResourceReferenceTest.class.getResource("FileSystemResourceReference.txt");
+ Path path = FileSystemResourceReference.getPath(resource.toURI());
+ final FileSystemResource fileSystemResource = new FileSystemResource(path);
+ final FileSystemResource cloned = WicketObjects.cloneObject(fileSystemResource);
+
+ Assert.assertEquals(cloned.getSize(), 54);
+
+ // Content
+ inputStream = cloned.getInputStream();
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ IOUtils.copy(inputStream, outputStream);
+ Assert.assertEquals("FileSystemResourceReference.zip content in normal file",
+ outputStream.toString());
+ }
+ finally
+ {
+ IOUtils.closeQuietly(inputStream);
+ }
+ }
+
}
[2/2] wicket git commit: [WICKET-6504] path can be null
Posted by so...@apache.org.
[WICKET-6504] path can be null
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/ae7f324d
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/ae7f324d
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/ae7f324d
Branch: refs/heads/wicket-7.x
Commit: ae7f324dd3a5145d174245093c766d2bb5098bdc
Parents: 74d0f9f
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Tue Jan 2 15:07:48 2018 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Wed Jan 3 00:07:04 2018 +0700
----------------------------------------------------------------------
.../java/org/apache/wicket/resource/FileSystemResource.java | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/ae7f324d/wicket-core/src/main/java/org/apache/wicket/resource/FileSystemResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/FileSystemResource.java b/wicket-core/src/main/java/org/apache/wicket/resource/FileSystemResource.java
index b142ae8..ab47263 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/FileSystemResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/FileSystemResource.java
@@ -29,7 +29,6 @@ import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.resource.AbstractResource;
import org.apache.wicket.request.resource.PartWriterCallback;
-import org.apache.wicket.util.lang.Args;
/**
* Used to provide resources based on the on Java NIO FileSystem API.<br>
@@ -179,19 +178,19 @@ public class FileSystemResource extends AbstractResource
private static class PathModel extends LoadableDetachableModel<Path>
{
+ private static final long serialVersionUID = 1L;
private final String pathAsString;
public PathModel(Path path)
{
super(path);
- Args.notNull(path, "path");
- this.pathAsString = path.toString();
+ this.pathAsString = path == null ? null : path.toString();
}
@Override
protected Path load()
{
- return Paths.get(pathAsString);
+ return pathAsString == null ? null : Paths.get(pathAsString);
}
}
}