Commit Graph

61 Commits

Author SHA1 Message Date
Artem Bilan
acf2ad2229 INT-3246: MessageHandlingException Refactoring
JIRA: https://jira.springsource.org/browse/INT-3246

INT-3246: Add description to usage of MHException

Deprecate `MessageRejectedException` constructor

INT-3246: Remove `MessageHandlingException` class
2014-01-03 16:19:01 -05:00
Gary Russell
a24b9ffa22 Merge remote-tracking branch 'upstream/master' into 4.0.0-WIP
Conflicts:
	spring-integration-core/src/main/java/org/springframework/integration/gateway/MessagingGatewaySupport.java
	spring-integration-core/src/main/java/org/springframework/integration/support/channel/BeanFactoryChannelResolver.java
	spring-integration-core/src/main/java/org/springframework/integration/util/MessagingMethodInvokerHelper.java
	spring-integration-core/src/test/java/org/springframework/integration/config/AggregatorParserTests.java
	spring-integration-core/src/test/java/org/springframework/integration/config/annotation/AggregatorAnnotationTests.java
	spring-integration-core/src/test/java/org/springframework/integration/config/xml/ControlBusTests.java
	spring-integration-file/src/main/java/org/springframework/integration/file/DefaultFileNameGenerator.java
	spring-integration-file/src/main/java/org/springframework/integration/file/remote/handler/FileTransferringMessageHandler.java
	spring-integration-file/src/test/java/org/springframework/integration/file/remote/gateway/RemoteFileOutboundGatewayTests.java
	spring-integration-ftp/src/test/java/org/springframework/integration/ftp/config/FtpOutboundGatewayParserTests.java
	spring-integration-ftp/src/test/java/org/springframework/integration/ftp/inbound/FtpInboundRemoteFileSystemSynchronizerTests.java
	spring-integration-ftp/src/test/java/org/springframework/integration/ftp/outbound/FtpServerOutboundTests.java
	spring-integration-groovy/src/main/java/org/springframework/integration/groovy/GroovyScriptExecutingMessageProcessor.java
	spring-integration-http/src/test/java/org/springframework/integration/http/outbound/UriVariableExpressionTests.java
	spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/connection/HelloWorldInterceptor.java
	spring-integration-jpa/src/test/java/org/springframework/integration/jpa/outbound/JpaOutboundGatewayIntegrationTests.java
	spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/store/MongoDbMessageGroupStoreTests.java
	spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/store/MongoDbMessageStoreTests.java
	spring-integration-redis/src/test/java/org/springframework/integration/redis/config/RedisOutboundChannelAdapterParserTests.java
	spring-integration-sftp/src/test/java/org/springframework/integration/sftp/config/SftpOutboundGatewayParserTests.java
	spring-integration-sftp/src/test/java/org/springframework/integration/sftp/inbound/SftpInboundRemoteFileSystemSynchronizerTests.java
	spring-integration-sftp/src/test/java/org/springframework/integration/sftp/outbound/SftpServerOutboundTests.java

Resolved.
2013-11-25 17:59:51 -05:00
Artem Bilan
87798b055f INT-2491: Scripting: Variables Improvements
JIRA: https://jira.springsource.org/browse/INT-2491

* Add support variables for 'inline' scripts
* Add convenient attribute `variables` for script tags
* Introduce `BeanFactoryFallbackBinding` for groovy scripts.

INT-2491: Polishing

* Add check for duplication of provided variables
* Tests and Docs

Polishing
2013-11-22 11:57:26 -05:00
Gary Russell
117f31a156 Remove Remaining SI GenericMessage References 2013-11-01 17:04:35 -04:00
Gary Russell
3080b892d5 Merge remote-tracking branch 'upstream/master' into 4.0.0-WIP
Conflicts:
	spring-integration-core/src/test/java/org/springframework/integration/gateway/GatewayInterfaceTests.java
	spring-integration-core/src/test/java/org/springframework/integration/router/config/RouterWithMappingTests.java
	spring-integration-groovy/src/main/java/org/springframework/integration/groovy/GroovyScriptExecutingMessageProcessor.java
	spring-integration-http/src/test/java/org/springframework/integration/http/inbound/HttpRequestHandlingMessagingGatewayWithPathMappingTests.java
	spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/store/channel/AbstractTxTimeoutMessageStoreTests.java
	spring-integration-jmx/src/main/java/org/springframework/integration/jmx/OperationInvokingMessageHandler.java

Resolved.
2013-10-30 23:13:27 -04:00
Artem Bilan
653df623b2 INT-1362-2: Reset RequestContextHolder in Tests
JIRA: https://jira.springsource.org/browse/INT-1362
2013-10-30 08:51:39 -04:00
Artem Bilan
f0c4bdb756 INT-3166: Improve Groovy Processor Performance
Previously, there was a `synchronized` block in the `GroovyScriptExecutingMessageProcessor`
to achieve thread-safety around script variables.
In addition, the parsing and executing logic was delegated to `GroovyScriptFactory`, who, in turn,
has its own `synchronized` around script parsing.
This causes a bottleneck in a messaging architecture.

* Introduce `GroovyScriptExecutor implements ScriptExecutor`
to encapsulate Groovy parsing and executing logic
* synchronize via `ReentrantLock` only when script resource `isModified()`

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

INT-3166: Fixes and Polishing

INT-3166: add synchronized double check

INT-3166: Remove `GroovyScriptExecutor`

Polishing tests and logic around exceptions

Fix up some white space issues in Groovy*Tests
2013-10-24 16:20:24 -04:00
Gary Russell
7dcd2b5fe9 Remove SI GenericMessage
- Deprecate for now to ease XD migration.
2013-10-24 09:46:30 -04:00
Gary Russell
d7a7b416ad Merge remote-tracking branch 'upstream/master' into 4.0.0-WIP
Conflicts:
	spring-integration-core/src/main/java/org/springframework/integration/handler/ExpressionEvaluatingMessageHandler.java
	spring-integration-groovy/src/test/java/org/springframework/integration/groovy/config/GroovyServiceActivatorTests.java

Resolve.
2013-10-11 18:20:27 -04:00
Artem Bilan
a7a722a59e INT-3164: Fix Scripting Refresh
Previously, there was no logic to check, if a JSR223 script
was modified should be refreshed from the external resource.

* Fix `RefreshableResourceScriptSource` to take care of refreshing
on call `isModified()`
* Add `scriptSource.isModified()` before getting script text
* Introduce `ScriptSourceFactoryBean` to avoid I/O operations, when
there is need to refresh script resource - `refreshDelay < 0`

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

INT-3164: change the refresh mutation logic

Remove factory bean - no longer needed.
2013-10-11 09:58:28 -04:00
Andy Wilkinson
28ab8394de Build on top of Spring 4's new messaging types
This commit updates Spring Integration to depend upon Spring 4, making
use of the message types that have moved from Spring Integration into
Spring's new spring-messaging module.

The default message converter no longer supports conversion of a
message that is null, throwing an IllegalArgumentException if an
attempt is made to convert null. Furthermore, GenericMessagingTemplate
does not support sending null, again throwing an
IllegalArgumentException. Previously, MessagingTemplate had no-oped an
attempt to send null.

ConcurrentAggregatorTests and AggregatorTests both had a single test
that was specifically testing the behaviour of an aggregator that
returns null for its message. These tests have been removed.

CorrelatingMessageHandlerTests have been updated to specify some
additional behaviour for its mocks so that null messages are not
returned.

These are the only functional changes that have been made. All other
changes are simply for moving to the repackaged and/or renamed types.

In the move to being part of core Spring, a number of constants and
header accessor methods have moved from MessageHeaders to
MessageHeaderAccessor. This commit continues this pattern for
the enterprise integration headers that are specific to Spring
Integration. A new class, EiMessageHeaderAccessor, has been created.
This class provides constants and methods for working with SI-specific
headers. The main code and tests have been updated to use this new
class.
2013-10-08 16:42:22 -04:00
Artem Bilan
7517963be2 INT-3027: Headers Enrichment for <enricher>
* Add `<header>` sub-element to `<enricher>`
* Refactoring of `EnricherParser`
* Add Headers Enrichment logic to `ContentEnricher`
* Add tests
* What's new and Content Enricher's `<header>` note

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

INT-3027: Addressing PR comments

INT-3027: add NPE asserts to map properties

INT-3027: add overwrite & type to enricher header

Move `HeaderValueMessageProcessor` hierarchy to 'transformer.support' package

INT-3027: Make header's overwrite=true by default

Doc Polishing
2013-09-24 12:55:06 -04:00
Artem Bilan
4d3bc36ff0 INT-2433: Get Rid of MessageProcessors wrapping
Previously, provided `MessageProcessor` to create a `MessageHandler`
for endpoint was wrapped to `MethodInvokingMessageProcessor`,
e.g. `GroovyScriptExecutingMessageProcessor`.

Check the type of provided object in the constructor
of `MethodInvoking*` strategies and use it directly if it is `MessageProcessor`

JIRA: https://jira.springsource.org/browse/INT-2433
2013-09-18 17:01:54 -04:00
Gunnar Hillert
0271acaf4c INT-2916 - Upgrade to JUnit 4.11 in support of JDK7
For reference see: https://jira.springsource.org/browse/INT-2916

Changes:

* INT-2919 - Upgrade Spring Data Gemfire to 1.2.2.RELEASE
* Exclude Hamcrest transitive dependency from JUnit (as already explicitly declared)
* Set sourceCompatibility in build.gradle to 1.6
* Set targetCompatibility in build.gradle to 1.6
* Upgrade Hamcrest to 1.3 and fix deprications
  - Corematcher is(*class) change to is(instanceOf(*class))
  - Change org.junit.internal.matchers.TypeSafeMatcher to org.hamcrest.TypeSafeMatcher
  - Change import org.junit.matchers.JUnitMatchers.containsString to org.hamcrest.CoreMatchers.containsString
  - Change import org.junit.matchers.JUnitMatchers.both to org.hamcrest.CoreMatchers.both
  - Change import org.junit.matchers.JUnitMatchers.containsString to org.hamcrest.CoreMatchers.containsString
* Fix JUnit deprecations
  - changed junit.framework.Assert to org.junit.Assert
* Add few missing licenses headers to tests
* Marked several test classes with: @DirtiesContext(classMode=ClassMode.AFTER_EACH_TEST_METHOD)
  - SplitterIntegrationTests
  - GatewayInvokingMessageHandlerTests
  - FileToChannelIntegrationTests
  - FileInboundChannelAdapterWithRecursiveDirectoryTests
  - JdbcMessageStoreChannelTests
  - ChatMessageInboundChannelAdapterParserTests
* 3 Tests ignored (Still needs to be addressed):
  - testOperationOnPrototypeBean
  - testFailOperationWithCustomScope
  - testOperationOfControlBus
* Update SQL script (test-failure):
  - spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/outboundSchema.sql
  - add drop table statements
  - add ignore-failures="DROPS" to "jdbcOutboundChannelAdapterCommonConfig.xml"

INT-2916 - Code Review Changes

INT-2916 - Fix ignored Tests

Fix 3 previously ignored tests in *GroovyControlBusTests*:

* testOperationOnPrototypeBean
* testFailOperationWithCustomScope
* testOperationOfControlBus

INT-2916 - CI Build Testing

INT-2963 - Remove JDK7 Compilation Warnings

* Upgrade Mockito to 1.9.5
* Fix failing SubscribableJmsChannelTests

INT-2916 - Standardize Hamcrest assertions
Ensure Hamcrest assertions are standardized to: is(instanceOf(...))
2013-04-04 13:40:46 -04:00
Gary Russell
0c95a8f5bc INT-2902 Fix Groovy Test Timing Problem
A message could be released by the delayer before
the scheduler was destroyed.
2013-01-25 13:31:29 -05:00
Gary Russell
dd6af7b387 INT-2864 Enforce Ref/Expression Mutual Exclusivity
Delegating consumer endpoints (<service-activator/> etc)
may not have both 'expression' and 'ref' attributes.
Previously, 'expression' was ignored when 'ref' was present.

- Enforce mutual exclusivity in AbstractDelegatingEndpointParser.
- Add tests for illegal combinations.
- Improve error message when 'method' used with <expression/>.
- Change parser to use reader.error() instead of Assert.
- Add element description to all parser errors.
2013-01-18 11:56:00 -05: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
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
Artem Bilan
3757592f2a INT-2631: remove BD logic from GroovyControlBus
* make 'Groovy Control Bus' similar to 'Expression Control Bus'
* add tests about `abstract` & `prototype` Beans
* fix about lost `groovy.lang.Script#println()` functionality in the `GroovyControlBusFactoryBean$ManagedBeansBinding`
* polishing `GroovyControlBusDelayerManagementTest` to show abilities & fixes with this issue

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

INT-2631: polishing according to PR comments
2012-06-28 10:43:15 -04:00
Artem Bilan
e5061c070b INT-2622: add JMX support for DelayerHandler
* introduce DelayHandlerManagement
* add GroovyControlBusIntegrationTests
* test for Delayer Management via Groovy Control Bus
2012-06-21 11:33:17 -04:00
Artem Bilan
74b4638eb9 INT-2567: Improvement & refactor Groovy component
Introduce VariableResolver, BeanFilter, FilteredBeanFactoryDecorator, GroovyVariableResolverBinding, refactoring ManagedBeansScriptVariableGenerator for usage GroovyVariableResolverBinding.
GroovyVariableResolverBindingTests.
additional tests for GroovyControlBus.
add 'spring-web' dependency for tests about 'request' custom scope.
Manual: change description about 'Groovy Control Bus' scripts limitation'.

INT-2567: Improve & refacror Groovy Control Bus

Introduce separate BindingOverwriteGroovyObjectCustomizerDecorator
Internal GroovyControlBusFactoryBean$ManagedBeansBinding with delegation to provided BeanFactory
Inline ScriptVariableGenerator implementation just for Message 'headers' variable
Tests for new GroovyScriptPayloadMessageProcessor logic about binding
Integration tests for managed beans in the custom scope
Reference Manual: polishing description about Control Bus' behavior

INT-2567 polishing added @link to javadocs
2012-06-01 10:59:39 -04:00
Artem Bilan
920e2f2f50 INT-2405 fix MessageProcessor for <header-value>
1. MethodInvokingHeaderValueMessageProcessor => MessageProcessingHeaderValueMessageProcessor because now he uses MessageProcessor
2. polishing HeaderEnricherParserSupport
3. GroovyHeaderEnricherTests: add check to HeaderValueMessageProcessor for Groovy scripts.
4. build.gradle: add dependency to 'spring-integration-test' for 'spring-integration-groovy'.
2012-02-06 10:17:53 -05:00
Artem Bilan
51da77d14d INT-2399 fix processMessage for service-activator
ServiceActivatorFactoryBean#createMessageProcessingHandler: force 'processMessage' method-name parameter into constructor ServiceActivatingHandler for MessageProcessor
Test for check 'handlerMethods' in ServiceActivatingHandler's MethodInvokingMessageProcessor
Integration test for <service-activator> with invalid Groovy inline script
2012-02-06 09:59:46 -05:00
Mark Fisher
8bee66816c versionless schemas for groovy module 2011-10-10 12:36:07 -04:00
David Turanski
207f043587 INT-1576,INT-1579,INT-2025: added spring-integration-scripting and fixed HeaderEnricher issue 2011-08-03 15:16:19 +05:30
Oleg Zhurakousky
ccffab2d17 INT-1881 added support for nesting processing beans in the 'header' element of header-enricher (e.g., bean, script etc.) 2011-04-29 11:38:35 -04:00
Mark Fisher
b6f2f920c8 removed unused import 2011-02-04 20:10:10 -05:00
Oleg Zhurakousky
6a29c50f21 INT-1727, INT-1784, added customizer test to the Groovy ControlBus, updated Groovy documentation with customizer notes 2011-02-04 19:57:48 -05:00
Mark Fisher
a29bd4ff6b avoiding static var in test 2011-02-04 19:43:36 -05:00
Oleg Zhurakousky
f9f2f8cd21 INT-1727 added customizer tests 2011-02-04 19:34:05 -05:00
Oleg Zhurakousky
f5dc6019d5 INT-1727 polishing 2011-02-04 12:07:38 -05:00
Mark Fisher
4c669ec205 INT-1727 moved AbstractScriptExecutingMessageProcessor to the 'scripting' package and refactored executeScript() to accept a variable Map instead of the Message. The base class now manages the scriptVariableGenerator property. 2011-02-04 11:56:19 -05:00
Oleg Zhurakousky
ec4ff5c747 INT-1727 polished documentation, tests, configuration and schema files to reflect name changes for ScriptVariableGenerator 2011-01-31 16:23:52 -05:00
Oleg Zhurakousky
ae823fdb5d INT-1727 renamed DefaultScriptVariableSource to DefaultScriptVariableGenerator, documented the new feature in reference manual 2011-01-31 14:06:29 -05:00
Oleg Zhurakousky
da227f07a9 INT-1727 renamed ScriptedVariableSource to ScriptVariableGenerator 2011-01-31 13:43:25 -05:00
Oleg Zhurakousky
c3b99e4bcf INT-1727 polished implementation of DefaultScriptVariableSource as well as isolated the ScriptVariableSource implementation used by the Control Bus into a private inner class 2011-01-31 09:15:16 -05:00
Oleg Zhurakousky
c0ec30b3ce INT-1727 modified doResolveScriptVariables(..) method of DefaultScriptVariableSource to include a Message as an argument 2011-01-29 12:05:28 -05:00
Oleg Zhurakousky
2df24cc603 INT-1727 removed the runtime resolution of bean in DefaultScriptVariableSource if the actual instance is RuntimeBeanReference 2011-01-28 10:08:07 -05:00
Oleg Zhurakousky
bda613709f INT-1727 decoupled relationship between Groovy Contro Bus and generic Script Processor 2011-01-28 08:54:38 -05:00
Oleg Zhurakousky
e9b85bca18 INT-1727 added namespace support for script-variable-source 2011-01-27 16:46:59 -05:00
Oleg Zhurakousky
c3db043334 INT-1727 added namespace support for Groovy binding variables 2011-01-27 16:05:37 -05:00
Oleg Zhurakousky
f80df192c8 INT-1727 refactored Groovy support to use ScriptVariableSource 2011-01-27 11:19:20 -05:00
Oleg Zhurakousky
403855fea6 INT-1727 added Message as input parameter to ScriptVariableSource.resolveScriptVariables(Message) method 2011-01-26 10:20:02 -05:00
Oleg Zhurakousky
e6d58735dd INT-1727 added initial support to allow customization of Groovy bindings 2011-01-26 10:14:11 -05:00
Mark Fisher
4e8076fd2b INT-1552 doc polishing, also updated Groovy-based Control Bus to be more consistent with the SpEL version 2010-11-22 14:01:39 -05:00
Dave Syer
53dd793819 INT-1507: add control bus to core and groovy 2010-10-25 10:04:47 -07:00
Dave Syer
d7bbbaae17 INT-1507, INT-1545: Add groovy processor for payloads
- Remove unneeded config file
- Upgrade groovy
- fix potential permgen leak in groovy payload processor
- Test concurrent execution
2010-10-23 10:47:24 -07:00
Oleg Zhurakousky
9c701c4e34 INT-1381, added test for 0 value 2010-09-02 13:22:52 +00:00
David Syer
552432c7d5 Patch for groovy support from Oleg 2010-09-02 06:46:00 +00:00
David Syer
e6c96351f3 INT-1381: fix intermittent test failure 2010-09-01 07:19:49 +00:00