giovedì 12 giugno 2008

Alcuni Errori - bug risolti, da ricordare

Durante lo sviluppo della nostra interfaccia sono emersi dei comportamenti strani di Gwt o GET-EXT o grails...
Forse dipendenti dalla mia scarsa esperienza, o forse da veri e propri buchi... non so

Elenco qui quelli che ho risolto, così da ricordarmi in futuro


  • Normalmente grails si accorge di ogni modifica effettuata ai file sorgenti e tenta la ricompilazione dei file necessari. Non ne sappiamo bene i motivi, ma così come è impostato Grails e il plugin di gwt, se si modificano dei file lato client di gwt, non sempre parte la compilazione. O meglio, sembra partire sempre, ma sembra che non vengano cancellati i file che gwt ha creato la compilazione precedente. Di fatto quindi le modifiche non vengono prese.

    Ho perso ore prima di capire questo problema... e pensavo che none ro capace di programmare, non mi capacitavo del perchè non vedevo le modifiche che avevo progettato... ed ecco poi risolto l'arcano... il problema, almeno questa volta, non ero io.

    RISOLTO:
    Francesco ha trovato al soluzione... obbligare lo script del plugin di gwt a ricompilare tutto.
    Questo lo si ottiene aggiungendo alla riga 76 del filke _Internal.groovy del plugin il seguente codice
    gwtForceCompile = true
    Avendo quindi questo codice:modules.each { moduleName ->
     gwtForceCompile = true
    if (!gwtForceCompile &&
    GU.environment != GA.ENV_PRODUCTION &&
      neW File("${outputPath}/${moduleName}/${moduleName}.nocache.js").exists()) {
     // We can skip this module.
             return
     }

    In più, per evitare il problema derivante dal "Java Heap Speace" abbiamo modificato il comando
     java(classname: 'com.google.gwt.dev.GWTCompiler', fork: 'true')
    sempre nello stesso file con
     java(classname: 'com.google.gwt.dev.GWTCompiler', fork: 'true',maxmemory: "512m")

    Se si hanno poi dei problemi con il jar di getext (non ho capito bene in quali casi avviene il problema, ma in alcune circostanze è così) va aggiunta anche questa riga di codice
    pathElement(location: "${basedir}/lib/gwtext.jar")
    nella zona della dichiarazioni del classhpath

  • Mai modificare un file di servizio lato server quando l'applicazione è up, perchè se per caso si aggiorna la pagina dell'aplicazione, grails si accorge che qualcosa è stato modificato, tenta la ricompilazione ma CANCELLA deliberatamente i file del servizio lato client. Non so bene perchè succeda, forse è provocato dalla modifica al plug in che abbiamo fatto (che forza la compilazione del modulo gwt, per risolvere il baco di cui sopra). Bisogna prima fermare l'appplicazione, o distruggere il server, poi ricompilare.

  • Attenzione con la gestione degli ascoltatori dei pulsanti, se poi li si vogliono abilitare e disabilitare. Non so se è un paco gi GWT o GWT-EXT (i button e i listener che utilizzo sono di GWT-EXT) o se è un normale comportamento... sta di fatto che se si aggiunge un ascoltatore ad un pulsante con una ascoltatore anonimo (come quasi sempre si fa), se ad un certo punto lo si disabilita, pare scomparire l'ascoltatore associato, quindi anche se lo si riabilita, non ascolta più nulla.
    Nel mio codice infatti avevo questo

    salvaButton.addListener(new ButtonListenerAdapter(){
    public void onClick(Button button, EventObject e) {
    [...]
    }
    });

    Trasformato poi in

    salvaButton.addListener(new AscoltatoreBottoneSalva());

    private class AscoltatoreBottoneSalva extends ButtonListenerAdapter{
    public void onClick(Button button, EventObject e) {
    [...]
    }
    }

Nessun commento: