This is an automated email from the ASF dual-hosted git repository. svenmeier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/wicket.git
The following commit(s) were added to refs/heads/master by this push: new ecf065c WICKET-6655 set cacheDuration ecf065c is described below commit ecf065c15d274328cc6c5455ca8c3b9d264ef103 Author: Sven Meier <svenme...@apache.org> AuthorDate: Tue Apr 16 20:27:51 2019 +0200 WICKET-6655 set cacheDuration and fileName lazily and wrap models --- .../repeater/data/table/export/ExportToolbar.java | 31 ++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/export/ExportToolbar.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/export/ExportToolbar.java index faad10e..1763848 100644 --- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/export/ExportToolbar.java +++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/export/ExportToolbar.java @@ -39,6 +39,7 @@ import org.apache.wicket.util.lang.Args; import org.apache.wicket.util.resource.AbstractResourceStreamWriter; import org.apache.wicket.util.resource.IResourceStream; import org.apache.wicket.util.resource.IResourceStreamWriter; +import org.apache.wicket.util.time.Duration; /** * A toolbar that provides links to download the data represented by all {@link IExportableColumn}s in the table @@ -102,8 +103,9 @@ public class ExportToolbar extends AbstractToolbar public ExportToolbar(DataTable<?, ?> table, IModel<String> messageModel, IModel<String> fileNameModel) { super(table); - this.messageModel = messageModel; - this.fileNameModel = fileNameModel; + + setMessageModel(messageModel); + setFileNameModel(fileNameModel); } /** @@ -115,7 +117,7 @@ public class ExportToolbar extends AbstractToolbar */ public ExportToolbar setMessageModel(IModel<String> messageModel) { - this.messageModel = Args.notNull(messageModel, "messageModel"); + this.messageModel = wrap(Args.notNull(messageModel, "messageModel")); return this; } @@ -128,7 +130,7 @@ public class ExportToolbar extends AbstractToolbar */ public ExportToolbar setFileNameModel(IModel<String> fileNameModel) { - this.fileNameModel = Args.notNull(fileNameModel, "fileNameModel"); + this.fileNameModel = wrap(Args.notNull(fileNameModel, "fileNameModel")); return this; } @@ -201,17 +203,36 @@ public class ExportToolbar extends AbstractToolbar { IResource resource = new ResourceStreamResource() { + /** + * Set fileName and cacheDuration lazily + */ + public void respond(Attributes attributes) { + setFileName(fileNameModel.getObject() + "." + dataExporter.getFileNameExtension()); + setCacheDuration(ExportToolbar.this.getCacheDuration()); + + super.respond(attributes); + } + @Override protected IResourceStream getResourceStream(Attributes attributes) { return new DataExportResourceStreamWriter(dataExporter, getTable()); } - }.setFileName(fileNameModel.getObject() + "." + dataExporter.getFileNameExtension()); + }; return new ResourceLink<Void>(componentId, resource) .setBody(dataExporter.getDataFormatNameModel()); } + /** + * How long should the export be cached. + * + * @return default is {@link Duration#NONE} + */ + protected Duration getCacheDuration() { + return Duration.NONE; + } + @Override protected void onConfigure() {