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()
        {

Reply via email to