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