Commit Graph

7313 Commits

Author SHA1 Message Date
Gary Russell
5e4c9e63c3 Merge remote-tracking branch 'upstream/master' into 4.0.0-WIP 2013-11-05 19:34:32 -05:00
Gary Russell
f169555224 INT-3017 Redis TaskExecutor Changes
Don't wrap the TE in an EHTE if there is no BeanFactory.
2013-11-05 18:34:16 -05:00
Gary Russell
af98fbecc4 Fix Imports After Merge 2013-11-05 14:57:17 -05:00
Gary Russell
9146a374c1 Merge remote-tracking branch 'upstream/master' into 4.0.0-WIP
Conflicts:
	spring-integration-core/src/main/java/org/springframework/integration/MessageHeaders.java
	spring-integration-core/src/main/java/org/springframework/integration/context/IntegrationContextUtils.java
	spring-integration-core/src/main/java/org/springframework/integration/json/JsonToObjectTransformer.java
	spring-integration-core/src/main/java/org/springframework/integration/mapping/AbstractHeaderMapper.java
	spring-integration-core/src/main/java/org/springframework/integration/metadata/package-info.java
	spring-integration-feed/src/test/java/org/springframework/integration/feed/inbound/FeedEntryMessageSourceTests.java
	spring-integration-redis/src/main/java/org/springframework/integration/redis/inbound/RedisInboundChannelAdapter.java
	spring-integration-redis/src/main/java/org/springframework/integration/redis/outbound/RedisPublishingMessageHandler.java
	spring-integration-redis/src/test/java/org/springframework/integration/redis/config/RedisOutboundChannelAdapterParserTests.java
	spring-integration-redis/src/test/java/org/springframework/integration/redis/inbound/RedisQueueMessageDrivenEndpointTests.java
	spring-integration-redis/src/test/java/org/springframework/integration/redis/outbound/RedisQueueOutboundChannelAdapterTests.java
	spring-integration-test/src/main/java/org/springframework/integration/test/matcher/HeaderMatcher.java
	spring-integration-test/src/main/java/org/springframework/integration/test/matcher/MockitoMessageMatchers.java
	spring-integration-test/src/main/java/org/springframework/integration/test/matcher/PayloadMatcher.java
	spring-integration-twitter/src/test/java/org/springframework/integration/twitter/inbound/SearchReceivingMessageSourceTests.java
	spring-integration-twitter/src/test/java/org/springframework/integration/twitter/inbound/SearchReceivingMessageSourceWithRedisTests.java

Resolved.
2013-11-05 14:30:50 -05:00
Artem Bilan
4cf0e2e673 INT-3196: RedisQueueMDE: Add RecoveryInterval
Catch `RedisSystemException` in the `ListenerTask` and sleep current Thread
 with `recoveryInterval` if the Endpoint is `active` before the next `restart()`

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

RedisConnFailure & RedisSys Exceptions recovery

Introduce `RedisIntegrationEvent`s

* Catch all `Exception`s on `this.boundListOperations.rightPop`
* Log them and send within `RedisExceptionEvent`
* Mark some fields with `volatile`
2013-11-05 14:06:35 -05:00
Artem Bilan
3470e33069 INT-3177: Generic RedisTemplate for PublishingMH
JIRA: https://jira.springsource.org/browse/INT-3177

* Change `RedisPublishingMessageHandler.StringRedisTemplate` to `RedisTemplate<?, ?>`
* Don't provide `serializer` to the `template`
* Use `serializer` directly for values which are not `byte[]`
* Add `RedisAvailableTests#awaitContainerSubscribed` for tests to avoid race conditions
* Refactor some tests
* Add test for `byte[]` payload

INT-3177: Generic RedisInboundChannelAdapter

Port from Spring XD: allow for `RedisInboundChannelAdapter`
to receive from Redis any object, not only String

* Make `serializer` property 'resettable' to `null`
* Change `RedisInboundChannelAdapterParser` to allow to apply
empty value from `serializer` attribute
* Add parser test and test for `byte[]` messages

INT-3177: Polishing and documentation

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

* Add `topic-expression` to `<int-redis:outbound-channel-adapter>`
* Add tests and docs

INT-3177: Deprecate `RedisPublishMH.defaultTopic`

* Make `topic` and `topic-expression` attributes as mutually exclusive
* Polishing Redis Topic Parsers
* Polishing tests and docs
* Default `serializer` for Redis Topic Adapters is `StringRedisSerializer` for backward compatibility

Polishing according PR's discussion

INT-3177 Doc Polishing
2013-11-05 12:40:19 -05:00
Artem Bilan
156eeeb738 INT-3167: Polishing Twitter Documentation
JIRA: https://jira.springsource.org/browse/INT-3167

Doc Polishing
2013-11-05 10:23:07 -05:00
Gary Russell
970852741d INT-3154/INT-3137 JavaDoc Formatting
INT-3154 Use SPR Java7 stylesheet to put a box around `<pre class="code"/>`
code.

Update `<pre/>` tags to include class="code".

INT-3137 Remove NOTICE from `JdbcChannelMessageStore`.

JIRA: https://jira.springsource.org/browse/INT-3137
      https://jira.springsource.org/browse/INT-3154
2013-11-05 14:59:27 +02:00
Gary Russell
87988b5032 INT-3064 Message ID Generation
Use the SPR 4.0.0 Message ID Generation algorithm.

JIRA: https://jira.springsource.org/browse/INT-3064
2013-11-04 18:45:21 -05:00
Gary Russell
68f3990611 INT-3017 Fix Typo 2013-11-04 17:08:53 -05:00
Artem Bilan
ce1f467793 INT-3017: Redis Queue Adapters: Namespace Support
JIRA: https://jira.springsource.org/browse/INT-3017

* Add parsers tests and integration tests
* Polishing Redis XSD
* Fix `JmsMessageDrivenEndpointParser` `LifeCycle` attributes
* Catch `RedisSystemException` after `this.boundListOperations.rightPop`.
It maybe an exception about 'connection closed'.
If the `RedisQueueMessageDrivenEndpoint` is 'active' this exception is rethrown,
otherwise just logged under error category.
* Add Redis queue components docs

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

INT-3017 Doc Polishing
2013-11-04 17:05:13 -05:00
Artem Bilan
5be8ef3fd8 INT-3147: (3167,3173,1941) Improve MetadataStore
Previously, `MetadataStore` couldn't be configured for Twitter Adapters
- only a global one could be used.
The `metadataKey` was generated automatically with a 'difficult' value.

* Register all `MessageSource` for `SourcePollingChannelAdapter`
as beans with id based on adapter id and prefix '.source' (INT-3147)
* Polishing parser to get rid of explicit `MessageSource` beans. (INT-3147)
* Make Feed and Twitter adapters `id` attribute as required -
now it presents a `metadataKey` for `MetadataStore` (INT-3147)
* Add to Twitter adapters a reference attribute for `MetadataStore` (INT-3173)
* Add Twitter adapters `poll-skip-period` attribute (INT-3167)
* Add and implement `MetadataStore#remove` (INT-1941)
* Make `MetadataStore` as `@ManagedResource` (INT-1941)
* Polishing tests

JIRAs:
https://jira.springsource.org/browse/INT-3147
https://jira.springsource.org/browse/INT-3167
https://jira.springsource.org/browse/INT-3173
https://jira.springsource.org/browse/INT-1941

INT-3147: Polishing and fixes

* add domain suffix to `metadataKey`
* change contract of `MetadataStore.remove`
* remove timeout window from `AbstractTwitterMessageSource`
* polishing and fix `SearchReceivingMessageSourceWithRedisTests`

INT-3147: Rebasing and polishing

INT-3147: fix 'metadata' package tangle

INT-3147 Doc Polishing
2013-11-04 12:44:12 -05:00
Gary Russell
1fb838dd1a INT-3190 Fix Package Tangle (JsonHeaders)
https://jira.springsource.org/browse/INT-3190
2013-11-04 17:34:45 +02:00
Mauro Franceschini
cd3f13ac91 INT-3193: Add ObjectToMapTransformer flatten attr
JIRA: https://jira.springsource.org/browse/INT-3193
2013-11-04 10:52:05 +02:00
Gary Russell
1851745e89 Update Spring Framework Dependency to 4.0.0.RC1 2013-11-01 18:50:41 -04:00
Gary Russell
cd426d8b22 Fix Imports After Merge 2013-11-01 18:44:54 -04:00
Gary Russell
2bc0c442ce Merge remote-tracking branch 'upstream/master' into 4.0.0-WIP
Conflicts:
	spring-integration-core/src/main/java/org/springframework/integration/channel/registry/ChannelRegistry.java
	spring-integration-core/src/main/java/org/springframework/integration/channel/registry/LocalChannelRegistry.java
	spring-integration-core/src/main/java/org/springframework/integration/mapping/AbstractHeaderMapper.java
	spring-integration-core/src/main/java/org/springframework/integration/support/json/AbstractJacksonJsonMessageParser.java
	spring-integration-core/src/test/java/org/springframework/integration/channel/registry/LocalChannelRegistryTests.java
	spring-integration-core/src/test/java/org/springframework/integration/handler/ServiceActivatorDefaultFrameworkMethodTests.java
	spring-integration-jmx/src/test/java/org/springframework/integration/jmx/ServiceActivatorDefaultFrameworkMethodTests.java
	spring-integration-jmx/src/test/java/org/springframework/integration/jmx/config/OperationInvokingOutboundGatewayTests.java

Resolved.
2013-11-01 18:19:02 -04:00
Gary Russell
117f31a156 Remove Remaining SI GenericMessage References 2013-11-01 17:04:35 -04:00
Artem Bilan
4dd95c41ea INT-2809: Add/Extract JSON JavaType Headers
* Add `AmqpHeaders` headers
* Add `JavaType` headers mapping to `DefaultAmqpHeaderMapper`
* Add ability to Json Transformers to add/extract `JavaType` headers
* Make `JsonToObjectTransformer#targetClass` as non-required and do fallback
to extract type from `JavaType` headers
* Add `JavaType` extraction in the `JsonObjectMapper` implementors

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

INT-2809: Polishing and refactoring

* Introduce `JsonHeaders`, `AbstractJacksonJsonObjectMapper`
* Move `TestPerson` and `TestAddress` to package level
* Now `JsonToObjectTransformer` supports not only `String` payload
* Remove json headers after transformation in the `JsonToObjectTransformer`

INT-2809 Minor Polishing

INT-2809 Docs and What's New
2013-11-01 16:22:03 -04:00
Artem Bilan
c389604c2e INT-2930: Mention correct SI version in Docs
JIRA: https://jira.springsource.org/browse/INT-2930
2013-11-01 13:45:13 -04:00
Artem Bilan
213cafb2da INT-3014: Introduce Redis Queue Adapters
https://jira.springsource.org/browse/INT-3014
https://jira.springsource.org/browse/INT-3015

* Introduce `RedisQueueMessageDrivenEndpoint` and `RedisQueueOutboundChannelAdapter`
* add Tests for them
* Remove `ChannelRegistry` artifacts
2013-11-01 11:00:11 -04:00
Gary Russell
9849e2087d INT-2628 Add ObjectNamingStrategy to IMBE
Allow customization of the generated ObjectName for the
Integration components.

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

INT-2628 Polishing

- Address PR comments
- Rename `naming-strategy` to `object-naming-strategy` for consistency with `object-name-static-properties`
2013-11-01 16:47:03 +02:00
Gary Russell
01ab48d664 INT-2953 Use Buffered In/Out Streams for Files
Wrap `FileInputStream` and `FileOutputStreams` with
`BufferedInputStream`, `BufferedOutputStream` respectively.

Also use `BufferedReader`, `BufferedWriter` to wrap `FileReader`, `FileWriter`.

JIRA: https://jira.springsource.org/browse/INT-2953
2013-11-01 15:11:26 +02:00
Gary Russell
91f3674dc8 INT-3175 Add Caution About Apache HTTP Client
JIRA: https://jira.springsource.org/browse/INT-3175
2013-11-01 12:29:15 +02:00
Gary Russell
008bc8522b INT-3183 Document the IMBE 'id' Attribute
When declaring an IntegrationMBeanExporter, use an 'id' attribute
if you wish to obtain programmatic access to it (using injection
or referencing the BeanFactory.

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

Also turn off debug logging for JMX test cases.
2013-10-31 16:03:04 -04:00
Gary Russell
945eea7a36 INT-3188 Make Direct Handler Call Tests Robust
Previously, these tests examined specific stack frames to
verify the handler was directly invoked by the Dispatcher.

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

Add a utility method to scan the stack trace instead to
verify that the Dispatcher frame exists before any
MessagingMethodInvokerHelper frame.
2013-10-31 11:14:20 -04:00
Gary Russell
435064453f INT-3182 Fix JMX Operation Invoking With Primitive
Previously, methods with primitive parameters were not matched
with primitive wrapper objects.

Check, if the argument is a primitive wrapper, that the paramer type
can be the equivalent primitive.

Add test case.

INT-3182 Polishing - PR Comments

Extract PrimitiveWrapper->Primitive map to ClassUtils.

JIRA: https://jira.springsource.org/browse/INT-3182
2013-10-31 15:44:11 +02:00
Gary Russell
eaa28a9dbf INT-3186 Fix Metrics For Direct MessageHandler
When a simple MessageHandler is referenced from a
`<service-activator/>`, it is wrapped in an anonymous
AbstractReplyProducingMessageHandler to facilitate proper handling of
the `<request-handler-advice-chain/>` and so that normal
'produced no reply` messages are logged.

Previously, this caused 2 MBeans to be exposed, one for tha actual
handler; one for the wrapper.

This added more stack frames between the dispatcher and the
handler (because 2 sets of statistics were captured).

The root cause was that the MBean exporter was not aware of the
relationship between these objects.

https://jira.springsource.org/browse/INT-3186

Add code to the IntegrationMBeanExporter to suppress adding
metrics to the wrapper.

This involves detecting that it is a wrapper and not exposing
it as an MBean and, when matching handlers with endpoints,
checking that the wrapped handler is the actual handler for the endpoint.

Update test to reflect the reduced number of stack frames between
the dispatcher and handler.

Also add tests to verify the detection of multiple references to
the same ARPMH.

INT-3186: `IntegrationMBeanExporter` optimization
2013-10-31 15:38:19 +02:00
Gary Russell
7cebffb086 Fix Imports After Merge 2013-10-30 23:31:17 -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
Gary Russell
cc434db959 Test Case Fixes for Latest SPR 4 Snapshot
- Close child context before parent to publish child close event to parent
- SpelRouter FB injection
- Don't pass null Method to TransactionAttributeSource.getTransactionAttribute()
2013-10-30 22:57:51 -04:00
Artem Bilan
498e9aa704 INT-2664: (S)FTP Inbound: Preserve File Timestamp
JIRA: https://jira.springsource.org/browse/INT-2664

INT-2664: add `preserve-timestamp` attribute

Doc Polishing
2013-10-30 18:00:00 -04:00
Gary Russell
848f3a5103 INT-3185 Fix Direct Handlers When Exposed as MBean
When determining candidates for direct invocation, we need
to use the target of any existing proxy (such as JMX Metrics).

Copy ServiceActivatorDefaultFrameworkMethodTests to the JMX project
and adjust to work with JMX Proxies.

INT-3185: fix for AbstractSMHFBean#checkReuse

JIRA: https://jira.springsource.org/browse/INT-3185
2013-10-30 18:58:34 +02:00
Artem Bilan
a5d4e3ab48 INT-3181: Improve JdbcChannelMS usingIdCache doc
JIRA: https://jira.springsource.org/browse/INT-3181

INT-3181: Fix JdbcChannelMS#pollMessageFromGroup

* Add `doRemoveMessageFromGroup` and check its result.
If it is `false` then just return `null`, not polled `Message`
* Add `AbstractTxTimeoutMessageStoreTests#testInt3181ConcurrentPolling` test
and implement it for some DBs
* Make a note regarding MVCC as important in the Doc

Minor Polishing
2013-10-30 09:23:16 -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
Gary Russell
2bf8196353 INT-3178 Defer Publishing of TCP Open Event
Previously, the TcpConnectionOpenEvent was published as soon
as the socket was connected, but the TcpConnection was not yet
ready for use.

Defer publishing the event until the connection is fully
initialized and registered with the factory and thus available
for use.

Update the test cases to reflect this behavior.

Since the event is now published by the appropriate concrete
factory implementations, enhance the ConnectionToConnectionTests
to verify proper eventing with both Net and NIO implementations.

INT-3178: Add `theConnection` `ReadWriteLock`

INT-3178 Polishing

- Refactor obtainConnection() into obtainSharedConnection() and obtainNewConnection() for Net and NIO Client factories.
- obtainConnection is now common for these two factories, and overridden by the caching and failover factories.
- ReadWriteLock - double check for shared connection after lock obtained.

INT-3178: Polishing
2013-10-30 13:58:06 +02:00
Gary Russell
469910793c INT-3180 Add s-i-ftp/test to .gitIgnore
Inadvertently added left over test files.
2013-10-29 17:05:33 -04:00
Artem Bilan
d5e8e352b6 INT-1362 HTTP Inbound: Additional EvalCtx Vars.
JIRA: https://jira.springsource.org/browse/INT-1362, https://jira.springsource.org/browse/INT-2469

* Add to the `EvaluationContext` of HTTP Inbound Endpoints additional request variables
* Tests and documentation

INT-2669: Mention SpEL variables in JavaDocs

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

INT-1362 Doc Polishing
2013-10-29 16:34:07 -04:00
Artem Bilan
d06c1c269d INT-3180: Fix FtpParserInboundTests
JIRA: https://jira.springsource.org/browse/INT-3180

* Change non-existing interface in the config to existing one
* Change `@Test(expected=BeanCreationException.class)` to `try...catch` block
and check the StackTrace for appropriate, expected `Exception`
2013-10-29 15:44:01 -04:00
Gary Russell
928b6b8bc3 INT-2961 Make ARPMH.onInit() Final; Add doInit()
https://jira.springsource.org/browse/INT-2961

onInit() relied on subclasses calling super.onInit() to apply the
advice chain and add the BeanFactory to the MessagingTemplate.

At least one extension (smpp) failed to do this, disabling these features.

Make onInit() final and call doInit() for subclass initialization (no-op in ARPMH).

INT-2961 Polishing

- do not increase visibility of doInit in subclasses.
- remove final modifiers from doInit so user subclasses can participate in initialization if needed.
2013-10-29 10:20:19 +02:00
Artem Bilan
e57103466e Polishing according latest SPR-4.0.0 fixes
* Remove `@Ignore` from `MongoDbMessageStoreTests#testInt3153SequenceDetails()`
* Revert generic for `SessionFactory` field in `SftpServerOutboundTests`
2013-10-28 15:39:22 +02:00
Gary Russell
182b232fda INT-2629 Extract Gateway Argument Mapping Strategy
https://jira.springsource.org/browse/INT-2629

Strategy for mapping gateway methods to map method arguments
to a message.

Default strategy works as today, but pluggable using attribute
'mapper' on <gateway/>.

A custom mapper should implement InboundMessageMapper<MethodArgsHolder>

where the MethodArgsHolder contains the Method object and the argument
values.

When using a custom mapper, the mapper is entirely responsible for
creating the Message - therefore 'payload-expression' attributes
and <header/> elements are not allowed.

INT-2629 Polishing - Javadocs

INT-2629 Polishing

- Introduce MethodArgsMessageMapper - higher level API for custom mapper.

INT-2629: Polishing docs
2013-10-25 14:43:59 +03: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
a048170178 Temporarily Ignore Failing Mongo Test 2013-10-24 13:38:40 -04:00
Gary Russell
5d3ab9b529 Remove Generic Type From Mock Injection 2013-10-24 11:10:31 -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
b31018945d Initial Changes for SPR 4.0.0.RC1
- MessageConverter
2013-10-24 09:38:34 -04:00
Gary Russell
b1f9aed694 Fix Imports After Merge 2013-10-24 09:36:34 -04:00
Gary Russell
71f3fb1cf6 Merge remote-tracking branch 'upstream/master' into 4.0.0-WIP
Conflicts:
	spring-integration-core/src/test/java/org/springframework/integration/aggregator/AggregatorTests.java
	spring-integration-core/src/test/java/org/springframework/integration/aggregator/ConcurrentAggregatorTests.java
	spring-integration-core/src/test/java/org/springframework/integration/aggregator/CorrelatingMessageHandlerTests.java
	spring-integration-core/src/test/java/org/springframework/integration/gateway/GatewayInterfaceTests.java
	spring-integration-redis/src/test/java/org/springframework/integration/redis/channel/SubscribableRedisChannelTests.java
	spring-integration-redis/src/test/java/org/springframework/integration/redis/config/RedisInboundChannelAdapterParserTests.java
	spring-integration-redis/src/test/java/org/springframework/integration/redis/store/DelayerHandlerRescheduleIntegrationTests.java
	spring-integration-redis/src/test/java/org/springframework/integration/redis/store/RedisMessageGroupStoreTests.java
	spring-integration-redis/src/test/java/org/springframework/integration/redis/store/RedisMessageStoreTests.java

Resolved
2013-10-24 09:18:00 -04:00
Artem Bilan
9367928fd7 INT-3113: Use Lettuce Redis Client
* Ensure close connections after tests
* Remove `Thread.sleep` where it is possible

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

INT-3113: Improve `RedisAvailableRule`

* Upgrade to Spring-Data-Redis-1.1.0
* Change Redis port to default one - 6379

Polish - add smart delay to SubscribableRedisChannelTests.pubSubChannelTest
2013-10-23 17:39:15 -04:00