--- android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/DepartureFetcher.java 2009/10/07 13:37:37 410 +++ android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/DepartureFetcher.java 2009/10/09 08:52:37 428 @@ -6,25 +6,27 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.logging.Logger; - import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.DomNodeList; import com.gargoylesoftware.htmlunit.html.HtmlElement; import com.gargoylesoftware.htmlunit.html.HtmlPage; +import dk.thoerup.curcuitbreaker.CircuitBreaker; +import dk.thoerup.curcuitbreaker.CircuitBreakerManager; import dk.thoerup.traininfoservice.DBConnection; public class DepartureFetcher { Logger logger = Logger.getLogger(DepartureFetcher.class.getName()); - TimeoutCache> cache = new TimeoutCache>(120 * 1000); + Map> cache = new TimeoutMap>(120 * 1000); - public List cachedLookupDepartures(int stationID) throws Exception { + public List cachedLookupDepartures(int stationID) throws Throwable { List list = cache.get(stationID); @@ -38,7 +40,7 @@ } - public List lookupDepartures(int stationID) throws Exception { + public List lookupDepartures(int stationID) throws Throwable { List departureList = new ArrayList(); Connection conn = null; @@ -75,7 +77,7 @@ return departureList; } - public List lookupDepartures(String stationcode, String type) throws Exception { + public List lookupDepartures(String stationcode, String type) throws Throwable { List departureList = new ArrayList(); @@ -83,8 +85,11 @@ webClient.setTimeout(2500); webClient.setJavaScriptEnabled(false); + String uri = "http://www.bane.dk/visStation.asp?ArtikelID=4275&W=" + type + "&S=" + stationcode; + BanedkInvocation wrapper = new BanedkInvocation(webClient, uri); + CircuitBreaker breaker = CircuitBreakerManager.getManager().getCircuitBreaker("banedk"); - final HtmlPage page = webClient.getPage("http://www.bane.dk/visStation.asp?ArtikelID=4275&W=" + type + "&S=" + stationcode); + HtmlPage page = (HtmlPage) breaker.invoke(wrapper); HtmlElement table = page.getElementById("afgangtabel"); @@ -184,7 +189,7 @@ } //test - public static void main(String args[]) throws Exception{ + public static void main(String args[]) throws Throwable { DepartureFetcher f = new DepartureFetcher(); List deps = f.lookupDepartures("AR", "FJRN"); for(DepartureBean d : deps) {