1. 28 6月, 2013 5 次提交
  2. 27 6月, 2013 2 次提交
  3. 26 6月, 2013 5 次提交
    • R
      Remove PubSubChannelRegistry · ee9c46ad
      Rossen Stoyanchev 提交于
      ee9c46ad
    • P
      Include specific SQL statements in batch exception · 6a3a3613
      Phillip Webb 提交于
      Refine the SQL statements contained in exceptions thrown from batch
      updates based on BatchUpdateException.getUpdateCounts().
      
      Issue: SPR-10677
      6a3a3613
    • P
      Fix SQL syntax error in jdbcTemplate update docs · 5ee6bb9b
      Phillip Webb 提交于
      Update the reference guide jdbcTemplate update example to include the
      column name.
      
      Issue: SPR-10625
      5ee6bb9b
    • P
      Include all SQL statements in batch fail exception · 2abec6fd
      Phillip Webb 提交于
      Ensure any exception from calls to batchUpdate, on databases that
      support batch operations, contains all the SQL statements. Prior to this
      commit only the last SQL statement would be returned with the exception.
      
      Issue: SPR-10677
      2abec6fd
    • R
      Introduce MessageHeader accessor types · 486b4101
      Rossen Stoyanchev 提交于
      A new type MessageHeaderAccesssor provides read/write access to
      MessageHeaders along with typed getter/setter methods along the lines
      of the existing MessageBuilder methods (internally MessageBuilder
      merely delegates to MessageHeaderAccessor). This class is extensible
      with sub-classes expected to provide typed getter/setter methods for
      specific categories of message headers.
      
      NativeMessageHeaderAccessor is one specific sub-class that further
      provides read/write access to headers from some external message
      source (e.g. STOMP headers). Native headers are stored in a separate
      MultiValueMap and kept under a specific key.
      486b4101
  4. 25 6月, 2013 4 次提交
  5. 24 6月, 2013 6 次提交
  6. 23 6月, 2013 1 次提交
  7. 22 6月, 2013 1 次提交
    • P
      SimpleKeyGenerator to replace DefaultKeyGenerator · f1a18d29
      Phillip Webb 提交于
      Introduce new SimpleKeyGenerator class to supersede DefaultKeyGenerator.
      Unlike DefaultKeyGenerator, no collisions will occur with the keys
      generated by SimpleKeyGenerator as the full parameter values are
      considered within the SimpleKey.equals(...) method.
      
      The SimpleKeyGenerator is now the default class used when no explicit
      generator is configured.
      
      Issue: SPR-10237
      f1a18d29
  8. 21 6月, 2013 9 次提交
  9. 20 6月, 2013 3 次提交
    • R
      Add @MessageExceptionHandler · 55a212d4
      Rossen Stoyanchev 提交于
      Similar to @ExceptionHandler but for message processing. Such a method
      can send messages to both the message broker channel and the client
      channel provided the client is subscribed to the target destination.
      55a212d4
    • R
      Add support for "system" STOMP session · 01c4e458
      Rossen Stoyanchev 提交于
      The "system" STOMP session is established at startup and can be used
      to send messages without a client session, e.g. to support broadcasting
      from a REST/HTTP handler method.
      01c4e458
    • R
      Add MessageHolder · 44db0f81
      Rossen Stoyanchev 提交于
      MessageHolder holds the currently processed message in a ThreadLocal,
      which allows PubSubMessageBuilder to automatically add a session id
      to messages to be sent.
      44db0f81
  10. 19 6月, 2013 4 次提交
    • R
      Refactor PubSubHeaders, StompHeaders, MessageBuilder · 5cfc59d7
      Rossen Stoyanchev 提交于
      Rename to PubSubHeaderAccessor and StompHeaderAccessor
      Move the renamed classes to support packages
      
      Remove fromPayloadAndHeaders from MessageBuilder, just use
      withPayload(..).copyHeaders(..) instead.
      5cfc59d7
    • R
      Add getLastHandler to WebSocketHandlerDecorator · 5feac077
      Rossen Stoyanchev 提交于
      5feac077
    • R
      811bb1b0
    • A
      Fix race when flushing messages · 28174744
      Andy Wilkinson 提交于
      The use of an AtomicBoolean and no lock meant that it was possible
      for a message to be queued and then never be flushed and sent to the
      broker:
      
      1. On t1, a message is received and isConnected is false. The message
         will be queued.
      2. On t2, CONNECTED is received from the broker. isConnected is set
         to true, the queue is drained and the queued messages are forwarded
      3. On t1, the message is added to the queue
      
      To fix this, checking that isConnected is false (step 1 above) and the
      queueing of a message (step 3 above) need to be performed as a unit
      so that the flushing of the queued messages can't be interleaved. This
      is achieved by synchronizing on a monitor and performing steps 1
      and 3 and synchronizing on the same monitor while performing step 2.
      
      The monitor is held while the messages are actually being forwarded
      to the broker. An alternative would be to drain the queue into
      a local variable, release the monitor, and then forward the messages.
      The main advantage of this alternative is that the monitor is held for
      less time. It also reduces the theoretical risk of deadlock by not
      holding the monitor while making an alien call. The downside of the
      alternative is that it may lead to messages being forwarded out of
      order. For this reason the alternative approach was rejected.
      28174744