Oui, il suffit de définir une class qui s'en charge dans la factory.
regarde les exemples de Astr.
Dans la eGallery pour définir le httphost du gateway, il le "créer" dans l'IoC (c'est pas vraiment le terme).
// context/net/service.eden
{
id : "gatewayUrl_factory" ,
type : "asgard.net.remoting.RemotingGatewayUrl" ,
properties : [ { name:"flashVars" , value:asgard.display.ApplicationDisplay.flashVars } ]
}
,
{
id :"gatewayUrl" ,
type : "String" ,
factoryMethod :
{
factory:"gatewayUrl_factory" , name:"create" ,
arguments : [ { config : "gatewayUrl" } , { config : "httphost" } ]
}
}
- La défintion "gatewayUrl_factory" permet de récupérer les flashvars et de formater le chemin du gateway.php.
- La définition "gatewayUrl" créer la chaine voulue au moyen de la méthode "create" de la définition au dessus.
dans la définition du service on récupère la référence de cette chaine dans la propriété "gatewayUrl" :
// context/net/remoting/getGallery.eden
{
id : "get_gallery_listener" ,
type : "egallery.net.remoting.GetGallery" ,
properties : [ { name : "model" , ref : "picture_model" } ] ,
singleton : true ,
lazyInit : true
}
,
{
id : "get_gallery_service" ,
type : "asgard.net.remoting.RemotingService" ,
singleton : true ,
lazyInit : true ,
properties :
[
{ name : "gatewayUrl" , ref : "gatewayUrl" } ,
{ name : "methodName" , value : "getGallery" } ,
{ name : "objectEncoding" , value : 0 } , // AMF0
{ name : "serviceName" , value : "Gallery" } ,
{ name : "listener" , ref : "get_gallery_listener" }
]
}
L'idée ce de faire la même chose grosso-modo mais de passer en arguments la référence #state et la valeur "w" de ton objet.
Pour la valeur "w" de ton objet le mieux c'est de la stocké dans un config.eden et de l'appeler avec la propriété "config" de l'IOC:
// config.eden
my_rectangle =
{
w : 200 ,
h : 100
...
}
/// L'IoC