SimpleFileSink uses StringUtils.hasText to check for null and empty strings for the fileName and directory when creating DSL string.
JobPluginTests - Remove explicit datasource url

- Since this test uses hsqlDataSource which randomly gets configured
by `RandomConfigurationSupport` explicit datasource url is not needed.
XD-1757 Resolve runtime module option values

- Fix ZooKeeperModuleMetdataRepository's findOne(String metadataPath)
   - Check if the module option value has property placeholder syntax and retrieve
the placeholder value from module metadata from ZK metadata data
For example, if the `log` module's name option has the value ${xd.stream.name} then
look for `xd.stream.name` in module metadata to resolve the module option `name`
XD-1748 Spring Integration -> 4.0.1 + Spring IO

JIRA: https://jira.spring.io/browse/XD-1748

Spring Integration to 4.0.1 - performance improvement in
the aggregator for large groups (e.g. hdfs-dataset). Update
the sink to enable the improvement.

Also move other deps to Spring IO versions.

Hold back spring-data-redis, because 1.3.0 is not
compatible with boot 1.0.x.
XD-1758 Resets the amqUrl to amq.url for brokerUrl
XD-1756 Upgrading to SHDP 2.0 RC4, modifying configs to match new properties
WebUI: enable/disable schedule action

- Instead of show/hide the schedule button, use
`enable/disable` the button based on the validity
of the job trigger stream name and fixed delay number
XD-1310 JobExecution already running error msg

- Fix error message to use JobInstance (similar to what the container would throw)
- Update BatchJobExecutionsControllerIntegrationTests
XD-1338 RabbitMessageBus Paritioning Support

Producers use `partitionKeyExpression` and
`partitionExpression` (optional) applied to the
key. The modulo operation is then applied, with
the module count as the divisor.

If no `partitionExpression` is provided, the bus's
`PartitionStrategy` is invoked; the default strategy
returns `key.hashCode() % count`.

The resulting value is added to the message headers so
it can be used in the routing key expression.

Consumers use their 'partition' property to
determine which queue to listen to.

The deployment supervisor needs to add this
property for each module instance deployed,
such that there is at least one consumer for
each partition.

XD-1338 Producer Partitioning Straw Man

Polishing

Add moduleCount property; declare partition queues.

Pass partition properties (specifically, count) to consumer/producer.

Add Consumer Support

2nd commit message:
Polishing - Support Java Partitioning; PR Comments

If the module deployment properties contains
a class name (for the extractor or partitioner)
it is dynamically added as a bean to the context.

3rd commit message:
Fix Typo in ParameterName

s/partioner/partitioner/

4th commit message:
Polishing - Rename to PartitionSelector
XD-1763 Update to Spring Batch 3.0 RELEASE
XD-1755 changed gemfire source to use client cache
XD-1750 Exception handling at module info cmd

Since the option value gets converted at Shell Converter `QualifiedModuleNameConverter`, throw ShellException in case of invalid syntax or module type.

- Validate the info option syntax
  - Check for ":" and expect at least module type is specified
- Validate the module type
  - throw IllegalArgumentException for invalid module type

Fix `NullPointerException` at ModuleController if module definition doesn't exist for the given module name

- Throw `NoSuchModuleException` if the module definition doesn't exist
- Add test

Address review comments
XD-1750 polishing on merge
XD-1655,XD-1654,XD-1217 rewrite twittersearch module

Add Twitter(Search/Stream)OptionsMetadata
Fixed ModuleOption message
XD-1507 Submit job action only for deployed jobs

* Add an ability to filter the undeployed jobs from the list of batch jobs from the `batch` job repository
  - Use ZK job instance repository to get the list of deployed jobs and set the `deployed` status on the returned list of batch jobs. This will allow:
    - The batch job definitions that were undeployed will get the deployed status to `false`
    - The batch job definitions that were destroyed but still have executions and state in batch job repository will get the deployed status to `false`
    - The batch job definitions that are currently deployed will get the deployed status to `true`
  - Update Batch JobInfo and the corresponding REST domain resource JobInfoResource with `deployed` status
* Fix the web UI to disable the `launch` and `schedule` buttons for the batch jobs whose deployed status set to `false`
* Handle JobExecution restart action
  - Show appropriate error message if the job corresponding to the job execution restart action is not deployed.
XD-1770 Fix NPE at ContainerRegistrar

- When deploying stream module, add a null check
 after loading stream from `deploymentLoader`
XD-1416 Activate tap only when 1 or more consumers

When a module that begins with a tap channel (e.g. tap:stream:foo > log) is deployed,
a corresponding ZooKeeper node will be created under /xd/taps if not already present.

The AbstractMessageBusBinderPlugin has a TapListener that reacts to the addition of
such a node by "activating" the tap. Activation is simply the addition of the WireTap
interceptor on the output channel of the module being tapped along with the binding of
a pub/sub producer to that WireTap's channel. That logic remains the same, but has
simply been made lazy, triggered on-demand only when a tap has at least one consumer.

When the last consuming module for a given tap is undeployed, the ZooKeeper node for that
tap is deleted. The TapListener then reacts by removing the associated WireTap interceptor.
XD-1416 Changes on merge

- Fix logger format
- Handle NoNodeException when unregister tap
- When unbinding tap channel, call unbindProducers only if there is a tapped channel
XD-1766 Fixing failing tcptofile test

 - Added --outputType=text/plain option to tcp source as
   that is now required.
XD-1650 Update HDFS sink to accept a partition strategy

- Upgrade to SHDP 2.0.0.RC4
- Related work for SHDP-334
- New hdfs sink options; partitionPath, fileUuid and fileOpenAttempts
- Changes to XD YARN application.yml files due to changes in SHDP RC4 boot config model
- HdfsStoreMessageHandler is now abstract and new implementations for normal and partition writer.
- Namespace parsers now building writer and adapter via factories
-  volatile StoreWriterFactoryBean variables
- Use StandardEvaluationContext instead of EvaluationContext
- Change constructors to use StandardEvaluationContext directly.
- Casting from EvaluationContext to StandardEvaluationContext now happens earlier in a factory which gets it from IntegrationEvaluationContextAware.
- We now fail in MessageExpressionMethods if evaluation context is null instead of creating it manually.
- Remove ctors without an EvaluationContext in MessageExpressionMethods and MessagePartitionStrategy