Arthur Kharkivskiy
Arthur Kharkivskiy

Reputation: 540

Ant task goes normal in the main method, but stops after definite line during Ant execution

Does anybody know, why such ant task:

public void execute() {
    Timer timer = new Timer();
    TimerTask action = new TimerTask() {
        @SuppressWarnings("ResultOfMethodCallIgnored")
        public void run() {
            String urlsForCheckPath = arachniBinPath + "urls.txt";
            List<String> urlsForCheck;
            try {
                urlsForCheck = FileUtils.readLines(new File(urlsForCheckPath));
                if (urlsForCheck != null) {
                    for (String urlForCheck : urlsForCheck) {
                        new File(arachniLogPath).delete();
                        clearTemporary(urlForCheck);//if something remains after exceptions
                        logger.info(urlForCheck + " previous log and possibly remaining temporary files deleted.");
                        checkURL(urlForCheck);
                        urlForCheck = urlForCheck.replace("/", "-");
                        convertAndSend(urlForCheck);
                        clearTemporary(urlForCheck);
                        logger.info(urlForCheck + " temporary files deleted.");
                    }
                }
            } catch (Exception e) {
                log(e);
            }
        }
    };
    timer.schedule(action, delayBeforeStart);
}

goes normal in the main method, but stops after

 logger.info(urlForCheck + " previous log and possibly remaining temporary files deleted.");

without exceptions during execution via ant? How it can be fixed?

Upvotes: 1

Views: 62

Answers (1)

0xFF
0xFF

Reputation: 585

I think you should read this answer. Java: Wait for TimerTask to complete before continuing execution

Small example:

protected final Timer timer = new Timer();

public void execute() {
   CountDownLatch latch = new CountDownLatch(1);
   timer.schedule(new TimerTask() {
       public void run() {
       }
   }, delayBeforeStart);
   try {
       latch.await();
   } catch (InterruptedException e) {
       log(e);
   }
   timer.cancel();
}

Upvotes: 1

Related Questions