incubator-s4-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matthieu Morel (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (S4-5) Prototype app builder
Date Fri, 29 Jun 2012 14:40:44 GMT

    [ https://issues.apache.org/jira/browse/S4-5?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13403944#comment-13403944
] 

Matthieu Morel commented on S4-5:
---------------------------------

I had a new look at the edsl framework and added, in branch S4-5-alt:
* a simple word count test ported from core
* re-enabled the CounterApp from example subproject

Things work ok but I did the following modification:
* AppBuilder (and affected PEs): changed the type of the stream field to {{Stream<Event>}}
instead of {{Stream<Event>[]}} . Indeed, I don't really see the need for using arrays
of streams. Is there a reason for that? Should we keep this modification? 




For info, here is the code for the word count example with EDSL:
{code}
pe("Classifier").type(WordClassifierPE.class).pe("Counter").type(WordCounterPE.class)
                .emit(WordCountEvent.class).withKeyFinder(WordCountKeyFinder.class).to("Classifier")
                .pe("Splitter").type(WordSplitterPE.class).emit(WordSeenEvent.class)
                .withKeyFinder(WordSeenKeyFinder.class).to("Counter").build();
        Stream<StringEvent> sentenceStream = createStream("sentences stream", new SentenceKeyFinder(),
                getPE("Splitter"));
{code}

(I'm not sure how to create the "sentences stream" as an entry point to the PE graph).

Here is the same without EDSL:
{code}
WordClassifierPE wordClassifierPrototype = createPE(WordClassifierPE.class);
        Stream<WordCountEvent> wordCountStream = createStream("words counts stream",
new WordCountKeyFinder(),
                wordClassifierPrototype);
        WordCounterPE wordCounterPrototype = createPE(WordCounterPE.class);
        wordCounterPrototype.setWordClassifierStream(wordCountStream);
        Stream<WordSeenEvent> wordSeenStream = createStream("words seen stream", new
WordSeenKeyFinder(),
                wordCounterPrototype);
        WordSplitterPE wordSplitterPrototype = createPE(WordSplitterPE.class);
        wordSplitterPrototype.setWordSeenStream(wordSeenStream);
        Stream<StringEvent> sentenceStream = createStream("sentences stream", new SentenceKeyFinder(),
                wordSplitterPrototype);
{code}




                
> Prototype app builder
> ---------------------
>
>                 Key: S4-5
>                 URL: https://issues.apache.org/jira/browse/S4-5
>             Project: Apache S4
>          Issue Type: New Feature
>    Affects Versions: 0.5
>            Reporter: Leo Neumeyer
>            Priority: Minor
>             Fix For: 0.5
>
>         Attachments: s4-app.png, s4-fluent.pdf
>
>
> Extend Guice AbstractModule to create a simple application builder layer. The idea is
to evaluate if we can use Guice to do all the wiring including PEs and Streams and Apps.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message