package com.vaadin.tests.components.upload; import java.io.ByteArrayOutputStream; import java.io.OutputStream; import com.vaadin.shared.ui.MarginInfo; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.GridLayout; import com.vaadin.ui.Label; import com.vaadin.ui.Notification; import com.vaadin.ui.Upload; import com.vaadin.ui.Upload.FinishedEvent; import com.vaadin.ui.Upload.Receiver; import com.vaadin.ui.Upload.StartedEvent; public class TestFileUploadSize extends TestBase implements Receiver { private Label label = new Label("No finished uploads."); private Label receivedSize = new Label("-"); private Label expectedSize = new Label("-"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); @Override protected void setup() { getLayout().setMargin(new MarginInfo(true, false, false, false)); getLayout().setSpacing(true); Upload u = new Upload("Upload", new Upload.Receiver() { @Override public OutputStream receiveUpload(String filename, String mimeType) { return baos; } }); u.setId("UPL"); u.addStartedListener(new Upload.StartedListener() { @Override public void uploadStarted(StartedEvent event) { expectedSize.setValue(String.valueOf(event.getContentLength())); } }); u.addFinishedListener(new Upload.FinishedListener() { @Override public void uploadFinished(FinishedEvent event) { label.setValue("Upload finished. Name: " + event.getFilename()); receivedSize.setValue(String.valueOf(baos.size())); baos.reset(); } }); expectedSize.setId("expected"); receivedSize.setId("received"); GridLayout grid = new GridLayout(2, 2); grid.addComponent(new Label("Expected size:"), 0, 0); grid.addComponent(new Label("Received size:"), 0, 1); grid.addComponent(expectedSize, 1, 0); grid.addComponent(receivedSize, 1, 1); addComponent(label); addComponent(grid); addComponent(u); } @Override public OutputStream receiveUpload(String filename, String MIMEType) { Notification.show("Receiving upload"); return new ByteArrayOutputStream(); } @Override protected Integer getTicketNumber() { return 9548; } @Override protected String getDescription() { return "Multibyte characters in filenames should not cause the upload size to be computed incorrectly"; } }