Ho un generatore personalizzato che genera codice solo per classi somes nel mio progetto. Il seguente codice si trova all'inizio del metodo generate
, e mette tutte le classi che avranno bisogno di lavorare su nella lista clazzes
GWT TypeOracle.getTypes non restituisce tutti i tipi
TypeOracle oracle = context.getTypeOracle();
JClassType markerInterfaceType = oracle.findType(MY_PARENT_CLASS.class.getName());
List<JClassType> clazzes = new ArrayList<JClassType>();
for (JClassType classType : oracle.getTypes()) {
if (!classType.equals(markerInterfaceType)
&& classType.isAssignableTo(markerInterfaceType)) {
clazzes.add(classType);
}
}
Questo codice è rimasta invariata per più di un anno, ma dalla scorsa settimana sembra che alcune classi non siano prese in considerazione dal generatore.
Dopo un po 'di scavo, ho scoperto che quelle classi non sono nemmeno nella lista restituiti da oracle.getTypes()
- Quelle classi ignorati non sono di recente classi create (alcuni sono stati lasciati invariati per diversi mesi)
- Per quanto come posso dire, non c'è modo di distinguere una classe che sarà ignorata da qualsiasi altra classe
- Nessun aggiornamento nella nostra versione gwt è stato fatto (alcuni di noi utilizzano 2.5.0, altri 2.5.1)
- Nessun aggiornamento nei pacchetti utilizzati da quelle classi s sia
oracle.findType(MISSING_CLASS.class.getName())
rendimentinull
- il problema appare solo per alcune persone, ma non sulle stesse classi
- rinominare classi problematici sembra correggere il problema
La mia ipotesi migliore sarebbe che ho un problema di cache da qualche parte, ma non ho idea di dove cercare.
Hai provato cancellando il contenuto della cartella GWT-UnitCache? Più spesso aiuta a correggere errori apparentemente strani come questo per me. Inoltre, hai alcuni nomi di esempio delle classi mancanti? Poiché rinominarli aiuta, accanto a un problema relativo alla memorizzazione nella cache, questo potrebbe anche essere associato al nome. –