You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Garret Wilson <ga...@globalmentor.com> on 2016/12/02 14:48:36 UTC
detecting file reload in Apache Commons Configuration2
Using `org.apache.commons:commons-configuration2:2.1` my application
needs to know when a configuration file has been reloaded so that it can
update some things in the program. Apache Commons Configuration2 uses a
lot of strategies and factories, and usually that's great, but here it's
getting so complicated I can't figure out where I need to install a
listener.
The application has this:
configConfigurationBuilder = new
ReloadingFileBasedConfigurationBuilder<FileBasedConfiguration>(
PropertiesConfiguration.class)
.configure(new
Parameters().properties().setFile(getConfigFile()));
final PeriodicReloadingTrigger configReloadingTrigger = new
PeriodicReloadingTrigger(
configConfigurationBuilder.getReloadingController(), null, 1,
TimeUnit.MINUTES);
configReloadingTrigger.start();
Which of these various things can I install a listener on? I just want
to be notified when the configuration file is reloaded.
I notice that the `ReloadingDetector` interface has a
`reloadingPerformed()` method, and that sounds like what I want. But how
do I add my own `ReloadingDetector`? It seems like the
`ReloadingController` only keeps one `ReloadingDetector` around. Surely
I don't have to subclass `ReloadingDetector` and install a custom one,
would I? I'm not wanting to specialize the reloading detection, so
subclassing would not be appropriate --- I just want to be notified when
something happens. Besides, it's not obvious to me where I would even
hook into the `ReloadingFileBasedConfigurationBuilder` chain of events
where it uses some internal factor to create the detector.
So how can I easily get Apache Commons Configuration2 to notify me when
it reloads a configuration?
Garret
P.S Does no one monitor Stack Overflow? It is a real pain to subscribe
to this old-fashioned mailing list---a general one for all Apache
Commons, at that!---just to ask a technical question. Below is the
unanswered Stack Overflow question I posted.
http://stackoverflow.com/q/40917757/421049
If you were to answer this question on Stack Overflow it would help a
lot more people than simply replying on this obscure mailing list. Just
a suggestion.
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org
Re: detecting file reload in Apache Commons Configuration2
Posted by Garret Wilson <ga...@globalmentor.com>.
On 12/3/2016 9:21 AM, Oliver Heger wrote:
> ...
>> Does it happen _during_ a reload operation or _after_? When I receive
>> this event, is the configuration guaranteed to have the new, reloaded
>> information?
>>
>> Why can't I just have a simple event saying "the configuration now has
>> new data"?
> Maybe a misunderstanding of the reloading mechanism: New data is not
> automatically pushed into a Configuration object you might have a
> reference to. Rather, the configuration builder is reset. So the next
> time you query the builder for a configuration you get a new one with
> updated data.
>
> When you receive one of the mentioned events the builder has been reset
> and thus you know that new data is available.
Oh, right. I remember reading this now. I'll try one of these events and
see how it works. Thank you.
Garret
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org
Re: detecting file reload in Apache Commons Configuration2
Posted by Oliver Heger <ol...@oliver-heger.de>.
Am 03.12.2016 um 16:15 schrieb Garret Wilson:
> On 12/3/2016 9:09 AM, Oliver Heger wrote:
>> ...
>> You can add an event listener at the ReloadingController, then you
>> receive notifications of type ReloadingEvent.
>
> But how does that help me? The Javadocs for
> [ReloadingEvent](https://commons.apache.org/proper/commons-configuration/apidocs/org/apache/commons/configuration2/reloading/ReloadingEvent.html)
> says that this is an "event that is fired when a reload operation is
> required." I don't want an event just when a reload is _required_. That
> helps the ReloadingController, but doesn't help my application much. I
> want an event when a reload _has occurred_, that is, I'm guaranteed that
> the configuration now has new information.
>
>> Alternatively, you could also register a more generic listener for
>> events on the configuration builder itself. When the builder's managed
>> configuration is reset, a corresponding event is produced. This also
>> happens during a reload operation.
>
> Does it happen _during_ a reload operation or _after_? When I receive
> this event, is the configuration guaranteed to have the new, reloaded
> information?
>
> Why can't I just have a simple event saying "the configuration now has
> new data"?
Maybe a misunderstanding of the reloading mechanism: New data is not
automatically pushed into a Configuration object you might have a
reference to. Rather, the configuration builder is reset. So the next
time you query the builder for a configuration you get a new one with
updated data.
When you receive one of the mentioned events the builder has been reset
and thus you know that new data is available.
Oliver
>
> Garret
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org
Re: detecting file reload in Apache Commons Configuration2
Posted by Garret Wilson <ga...@globalmentor.com>.
On 12/3/2016 9:09 AM, Oliver Heger wrote:
> ...
> You can add an event listener at the ReloadingController, then you
> receive notifications of type ReloadingEvent.
But how does that help me? The Javadocs for
[ReloadingEvent](https://commons.apache.org/proper/commons-configuration/apidocs/org/apache/commons/configuration2/reloading/ReloadingEvent.html)
says that this is an "event that is fired when a reload operation is
required." I don't want an event just when a reload is _required_. That
helps the ReloadingController, but doesn't help my application much. I
want an event when a reload _has occurred_, that is, I'm guaranteed that
the configuration now has new information.
> Alternatively, you could also register a more generic listener for
> events on the configuration builder itself. When the builder's managed
> configuration is reset, a corresponding event is produced. This also
> happens during a reload operation.
Does it happen _during_ a reload operation or _after_? When I receive
this event, is the configuration guaranteed to have the new, reloaded
information?
Why can't I just have a simple event saying "the configuration now has
new data"?
Garret
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org
Re: detecting file reload in Apache Commons Configuration2
Posted by Oliver Heger <ol...@oliver-heger.de>.
Hi,
Am 02.12.2016 um 15:48 schrieb Garret Wilson:
> Using `org.apache.commons:commons-configuration2:2.1` my application
> needs to know when a configuration file has been reloaded so that it can
> update some things in the program. Apache Commons Configuration2 uses a
> lot of strategies and factories, and usually that's great, but here it's
> getting so complicated I can't figure out where I need to install a
> listener.
>
> The application has this:
>
> configConfigurationBuilder = new
> ReloadingFileBasedConfigurationBuilder<FileBasedConfiguration>(
> PropertiesConfiguration.class)
> .configure(new
> Parameters().properties().setFile(getConfigFile()));
> final PeriodicReloadingTrigger configReloadingTrigger = new
> PeriodicReloadingTrigger(
> configConfigurationBuilder.getReloadingController(), null, 1,
> TimeUnit.MINUTES);
> configReloadingTrigger.start();
>
> Which of these various things can I install a listener on? I just want
> to be notified when the configuration file is reloaded.
>
> I notice that the `ReloadingDetector` interface has a
> `reloadingPerformed()` method, and that sounds like what I want. But how
> do I add my own `ReloadingDetector`? It seems like the
> `ReloadingController` only keeps one `ReloadingDetector` around. Surely
> I don't have to subclass `ReloadingDetector` and install a custom one,
> would I? I'm not wanting to specialize the reloading detection, so
> subclassing would not be appropriate --- I just want to be notified when
> something happens. Besides, it's not obvious to me where I would even
> hook into the `ReloadingFileBasedConfigurationBuilder` chain of events
> where it uses some internal factor to create the detector.
>
> So how can I easily get Apache Commons Configuration2 to notify me when
> it reloads a configuration?
You can add an event listener at the ReloadingController, then you
receive notifications of type ReloadingEvent.
Alternatively, you could also register a more generic listener for
events on the configuration builder itself. When the builder's managed
configuration is reset, a corresponding event is produced. This also
happens during a reload operation.
Oliver
>
> Garret
>
> P.S Does no one monitor Stack Overflow? It is a real pain to subscribe
> to this old-fashioned mailing list---a general one for all Apache
> Commons, at that!---just to ask a technical question. Below is the
> unanswered Stack Overflow question I posted.
>
> http://stackoverflow.com/q/40917757/421049
>
> If you were to answer this question on Stack Overflow it would help a
> lot more people than simply replying on this obscure mailing list. Just
> a suggestion.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org