Hi Jeroen, thanks, that's exactly how I did it.
 
But Dan's proposal by using a database as a source for config items would be 
also interesting.

lG,Vladimir


> Am 24.09.2014 um 10:47 schrieb Jeroen van der Wal <jer...@stromboli.it>:
> 
> Hi Vladimir,
> 
> When you add an init method which takes a map of  tow strings as the
> parameter and mark that with postconstruct you can easily access the
> isis.properties values.
> 
> @DomainService
> public class MyDomainService
>    private Map<String, String> properties
> 
>    @Programmatic
>    @PostConstruct
>    public void init(final Map<String,String> properties) {
>        this.properties = properties;
>    }
> 
>    ....
> 
> }
> 
> On Wed, Sep 24, 2014 at 9:33 AM, Vladimir Nišević <vnise...@gmail.com>
> wrote:
> 
>> Hi Dan, yes I saw the Settings add-on.  Bur I need to use the
>> configuration parameter when instantiating my domain service (Isis
>> biotstrap?).
>> 
>> As far I understand,the way would be to use ApplicationSettingsService (
>> https://github.com/isisaddons/isis-module-settings/blob/master/dom/src/main/java/org/isisaddons/module/settings/dom/ApplicationSettingsService.java
>> )
>> 
>> What I don't undersand is the order
>> how Isis creates the domain services. Can I use the AppSettigsService in
>> this early Isis bootstrapping phase?
>> 
>> Hope I explained this clearly...
>> 
>> BR,Vladimir
>> 
>> 
>>> Am 23.09.2014 um 15:53 schrieb Dan Haywood <d...@haywood-associates.co.uk
>>> :
>>> 
>>> Hi Vladimir,
>>> 
>>> Not quite sure how the second doc helped you, but perhaps I misunderstood
>>> your original question.
>>> 
>>> But at any rate, if you want to do is to store application-settings, then
>>> check out the "Settings module add-on" [1]...  that'll let you store such
>>> stuff in the database.
>>> 
>>> Other add-ons listed at [2]
>>> 
>>> Cheers
>>> Dan
>>> 
>>> [1] https://github.com/isisaddons/isis-module-settings
>>> [2] http://www.isisaddons.org/
>>> 
>>> 
>>>> On 23 September 2014 14:08, Vladimir Nišević <vnise...@gmail.com>
>> wrote:
>>>> 
>>>> Found on my own the answer in documentation (
>> https://isis.apache.org/more-advanced-topics/how-to-09-020-How-to-write-a-typical-domain-service.html
>>>> )
>>>> 
>>>> 
>>>> Sorry and thanks!
>>>> Vladimir
>>>> 
>>>> 2014-09-23 14:54 GMT+02:00 Vladimir Nišević <vnise...@gmail.com>:
>>>> 
>>>>> Hi guys, I have question how to deal with application specific
>>>>> configuration parameters...
>>>>> 
>>>>> 
>>>>> I use elasticsearch to put/get specific documents and use them in a
>>>> domain
>>>>> model.
>>>>> 
>>>>> So I defined a domain service "EsClient" to access to elasticsearch - I
>>>>> use service lifecycle to connect/disconnect to elasticseach.
>>>>> 
>>>>> 
>>>>> 
>>>>> According to ((
>>>> https://isis.apache.org/reference/configuration-files.html)
>>>>> ) my first idea was to:
>>>>> 
>>>>> - put the configuration parameters into isis.properites
>>>>> - get the parameter value in a domain service by
>>>>> container.getProperty("propertyName");
>>>>> 
>>>>> Currently I get null value here...
>>>>> 
>>>>> Thanks,Vladimir
>>>>> 
>>>>> 
>>>>> 
>>>>> Here my code (relevant parts)
>>>>> 
>>>>> ....
>>>>> @Named("Elasticsearch")
>>>>> @DomainService(menuOrder = "1.2")
>>>>> public class EsClient {
>>>>> 
>>>>> private static final String ES_CLUSTER_PROPERTY_NAME =
>>>>> "elasticsearch.cluster";
>>>>> private static final String ES_SERVER_PROPERTY_NAME =
>>>>> "elasticsearch.server";
>>>>> private static final String ES_SERVER_PORT_PROPERTY_NAME =
>>>>> "elasticsearch.port";
>>>>> ..
>>>>> ...
>>>>> 
>>>>> @SuppressWarnings("resource")
>>>>>   @PostConstruct
>>>>>   @Programmatic
>>>>>   public void connectToEs() {
>>>>> 
>>>>>       final String esClusterName =
>>>>> container.getProperty(ES_CLUSTER_PROPERTY_NAME);
>>>>>       container.getUser()
>>>>>       final String esServer =
>>>>> container.getProperty(ES_SERVER_PROPERTY_NAME);
>>>>>       final String esPort =
>>>>> container.getProperty(ES_SERVER_PORT_PROPERTY_NAME);
>>>>> 
>>>>>       logger.info("Using elasticsearch properties from
>>>> isis.poperties:"
>>>>> + " server=" + esServer + "," + " port=" + esPort + "," + " cluster=" +
>>>>> esClusterName);
>>>>> 
>>>>>       final Settings settings =
>>>> ImmutableSettings.settingsBuilder().put("
>>>>> cluster.name", esClusterName)
>>>>>       // .put("node.name", ES_LOCAL_NODE_NAME)
>>>>>               .put("client.transport.nodes_sampler_interval", "10") //
>>>> 10
>>>>>                                                                     //
>>>>> seconds
>>>>>                                                                     //
>>>>> ping
>>>>>               .put("client.transport.sniff", false).build();
>>>>>       client = new TransportClient(settings).addTransportAddress(new
>>>>> InetSocketTransportAddress(esServer, Integer.valueOf(esPort)));
>>>>> 
>>>>>       logger.info("Connected to elasticsearch:" + "  server=" +
>>>>> esServer + "," + " port=" + esPort + "," + " cluster=" +
>> esClusterName);
>>>>> 
>>>>>       // instance a json mapper
>>>>>       mapper = new ObjectMapper(); // create once, reuse
>>>>> 
>>>>>   }
>>>>> 
>>>>>   @PreDestroy
>>>>>   @Programmatic
>>>>>   public void disconnectFromES() {
>>>>>       node.close();
>>>>>   }
>>>>> ....
>>>>> 
>>>>> // //////////////////////////////////////
>>>>>   // Injected Services
>>>>>   // //////////////////////////////////////
>>>>> 
>>>>>   @javax.inject.Inject
>>>>>   private DomainObjectContainer container;
>> 

Reply via email to