User: hiram
Date: 01/01/03 15:25:07
Modified: src/java/org/spydermq/server ClientConsumer.java
JMSDestination.java ExclusiveQueue.java
JMSServer.java
Log:
BugFix: Temporary Topics were not working correctly.
Revision Changes Path
1.5 +0 -0 spyderMQ/src/java/org/spydermq/server/ClientConsumer.java
Index: ClientConsumer.java
===================================================================
RCS file:
/products/cvs/ejboss/spyderMQ/src/java/org/spydermq/server/ClientConsumer.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ClientConsumer.java 2000/12/31 23:46:33 1.4
+++ ClientConsumer.java 2001/01/03 23:25:06 1.5
@@ -27,7 +27,7 @@
*
* @author Hiram Chirino ([EMAIL PROTECTED])
*
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
*/
public class ClientConsumer implements Task {
1.4 +27 -12 spyderMQ/src/java/org/spydermq/server/JMSDestination.java
Index: JMSDestination.java
===================================================================
RCS file:
/products/cvs/ejboss/spyderMQ/src/java/org/spydermq/server/JMSDestination.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JMSDestination.java 2000/12/27 17:02:21 1.3
+++ JMSDestination.java 2001/01/03 23:25:06 1.4
@@ -26,7 +26,7 @@
* @author Norbert Lataille ([EMAIL PROTECTED])
* @author Hiram Chirino ([EMAIL PROTECTED])
*
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public class JMSDestination {
@@ -57,13 +57,11 @@
sharedQueue = new SharedQueue(server);
- // If this is not a temp destination, then we should persist data
- if( temporaryDestination == null ) {
- if( isTopic ) {
- // Not Implemented yet
- // TODO: init durable topic subscriber exclusive
queues here
- } else {
- exclusiveQueues.put(DEFAULT_QUEUE_ID, new
ExclusiveQueue(server, DEFAULT_QUEUE_ID));
+ if( !isTopic ) {
+ exclusiveQueues.put(DEFAULT_QUEUE_ID, new
ExclusiveQueue(server));
+
+ // If this is a non-temp queue, then we should persist data
+ if( temporaryDestination == null ) {
server.persistenceManager.initQueue(dest,
DEFAULT_QUEUE_ID);
}
}
@@ -74,6 +72,13 @@
{
Log.log(""+this+"->addMessage(mes="+mes+",txId="+txId+")");
+
+ if( mes.getJMSDeliveryMode() == DeliveryMode.PERSISTENT &&
+ temporaryDestination!=null ) {
+ throw new JMSException("Cannot write a persistent message to a
temporary destination!");
+ }
+
+
//Number the message so that we can preserve order of delivery.
mes.messageId = messageIdCounter++;
@@ -86,16 +91,26 @@
if( exclusiveQueues.size() == 0 )
return;
- Iterator iter = exclusiveQueues.values().iterator();
+ Iterator iter = exclusiveQueues.keySet().iterator();
while( iter.hasNext() ) {
- ExclusiveQueue eq =
(ExclusiveQueue)iter.next();
+
+ String queueId = (String)iter.next();
+ ExclusiveQueue eq =
(ExclusiveQueue)exclusiveQueues.get(queueId);
+
+ if( mes.getJMSDeliveryMode() ==
DeliveryMode.PERSISTENT )
+ server.persistenceManager.add(queueId,
mes, txId);
+
eq.addMessage(mes, txId);
+
}
}
} else {
ExclusiveQueue eq = (ExclusiveQueue)exclusiveQueues.get(
DEFAULT_QUEUE_ID );
+ if( mes.getJMSDeliveryMode() == DeliveryMode.PERSISTENT )
+ server.persistenceManager.add(DEFAULT_QUEUE_ID, mes,
txId);
+
eq.addMessage(mes, txId);
}
@@ -122,7 +137,7 @@
}
public SpyMessage[] browse(String selector) throws JMSException {
- Log.log(""+this+"->browse(selector="+selector+")");
+ Log.log(""+this+"->browse(selector="+selector+")");
ExclusiveQueue eq = getExclusiveQueue( DEFAULT_QUEUE_ID );
return eq.browse( selector );
}
@@ -190,7 +205,7 @@
String queueId =
durableSubscriptionToQueueId(clientId,subscriptionName);
synchronized (exclusiveQueues) {
- exclusiveQueues.put(queueId, new ExclusiveQueue(server,
queueId));
+ exclusiveQueues.put(queueId, new ExclusiveQueue(server));
}
server.persistenceManager.initQueue(destination, queueId);
1.4 +8 -22 spyderMQ/src/java/org/spydermq/server/ExclusiveQueue.java
Index: ExclusiveQueue.java
===================================================================
RCS file:
/products/cvs/ejboss/spyderMQ/src/java/org/spydermq/server/ExclusiveQueue.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ExclusiveQueue.java 2000/12/26 19:54:32 1.3
+++ ExclusiveQueue.java 2001/01/03 23:25:06 1.4
@@ -24,30 +24,10 @@
* @author Hiram Chirino ([EMAIL PROTECTED])
* @author Norbert Lataille ([EMAIL PROTECTED])
*
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public class ExclusiveQueue extends BasicQueue {
- //The queueId needed to identify this queue with the persistence manager.
- String queueId;
-
- public void addMessage(SpyMessage mes, Long txId) throws JMSException
- {
-
- // Persist the message if it was persistent
- if( mes.getJMSDeliveryMode() == DeliveryMode.PERSISTENT )
- server.persistenceManager.add(queueId, mes, txId);
-
- super.addMessage(mes, txId);
-
- }
-
- // Constructor ---------------------------------------------------
- public ExclusiveQueue(JMSServer server, String queueId) throws JMSException
- {
- super(server);
- this.queueId = queueId;
- }
// Iterate over the consumers asking them to take messages until they stop
// consuming.
@@ -88,6 +68,12 @@
}
public String toString() {
- return "ExclusiveQueue:"+queueId;
+ return "ExclusiveQueue";
+ }
+
+ // Constructor ---------------------------------------------------
+ public ExclusiveQueue(JMSServer server) throws JMSException
+ {
+ super(server);
}
}
1.10 +0 -0 spyderMQ/src/java/org/spydermq/server/JMSServer.java
Index: JMSServer.java
===================================================================
RCS file: /products/cvs/ejboss/spyderMQ/src/java/org/spydermq/server/JMSServer.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- JMSServer.java 2000/12/31 23:46:33 1.9
+++ JMSServer.java 2001/01/03 23:25:06 1.10
@@ -27,7 +27,7 @@
* @author Norbert Lataille ([EMAIL PROTECTED])
* @author Hiram Chirino ([EMAIL PROTECTED])
*
- * @version $Revision: 1.9 $
+ * @version $Revision: 1.10 $
*/
public class JMSServer
implements Runnable, JMSServerMBean