Hi Andrew,

Thanks for the info. Currently, I am using the MaoConfigKey, but I think the 
ConfigKey is better too. So, I will change it an test it. Only, a question, 
When could MapConfigKeys be used?

Thanks a lot.
Jose


El 07/10/2014, a las 00:57, Andrew Kennedy <[email protected]> 
escribió:

> Jose,
> 
> FYI, you should be able to revert back to using a
> `ConfigKey<Map<String,Object>>` now, as the changes for pull request
> #182 [0] fixed resolution of `$brooklyn:component` references properly
> in map content. This is actually preferable as idiomatic entity code,
> and probably more understandable that the `MapConfigKey` version, so
> please try it and let me know how you get on. You may also be able to
> make use of the new `$brooklyn:object` method, and use a custom Java
> POJO as a DTO for the database properties if you want, see this blog
> post for more details:
> 
> - 
> http://blog.abstractvisitorpattern.co.uk/2014/10/new-brooklyn-blueprint-features.html
> 
> [0] https://github.com/apache/incubator-brooklyn/pull/182
> 
> Cheers,
> Andrew.
> --
> -- andrew kennedy ? cloud engineer : 
> http://blog.abstractvisitorpattern.co.uk/ ;
> 
> 
> On 25 September 2014 23:21, josec <[email protected]> wrote:
>> Hi Andrew,
>> 
>> Thanks for your reply.
>> I checked this class las afternoon, but I do not undertand how the keySet(in
>> this case d_DatabaseHost and g_DatabasePort) is returned by MapConfigKey.
>> This keys are specified by the user, so they arenot known by the Java code
>> in runtime.
>> 
>> However I can find the next lines:
>> 
>> MapConfigKey<String> SALT_FORMULAS = new MapConfigKey<String>(String.class,
>>            "salt.formulaUrls", "Map of Salt formula URLs (normally GutHub
>> repository archives from the salt-formulas user)");
>> 
>> and
>> 
>> Map<String, String> formulas = app.getConfig(SaltConfig.SALT_FORMULAS);
>> 
>> So, I hope formulas.keySet() returns <"g_DatabaseHost", "g_DatabasePort">,
>> then I could interate over the map
>> 
>> I think it could be working good, I will tell you. :)
>> 
>> Thanks a lot.
>> Jose
>> 
>> El 25.09.2014 23:47, Andrew Kennedy escribió:
>> 
>>> Jose, Hi.
>>> 
>>> There are some issues using $brooklyn functions and deferred values
>>> using Map valued ConfigKeys at the moment, which I am working on
>>> resolving in pull request #182, however in the mean time I suggest you
>>> try this:
>>> 
>>> Change the type of the key to MapConfigKey, declared like this:
>>> 
>>>    MapConfigKey<Object> DB_CONNECTION_CONFIG_PARAMS = new
>>> MapConfigKey<Object>(Object.class, "php.db.connection.config.params");
>>> 
>>> Then you should be able to specify the configuration in the YAML like
>>> this:
>>> 
>>>    brooklyn.config:
>>>      db_connection_config_params:
>>>        g_DatabaseHost:
>>>          $brooklyn:component("db").attributeWhenReady("datastore.url")
>>>        g_DatabasePort:
>>>          $brooklyn:component("db").attributeWhenReady("mysql.port")
>>> 
>>> Hopefully this is helpful.
>>> 
>>> Cheers,
>>> Andrew.
>>> --
>>> -- andrew kennedy ? cloud engineer :
>>> http://blog.abstractvisitorpattern.co.uk/ ;
>>> 
>>> 
>>> On 25 September 2014 19:16, Jose Carrasco <[email protected]> wrote:
>>>> 
>>>> Hello,
>>>> 
>>>> I am currently developing a new entities for Brooklyn (into SeaClouds
>>>> project context).
>>>> I have found a problem using the ConfigKey.
>>>> 
>>>> I am using a ConfigKey<Map< String, String>> to my entity the parameters
>>>> necessaty to stablish a database
>>>> connection. I have decided to use a Map because the user could find a
>>>> smart
>>>> and flexible way flexible to specify
>>>> several attributes and their values, e.g.:
>>>> 
>>>> name: PHP HelloWorld
>>>> services:
>>>> - serviceType: brooklyn.entity.webapp.apache.ApacheServer
>>>> name: Apache Server
>>>> location: localhost
>>>> brooklyn.config:
>>>> http_port: 80
>>>> app_git_repo_url:https://bitbucket.org/seaclDem/nurocasestudyphp5-5.git
>>>> 
>>>> <https://seaclDem:[email protected]/seaclDem/nurocasestudyphp5-5.git>
>>>> db_connection_config_params:
>>>>      g_DatabaseHost: $brooklyn:formatString("%s",
>>>> component("db").attributeWhenReady("datastore.url"))
>>>>      g_DatabasePort:
>>>> $brooklyn:component("db").attributeWhenReady("mysql.port")
>>>> 
>>>> - serviceType: brooklyn.entity.database.mysql.MySqlNode
>>>> id: db
>>>> name: My DB
>>>> location: localhost
>>>> brooklyn.config:
>>>> datastore.creation.script.url:
>>>> file:///root/Desktop/brooklynTest/create.sql
>>>> 
>>>> In this example the db_connection_config_params is a MapConfigKey:
>>>> 
>>>> @SetFromFlag("db_connection_config_params")
>>>>    public static final ConfigKey<Map<String,String>>
>>>> DB_CONNECTION_CONFIG_PARAMS = new BasicConfigKey(
>>>>            Map.class, "php.db.connection.config.params", "PHP
>>>> application
>>>> file to start e.g. main.php, or launch.php");
>>>> 
>>>> Which contains two items which are used to configure the database. In
>>>> this
>>>> case, the values of the
>>>> aforementioned items are provided by MySQL entity. It works ok.
>>>> Here, I find a problem getting the values of the g_DatabaseHost and
>>>> g_DatabasePort in my java code. When
>>>> I read the values of the aforementiond items the returned values are
>>>> $brooklyn:formatString("%s").
>>>> 
>>>> I have changed the YAML definition using:
>>>> 
>>>> g_DatabaseHost:
>>>> $brooklyn:component("db").attributeWhenReady("datastore.url"))
>>>>      g_DatabasePort:
>>>> $brooklyn:component("db").attributeWhenReady("mysql.port")
>>>> 
>>>> But I have obteined
>>>> $brooklyn:component("db").attributeWhenReady("datastore.url"))  and
>>>> $brooklyn:component("db").attributeWhenReady("mysql.portl"))
>>>> respectively.
>>>> 
>>>> I thought the problem could be the component values request (e.g.
>>>> $brooklyn:component("db").
>>>> attributeWhenReady("datastore.url"))), then I assinged these values to
>>>> simple ConfigKey<String>  but
>>>> they worked good.
>>>> 
>>>> Thus, the problem may be ConfigKey<Map<,>> parser does not  evalue the
>>>> expresions which uses
>>>> $brooklyn:...  but I do not know.
>>>> 
>>>> Could anyone  point me in the right direction? Thank you very much.
>>>> 
>>>> Thanks a lot,
>>>> Jose.
>>>> 
>>>> 
>>>> 
>> 

Reply via email to