1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package edu.internet2.middleware.shibboleth.common.config.service;
19
20 import org.opensaml.xml.util.DatatypeHelper;
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
23 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
24 import org.springframework.beans.factory.xml.ParserContext;
25 import org.w3c.dom.Element;
26
27 import edu.internet2.middleware.shibboleth.common.config.SpringConfigurationUtils;
28
29
30
31
32 public abstract class AbstractReloadableServiceBeanDefinitionParser extends AbstractServiceBeanDefinitionParser {
33
34
35 private final Logger log = LoggerFactory.getLogger(AbstractReloadableServiceBeanDefinitionParser.class);
36
37
38 protected void doParse(Element configElement, ParserContext parserContext, BeanDefinitionBuilder builder) {
39 super.doParse(configElement, parserContext, builder);
40
41 if (configElement.hasAttributeNS(null, "configurationResourcePollingFrequency")) {
42 builder.addPropertyReference("pollingTimer", configElement.getAttributeNS(null, "timerId"));
43
44 long frequency = SpringConfigurationUtils.parseDurationToMillis(
45 "'configurationResourcePollingFrequency' on service " + configElement.getAttributeNS(null, "id"),
46 configElement.getAttributeNS(null, "configurationResourcePollingFrequency"), 1);
47 builder.addPropertyValue("pollingFrequency", frequency);
48 log.debug("{} service configuration polling frequency: {}ms", getServiceId(configElement), frequency);
49
50 int retryAttempts = 0;
51 if (configElement.hasAttributeNS(null, "configurationResourcePollingRetryAttempts")) {
52 retryAttempts = Integer.parseInt(DatatypeHelper.safeTrimOrNullString(configElement.getAttributeNS(null,
53 "configurationResourcePollingRetryAttempts")));
54 }
55 if (retryAttempts < 1) {
56 retryAttempts = 3;
57 }
58 builder.addPropertyValue("pollingRetryAttempts", retryAttempts);
59 log.debug("{} service configuration polling retry attempts: {}", getServiceId(configElement),
60 retryAttempts);
61 }
62 }
63 }