Commit Graph

141 Commits

Author SHA1 Message Date
Gunnar Hillert
911ddc11af INT-2840 - Fix build failure against Spring 3.0.7
For reference see: https://jira.springsource.org/browse/INT-2840
2012-11-30 00:09:51 -05:00
Gunnar Hillert
a5d7de848d INT-2674 - Add JdbcChannelMessageStore
INT-2674 - Added slow/failing JDBC Message Store Tests

INT-2674 - Code Review Changes

INT-2674 - Add support for HSQL

INT-2674 - Add documentation
* Refactor Test Cases
* Code Review Changes

INT-2674 - Code Review Changes

INT-2674 - Code Review Changes

INT-2674 - Renamed classes

INT-2674 - Code Review Changes
2012-11-21 09:22:20 -05:00
Oleg Zhurakousky
b2ffe2f510 INT-2280 fixed broken JDBC test
Fix JdbcMessageStoreChannelTests.testSendAndActivateWithRollback as well as others by changing poller interval.

Poller was polling too quickly, so even the slightest delay before assertion would result in another Message in the Service.messages thus the intermittent assertion error.

INT-2280 Polishing

Don't add retries to message list.
2012-10-11 21:02:15 -04:00
Oleg Zhurakousky
6db976ebaa INT-2756 Fixed SQL schema generation template
Regenerate schemas
2012-09-20 14:49:19 +01:00
Oleg Zhurakousky
b4af191f4f INT-2757 JdbcMessageStore fix removeMessageGroup
Fix removeMessageGroup logic to ensure it also executes
delete on the join table so there are no dangling
join rows.

Add defensive logic to the getMessageGroup method
to ensure it no longer throws an exception IF the scenario
fixed with the previous comment still re-appears
(and it can if MGS is not executed under TX).
2012-09-20 14:33:48 +01:00
Artem Bilan
31d0e42c1a INT-2718 & INT-2721: fixes for <chain> & fix bugs
* ban to use 'channel' and 'request-channel' attributes for 'outbound-channel-adapters' and 'outbound-gateways' when they are declared inside the `<chain>`
* fix usage of `<request-handler-advice-chain>` for components when they are declared inside the `<chain>`
* ban to use `<request-handler-advice-chain>` for 'outbound-channel-adapters' when they are declared inside the `<chain>` don't implement `AbstractReplyProducingMessageHandler`
* refactor `IntegrationNamespaceUtils` to use `BeanDefinition` instead of `BeanDefinitionBuilder` for 'advice-chain' parsing
* tests for new logic for 'channel' and 'request-channel' attributes within `<chain>`
* tests for new logic for `<request-handler-advice-chain>` within `<chain>`
* fix failed test on slow machine
* fix `SysLogTransformer` tests

For reference:
https://jira.springsource.org/browse/INT-2718
https://jira.springsource.org/browse/INT-2721
https://jira.springsource.org/browse/INT-2719

INT-2718 Polishing
2012-09-10 16:13:45 -04:00
Oleg Zhurakousky
94cc5a73e2 INT-2727 PseudoTX Refactoring
Remove the need for pseudo-transactional element

INT-2727 PseudoTX
Add PseudoTransactionalTransactionManager

INT-2727
addressed PR comments
cherry picked previous code for mail module to eliminate breaking change

INT-2727
initial refactoring pseudo-tx support to use common configuration

INT-2727
finalizing pseudo-tx synchronization support

INT-2727 polishing

INT-2727 polishing based on PR comments

INT-2727 addressed PR comments

INT-2727 polishing

INT-2727 Remove PseudoTransactionalMessageSource

Instead of getResource, bind the resource holder before
receive() and then add attributes to the holder.

INT-2727 polishing

INT-2727 Polishing

Remove bind of #resource; add beforeCommit() test;
add TransactionTemplate tests.
2012-09-05 16:55:34 -04:00
Gunnar Hillert
dad4eac9ac INT-2710 - Remove hard-coded schema references
For reference see: https://jira.springsource.org/browse/INT-2710
2012-08-28 17:08:43 -04:00
Artem Bilan
d4e135b13d INT-2649: DelayHandler: tx & adviceChain support
* 'delayer-type' XSD: add `<transactional>` & `<advice-chain>`
* move `PollerParser#configureAdviceChain` into `IntegrationNamespaceUtils`
* DelayerParser: parsing `<transactional>` & `<advice-chain>` via `IntegrationNamespaceUtils#configureAdviceChain`
* DelayHandler: add `adviceChain` property
* DelayHandler: introduce `ReleaseMessageHandler` to apply `adviceChain` capabilities around `DelayHandler#doReleaseMessage`
* DelayerParserTests: tests for introduced sub-elements
* DelayerHandlerRescheduleIntegrationTests: test for transaction boundaries with intentional rollback in the message-flow after message release

JIRA: https://jira.springsource.org/browse/INT-2649

Resolve conflicts; polishing.
2012-08-06 12:09:30 -04:00
Gary Russell
08cbab08c2 INT-2214, INT-343, INT-2250 MessageHandler Advice
Add general capability to advise just the handleRequestMessage
part of an AbstractReplyProducingMessageHandler.

This is to advise just the immediate operation, and not the
entire downstream flow.

Uses include:

* outbound gateway post processing
* adding retry behavior using spring-retry
* adding circuit breaker functionality

Initial commit for review.

Also need to advise simple message handlers (such as file
etc) to allow them to post-process file operations
with payload.delete(), payload.renameTo(...) etc.

INT-2250 Add Circuit Breaker Advice

INT-343 Add Retry Advice

Stateless and Stateful retry using spring-retry. Stateless
means the RetryTemplate performs the retries internally.
Stateful means the exception is thrown (e.g. to JMS container)
and the retry state is maintained by spring-retry.

INT-2215, INT-343, INT-2250 Refactoring

Factor out common abstract Advice class.

INT-2214 Catch Evaluation Expression Exceptions

If an onSuccess expression evaluation fails, add an
option so the user can decide whether such an exception is
caught, or propagated to the caller.

INT-2214 etc PR Review Polishing

INT-2214 etc Namespace Core, File, FTP

Add <request-handler-advice-chain/> to outbound endpoints.

INT-2214 etc. More Namespace Support

amqp, event, gemfire, groovy, http, ip, jdbc, jms, jmx, jpa, mail, rmi, sftp, twitter, ws, xmpp

INT-2214 etc Polishing

PR Review

INT-2214 etc Polishing

Don't catch Throwable.

Move Advice classes to handler.advice package.
2012-08-06 09:15:58 -04:00
Gary Russell
4de02fa75e INT-2685 Transaction Synchronization
Remove M3 disposition-* attributes on File/(S)FTP inbound adapters.

Add <pseudo-transactional/> and <transaction-synchronization/> elements
to <poller/>.

These elements provide the following attributes:

* on-success-expression
* on-success-result-channel
* on-failure-expression
* on-failure-result-channel
* send-timeout

<transaction-synchronization/> synchronizes these expression evaluations
with the transaction, such that they are executed immediately after
the commit/rollback.

<psuedo-transactional/> is used for a non-transactional poller.

When an <advice-chain/> is provided to the poller, <psuedo-transactional/>
and <transaction-synchronization/> are synonyms; and the behavior is
dictated by whether or not the <advice-chain/> contains a transaction
advice. It is recommended that <pseudo-transactional/> is used when the
<advice-chain/> does not have a txAdvice, and <transaction-synchronization/>
when it does, but the framework does not enforce this.

The expressions have the original (polled) message as the #root variable.
In addition, a BeanResolver is provided, allowing expressions such as
'@someBean.handleSuccess(payload)'.

MessageSources may also implement PseudoTransactionalMessageSource. This
has a number of methods allowing more flexibility in transactional and
non-transactional environents. For example, for backwards compatibility.
the mail-inbound-channel-adapter deletes its polled message after the
receive() rather than after the polled message is sent (when running in
a non-transactional poller). However, when running in a transactional
poller, the delete is done after the transaction commits (but not when
it rolls back).

In addition, MessageSources that implement this interface can optionally
provide an arbitrary object to the success/failure expressions in a
variable named '#resource'.

INT-2685 Polishing

PR Review Comments

Add tests for non-tx PseudoTransactionalMessageSource
2012-08-03 14:04:22 -04:00
Gunnar Hillert
b07abcd30c INT-2262 - Add reply-timeout to Outbound Gateways
For reference see: https://jira.springsource.org/browse/INT-2262

Add reply-timeout attribute to:

* Amqp Outbound Gateway
* File Outbound Gateway
* Ftp Outbound Gateway
* Sftp Outbound Gateway
* Ws Outbound Gateway

Update Schema Documentation for reply-timeout attribute:

* spring-integration-jpa-2.2.xsd
* spring-integration-jms-2.2.xsd
* spring-integration-jdbc-2.2.xsd
* spring-integration-ip-2.2.xsd
* spring-integration-http-2.2.xsd

Update the *What's new in Spring Integration 2.2* section in the reference manual

INT-2262 - Code Review

* Update copyright year for affected files
* Update author tags for affected files
2012-07-16 14:37:16 -04:00
Gary Russell
ff89f05854 INT-2640 Fix Failing JDBC Test on OSX
The test previously used Derby and there was some kind of timing problem
during initialization. Changed to H2 instead.
2012-06-29 09:35:33 -04:00
Gunnar Hillert
bc244eff8f INT-2289 - Make update optional for JDBC Outbound Gateway
For reference: https://jira.springsource.org/browse/INT-2289
2012-06-28 20:04:22 -04:00
Gary Russell
066eb91100 INT-1849/INT-2147 Add Disposition to File Adapter
* Add *disposition-expression* to the inbound file adapter. This allows for operations such as *payload.delete()*, *payload.renameTo()* after the file is processed.
* The result of executing the expression (if any) is sent to the disposition-result-channel.
2012-06-25 11:38:20 -04:00
Artem Bilan
0e31624083 INT-1132 Fix Failing Delyer Test
INT-1132: Eliminate delayer's tests sensitive

* There is no guarantee that a Message will be delayed after restart for exactly the remaining time; it may be delayed longer.
* Remove assert around 'receive time'
* Remove redundant LIFO test-case: now `DelayHandler` just uses simple iteration over `MessageGroup`

JIRA: https://jira.springsource.org/browse/INT-1132

Build report: https://build.springsource.org/browse/INT-B22X-JOB1-91/test/case/110952529
2012-06-21 17:31:25 -04:00
Artem Bilan
25a2efe59c INT-2607: refactor 'resolveId' with pC.isNested()
* add delegation to `BeanDefinitionReaderUtils.generateBeanName(definition, parserContext.getRegistry(), parserContext.isNested())`
in the `AbstractBeanDefinitionParser#resolveId()` implementations when it is necessary.
* remove redundant `shouldGenerateId()` & `shouldGenerateIdAsFallback()` when they don't make sense.
* additional simple polishing in the affected classes.
* remove TODO & forced 'id' attribute from JpaOutboundGatewayTests-context.xml to check that this solution works as was booked.

JIRA: https://jira.springsource.org/browse/INT-2607
2012-06-21 14:30:32 -04:00
Artem Bilan
d1d4faa151 INT-1132: Rescheduling Support for DelayHandler
- Add support for DelayHandler to reschedule persisted Messages on startup via 'implements ApplicationListener<ContextRefreshedEvent>' as late as possible
- Change DelayHandler dependency to MessageGroupStore
- Add required DelayHandler.messageGroupId property
- Make registered by SI-namespace TaskScheduler as default for DelayHandler
- Remove 'required' from delayer xml-attribute 'default-delay' as redundant
- Additional refactoring & polishing around <delayer>
- Polishing delayer's Tests
- Tests for 'rescheduling'
- Integration test for 'rescheduling' with JdbcMS

INT-1132: add 'initializingLatch' to DelayHandler

INT-1132: additional polishing

INT-1132: add LIFO JMS polling test-case

INT-1132: Changes according to PR comments

INT-1132: Changes according to PR comments 2

Polishing

Remove blocking calls from tests.
2012-06-19 10:00:03 -04:00
Matt Stine
77b8beabaa INT-2575 Eliminate unnecessary String replace on JDBC calls
Introduced a simple map-based query cache. Lazily initialized cache on
calls to getQuery().

This still requires a String replace on the first JDBC call for a
particular query, but seemed like a cleaner solution than implementing
a post-construction method that individually process each constant.

INT-2575 Eliminate unnecessary String replace on JDBC calls

Introduced Query enum to enable use of query name as cache key
rather than query value.
2012-06-18 17:31:18 -04:00
Gary Russell
9bc9867d31 INT-1849/INT-2606 Pseudo Transactional Message Src
Initial commit.

Tested with POP3 and IMAP (James) with Sample app.

Essentially moved all the flagging and deleting code
from receive() to closeContextAfterSuccess().

For non-transactional cases, this new method is
called immediately after receiving the message(s),
essentially working as before.

When run from a <transactional/> poller it is
called using TransactionSynchronization after
the transaction commits.

This behavior can be changed by setting
'symchronized="false"' on the poller, which
removes the synchronization and the update
is called immediately after the receive().

Polishing

PR Comments

Update Reference
2012-06-14 16:55:53 -04:00
Artem Bilan
5bc41bc60b INT-1029: Support for outbound-gateways in chain
XSD refactoring: remove use="required" from 'request-channel' attribute of all 'outbound-gateways'
Tests for all 'outbound-gateways' inside the <chain>
2012-06-07 13:20:56 -04:00
Gunnar Hillert
7a5b49275f INT-2271 - Add Dynamic Stored Proc Names (SpEL + Header)
* Add support for Stored Procedure/Function Names via Message Header
* Add support for Stored Procedure/Function Names via "stored-procedure-expression" parameter
* Add support for cacheable *SimpleJdbcCallOperation* instances
* Add Guava dependency for Cache Support
* Convert white-spaces to tabs (where occurring)
* Convert line-delimiters to Linux format (where occurring)

For reference see: https://jira.springsource.org/browse/INT-2271

INT-2271 - Expose Cache Stats via JMX
This includes the implementation of INT-2584 - Instantiate the StoredProcExecutor as a Spring Managed Bean for each Stored Procedure Component

INT-2271 Made DataSource final in StoredProcExecutor

INT-2271 - Code Review Changes

INT-2271 Code Review Fixes
* remove attribute *allowDynamicStoredProcedureNames*
* remove JDBC Headers

INT-2271 Polishing

Use LiteralExpression when a simple stored procedure
name is supplied.
2012-06-01 15:13:05 -04:00
Oleg Zhurakousky
22536d26bf INT-2544 Fix FIFO problem with JdbcMessageStore
Improved polling from Jdbc - INT-2200
To accomplish all that schema change was required so new schemas are commited as well

INT-2544b polished based on Artem's comments

INT-2544b more polishing based on Artem's comments

INT-2544b more polishing based on Artem's comments

INT-2544
defined doPollForMessage(..) method so it could be overriden with custom query to get a single message from the DB

INT-2544
polishing, removed unused import

INT-2544
polishing, added protected getter for JdbcOperations, polished Javadocs

INT-2544 polishing

INT-2544b polishing
added fallback on update when create MessageGroup query fails, fixed the update date

INT-2544b polishing PR comments

INT-2544b polishing white spaces

INT-2544b polsihing white spaces
2012-05-21 11:09:39 -04:00
Artem Bilan
45c429ee2b INT-2275: any outbound-channel-adapter in <chain>
Add re-init logic for nested chains
Add logic about nested element for AbstractChannelAdapterParser
Refactor of DefaultOutboundChannelAdapterParser
Test for non-last nested chain with some outbound-channel-adapter
Improve XSD for chain-type
Manual outbound-channel-adapter ability for chain
Integration tests for all outbound-channel-adapter within <chain>
Remove redundant 'return-value-required' attribute from <stored-proc-outbound-channel-adapter>
Add support 'expectReply' for FileWritingMessageHandler

INT-2275 polishing & refactor FileOutbound*Parser

HttpRequestExecutingMessageHandlerTests polishing

INT-2275: polishing JavaDoc
2012-05-14 12:41:39 -04:00
Gary Russell
95cd202be6 INT-2536 Create 2.2 Schemas
Add 2.2 versions of module schemas.

JMX is already covered by an existing pull request.

INT-2536 Schema Check

Bump version for schema check in
AbstractIntegrationNamespaceHandler.

INT-2536 Remove Schema Versions

Some test config files had 2.1 versioned schemas.
2012-05-04 10:04:01 -04:00
Gary Russell
292aa90599 INT-2404 Fix Auto-Created Channel; Event, TCP, UDP
The AbstractChannelAdapterParser creates an implicit DirectChannel
if the adapter has no 'channel' attribute.

The Event, TCP, and UDP channel adapter parsers did not bind
this channel to the adapter and AC initialization failed with
'outputChannel is required'.

Further, the event schema marked the channel as being 'required',
precluding this feature.

INT-2407 Remove Channel use="required"

Parsers automatically generate the channel when none is provided.

- JMX
- JDBC
- SFTP
- Redis
- Feed
- XMPP
- Mail
- FTP
- HTTP
2012-01-23 10:12:34 -05:00
Gary Russell
f76f63f23a NT-2400 Fix tool:expected-type Classes
* MessageChannel was moved from core to the base package.
* ChannelResolver moved from core to support.
* TcpConnectionInterceptorFactoryChain was incorrect.
2012-01-13 13:21:41 -05:00
Gunnar Hillert
bd3a93d601 INT-2371 - add package-info.java files - XML
See: https://jira.springsource.org/browse/INT-2371

INT-2370 - add package-info.java files - JDBC
Reference: https://jira.springsource.org/browse/INT-2370

Add package-info.java files - Twitter
For reference: https://jira.springsource.org/browse/INT-2383

INT-2386 - add package-info.java files - XMPP
For reference: https://jira.springsource.org/browse/INT-2386

INT-2384 - add package-info.java files - WS
Reference: https://jira.springsource.org/browse/INT-2384

INT-2382 - add package-info.java files - Test
For reference: https://jira.springsource.org/browse/INT-2382
2012-01-05 16:17:18 -05:00
Oleg Zhurakousky
c825689d60 INT-2338
added MessageHistory tests to all implementations of MessageStore
2011-12-22 21:23:49 -05:00
Mark Fisher
77abc55a1e INT-2322 2011-12-20 13:18:57 -05:00
Oleg Zhurakousky
86c574e493 INT-2311
modified implementation of MessageGroupQueue to use interruptible locks

Basically modeled it after LinkedBlockingQueue

changed to use ReadWriteLock

refactored MessageGroupQueue and added tests

changed MessageGroupQueue to use Condition

added messageGroupSize(groupId) method to MessageGroupStore and all the implementations

polishing based on Gary's comments

removed setStoreLock method in favor of additional constructors

polishing tests, decreased timeouts

made peek() thread safe

added logging
2011-12-19 19:32:23 -05:00
Mark Fisher
5805528faa removing warnings 2011-12-19 16:38:48 -05:00
Gunnar Hillert
3b7bd6e6dd Document use-payload-as-parameter-source attribute
For reference see: https://jira.springsource.org/browse/INT-2314

* Updated 2.1 JDBC XML Schema
* Updated Docbook Reference Manual
2011-12-19 15:48:53 -05:00
Oleg Zhurakousky
634e190f5c INT-2267
removed test compile warnings

INT-2267
removed test compile warnings(2)
2011-11-29 13:50:08 -05:00
Oleg Zhurakousky
d2920c3145 INT-2280
polishing Jdbc tests hoping to avoid intermittent failures
2011-11-29 09:51:03 -05:00
Mark Fisher
6c1454ae3d INT-2238 removing warnings in JavaDoc 2011-11-22 21:48:34 -05:00
Gunnar Hillert
462af6bea0 INT-2246 - Changes based on code review. 2011-11-22 15:40:22 -05:00
Gunnar Hillert
6f33252c7c INT-2246 - Add attribute "max-rows-per-poll" to Jdbc Outbound Gateway
For reference see: https://jira.springsource.org/browse/INT-2246
2011-11-22 15:40:22 -05:00
Oleg Zhurakousky
bd9d591dbf INT-2253
added support for updating MessageGroup with lastModified timestamp on every touch
2011-11-22 04:16:17 -05:00
Oleg Zhurakousky
50d8caa1c3 INT-2231
Fixed JdbcMessageStore to reuse CREATED_DATE while updating UPDATED_DATE

  Added support for configuring MessageGroup timeout based on the idle time of the MessageGroup

  Changed updatedTimestamp to lastModified

  Added an assertion to AbsractMessageGroup.expireMessageGroups to check if lastModified is 0

  Changed attribute name in MessageWrapper in Mongo Message Store
2011-11-21 15:56:04 -05:00
Mark Fisher
87006f36ed polishing 2011-11-21 13:48:27 -05:00
Gunnar Hillert
cd9d9bc656 INT-2245 Jdbc Outbound Gateways - Change "request-timeout" to "reply-timeout"
For reference see: https://jira.springsource.org/browse/INT-2245
2011-11-21 13:46:39 -05:00
Gunnar Hillert
d1c740930c INT-2175 - Add Doc for Stored Proc Components
For reference see: https://jira.springsource.org/browse/INT-2175
2011-11-21 13:43:13 -05:00
Gunnar Hillert
730c0e5174 INT-2241 - Stored Proc: Add attribute: skipUndeclaredResults
For reference see: https://jira.springsource.org/browse/INT-2241
2011-11-17 12:33:33 -05:00
Oleg Zhurakousky
c88206b33e INT-2152 polishing JdbcMessageStore 2011-10-25 12:46:40 -05:00
Oleg Zhurakousky
ddeab16394 INT-2182 interim
INT-2182 interim

INT-2182 work in progress

INT-2182 Refctored MessageGroupQueue and related classes
- created MGS.pollMessageFromGroup(groupId)
- removed MARKED messages concept
- renamed UNMARKED to just Messages
- removed keepReleasedMessages attribute
- refactored JdbcMessageStore to NOT store Messages that belong to a MessageGroup in the MessageGroup table, only relationship
- provided implementation of pollMessageFromGroup method in JdbcMessageStore
- polished tests

INT-2182 refactored MongoDB support to reflect changes to MGQ

INT-2182 added Gemfire support for polling

INT-2182 added Redis support

INT-2182 polishing
removed syncronized blocks from SMG, added availablePermits() method to UpperBound, polished JdbcMessageStore

INT-2182 polishing

INT-2182 polishing

INT-2182 polishing

INT-2182 polishing

INT-2182 polishing

INT-2182 polishing based on PR comments
2011-10-25 12:50:17 -04:00
Mark Fisher
772599cf99 improved jdbc message store test 2011-10-25 11:42:06 -05:00
Oleg Zhurakousky
d76f2dc570 fixed JdbcMessageStoreTests.testAddAndUpdateWithChange() 2011-10-24 12:41:26 -04:00
Mark Fisher
efdce112f8 versionless schemas for jdbc module 2011-10-12 09:51:11 -04:00
Gunnar Hillert
c302f96f6d Fixed some spelling errors 2011-10-12 08:59:48 -04:00