[Ubermq-commits] jms/src/com/ubermq/jms/client/impl AbstractProducer.java,1.3,1.4 Connection.java,1.
Brought to you by:
jimmyp
Update of /cvsroot/ubermq/jms/src/com/ubermq/jms/client/impl In directory sc8-pr-cvs1:/tmp/cvs-serv24588/src/com/ubermq/jms/client/impl Modified Files: AbstractProducer.java Connection.java LocalMessage.java LocalQueue.java LocalTopic.java Log Message: more JMS compliance issues... Index: AbstractProducer.java =================================================================== RCS file: /cvsroot/ubermq/jms/src/com/ubermq/jms/client/impl/AbstractProducer.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** AbstractProducer.java 30 Jan 2003 14:42:14 -0000 1.3 --- AbstractProducer.java 30 Jan 2003 22:22:58 -0000 1.4 *************** *** 226,230 **** // parameters IMessageDatagram md = (IMessageDatagram)lm.getDatagram(); ! md.setTopicName(getTopicNameFromDestination(outgoing)); md.setSenderId(this.senderId); md.setSequence(getNextSequence()); --- 226,230 ---- // parameters IMessageDatagram md = (IMessageDatagram)lm.getDatagram(); ! md.setTopicName(((LocalDestination)outgoing).getInternalTopicName()); md.setSenderId(this.senderId); md.setSequence(getNextSequence()); *************** *** 295,319 **** throw new JMSIOException("output operation failed"); } - } - - /** - * Returns a topic name that can be placed in an IMessageDatagram - * implementation for the given destination. This is implementation - * specific, and allows for different naming conventions for various - * producer subclasses. - * - * @return a String that represents the topic name for the given - * abstract Destination. - * @param d a Destination - */ - private String getTopicNameFromDestination(Destination d) - throws JMSException - { - if (d instanceof Topic) - return ((Topic)d).getTopicName(); - else if (d instanceof Queue) - return LocalQueue.getTopicForQueueName(((Queue)d).getQueueName()).getTopicName(); - else - throw new JMSException("Only topic or queue destinations are supported."); } --- 295,298 ---- Index: Connection.java =================================================================== RCS file: /cvsroot/ubermq/jms/src/com/ubermq/jms/client/impl/Connection.java,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** Connection.java 30 Jan 2003 14:42:14 -0000 1.25 --- Connection.java 30 Jan 2003 22:22:58 -0000 1.26 *************** *** 77,81 **** * An Identifier for this client. */ ! String clientId; /** --- 77,81 ---- * An Identifier for this client. */ ! private String clientId; /** *************** *** 97,101 **** * Whether the connection is currently active. */ ! volatile boolean open; /** --- 97,106 ---- * Whether the connection is currently active. */ ! private volatile boolean open; ! ! /** ! * Whether the connection is started. ! */ ! private volatile boolean started; /** *************** *** 128,131 **** --- 133,137 ---- this.sessions = new ArrayList(); this.localSenders = new HashSet(); + this.clientId = null; this.theConn = theClient.connect(this, connDescriptor, clientProc); *************** *** 135,138 **** --- 141,145 ---- open = true; + started = false; } *************** *** 141,144 **** --- 148,152 ---- if (open) { open = false; + started = false; // close the underlying *************** *** 183,188 **** } ! public void setClientID(String id) {clientId = id;} ! public String getClientID() {return clientId;} void addSession(Session s) --- 191,210 ---- } ! public void setClientID(String id) ! throws JMSException ! { ! if (clientId == null && ! !started) ! { ! clientId = id; ! } ! else ! throw new javax.jms.IllegalStateException("Cannot set Client ID at this time."); ! } ! ! public String getClientID() ! { ! return clientId; ! } void addSession(Session s) *************** *** 198,222 **** public void stop() { ! // propagate the pause message to our sessions. ! Iterator iter = sessions.iterator(); ! while (iter.hasNext()) { ! Session ts = (Session)iter.next(); ! ts.pause(); ! } ! // stop the connection ! theConn.stop(); } public void start() { ! theConn.start(); ! ! Iterator iter = sessions.iterator(); ! while (iter.hasNext()) { ! Session ts = (Session)iter.next(); ! ts.resume(); } } --- 220,254 ---- public void stop() { ! if (started) { ! started = false; ! // propagate the pause message to our sessions. ! Iterator iter = sessions.iterator(); ! while (iter.hasNext()) ! { ! Session ts = (Session)iter.next(); ! ts.pause(); ! } ! ! // stop the connection ! theConn.stop(); ! } } public void start() { ! if (!started) { ! theConn.start(); ! ! Iterator iter = sessions.iterator(); ! while (iter.hasNext()) ! { ! Session ts = (Session)iter.next(); ! ts.resume(); ! } ! ! started = true; } } Index: LocalMessage.java =================================================================== RCS file: /cvsroot/ubermq/jms/src/com/ubermq/jms/client/impl/LocalMessage.java,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** LocalMessage.java 30 Jan 2003 14:42:15 -0000 1.17 --- LocalMessage.java 30 Jan 2003 22:22:59 -0000 1.18 *************** *** 135,139 **** throws JMSException { ! throw new JMSException(""); } --- 135,139 ---- throws JMSException { ! // per the JMS spec, ignore this call. } *************** *** 190,194 **** public Destination getJMSReplyTo() { ! return (Destination)d.getStandardProperty(IMessageDatagram.STDPROP_REPLYTO); } --- 190,194 ---- public Destination getJMSReplyTo() { ! return LocalDestination.getDestination((String)d.getStandardProperty(IMessageDatagram.STDPROP_REPLYTO)); } *************** *** 196,205 **** throws JMSException { ! d.setStandardProperty(IMessageDatagram.STDPROP_REPLYTO, replyTo); } public Destination getJMSDestination() { ! return new LocalTopic(d.getTopicName()); } --- 196,206 ---- throws JMSException { ! d.setStandardProperty(IMessageDatagram.STDPROP_REPLYTO, ! ((LocalDestination)replyTo).getInternalTopicName()); } public Destination getJMSDestination() { ! return LocalDestination.getDestination(d.getTopicName()); } *************** *** 208,212 **** { if(recv) ! d.setTopicName(((javax.jms.Topic)destination).getTopicName()); } --- 209,213 ---- { if(recv) ! d.setTopicName(((LocalDestination)destination).getInternalTopicName()); } *************** *** 280,285 **** if (o instanceof Boolean) return ((Boolean)o).booleanValue(); else ! return Boolean.valueOf(name).booleanValue(); } --- 281,288 ---- if (o instanceof Boolean) return ((Boolean)o).booleanValue(); + else if (o instanceof String || o == null) + return Boolean.valueOf((String)o).booleanValue(); else ! throw new MessageFormatException(""); } *************** *** 290,295 **** if (o instanceof Byte) return ((Number)o).byteValue(); else ! return Byte.valueOf(name).byteValue(); } --- 293,300 ---- if (o instanceof Byte) return ((Number)o).byteValue(); + else if (o instanceof String || o == null) + return Byte.valueOf((String)o).byteValue(); else ! throw new MessageFormatException(""); } *************** *** 301,306 **** o instanceof Short) return ((Number)o).shortValue(); else ! return Short.valueOf(name).shortValue(); } --- 306,313 ---- o instanceof Short) return ((Number)o).shortValue(); + else if (o instanceof String || o == null) + return Short.valueOf((String)o).shortValue(); else ! throw new MessageFormatException(""); } *************** *** 313,318 **** o instanceof Integer) return ((Number)o).intValue(); else ! return Integer.valueOf(name).intValue(); } --- 320,327 ---- o instanceof Integer) return ((Number)o).intValue(); + else if (o instanceof String || o == null) + return Integer.valueOf((String)o).intValue(); else ! throw new MessageFormatException(""); } *************** *** 326,331 **** o instanceof Long) return ((Number)o).longValue(); else ! return Long.valueOf(name).longValue(); } --- 335,342 ---- o instanceof Long) return ((Number)o).longValue(); + else if (o instanceof String || o == null) + return Long.valueOf((String)o).longValue(); else ! throw new MessageFormatException(""); } *************** *** 336,341 **** if (o instanceof Float) return ((Number)o).floatValue(); else ! return Float.valueOf(name).floatValue(); } --- 347,354 ---- if (o instanceof Float) return ((Number)o).floatValue(); + else if (o instanceof String || o == null) + return Float.valueOf((String)o).floatValue(); else ! throw new MessageFormatException(""); } *************** *** 347,352 **** o instanceof Double) return ((Number)o).doubleValue(); else ! return Double.valueOf(name).doubleValue(); } --- 360,367 ---- o instanceof Double) return ((Number)o).doubleValue(); + else if (o instanceof String || o == null) + return Double.valueOf((String)o).doubleValue(); else ! throw new MessageFormatException(""); } Index: LocalQueue.java =================================================================== RCS file: /cvsroot/ubermq/jms/src/com/ubermq/jms/client/impl/LocalQueue.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** LocalQueue.java 30 Jan 2003 14:42:16 -0000 1.4 --- LocalQueue.java 30 Jan 2003 22:22:59 -0000 1.5 *************** *** 10,27 **** */ public final class LocalQueue ! implements java.io.Serializable, javax.jms.TemporaryQueue { public static final long serialVersionUID = 1L; - /** - * A prefix for queue names that yields the actual UberMQ - * topic name for the queue. - */ - public static final String QUEUE_TOPIC_PREFIX = ".queue."; - private transient Session s; private String name; ! LocalQueue(Session s, String name) { this.s = s; --- 10,24 ---- */ public final class LocalQueue ! extends LocalDestination ! implements java.io.Serializable, ! javax.jms.Queue, ! javax.jms.TemporaryQueue { public static final long serialVersionUID = 1L; private transient Session s; private String name; ! public LocalQueue(Session s, String name) { this.s = s; *************** *** 29,32 **** --- 26,35 ---- } + public LocalQueue(String name) + { + this.s = null; + this.name = name; + } + /** Gets the name of this queue. * *************** *** 64,86 **** /** ! * Returns the UberMQ topic name that is used to implement ! * the named queue. ! * ! * @return a topic name ! */ ! Topic getTopic() ! { ! return LocalQueue.getTopicForQueueName(name); ! } ! ! /** ! * Returns the UberMQ topic name that is used to implement ! * the named queue. ! * ! * @return a topic name */ ! public static LocalTopic getTopicForQueueName(String name) { ! return new LocalTopic(QUEUE_TOPIC_PREFIX + name); } --- 67,75 ---- /** ! * Returns the UberMQ topic name that is used internally. */ ! public String getInternalTopicName() { ! return QUEUE_TOPIC_PREFIX + name; } Index: LocalTopic.java =================================================================== RCS file: /cvsroot/ubermq/jms/src/com/ubermq/jms/client/impl/LocalTopic.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** LocalTopic.java 12 Dec 2002 18:11:42 -0000 1.1 --- LocalTopic.java 30 Jan 2003 22:22:59 -0000 1.2 *************** *** 5,8 **** --- 5,9 ---- */ public final class LocalTopic + extends LocalDestination implements javax.jms.TemporaryTopic, java.io.Serializable *************** *** 25,28 **** --- 26,37 ---- { // nothing needs to happen to delete a temp. topic + } + + /** + * Returns the UberMQ topic name that is used internally. + */ + String getInternalTopicName() + { + return name; } |