@Override
    public void run () {
        logger.entering(loggerName, "run");

        while (true) {
            try {
                NewsMLQueueElement qe = (NewsMLQueueElement) dequeue(inq);
                Document doc = qe.getDocument();
                
                if (isReady(doc)) {
                    processDoc(qe, doc);
                    enqueue(outq, qe);
                }
            } catch (InterruptedException e) {
                logger.log(Level.INFO, Thread.currentThread().getName(), e);
            } catch (Exception e) {
                logger.log(Level.WARNING, Thread.currentThread().getName(), e);
            }
        }
    }