Example #1
0
 protected synchronized QueueInfo getQueue(String name) {
   QueueInfo q = (QueueInfo) queues.get(name);
   if (q == null) {
     q = new QueueInfo();
     q.name = name;
     q.list = new LinkedList();
     q.config = defaultQueueConfiguration;
     queues.put(name, q);
   }
   return q;
 }
Example #2
0
 /*
  * (non-Javadoc)
  *
  * @see org.mule.transaction.xa.AbstractResourceManager#doRollback(org.mule.transaction.xa.AbstractTransactionContext)
  */
 protected void doRollback(AbstractTransactionContext context) throws ResourceManagerException {
   QueueTransactionContext ctx = (QueueTransactionContext) context;
   if (ctx.removed != null) {
     for (Iterator it = ctx.removed.entrySet().iterator(); it.hasNext(); ) {
       Map.Entry entry = (Map.Entry) it.next();
       QueueInfo queue = (QueueInfo) entry.getKey();
       List queueRemoved = (List) entry.getValue();
       if (queueRemoved != null && queueRemoved.size() > 0) {
         for (Iterator itRemoved = queueRemoved.iterator(); itRemoved.hasNext(); ) {
           Object id = itRemoved.next();
           queue.putNow(id);
         }
       }
     }
   }
   ctx.added = null;
   ctx.removed = null;
 }
Example #3
0
 /*
  * (non-Javadoc)
  *
  * @see org.mule.transaction.xa.AbstractResourceManager#doCommit(org.mule.transaction.xa.AbstractTransactionContext)
  */
 protected void doCommit(AbstractTransactionContext context) throws ResourceManagerException {
   QueueTransactionContext ctx = (QueueTransactionContext) context;
   try {
     if (ctx.added != null) {
       for (Iterator it = ctx.added.entrySet().iterator(); it.hasNext(); ) {
         Map.Entry entry = (Map.Entry) it.next();
         QueueInfo queue = (QueueInfo) entry.getKey();
         List queueAdded = (List) entry.getValue();
         if (queueAdded != null && queueAdded.size() > 0) {
           for (Iterator itAdded = queueAdded.iterator(); itAdded.hasNext(); ) {
             Object object = itAdded.next();
             Object id = doStore(queue, object);
             queue.putNow(id);
           }
         }
       }
     }
     if (ctx.removed != null) {
       for (Iterator it = ctx.removed.entrySet().iterator(); it.hasNext(); ) {
         Map.Entry entry = (Map.Entry) it.next();
         QueueInfo queue = (QueueInfo) entry.getKey();
         List queueRemoved = (List) entry.getValue();
         if (queueRemoved != null && queueRemoved.size() > 0) {
           for (Iterator itRemoved = queueRemoved.iterator(); itRemoved.hasNext(); ) {
             Object id = itRemoved.next();
             doRemove(queue, id);
           }
         }
       }
     }
   } catch (Exception e) {
     // throw new ResourceManagerException("Could not commit
     // transaction", e);
     // TODO: add an i18n Message
     throw new ResourceManagerException(e);
   } finally {
     ctx.added = null;
     ctx.removed = null;
   }
 }
Example #4
0
 public Object peek(QueueInfo queue) throws IOException, InterruptedException {
   readOnly = false;
   if (added != null) {
     List queueAdded = (List) added.get(queue);
     if (queueAdded != null) {
       return queueAdded.get(queueAdded.size() - 1);
     }
   }
   Object o = queue.peek();
   if (o != null) {
     o = doLoad(queue, o);
   }
   return o;
 }
Example #5
0
 public boolean offer(QueueInfo queue, Object item, long timeout) throws InterruptedException {
   readOnly = false;
   if (added == null) {
     added = new HashMap();
   }
   List queueAdded = (List) added.get(queue);
   if (queueAdded == null) {
     queueAdded = new ArrayList();
     added.put(queue, queueAdded);
   }
   // wait for enough room
   if (queue.offer(null, queueAdded.size(), Long.MAX_VALUE)) {
     queueAdded.add(item);
     return true;
   } else {
     return false;
   }
 }
Example #6
0
 public Object poll(QueueInfo queue, long timeout) throws IOException, InterruptedException {
   readOnly = false;
   if (added != null) {
     List queueAdded = (List) added.get(queue);
     if (queueAdded != null) {
       return queueAdded.remove(queueAdded.size() - 1);
     }
   }
   Object o = queue.poll(Long.MAX_VALUE);
   if (o != null) {
     if (removed == null) {
       removed = new HashMap();
     }
     List queueRemoved = (List) removed.get(queue);
     if (queueRemoved == null) {
       queueRemoved = new ArrayList();
       removed.put(queue, queueRemoved);
     }
     queueRemoved.add(o);
     o = doLoad(queue, o);
   }
   return o;
 }