/* * Milyn - Copyright (C) 2006 - 2010 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License (version 2.1) as published by the Free Software * Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * See the GNU Lesser General Public License for more details: * http://www.gnu.org/licenses/lgpl.txt */ package org.milyn.visitors.ctrl; import org.milyn.SmooksException; import org.milyn.cdr.annotation.ConfigParam; import org.milyn.container.ExecutionContext; import org.milyn.delivery.annotation.Initialize; import org.milyn.delivery.dom.DOMVisitAfter; import org.milyn.delivery.sax.SAXElement; import org.milyn.delivery.sax.SAXVisitAfter; import org.milyn.delivery.sax.SAXVisitBefore; import org.w3c.dom.Element; import javax.xml.XMLConstants; import java.io.IOException; /** * Pause Smooks processing for a period. * * @author <a href="mailto:tom.fennelly@gmail.com">tom.fennelly@gmail.com</a> */ public class Pause implements SAXVisitAfter, DOMVisitAfter { private long period; @ConfigParam(defaultVal = "1000") // Default pause of 1 second public Pause setPeriod(long period) { this.period = period; return this; } public void visitAfter(SAXElement element, ExecutionContext executionContext) throws SmooksException, IOException { pause(); } public void visitAfter(Element element, ExecutionContext executionContext) throws SmooksException { pause(); } private void pause() { try { Thread.sleep(period); } catch (InterruptedException e) { e.printStackTrace(); } } }