You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2019/04/16 18:29:08 UTC

[wicket] branch master updated: WICKET-6655 set cacheDuration

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 <sv...@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()
 	{