[
https://issues.apache.org/jira/browse/IGNITE-1790?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14989610#comment-14989610
]
Denis Magda commented on IGNITE-1790:
-------------------------------------
Raul, thanks for taking care of this!
Please take into account these minor comments:
1) This check is redundant because this situation is validated in the
corresponding setters in StreamAdapter.
{{A.ensure(getSingleTupleExtractor() == null || getMultipleTupleExtractor() ==
null,"cannot provide both single and multiple tuple extractor");}}
2) {{A.notNullOrEmpty(endpointUri, "endpoint URI must be provided");}}
According to the contract of {{IllegalArgumentException}} this exception is
thrown only when an invalid argument is passed into the function. You don't
pass {{endpointUri}} to {{start}} method that's why you shouldn't throw this
exception from this point of execution.
My suggestion is to use {{org.apache.ignite.IgniteIllegalStateException}}. See
how it's used in {{Ignite.ignite()}} method description.
3) {{A.ensure(!(getSingleTupleExtractor() == null &&
getMultipleTupleExtractor() == null), "tuple extractor missing");}}
The same note regarding {{IllegalArgumentException}} as above. In addition I
see that this situation is validate in every streamer. Doesn't it make sense to
add {{start}} method to {{StreamAdapter}} and perform there basic checks that
are the same for every streamer?
4) Let's imagine that you successfully created an endpoint and consumer by the
following calls:
{noformat}
// Instantiate the Camel endpoint.
try {
endpoint = CamelContextHelper.getMandatoryEndpoint(camelCtx,
endpointUri);
}
catch (NoSuchEndpointException e) {
U.error(log, e);
throw new IgniteException("Failed to start Camel streamer [errMsg="
+ e.getMessage() + ']');
}
// Create the Camel consumer.
try {
consumer = endpoint.createConsumer(this);
}
catch (Exception e) {
U.error(log, e);
throw new IgniteException("Failed to start Camel streamer [errMsg="
+ e.getMessage() + ']');
}
{noformat}
Then you failed to start the service by some reason
{{ServiceHelper.startServices(camelCtx, endpoint, consumer);}}.
Don't you need to release the endpoint and consumer created before?
Some comments on tests:
1) IgniteCamelStreamerTest
Is there any reason you have "@After" and "@Before" annotations there? I
haven't seen this annotations in other Ignite test suites.
2) IgniteCamelStreamerTestSuite
Please implement the test suite in the same way the other are implemented. You
can refer to {{IgniteCacheTestSuite}}.
Raul, I've fixed some variable names and other stuff according to Ignite
guidelines. The fixes are pushed onto the branch. Hope that you don't mind
regarding this.
> Implement an Apache Camel Data Streamer
> ---------------------------------------
>
> Key: IGNITE-1790
> URL: https://issues.apache.org/jira/browse/IGNITE-1790
> Project: Ignite
> Issue Type: New Feature
> Components: streaming
> Reporter: Raúl Kripalani
> Assignee: Denis Magda
> Fix For: 1.5
>
>
> An Apache Camel data streamer would make it possible for a user to use any of
> Camel's [150+ adapters/components|http://camel.apache.org/components.html] to
> consume data from the outside world and feed it into an Ignite cache.
> SOAP, REST, HTTP, WebSockets, FTP, File, XMPP, SMPP, POP3, IMAP, TCP, etc.
> This data streamer will instantiate a Camel consumer endpoint, it'll apply
> the user-specified StreamTransformer to the incoming Exchange and it'll add
> the result to the data streamer.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)