Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    63

    exception in thread timer-0 java.lang.nullpointerexception

    Salve a tutti
    ho un problema che non riesco proprio a risolvere...
    Questo è il mio codice:

    codice:
    class FileUploadProgressListener implements ProgressListener {
    
        private Collection<ResumableGDataFileUploader> trackedUploaders =    Lists.newArrayList();
        private int pendingRequests;
        PrintStream output;
        Map<String, DocumentListEntry> uploaded = Maps.newHashMap();
        Map<String, String> failed = Maps.newHashMap();
    
        boolean processed;
    
        public FileUploadProgressListener() 
        {
          this.pendingRequests = 0;
        }
    
        public void listenTo(Collection<ResumableGDataFileUploader> uploaders)
        {
          this.trackedUploaders.addAll(uploaders);
          this.pendingRequests = trackedUploaders.size();
        }
    
        public synchronized void progressChanged(ResumableHttpFileUploader uploader)
        {
          String fileId = ((FileUploadData) uploader.getData()).getFileName();
          switch(uploader.getUploadState()) {
            case COMPLETE:
            case CLIENT_ERROR:
              pendingRequests -= 1;
              output.println(fileId + ": Completed");
              break;
            case IN_PROGRESS:
              output.println(fileId + ":"
                  + String.format("%3.0f", uploader.getProgress() * 100) + "%");
              break;
            case NOT_STARTED:
              output.println(fileId + ":" + "Not Started");
              break;
          }
        }
    
        public synchronized boolean isDone() {
          // not done if there are any pending requests.
          if (pendingRequests > 0) {
            return false;
          }
          // if all responses are processed., nothing to do.
          if (processed) {
            return true;
          }
          // check if all response streams are available.
          for (ResumableGDataFileUploader uploader : trackedUploaders) {
            if (!uploader.isDone()) {
              return false;
            }
          }
          // process all responses
          for (ResumableGDataFileUploader uploader : trackedUploaders) {
            String fileId = ((FileUploadData) uploader.getData()).getFileName();
            switch(uploader.getUploadState()) {
              case COMPLETE:
                try {
                  DocumentListEntry entry =
                      uploader.getResponse(DocumentListEntry.class);
                  uploaded.put(fileId, entry);
                } catch (IOException e) {
                  failed.put(fileId, "Upload completed, but unexpected error "
                      + "reading server response");
                } catch (ServiceException e) {
                  failed.put(fileId,
                      "Upload completed, but failed to parse server response");
                }
                break;
              case CLIENT_ERROR:
                failed.put(fileId, "Failed at " + uploader.getProgress());
                break;
            }
          }
          processed = true;
          output.println("All requests done");
          return true;
        }
    
        public synchronized Collection<DocumentListEntry> getUploaded() {
          if (!isDone()) {
            return null;
          }
          return uploaded.values();
        }
    
        public synchronized void printResults() {
          if (!isDone()) {
            return;
          }
          output.println("Result: " + uploaded.size() + ", " + failed.size());
          if (uploaded.size() > 0) {
            output.println(" Successfully Uploaded:");
            for (Map.Entry<String, DocumentListEntry> entry : uploaded.entrySet()) {
              printDocumentEntry(entry.getValue());
            }
          }
          if (failed.size() > 0) {
            output.println(" Failed to upload:");
            for (Map.Entry entry : failed.entrySet()) {
              output.println("  " + entry.getKey() + ":" + entry.getValue());
            }
          }
        }
    
        /**
         * Prints out the specified document entry.
         *
         * @param doc the document entry to print.
         */
        public void printDocumentEntry(DocumentListEntry doc) {
          StringBuffer buffer = new StringBuffer();
    
          buffer.append(" -- " + doc.getTitle().getPlainText() + " ");
          if (!doc.getParentLinks().isEmpty()) {
            for (Link link : doc.getParentLinks()) {
              buffer.append("[" + link.getTitle() + "] ");
            }
          }
          buffer.append(doc.getResourceId());
    
          output.println(buffer);
        }
    
      }		// CHIUSURA CLASSE
    
    	try
    	{
    		DocsService client = new DocsService("Google Docs API");
    		client.setUserCredentials(usr, psw);
    		String percorsoFile = request.getParameter("file");
    		
    	    	int MAX_CONCURRENT_UPLOADS = 10;
    	    	int PROGRESS_UPDATE_INTERVAL = 1000;
    	    	int DEFAULT_CHUNK_SIZE = 10485760;
    	    	File file = new File(percorsoFile);
    	    	
    	    	FileUploadProgressListener listener = new FileUploadProgressListener();
    	        ExecutorService executor = Executors.newFixedThreadPool(MAX_CONCURRENT_UPLOADS);
    	    	
    	        List<ResumableGDataFileUploader> uploaders = Lists.newArrayList();
    	    	String contentType = DocumentListEntry.MediaType.fromFileName(file.getName()).getMimeType();
    	    	MediaFileSource mediaFile = new MediaFileSource(file, contentType);
    	    	URL createUploadUrl = new URL("https://docs.google.com/feeds/upload/create-session/default/private/full");
    	    	ResumableGDataFileUploader uploader = new ResumableGDataFileUploader.Builder(client, createUploadUrl, mediaFile, null)
    	    	              			  .chunkSize(DEFAULT_CHUNK_SIZE).executor(executor)
    				    	              .title(mediaFile.getName())
    				    	              .trackProgress(listener, PROGRESS_UPDATE_INTERVAL)
    				    	              .build();
    	    	uploaders.add(uploader);
    	    	listener.listenTo(uploaders);
    	    	
    	    	for (ResumableGDataFileUploader uploader1 : uploaders) 
    	    	{
    	    		uploader1.start();
    	    	}
    	    	while (!listener.isDone()) 
    	    	{
    	    	      try 
    	    	      {
    	    	        Thread.sleep(100);
    	    	      } catch (InterruptedException ie) 
    	    	      {
    	    	        System.out.println("Interrotto!");
    	    	    	listener.printResults();
    	    	        throw ie; // rethrow
    	    	      }
    	    	}
    	    	listener.printResults();
    	}catch (Exception ex)
    		{
    	        System.err.println("Eccezzione " + ex.getMessage());
    	        ex.printStackTrace();
    	     }
    Il problema che mi da è:

    codice:
    Exception in thread "Timer-0" java.lang.NullPointerException
    	at org.apache.jsp.upload_jsp$1FileUploadProgressListener.progressChanged(upload_jsp.java:138)
    	at com.google.gdata.client.uploader.ResumableHttpFileUploader$NotificationTask.run(ResumableHttpFileUploader.java:179)
    	at java.util.TimerThread.mainLoop(Unknown Source)
    	at java.util.TimerThread.run(Unknown Source)
    Qualcuno può aiutarmi???

    Grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    codice:
    Exception in thread "Timer-0" java.lang.NullPointerException
    at org.apache.jsp.upload_jsp$1FileUploadProgressListener.progressChanged(upload_jsp.java:138)
    qui hai una NPE.
    Guarda questa funzione

    codice:
    public synchronized void progressChanged(ResumableHttpFileUploader uploader)
    {
    String fileId = ((FileUploadData) uploader.getData()).getFileName();
    switch(uploader.getUploadState()) {
    case COMPLETE:
    case CLIENT_ERROR:
    pendingRequests -= 1;
    output.println(fileId + ": Completed");
    break;
    case IN_PROGRESS:
    output.println(fileId + ":"
    + String.format("%3.0f", uploader.getProgress() * 100) + "%");
    break;
    case NOT_STARTED:
    output.println(fileId + ":" + "Not Started");
    break;
    }
    }
    e vedi cosa al suo interno può valere null. Sicuramente qualche riferimento interno, visto che la NPE è lì dentro
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    63
    Qui non ho valori nulli .. può essere che chi mi da errore è case COMPLETE: che non fa nulla?
    Magari devo mettere una return o un break..

    Grazie a tutti..

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    dipende da quello che fai, se quando è COMPLETE non devi fare niente, devi mettere il break
    (anche se a questo punto una traccia la metterei cmq dicendo che è complete). Se non lo fai, esegui prima il case COMPLETE (in questo caso non fai niente) e poi passi a successivo (CLIENT_ERROR) e continui fino a quando non trovi un break o finisci lo switch
    Prova a mettere il break nel case COMPLETE
    RTFM Read That F*** Manual!!!

  5. #5
    codice:
    Exception in thread "Timer-0" java.lang.NullPointerException at org.apache.jsp.upload_jsp$1FileUploadProgressListener.progressChanged(upload_jsp.java:138)
    Qual'è la riga 138?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    non gliel'ho chiesta perché mi è capitato lavorando con le jsp che le righe dell'errore non coincidessero esattamente con la riga di codice, mi sono fermata sul metodo...poi è anche da vedere in che caso si trova, ma l'unico prob che mi viene in mente è quel break mancante o uno tra uploader, uploader.getData, uploader.getUploaderState, fileId sia null
    RTFM Read That F*** Manual!!!

  7. #7
    In effetti gli unici attributi che possono essere null sono:

    uploader
    uploader.getData()
    output
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    63
    Ho controllato tutti i vari attributi e non sono nulli.. Mi pare molto strano..
    Comuqnue le altre classi sono importate dalle API di google.. Vi lascio i link cosi magari ci capite qualcosa in più.

    http://code.google.com/p/gdata-java-...eUploader.java

    http://code.google.com/p/gdata-java-...der.java?r=189

    e il codice che sto usando io come esempio è:
    http://code.google.com/p/gdata-java-...ploadDemo.java

    Non so proprio più che fare.. anche perche' l'ulpload del file c'è ma lancia qst eccezzione che m i pare molto strana

    Spero di essere stato più chiaro..
    grazie a tutti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.