2010-10-07 2 views
4

j'ai une classe qui étend AbstractGinModuleGoogle GIN AbstractGinModule & GWT.create()

comme:

public class ClientModule extends AbstractGinModule { 

    public ClientModule() { } 

@Override 
    protected void configure() { 
    ... 
    ... 
    bind(...class).annotatedWith(...).to(...class).in(Singleton.class); 
    ... 
    } 
} 

L'idée que j'ai est de lier une classe avec une autre classe basée sur un valeur stockée dans un fichier de propriétés.

comme:

contient la valeur param provenant du fichier de propriétés

if(param.equals("instanceB")) 
    bind(a.class).to(b.class) 
else 
    bind(a.class).to(c.class) 

J'ai une classe accéder à ce fichier de propriétés et retourner une chaîne avec la valeur. Cette classe est appelée: InstanceParameters.java

Je voudrais obtenir une instance de cette classe dans mon ClientModule. Mais je ne trouve aucun moyen de le faire. J'ai essayé avec:

- InstanceParameters param = new InstanceParameters(); 
- GWT.create(InstanceParameters.class); (Error because this method should only be used on the client side) 

est-il un moyen d'accéder à cette classe InstanceParameters dans ce clientModule?

Merci pour votre aide

+0

Vous n'avez pas publié la classe 'InstanceParameters', mais j'imagine que vous utilisez des classes Java pour lire les fichiers du disque dur - ce qui n'est pas supporté par le sous-ensemble de JRE de GWT. Qu'est-ce que vous essayez exactement de réaliser en "contrôlant" la compilation via un fichier de propriétés? Pourquoi ne pouvez-vous pas faire cela à partir des classes Java (par exemple, via des annotations)? –

+0

La classe instanceParameters utilise un objet Dictionary "com.google.gwt.i18n.client.Dictionary". Dans le constructeur de InstanceParameters j'instancie le dictionnaire par "this.parameters = Dictionary.getDictionary (" NameOfFile ");" . Et c'est la méthode que j'utilise pour obtenir la valeur de ce fichier "return parameters.get (" applicationTitleShort ");". Normalement, ça devrait aller. – AbstractMan

+0

J'ai juste essayé de créer une classe simple avec un attribut. (getter & setter associé). Et je peux instancier celui-ci dans le ClientModule. Je ne comprends pas ... – AbstractMan

Répondre

1

Vous n'avez pas besoin de lire le fichier avant de lancer l'application - juste avant la création du AbstractGinModule (via GWT.create). Ainsi, chargez le Dictionary dans votre méthode onModuleLoad et transmettez les paramètres, soit en tant que classe entière InstanceParameters, soit en tant que chaîne extraite, via un fournisseur ou par tout autre moyen.

+0

Merci pour votre réponse. Je n'étais pas sûr que j'ai correctement compris votre réponse mais j'ai fait ce qui suit: dans le onloadModule() je reçois le dictionnaire, je prends la valeur provenant du fichier .property. Je fais le test dans ce loadmodule. Selon la valeur, j'utilise un module ou un autre. Pensez-vous que c'est correct? – AbstractMan

+0

Oui, c'est exact - je suggérais de mettre la partie "testing" dans le module lui-même, mais la tienne fonctionne mieux quand, par exemple, la configuration (c'est-à-dire le module s'étendant 'AbstractGinModule') devient plus compliquée, etc. d'autre part, vous devez garder deux modules Gin à jour ...) Je n'arrive pas à me rappeler d'atm, mais je suis sûr qu'il y avait un moyen de passer des valeurs à Gin (dans le pire des cas, utilisez public final static 'champs dans votre module GWT, pouah). –

+0

Parfait. Pendant ce temps.Je vais le laisser comme ça. Je vais enquêter pour transmettre la valeur à GIN en retard. Merci beaucoup ;-) – AbstractMan

Questions connexes