Added the 'time-unit' attribute to <interval-trigger/> (INT-424).

This commit is contained in:
Mark Fisher
2008-10-14 12:42:09 +00:00
parent 7ccc8f28d5
commit b7f4c1c1e9
3 changed files with 21 additions and 5 deletions

View File

@@ -16,6 +16,8 @@
package org.springframework.integration.config.xml;
import java.util.concurrent.TimeUnit;
import org.w3c.dom.Element;
import org.springframework.beans.factory.config.BeanDefinitionHolder;
@@ -158,11 +160,11 @@ public abstract class IntegrationNamespaceUtils {
private static Trigger createIntervalTrigger(Element element) {
String interval = element.getAttribute("interval");
Assert.hasText(interval, "the 'interval' attribute is required for an <interval-trigger/>");
Long period = Long.valueOf(interval);
IntervalTrigger trigger = new IntervalTrigger(period);
TimeUnit timeUnit = TimeUnit.valueOf(element.getAttribute("time-unit"));
IntervalTrigger trigger = new IntervalTrigger(Long.valueOf(interval), timeUnit);
String initialDelay = element.getAttribute("initial-delay");
if (StringUtils.hasText(initialDelay)) {
trigger.setInitialDelay(Long.valueOf(initialDelay));
trigger.setInitialDelay(Long.valueOf(initialDelay), timeUnit);
}
trigger.setFixedRate("true".equals(element.getAttribute("fixed-rate").toLowerCase()));
return trigger;

View File

@@ -254,7 +254,21 @@
<xsd:attribute name="interval" type="xsd:string"/>
<xsd:attribute name="initial-delay" type="xsd:string"/>
<xsd:attribute name="fixed-rate" type="xsd:boolean"/>
<!-- TODO: add time-unit -->
<xsd:attribute name="time-unit" default="MILLISECONDS">
<xsd:annotation>
<xsd:documentation><![CDATA[
The java.util.concurrent.TimeUnit enum value. The interval trigger resolution
only has millisecond granularity, so we only provide MILLISECONDS and SECONDS.
For hourly, daily, and monthly settings, consider using a cron-trigger instead.
]]></xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="MILLISECONDS"/>
<xsd:enumeration value="SECONDS"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>