Upload component problem

Good afternoon everyone,

I have tried to implement “basic upload” case as in Vaadin example, but now I tried it in Grails environment (using Vaadin Grails plugin), most cases works okay in grails, but I have problems regarding Upload component especially when the upload button is clicked, the Upload.Receiver event is not fired, this also happen when I tried Upload.FinishedListener and Upload.StartedListener. :frowning:

I don’t know is it caused by Groovy/Grails reflection mechanism? since most cases are working.


package com.rtm.java.ui.test;

import com.vaadin.ui.Upload;
import org.zhakimel.vgrails.app.AppWorkContent;  //extended SplitPanel
import org.zhakimel.vgrails.util.AppManager;
import org.zhakimel.vgrails.util.UIBuilder;

import java.io.IOException;
import java.io.OutputStream;

/**
 * Class TestUpload
 * Description:
 * <p/>
 * Usage      :
 *
 * @author abiel
 */
public class TestUpload extends AppWorkContent implements UIBuilder {

    boolean built=false;
    private LineBreakCounter counter = new LineBreakCounter();
    private Upload upload = new Upload("Upload a file", counter);

    TestUpload(String caption, AppManager manager){
       super(caption,manager);
    }

    /**
     *  build / addComponent calls here
     *  at the end of routine, set built=true
     */public void build() {

        getWorkPanel().addComponent(upload); //workPanel is a Panel

     upload.addListener(new Upload.FinishedListener() {
            public void uploadFinished(Upload.FinishedEvent event) {
              System.out.println("FINISHED: "+ + counter.getLineBreakCount());
            }
        });

     upload.addListener(new Upload.StartedListener(){
         public void uploadStarted(Upload.StartedEvent event){
           System.out.println("STARTED");
         }
     });

      built = true;
    }

    /**
     * returns boolean built private property
     */public boolean isBuilt() {
        return false;
    }

    /**
     * put your set value or set data container of your data components here
     */public void refreshUIData() {

    }


    public static class LineBreakCounter implements Upload.Receiver {

           private String fileName;
           private String mtype;
           private int counter;

           /**
            * return an OutputStream that simply counts lineends
            */
           public OutputStream receiveUpload(String filename, String MIMEType) {
               counter = 0;
               fileName = filename;
               mtype = MIMEType;
               return new OutputStream() {
                   private static final int searchedByte = '\n';

                   @Override
                   public void write(int b) throws IOException {
                       if (b == searchedByte) {
                           counter++;
                       }
                   }
               };
           }

           public String getFileName() {
               return fileName;
           }

           public String getMimeType() {
               return mtype;
           }

           public int getLineBreakCount() {
               return counter;
           }

       }

}


I appreciate any helps

Regards

Abiel
@Bandung, Java