STREAMS-440: custom checkstyle.xml, address compliance Squashed commit of the following:
commit bf329d31fd71a3e1fc21a76073876204ca806f88 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Wed Nov 23 09:57:31 2016 -0600 STREAMS-440: retrieve checkstyle xml from streams-master site commit 45e0edbcc7cfe755b520e04d2eab2fce3f28f0fb Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 19:57:17 2016 -0600 STREAMS-440: streams-verbs reduce wc -l target/checkstyle_result.xml from 400 to 36 commit fb911c9653108289f00b253751dce4693e77f2d9 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 19:24:43 2016 -0600 STREAMS-440: streams-util reduce wc -l target/checkstyle_result.xml from 1520 to 61 commit 887762372f97d60e2a4c1ba6ec4c55da07b81ffc Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 18:39:11 2016 -0600 STREAMS-440: streams-schema-activitystreams2 reduce wc -l target/checkstyle_result.xml from 78 to 6 commit f8dd9a935f063305994a75fb162af98008c92a32 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 18:36:44 2016 -0600 STREAMS-440: streams-schema-activitystreams reduce wc -l target/checkstyle_result.xml from 35 to 5 commit ff50402e9e049b973f8db2eb947a892ada59fa73 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 18:34:00 2016 -0600 STREAMS-440: streams-runtime-storm commit bdcea2d43d04e595e15905ae604916f3b984bbf9 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 18:33:18 2016 -0600 STREAMS-440: streams-runtime-pig reduce wc -l target/checkstyle_result.xml from 452 to 75 commit 010a2b8407594b156e2f94c472ebd8fe6b3e3f1f Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 18:30:32 2016 -0600 STREAMS-440: streams-runtime-local reduce wc -l target/checkstyle_result.xml from 3997 to 908 commit 262657144cc57c1893f93b4340a8f791cd1a56c4 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 18:23:07 2016 -0600 STREAMS-440: streams-runtime-dropwizard reduce wc -l target/checkstyle_result.xml from 311 to 19 commit 86890fc0f82106093010f1971175ed54179a0c58 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 18:13:35 2016 -0600 STREAMS-440: streams-pojo-extensions reduce wc -l target/checkstyle_result.xml from 230 to 16 commit 5ff2a253b31ed774d7f9e09e7449ab7bbc19d5f6 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 18:00:37 2016 -0600 STREAMS-440: streams-pojo reduce wc -l target/checkstyle_result.xml from 822 to 70 commit 10d0b8d25c469865a995448cf3433b382cf59ad3 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 17:23:36 2016 -0600 STREAMS-440: streams-plugin-scala reduce wc -l target/checkstyle_result.xml from 517 to 22 commit c505110874ab097acbee5638690caed4fb353668 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 17:08:35 2016 -0600 STREAMS-440: streams-plugin-pojo reduce wc -l target/checkstyle_result.xml to 19 commit f2757328f2d0db9b196ac9eb7baaecebcd9db918 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 16:58:06 2016 -0600 STREAMS-440: streams-plugin-pig reduce wc -l target/checkstyle_result.xml from 422 to 20 commit 54232cd7a272f72a72f5f1ea27ffb429d0d16e8c Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 15:30:08 2016 -0600 STREAMS-440: streams-plugin-hive reduce wc -l target/checkstyle_result.xml from 442 to 20 commit 89e6dbf402bd61a7628d4d760bab126b2a75cd30 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 15:14:53 2016 -0600 STREAMS-440: streams-plugin-hbase reduce wc -l target/checkstyle_result.xml from 346 to 18 commit 6226f79ca23fe6ee99a8ceb9866fbc2219241c5e Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 14:57:15 2016 -0600 STREAMS-440: streams-plugin-elasticsearch reduce wc -l target/checkstyle_result.xml from 522 to 23 commit 4dc32f145c3d88bcb879cc95e2d53a51badde02a Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 14:44:11 2016 -0600 STREAMS-440: streams-plugin-cassandra reduce wc -l target/checkstyle_result.xml from 512 to 20 commit bebccb51b7bc90767dd768cc05453f596b032ad8 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 14:21:18 2016 -0600 STREAMS-440: streams-monitoring reduce wc -l target/checkstyle_result.xml to 38 commit 9556e9840de1cfb2862fe2ba8e270cb23f268068 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 10:32:21 2016 -0600 STREAMS-440: streams-core reduce wc -l target/checkstyle_result.xml from 317 to 33 commit f92579033eefe1f12fdb71cb231b5df82ab79d0b Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 10:12:49 2016 -0600 STREAMS-440: streams-provider-youtube reduce wc -l target/checkstyle_result.xml from 1442 to 162 commit 29e32f7f24d0e4479e162de74bf76da55c9d6dc0 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 09:38:48 2016 -0600 STREAMS-440: streams-provider-twitter reduce wc -l target/checkstyle_result.xml from 2715 to 85 commit 66bba5ced09f982d8e8c37d0f27dc5a3702e7197 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 09:37:55 2016 -0600 STREAMS-440: streams-provider-sysomos reduce wc -l target/checkstyle_result.xml from 1087 to 36 commit 56f5ce34a96eb0743d81e6894984ee90d8d204e3 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Tue Nov 22 09:37:08 2016 -0600 STREAMS-440: streams-provider-rss reduce wc -l target/checkstyle_result.xml from 1261 to 34 commit ea4ab54ce118da5e46462b1e0867b18fb6440088 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Mon Nov 21 18:27:40 2016 -0600 STREAMS-440: streams-provider-moreover reduce wc -l target/checkstyle_result.xml from 695 to 32 commit 91573f2cccc8a44ef9efd1e3856055727b5eecb4 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sun Nov 20 17:03:13 2016 -0600 STREAMS-440: streams-provider-instagram reduce wc -l target/checkstyle-result.xml from 411 to 51 commit e05113a13994eb68b56ea8a87f0e09a7f6279c65 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sun Nov 20 14:05:03 2016 -0600 STREAMS-440: google-gplus reduce wc -l target/checkstyle-result.xml to 199 commit fa6704eb9887283bdeb3b0f36544db32ba920a08 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sun Nov 20 14:04:15 2016 -0600 STREAMS-440: google-gmail reduce wc -l target/checkstyle-result.xml to 61 commit 7b779df2b9d08de3d0ba6c92ec023d2fdd78dab0 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:56:05 2016 +0100 STREAMS-440: streams-provider-facebook reduce wc -l target/checkstyle-result.xml from 1842 to 780 commit 8d861005797b13093ce4b39eb94dcbdad0124c07 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:43:13 2016 +0100 STREAMS-440: streams-processor-regex reduce wc -l target/checkstyle-result.xml from 222 to 36 commit 29ee86a7db4444a47adb2dfba5e9bc6ffaa4d0c1 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:40:19 2016 +0100 STREAMS-440: streams-processor-peoplepattern reduce wc -l target/checkstyle-result.xml from 67 to 9 commit 5e96ff4e686a4e206d31976b626d1d35cd88e251 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:39:08 2016 +0100 STREAMS-440: streams-processor-json reduce wc -l target/checkstyle-result.xml from 242 to 31 commit 5adb1495ea54ccd69e24ffbe5cbc191ac60d75a3 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:38:30 2016 +0100 STREAMS-440: streams-processor-jackson reduce wc -l target/checkstyle-result.xml from 127 to 17 commit 43a9a7dcb660488b07a19090afedfffd5f529416 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:37:39 2016 +0100 STREAMS-440: streams-persist-mongo reduce wc -l target/checkstyle-result.xml to 37 commit 50e1390047edfa4daaa2089325cf408bf3d3872a Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:37:07 2016 +0100 STREAMS-440: streams-persist-kafka reduces wc -l target/checkstyle-result.xml from 233 to 31 commit b4e59d2f68742679f3ccbb65dcda5de2feb03db7 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:36:26 2016 +0100 STREAMS-440: streams-persist-hdfs decrease wc -l target/checkstyle-result.xml from 508 to 58 commit 7e2b49f32ff11d0b6b5f06b1e22385a8c4fedf22 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:34:41 2016 +0100 STREAMS-440: streams-persist-hbase reduce wc -l target/checkstyle-result.xml from 204 to 20 commit 676be795634a5ef712362c35df915468d6732d8d Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:33:51 2016 +0100 STREAMS-440: streams-persist-graph decrease wc -l checkstyle-result.xml from 664 to 65 commit 9afe2db595736f8f4497a36870f2dd757e946835 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:31:00 2016 +0100 STREAMS-440: streams-persist-filebuffer commit 953f4cbb609b9c6399691989b84690cb79afc43a Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:30:28 2016 +0100 STREAMS-440: streams-persist-elasticsearch decrease wc -l checkstyle-result.xml from 1572 to 131 commit fa0d73e7569e02742f0be0bdcd4871d7c0f30931 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:28:55 2016 +0100 STREAMS-440: streams-persist-console decrease wc -l checkstyle-result.xml from 114 to 12 commit f8210dddbd3de79065e1ed494a69df21a2e0ff13 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:28:04 2016 +0100 STREAMS-440: streams-persist-s3 decrease wc -l checkstyle-result.xml from 580 to 61 commit db47e801b2901d7b1720cf6dc45646bcf5373dae Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:26:49 2016 +0100 STREAMS-440: streams-persist-kinesis decrease wc -l checkstyle-result.xml from 222 to 64 commit b3b75d4e7f84b7753309652d59fa46f134977c8b Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:25:12 2016 +0100 STREAMS-440: streams-config reduce wc -l target/checkstyle-result.xml from 85 to 60 commit cfa4f706f9d184aaf5e26b359b35068e2b57fc0f Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:23:16 2016 +0100 STREAMS-440: streams-http decrease wc -l checkstyle-result.xml from 742 to 65 commit fe649be82ab3d81cae61e0451858d6372d3a8780 Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:22:25 2016 +0100 STREAMS-440: streams-filters decrease wc -l checkstyle-result.xml from 84 to 13 commit 2048f43dcff52621e16a1969efce92ee1bb7545f Author: Steve Blackmon @steveblackmon <[email protected]> Date: Sat Nov 19 18:14:06 2016 +0100 STREAMS-440: streams-converters decrease wc -l checkstyle-result.xml from 928 to 122 Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/5dffd5c3 Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/5dffd5c3 Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/5dffd5c3 Branch: refs/heads/master Commit: 5dffd5c32d0d150727a39104d428b21b52c911d4 Parents: a726a67 Author: Steve Blackmon @steveblackmon <[email protected]> Authored: Fri Nov 25 14:24:04 2016 -0600 Committer: Steve Blackmon @steveblackmon <[email protected]> Committed: Fri Nov 25 14:24:04 2016 -0600 ---------------------------------------------------------------------- pom.xml | 66 ++ .../converter/ActivityConverterProcessor.java | 90 +- .../converter/ActivityConverterUtil.java | 311 ++++--- .../ActivityObjectConverterProcessor.java | 87 +- .../converter/ActivityObjectConverterUtil.java | 325 +++---- .../converter/BaseDocumentClassifier.java | 85 +- .../BaseObjectNodeActivityConverter.java | 103 ++- .../BaseObjectNodeActivityObjectConverter.java | 62 +- .../converter/BaseStringActivityConverter.java | 105 ++- .../BaseStringActivityObjectConverter.java | 57 +- .../streams/converter/FieldConstants.java | 12 +- .../converter/HoconConverterProcessor.java | 80 +- .../streams/converter/HoconConverterUtil.java | 177 ++-- .../streams/converter/LineReadWriteUtil.java | 352 ++++---- .../converter/TypeConverterProcessor.java | 86 +- .../streams/converter/TypeConverterUtil.java | 79 +- .../filters/VerbDefinitionDropFilter.java | 82 +- .../filters/VerbDefinitionKeepFilter.java | 85 +- .../persist/SimpleHTTPPostPersistWriter.java | 316 +++---- .../http/processor/SimpleHTTPGetProcessor.java | 381 ++++---- .../http/processor/SimpleHTTPPostProcessor.java | 358 ++++---- .../http/provider/SimpleHttpProvider.java | 464 +++++----- .../java/SimpleHTTPPostPersistWriterTest.java | 150 ++-- .../streams/config/ComponentConfigurator.java | 70 +- .../streams/config/StreamsConfigurator.java | 79 +- .../config/test/ComponentConfiguratorTest.java | 2 +- .../config/test/StreamsConfiguratorTest.java | 2 +- .../amazon/kinesis/KinesisPersistReader.java | 198 +++-- .../kinesis/KinesisPersistReaderTask.java | 116 +-- .../amazon/kinesis/KinesisPersistWriter.java | 134 +-- .../streams/s3/S3ObjectInputStreamWrapper.java | 230 ++--- .../streams/s3/S3OutputStreamWrapper.java | 195 ++-- .../org/apache/streams/s3/S3PersistReader.java | 304 +++---- .../apache/streams/s3/S3PersistReaderTask.java | 97 +- .../org/apache/streams/s3/S3PersistWriter.java | 422 ++++----- .../streams/console/ConsolePersistReader.java | 112 ++- .../streams/console/ConsolePersistWriter.java | 71 +- .../console/ConsolePersistWriterTask.java | 45 +- .../elasticsearch/ElasticsearchClient.java | 27 +- .../ElasticsearchClientManager.java | 260 +++--- .../ElasticsearchMetadataUtil.java | 205 +++-- .../ElasticsearchPersistDeleter.java | 118 +-- .../ElasticsearchPersistReader.java | 329 +++---- .../ElasticsearchPersistUpdater.java | 158 ++-- .../ElasticsearchPersistWriter.java | 888 ++++++++++--------- .../elasticsearch/ElasticsearchQuery.java | 380 ++++---- .../DatumFromMetadataAsDocumentProcessor.java | 141 +-- .../processor/DatumFromMetadataProcessor.java | 106 +-- .../processor/DocumentToMetadataProcessor.java | 84 +- .../MetadataFromDocumentProcessor.java | 143 +-- .../processor/PercolateTagProcessor.java | 527 +++++------ .../processor/PercolateTagProcessorTest.java | 43 +- .../test/DatumFromMetadataProcessorIT.java | 79 +- .../elasticsearch/test/ElasticsearchITs.java | 6 +- .../test/ElasticsearchParentChildUpdaterIT.java | 6 +- .../test/ElasticsearchParentChildWriterIT.java | 6 +- .../test/ElasticsearchPersistUpdaterIT.java | 248 +++--- .../test/ElasticsearchPersistWriterIT.java | 113 +-- .../test/TestMetadataFromDocumentProcessor.java | 138 ++- .../filebuffer/FileBufferPersistReader.java | 210 ++--- .../filebuffer/FileBufferPersistWriter.java | 114 +-- .../streams/graph/GraphHttpPersistWriter.java | 335 +++---- .../apache/streams/graph/GraphVertexReader.java | 112 +-- .../apache/streams/graph/HttpGraphHelper.java | 5 +- .../apache/streams/graph/QueryGraphHelper.java | 15 +- .../streams/graph/neo4j/BinaryGraphHelper.java | 109 --- .../streams/graph/neo4j/CypherGraphHelper.java | 210 ----- .../graph/neo4j/CypherQueryGraphHelper.java | 302 ++++--- .../graph/neo4j/Neo4jHttpGraphHelper.java | 59 +- .../graph/test/TestCypherQueryGraphHelper.java | 117 +-- .../graph/test/TestNeo4jHttpVertexReader.java | 56 +- .../streams/hbase/HbasePersistWriter.java | 338 +++---- .../streams/hbase/HbasePersistWriterTask.java | 49 +- .../org/apache/streams/hdfs/HdfsConstants.java | 10 +- .../streams/hdfs/WebHdfsPersistReader.java | 448 +++++----- .../streams/hdfs/WebHdfsPersistReaderTask.java | 138 +-- .../streams/hdfs/WebHdfsPersistWriter.java | 481 +++++----- .../streams/hdfs/WebHdfsPersistWriterTask.java | 47 +- .../hdfs/test/HdfsPersistConfigTest.java | 2 +- .../streams/hdfs/test/TestHdfsPersist.java | 2 +- .../streams/kafka/KafkaPersistReader.java | 202 +++-- .../streams/kafka/KafkaPersistReaderTask.java | 58 +- .../streams/kafka/KafkaPersistWriter.java | 160 ++-- .../streams/kafka/KafkaPersistWriterTask.java | 49 +- .../streams/kafka/StreamsPartitioner.java | 41 - .../streams/mongo/MongoPersistReader.java | 358 ++++---- .../streams/mongo/MongoPersistWriter.java | 354 ++++---- .../streams/mongo/test/MongoPersistIT.java | 94 +- .../CleanAdditionalPropertiesProcessor.java | 82 +- .../org/apache/streams/jackson/JsonUtil.java | 167 ++++ .../streams/jackson/TypeConverterProcessor.java | 175 ++-- .../test/TypeConverterProcessorTest.java | 112 +-- .../apache/streams/json/JsonPathExtractor.java | 189 ++-- .../org/apache/streams/json/JsonPathFilter.java | 222 ++--- .../json/test/JsonPathExtractorTest.java | 108 +-- .../peoplepattern/AccountTypeProcessor.java | 70 +- .../peoplepattern/DemographicsProcessor.java | 70 +- .../regex/AbstractRegexExtensionExtractor.java | 166 ++-- .../streams/regex/RegexHashtagExtractor.java | 35 +- .../streams/regex/RegexMentionsExtractor.java | 40 +- .../apache/streams/regex/RegexUrlExtractor.java | 72 +- .../org/apache/streams/regex/RegexUtils.java | 115 +-- .../regex/RegexHashtagExtractorTest.java | 1 - .../regex/RegexMentionExtractorTest.java | 1 - .../streams/regex/RegexUrlExtractorTest.java | 1 - .../apache/streams/regex/RegexUtilsTest.java | 2 - .../api/FacebookPageActivitySerializer.java | 52 +- .../api/FacebookPostActivitySerializer.java | 54 +- .../processor/FacebookTypeConverter.java | 305 ++++--- .../provider/FacebookDataCollector.java | 203 +++-- .../provider/FacebookEventClassifier.java | 56 +- .../provider/FacebookFriendFeedProvider.java | 435 ++++----- .../provider/FacebookFriendUpdatesProvider.java | 453 +++++----- .../facebook/provider/FacebookProvider.java | 208 ++--- .../FacebookUserInformationProvider.java | 471 +++++----- .../provider/FacebookUserstreamProvider.java | 484 +++++----- .../page/FacebookPageDataCollector.java | 12 +- .../provider/page/FacebookPageProvider.java | 7 +- .../pagefeed/FacebookPageFeedDataCollector.java | 178 ++-- .../pagefeed/FacebookPageFeedProvider.java | 137 +-- .../serializer/FacebookActivityUtil.java | 295 +++--- .../FacebookStreamsPostSerializer.java | 81 +- .../test/FacebookEventClassifierTest.java | 57 +- .../streams/facebook/test/SimplePageTest.java | 84 +- .../apache/streams/facebook/test/TestPage.java | 240 ++--- .../test/data/FacebookActivityActorSerDeIT.java | 48 +- .../test/data/FacebookActivitySerDeIT.java | 54 +- .../facebook/test/data/FacebookPageSerDeIT.java | 56 +- .../facebook/test/data/FacebookPostSerDeIT.java | 80 +- .../test/providers/TestFacebookProvider.java | 98 +- .../providers/page/FacebookPageProviderIT.java | 58 +- .../pagefeed/FacebookPageFeedProviderIT.java | 53 +- .../gmail/provider/GMailImapProviderTask.java | 41 +- .../GMailMessageActivitySerializer.java | 270 +++--- .../google/gmail/provider/GMailProvider.java | 210 ++--- .../gmail/provider/GMailRssProviderTask.java | 55 -- .../gmail/test/GMailMessageSerDeTest.java | 47 +- .../processor/GooglePlusCommentProcessor.java | 113 +-- .../processor/GooglePlusTypeConverter.java | 188 ++-- .../gplus/provider/AbstractGPlusProvider.java | 366 ++++---- .../gplus/provider/GPlusActivitySerializer.java | 60 +- .../gplus/provider/GPlusDataCollector.java | 73 +- .../gplus/provider/GPlusEventProcessor.java | 93 -- .../provider/GPlusUserActivityCollector.java | 177 ++-- .../provider/GPlusUserActivityProvider.java | 143 +-- .../gplus/provider/GPlusUserDataCollector.java | 109 +-- .../gplus/provider/GPlusUserDataProvider.java | 151 ++-- .../util/GPlusActivityDeserializer.java | 244 ++--- .../util/GPlusCommentDeserializer.java | 125 +-- .../serializer/util/GPlusEventClassifier.java | 58 +- .../util/GPlusPersonDeserializer.java | 142 +-- .../serializer/util/GooglePlusActivityUtil.java | 469 +++++----- .../google/gplus/GooglePlusCommentSerDeIT.java | 137 +-- .../google/gplus/GooglePlusPersonSerDeIT.java | 117 +-- .../processor/GooglePlusActivitySerDeIT.java | 142 +-- .../processor/GooglePlusTypeConverterTest.java | 150 ++-- .../provider/TestAbstractGPlusProvider.java | 107 +-- .../TestGPlusUserActivityCollector.java | 435 ++++----- .../provider/TestGPlusUserDataCollector.java | 190 ++-- .../util/GPlusEventClassifierTest.java | 69 +- .../providers/GPlusUserActivityProviderIT.java | 52 +- .../test/providers/GPlusUserDataProviderIT.java | 54 +- .../processor/InstagramTypeConverter.java | 95 +- .../provider/InstagramAbstractProvider.java | 350 ++++---- .../provider/InstagramDataCollector.java | 198 ++--- .../instagram/provider/InstagramOauthToken.java | 28 +- .../InstagramRecentMediaCollector.java | 131 +-- .../InstagramRecentMediaProvider.java | 163 ++-- .../userinfo/InstagramUserInfoCollector.java | 96 +- .../userinfo/InstagramUserInfoProvider.java | 169 ++-- .../InstagramMediaFeedDataConverter.java | 66 +- .../InstagramUserInfoDataConverter.java | 87 +- .../serializer/util/InstagramActivityUtil.java | 557 ++++++------ .../data/InstagramMediaFeedDataConverterIT.java | 96 +- .../data/InstagramUserInfoDataConverterIT.java | 103 ++- .../InstagramRecentMediaProviderIT.java | 57 +- .../providers/InstagramUserInfoProviderIT.java | 53 +- .../apache/streams/moreover/MoreoverClient.java | 135 +-- .../MoreoverJsonActivitySerializer.java | 104 +-- .../streams/moreover/MoreoverProvider.java | 266 +++--- .../streams/moreover/MoreoverProviderTask.java | 112 +-- .../apache/streams/moreover/MoreoverResult.java | 283 +++--- .../moreover/MoreoverResultSetWrapper.java | 32 - .../apache/streams/moreover/MoreoverUtils.java | 264 +++--- .../moreover/MoreoverXmlActivitySerializer.java | 118 +-- .../streams/moreover/MoreoverTestUtil.java | 32 +- .../test/MoreoverJsonActivitySerializerIT.java | 65 +- .../test/MoreoverXmlActivitySerializerIT.java | 49 +- .../test/provider/MoreoverProviderIT.java | 41 +- .../streams/rss/processor/RssTypeConverter.java | 69 +- .../rss/provider/RssEventClassifier.java | 32 - .../streams/rss/provider/RssEventProcessor.java | 146 +-- .../streams/rss/provider/RssStreamProvider.java | 331 ++++--- .../rss/provider/RssStreamProviderTask.java | 368 ++++---- .../provider/perpetual/RssFeedScheduler.java | 144 +-- .../serializer/SyndEntryActivitySerializer.java | 353 ++++---- .../rss/serializer/SyndEntrySerializer.java | 482 +++++----- .../rss/provider/RssStreamProviderTaskIT.java | 205 ++--- .../rss/provider/RssStreamProviderTest.java | 143 +-- .../perpetual/RssFeedSchedulerTest.java | 101 +-- .../streams/rss/test/RssStreamProviderIT.java | 116 ++- .../streams/rss/test/RssTypeConverterTest.java | 13 +- .../rss/test/SyndEntryActivitySerializerIT.java | 143 +-- .../streams/sysomos/SysomosException.java | 56 +- .../SysomosBeatActivityConverter.java | 197 ++-- .../streams/sysomos/data/HeartbeatInfo.java | 182 ++-- .../sysomos/data/SysomosTagDefinition.java | 114 +-- .../sysomos/processor/SysomosTypeConverter.java | 51 +- .../provider/AbstractRequestBuilder.java | 41 +- .../sysomos/provider/ContentRequestBuilder.java | 187 ++-- .../sysomos/provider/RequestBuilder.java | 119 +-- .../streams/sysomos/provider/SysomosClient.java | 27 +- .../provider/SysomosHeartbeatStream.java | 383 ++++---- .../sysomos/provider/SysomosProvider.java | 605 +++++++------ .../streams/sysomos/util/SysomosUtils.java | 83 +- .../com/sysomos/test/SysomosJsonSerDeIT.java | 47 +- .../com/sysomos/test/SysomosXmlSerDeIT.java | 96 +- .../test/provider/SysomosProviderIT.java | 54 +- .../twitter/converter/StreamsTwitterMapper.java | 86 +- .../converter/TwitterDateTimeFormat.java | 13 +- .../converter/TwitterDocumentClassifier.java | 81 +- .../TwitterFollowActivityConverter.java | 104 +-- .../TwitterJsonDeleteActivityConverter.java | 82 +- .../TwitterJsonRetweetActivityConverter.java | 101 ++- .../TwitterJsonTweetActivityConverter.java | 81 +- .../TwitterJsonUserActivityConverter.java | 82 +- .../TwitterJsonUserActivityObjectConverter.java | 49 +- ...terJsonUserstreameventActivityConverter.java | 179 ++-- .../converter/util/TwitterActivityUtil.java | 603 +++++++------ .../FetchAndReplaceTwitterProcessor.java | 242 ++--- .../processor/TwitterEventProcessor.java | 83 -- .../processor/TwitterProfileProcessor.java | 140 --- .../twitter/processor/TwitterTypeConverter.java | 5 +- .../processor/TwitterUrlApiProcessor.java | 80 +- .../twitter/provider/TwitterErrorHandler.java | 197 ++-- .../provider/TwitterEventClassifier.java | 74 -- .../provider/TwitterFollowingProvider.java | 284 +++--- .../provider/TwitterFollowingProviderTask.java | 341 +++---- .../twitter/provider/TwitterProviderUtil.java | 34 +- .../twitter/provider/TwitterStreamHelper.java | 108 +++ .../provider/TwitterStreamProcessor.java | 99 --- .../twitter/provider/TwitterStreamProvider.java | 510 +++++------ .../provider/TwitterTimelineProvider.java | 522 +++++------ .../provider/TwitterTimelineProviderTask.java | 135 +-- .../TwitterUserInformationProvider.java | 621 +++++++------ .../test/data/TwitterObjectMapperIT.java | 130 +-- .../providers/TwitterFollowingProviderIT.java | 53 +- .../test/providers/TwitterStreamProviderIT.java | 53 +- .../providers/TwitterTimelineProviderIT.java | 53 +- .../TwitterUserInformationProviderIT.java | 53 +- .../utils/TwitterActivityConvertersTest.java | 161 ++-- .../TwitterActivityObjectsConvertersTest.java | 52 +- .../utils/TwitterDocumentClassifierTest.java | 86 +- .../youtube/processor/YoutubeTypeConverter.java | 168 ++-- .../provider/YoutubeChannelDataCollector.java | 123 +-- .../provider/YoutubeChannelProvider.java | 156 ++-- .../youtube/provider/YoutubeDataCollector.java | 71 +- .../com/youtube/provider/YoutubeProvider.java | 405 ++++----- .../provider/YoutubeUserActivityCollector.java | 335 +++---- .../provider/YoutubeUserActivityProvider.java | 155 ++-- .../youtube/serializer/YoutubeActivityUtil.java | 300 ++++--- .../serializer/YoutubeChannelDeserializer.java | 185 ++-- .../serializer/YoutubeEventClassifier.java | 54 +- .../serializer/YoutubeVideoDeserializer.java | 152 ++-- .../processor/YoutubeTypeConverterTest.java | 121 +-- .../YoutubeChannelDataCollectorTest.java | 105 +-- .../youtube/provider/YoutubeProviderTest.java | 206 ++--- .../YoutubeUserActivityCollectorTest.java | 495 ++++++----- .../serializer/YoutubeEventClassifierTest.java | 45 +- .../serializer/YoutubeVideoSerDeTest.java | 125 +-- .../providers/YoutubeChannelProviderIT.java | 54 +- .../YoutubeUserActivityProviderIT.java | 54 +- .../org/apache/streams/core/DatumStatus.java | 9 +- .../streams/core/DatumStatusCountable.java | 4 +- .../apache/streams/core/DatumStatusCounter.java | 163 ++-- .../org/apache/streams/core/StreamBuilder.java | 153 ++-- .../org/apache/streams/core/StreamHandler.java | 40 - .../org/apache/streams/core/StreamState.java | 28 - .../org/apache/streams/core/StreamsDatum.java | 262 +++--- .../org/apache/streams/core/StreamsFilter.java | 36 - .../apache/streams/core/StreamsOperation.java | 34 +- .../streams/core/StreamsPersistReader.java | 10 +- .../streams/core/StreamsPersistWriter.java | 15 +- .../apache/streams/core/StreamsProcessor.java | 16 +- .../apache/streams/core/StreamsProvider.java | 65 +- .../apache/streams/core/StreamsResultSet.java | 51 +- .../apache/streams/core/util/DatumUtils.java | 49 +- .../jackson/DatumStatusCounterDeserializer.java | 73 +- .../jackson/MemoryUsageDeserializer.java | 77 +- .../jackson/StreamsTaskCounterDeserializer.java | 100 ++- .../jackson/ThroughputQueueDeserializer.java | 95 +- .../monitoring/persist/MessagePersister.java | 17 +- .../persist/impl/BroadcastMessagePersister.java | 99 ++- .../impl/LogstashUdpMessagePersister.java | 119 +-- .../persist/impl/SLF4JMessagePersister.java | 43 - .../persist/impl/Slf4jMessagePersister.java | 49 + .../tasks/BroadcastMonitorThread.java | 293 +++--- .../jackson/MemoryUsageDeserializerTest.java | 71 +- .../impl/BroadcastMessagePersisterTest.java | 45 +- .../impl/LogstashUdpMessagePersisterTest.java | 63 +- .../tasks/BroadcastMonitorThreadTest.java | 78 +- .../StreamsCassandraGenerationConfig.java | 101 ++- .../StreamsCassandraResourceGenerator.java | 602 +++++++------ .../StreamsCassandraResourceGeneratorMojo.java | 74 +- ...treamsCassandraResourceGeneratorCLITest.java | 46 +- ...StreamsCassandraResourceGeneratorMojoIT.java | 70 +- .../StreamsCassandraResourceGeneratorTest.java | 86 +- .../StreamsElasticsearchGenerationConfig.java | 101 ++- .../StreamsElasticsearchResourceGenerator.java | 614 +++++++------ ...reamsElasticsearchResourceGeneratorMojo.java | 78 +- ...msElasticsearchResourceGeneratorCLITest.java | 36 +- ...amsElasticsearchResourceGeneratorMojoIT.java | 42 +- ...reamsElasticsearchResourceGeneratorTest.java | 150 ++-- .../hbase/StreamsHbaseGenerationConfig.java | 134 +-- .../hbase/StreamsHbaseResourceGenerator.java | 274 +++--- .../StreamsHbaseResourceGeneratorMojo.java | 84 +- .../StreamsHbaseResourceGeneratorCLITest.java | 37 +- .../StreamsHbaseResourceGeneratorMojoIT.java | 57 +- .../test/StreamsHbaseResourceGeneratorTest.java | 125 +-- .../hive/StreamsHiveGenerationConfig.java | 100 +-- .../hive/StreamsHiveResourceGenerator.java | 501 ++++++----- .../hive/StreamsHiveResourceGeneratorMojo.java | 66 +- .../StreamsHiveResourceGeneratorCLITest.java | 37 +- .../StreamsHiveResourceGeneratorMojoIT.java | 57 +- .../test/StreamsHiveResourceGeneratorTest.java | 130 ++- .../plugins/pig/StreamsPigGenerationConfig.java | 124 +-- .../pig/StreamsPigResourceGenerator.java | 491 +++++----- .../pig/StreamsPigResourceGeneratorMojo.java | 66 +- .../src/site/markdown/index.md | 2 +- .../StreamsPigResourceGeneratorCLITest.java | 35 +- .../test/StreamsPigResourceGeneratorMojoIT.java | 57 +- .../test/StreamsPigResourceGeneratorTest.java | 160 ++-- .../plugins/StreamsPojoGenerationConfig.java | 161 ++-- .../plugins/StreamsPojoSourceGenerator.java | 108 ++- .../plugins/StreamsPojoSourceGeneratorMojo.java | 103 +-- .../test/StreamsPojoSourceGeneratorCLITest.java | 37 +- .../test/StreamsPojoSourceGeneratorMojoIT.java | 57 +- .../test/StreamsPojoSourceGeneratorTest.java | 89 +- .../plugins/StreamsScalaGenerationConfig.java | 51 +- .../plugins/StreamsScalaSourceGenerator.java | 609 +++++++------ .../StreamsScalaSourceGeneratorMojo.java | 83 +- .../StreamsScalaSourceGeneratorCLITest.java | 39 +- .../test/StreamsScalaSourceGeneratorMojoIT.java | 51 +- .../test/StreamsScalaSourceGeneratorTest.java | 110 +-- .../apache/streams/data/util/PropertyUtil.java | 159 ++-- .../streams/pojo/extensions/ExtensionUtil.java | 259 +++--- .../pojo/extensions/test/ExtensionUtilTest.java | 35 +- .../apache/streams/data/ActivityConverter.java | 80 +- .../streams/data/ActivityObjectConverter.java | 60 +- .../apache/streams/data/ActivitySerializer.java | 57 +- .../apache/streams/data/DocumentClassifier.java | 16 +- .../apache/streams/data/util/ActivityUtil.java | 211 +++-- .../org/apache/streams/data/util/JsonUtil.java | 168 ---- .../apache/streams/data/util/RFC3339Utils.java | 325 +++---- .../exceptions/ActivityConversionException.java | 26 +- .../ActivityDeserializerException.java | 45 - .../exceptions/ActivitySerializerException.java | 33 +- .../jackson/StreamsDateTimeDeserializer.java | 56 +- .../streams/jackson/StreamsDateTimeFormat.java | 5 +- .../jackson/StreamsDateTimeSerializer.java | 19 +- .../streams/jackson/StreamsJacksonMapper.java | 198 +++-- .../streams/jackson/StreamsJacksonModule.java | 58 +- .../jackson/StreamsPeriodDeserializer.java | 18 +- .../jackson/StreamsPeriodSerializer.java | 22 +- .../streams/pojo/test/ActivitySerDeTest.java | 107 +-- .../pojo/test/CustomDateTimeFormatTest.java | 65 +- .../streams/pojo/test/DateTimeSerDeTest.java | 75 +- .../streams/pojo/test/RFC3339UtilsTest.java | 372 ++++---- .../dropwizard/GenericWebhookResource.java | 302 ++++--- .../dropwizard/StreamDropwizardBuilder.java | 45 +- .../streams/dropwizard/StreamsApplication.java | 200 ++--- .../dropwizard/StreamsDropwizardModule.java | 32 +- .../test/GenericWebhookResourceTest.java | 96 +- .../dropwizard/test/StreamsApplicationIT.java | 22 +- .../local/builders/InvalidStreamException.java | 24 +- .../local/builders/LocalStreamBuilder.java | 867 +++++++++--------- .../streams/local/builders/StreamComponent.java | 479 +++++----- .../local/counters/DatumStatusCounter.java | 85 +- .../counters/DatumStatusCounterMXBean.java | 30 +- .../local/counters/StreamsTaskCounter.java | 256 +++--- .../counters/StreamsTaskCounterMXBean.java | 74 +- ...amOnUnhandleThrowableThreadPoolExecutor.java | 57 +- .../streams/local/queues/ThroughputQueue.java | 828 ++++++++--------- .../local/queues/ThroughputQueueMXBean.java | 66 +- .../streams/local/tasks/BaseStreamsTask.java | 318 +++---- .../tasks/LocalStreamProcessMonitorThread.java | 108 +-- .../tasks/StatusCounterMonitorRunnable.java | 4 +- .../local/tasks/StatusCounterMonitorThread.java | 81 +- .../streams/local/tasks/StreamsMergeTask.java | 88 +- .../local/tasks/StreamsPersistWriterTask.java | 269 +++--- .../local/tasks/StreamsProcessorTask.java | 270 +++--- .../local/tasks/StreamsProviderTask.java | 389 ++++---- .../apache/streams/local/tasks/StreamsTask.java | 82 +- .../local/builders/LocalStreamBuilderTest.java | 615 ++++++------- .../local/builders/ToyLocalBuilderExample.java | 22 +- .../local/counters/DatumStatusCounterTest.java | 170 ++-- .../local/counters/StreamsTaskCounterTest.java | 234 ++--- ...nhandledThrowableThreadPoolExecutorTest.java | 165 ++-- .../queues/ThroughputQueueMultiThreadTest.java | 487 +++++----- .../queues/ThroughputQueueSingleThreadTest.java | 407 ++++----- .../streams/local/tasks/BasicTasksTest.java | 499 +++++------ .../local/tasks/StreamsProviderTaskTest.java | 226 ++--- .../test/processors/DoNothingProcessor.java | 45 +- .../PassthroughDatumCounterProcessor.java | 127 +-- .../local/test/processors/SlowProcessor.java | 41 +- .../test/providers/EmptyResultSetProvider.java | 67 +- .../test/providers/NumericMessageProvider.java | 138 ++- .../local/test/writer/DatumCounterWriter.java | 139 +-- .../local/test/writer/DoNothingWriter.java | 31 +- .../local/test/writer/SystemOutWriter.java | 33 +- .../component/ExpectedDatumsPersistWriter.java | 71 +- .../test/component/FileReaderProvider.java | 117 +-- .../test/component/StreamsDatumConverter.java | 2 +- .../component/StringToDocumentConverter.java | 8 +- .../tests/TestComponentsLocalStream.java | 31 +- .../tests/TestExpectedDatumsPersitWriter.java | 48 +- .../component/tests/TestFileReaderProvider.java | 44 +- .../streams/pig/StreamsComponentFactory.java | 57 +- .../apache/streams/pig/StreamsPigBuilder.java | 88 -- .../streams/pig/StreamsProcessDatumExec.java | 226 ++--- .../streams/pig/StreamsProcessDocumentExec.java | 100 +-- .../org/apache/streams/pig/StreamsStorage.java | 30 - .../streams/pig/test/AppendStringProcessor.java | 53 +- .../streams/pig/test/CopyThriceProcessor.java | 51 +- .../streams/pig/test/DoNothingProcessor.java | 49 +- .../streams/pig/test/PigConverterTest.java | 35 +- .../streams/pig/test/PigProcessDatumTest.java | 84 +- .../pig/test/PigProcessDocumentTest.java | 113 +-- streams-runtimes/streams-runtime-storm/pom.xml | 124 --- .../test/SchemaValidationTest.java | 65 +- .../activitystreams/test/ExamplesSerDeIT.java | 189 ++-- .../org/apache/streams/util/ComponentUtils.java | 178 ++-- .../java/org/apache/streams/util/DateUtil.java | 192 ---- .../java/org/apache/streams/util/GuidUtils.java | 28 +- .../apache/streams/util/SerializationUtil.java | 97 +- .../backoff/AbstractBackOffStrategy.java | 101 ++- .../api/requests/backoff/BackOffException.java | 84 +- .../api/requests/backoff/BackOffStrategy.java | 24 +- .../impl/ConstantTimeBackOffStrategy.java | 40 +- .../impl/ExponentialBackOffStrategy.java | 41 +- .../backoff/impl/LinearTimeBackOffStrategy.java | 21 +- .../util/oauth/tokens/AbstractOauthToken.java | 23 +- .../tokens/tokenmanager/SimpleTokenManager.java | 56 +- .../tokenmanager/impl/BasicTokenManager.java | 94 ++ .../tokenmanager/impl/BasicTokenManger.java | 86 -- .../apache/streams/util/schema/FieldType.java | 13 +- .../apache/streams/util/schema/FieldUtil.java | 49 +- .../apache/streams/util/schema/FileUtil.java | 120 ++- .../streams/util/schema/GenerationConfig.java | 134 +-- .../org/apache/streams/util/schema/Schema.java | 89 +- .../apache/streams/util/schema/SchemaStore.java | 30 +- .../streams/util/schema/SchemaStoreImpl.java | 594 +++++++------ .../apache/streams/util/schema/SchemaUtil.java | 54 +- .../org/apache/streams/util/schema/URIUtil.java | 47 - .../org/apache/streams/util/schema/UriUtil.java | 56 ++ .../requests/backoff/BackOffStrategyTest.java | 93 +- .../ConstantTimeBackOffStrategyTest.java | 30 +- .../backoff/ExponentialBackOffStrategyTest.java | 21 +- .../backoff/LinearTimeBackOffStartegyTest.java | 40 - .../backoff/LinearTimeBackOffStrategyTest.java | 41 + .../streams/util/files/StreamsScannerUtil.java | 16 +- .../tokenmanager/TestBasicTokenManager.java | 293 +++--- .../util/schema/test/SchemaOrderingTest.java | 252 +++--- .../util/schema/test/SchemaStoreTest.java | 95 +- .../verbs/ObjectCombinationGenericOrdering.java | 95 +- .../ObjectCombinationSpecificOrdering.java | 109 ++- .../streams/verbs/VerbDefinitionMatchUtil.java | 46 +- .../streams/verbs/VerbDefinitionResolver.java | 168 ++-- .../verbs/VerbDefinitionTemplateUtil.java | 73 +- .../ObjectCombinationGenericOrderingTest.java | 18 +- .../ObjectCombinationSpecificOrderingTest.java | 31 +- .../verbs/VerbDefinitionResolverTest.java | 151 ++-- .../verbs/VerbDefinitionTemplateTest.java | 97 +- .../streams/verbs/VerbDefinitionTest.java | 73 +- 474 files changed, 34219 insertions(+), 33006 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 5e7ca2f..2af57be 100644 --- a/pom.xml +++ b/pom.xml @@ -183,6 +183,13 @@ <build> <plugins> <plugin> + <artifactId>maven-checkstyle-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.scalastyle</groupId> + <artifactId>scalastyle-maven-plugin</artifactId> + </plugin> + <plugin> <artifactId>maven-compiler-plugin</artifactId> </plugin> <plugin> @@ -212,6 +219,60 @@ </filesets> </configuration> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + <version>${checkstyle.plugin.version}</version> + <dependencies> + <dependency> + <groupId>com.puppycrawl.tools</groupId> + <artifactId>checkstyle</artifactId> + <version>7.2</version> + </dependency> + </dependencies> + <executions> + <execution> + <id>validate</id> + <phase>validate</phase> + <configuration> + <configLocation>http://streams.incubator.apache.org/site/${project.version}/streams-master/streams-java-checkstyle.xml</configLocation> + <encoding>UTF-8</encoding> + <consoleOutput>true</consoleOutput> + <includeTestSourceDirectory>true</includeTestSourceDirectory> + <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory> + <failsOnError>false</failsOnError> + </configuration> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.scalastyle</groupId> + <artifactId>scalastyle-maven-plugin</artifactId> + <version>${scalastyle.plugin.version}</version> + <executions> + <execution> + <id>validate</id> + <phase>validate</phase> + <configuration> + <verbose>false</verbose> + <failOnViolation>false</failOnViolation> + <includeTestSourceDirectory>true</includeTestSourceDirectory> + <failOnWarning>false</failOnWarning> + <sourceDirectory>${project.basedir}/src/main/scala</sourceDirectory> + <testSourceDirectory>${project.basedir}/src/test/scala</testSourceDirectory> + <!--<configLocation>https://raw.githubusercontent.com/databricks/sbt-databricks/master/scalastyle-config.xml</configLocation>--> + <outputFile>${project.build.directory}/scalastyle-output.xml</outputFile> + <outputEncoding>UTF-8</outputEncoding> + </configuration> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + </plugin> </plugins> </pluginManagement> </build> @@ -244,6 +305,11 @@ <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> + <dependency> + <groupId>org.apache.streams</groupId> + <artifactId>streams-master</artifactId> + <version>${project.version}</version> + </dependency> </dependencies> <reporting> http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityConverterProcessor.java ---------------------------------------------------------------------- diff --git a/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityConverterProcessor.java b/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityConverterProcessor.java index 0e3e92d..79b5d56 100644 --- a/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityConverterProcessor.java +++ b/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityConverterProcessor.java @@ -19,11 +19,13 @@ under the License. package org.apache.streams.converter; -import com.google.common.collect.Lists; import org.apache.streams.core.StreamsDatum; import org.apache.streams.core.StreamsProcessor; import org.apache.streams.core.util.DatumUtils; import org.apache.streams.pojo.json.Activity; + +import com.google.common.collect.Lists; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,72 +35,74 @@ import java.util.List; * ActivityConverterProcessor is a utility processor for converting any datum document * to an Activity. * + * <p/> * By default it will handle string json and objectnode representation of existing Activities, * translating them into the POJO representation(s) preferred by each registered/detected * ActivityConverter. * + * <p/> * To use this capability without a dedicated stream processor, just use ActivityConverterUtil. */ public class ActivityConverterProcessor implements StreamsProcessor { - public static final String STREAMS_ID = "ActivityConverterProcessor"; + public static final String STREAMS_ID = "ActivityConverterProcessor"; - private final static Logger LOGGER = LoggerFactory.getLogger(ActivityConverterProcessor.class); + private static final Logger LOGGER = LoggerFactory.getLogger(ActivityConverterProcessor.class); - private ActivityConverterUtil converterUtil; + private ActivityConverterUtil converterUtil; - private ActivityConverterProcessorConfiguration configuration; + private ActivityConverterProcessorConfiguration configuration; - public ActivityConverterProcessor() { - } + public ActivityConverterProcessor() { + } - public ActivityConverterProcessor(ActivityConverterProcessorConfiguration configuration) { - this.configuration = configuration; - } - - @Override - public String getId() { - return STREAMS_ID; - } + public ActivityConverterProcessor(ActivityConverterProcessorConfiguration configuration) { + this.configuration = configuration; + } - @Override - public List<StreamsDatum> process(StreamsDatum entry) { + @Override + public String getId() { + return STREAMS_ID; + } - List<StreamsDatum> result = Lists.newLinkedList(); - Object document = entry.getDocument(); + @Override + public List<StreamsDatum> process(StreamsDatum entry) { - try { + List<StreamsDatum> result = Lists.newLinkedList(); + Object document = entry.getDocument(); - // first determine which classes this document might actually be - List<Activity> activityList = converterUtil.convert(document); + try { - for (Activity activity : activityList) { - StreamsDatum datum = DatumUtils.cloneDatum(entry); - datum.setId(activity.getId()); - datum.setDocument(activity); - result.add(datum); - } + // first determine which classes this document might actually be + List<Activity> activityList = converterUtil.convert(document); - } catch( Exception e ) { - LOGGER.warn("General exception in process! " + e.getMessage()); - } finally { - return result; - } + for (Activity activity : activityList) { + StreamsDatum datum = DatumUtils.cloneDatum(entry); + datum.setId(activity.getId()); + datum.setDocument(activity); + result.add(datum); + } + } catch (Exception ex) { + LOGGER.warn("General exception in process! " + ex.getMessage()); + } finally { + return result; } - @Override - public void prepare(Object configurationObject) { - if( configurationObject instanceof ActivityConverterProcessorConfiguration) - converterUtil = ActivityConverterUtil.getInstance((ActivityConverterProcessorConfiguration)configurationObject); - else - converterUtil = ActivityConverterUtil.getInstance(); + } + @Override + public void prepare(Object configurationObject) { + if (configurationObject instanceof ActivityConverterProcessorConfiguration) { + converterUtil = ActivityConverterUtil.getInstance((ActivityConverterProcessorConfiguration) configurationObject); + } else { + converterUtil = ActivityConverterUtil.getInstance(); } + } - @Override - public void cleanUp() { + @Override + public void cleanUp() { - } + } -}; +} http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityConverterUtil.java ---------------------------------------------------------------------- diff --git a/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityConverterUtil.java b/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityConverterUtil.java index b42eb71..1be527b 100644 --- a/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityConverterUtil.java +++ b/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityConverterUtil.java @@ -19,14 +19,14 @@ under the License. package org.apache.streams.converter; -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; -import java.util.concurrent.ConcurrentHashMap; import org.apache.streams.data.ActivityConverter; import org.apache.streams.data.DocumentClassifier; import org.apache.streams.data.util.ActivityUtil; import org.apache.streams.exceptions.ActivityConversionException; import org.apache.streams.pojo.json.Activity; + +import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; import org.reflections.Reflections; import org.reflections.scanners.SubTypesScanner; import org.reflections.util.ClasspathHelper; @@ -41,204 +41,221 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + /** * ActivityConverterUtil converts document into all possible Activity * representations based on registered DocumentClassifiers and ActivityConverters. * + * <p/> * Implementations and contributed modules may implement DocumentClassifiers * and ActivityConverters to translate additional document types into desired * Activity formats. * + * <p/> * A DocumentClassifier's reponsibility is to recognize document formats and label them, * using a jackson-compatible POJO class. * + * <p/> * An ActivityConverter's reponsibility is to converting a raw document associated with an * incoming POJO class into an activity. * */ public class ActivityConverterUtil { - private final static Logger LOGGER = LoggerFactory.getLogger(ActivityConverterUtil.class); - - private static final ActivityConverterUtil INSTANCE = new ActivityConverterUtil(); - - public static ActivityConverterUtil getInstance(){ - return INSTANCE; - } - - public static ActivityConverterUtil getInstance(ActivityConverterProcessorConfiguration configuration){ - return new ActivityConverterUtil(configuration); + private static final Logger LOGGER = LoggerFactory.getLogger(ActivityConverterUtil.class); + + private static final ActivityConverterUtil INSTANCE = new ActivityConverterUtil(); + + public static ActivityConverterUtil getInstance() { + return INSTANCE; + } + + public static ActivityConverterUtil getInstance(ActivityConverterProcessorConfiguration configuration) { + return new ActivityConverterUtil(configuration); + } + + private List<DocumentClassifier> classifiers = new LinkedList<>(); + private List<ActivityConverter> converters = new LinkedList<>(); + + /* + Use getInstance to get a globally shared thread-safe ActivityConverterUtil, + rather than call this constructor. Reflection-based resolution of + converters across all modules can be slow and should only happen + once per JVM. + */ + protected ActivityConverterUtil() { + configure(); + } + + protected ActivityConverterUtil(ActivityConverterProcessorConfiguration configuration) { + classifiers = configuration.getClassifiers(); + converters = configuration.getConverters(); + configure(); + } + + /** + * convert document to activity. + * + * @param document document to convert + * @return result + */ + public List<Activity> convert(Object document) { + + List<Activity> result = new ArrayList<>(); + + List<Class> detectedClasses = detectClasses(document); + + if ( detectedClasses.size() == 0 ) { + LOGGER.warn("Unable to classify"); + return null; + } else { + LOGGER.debug("Classified document as " + detectedClasses); } - private List<DocumentClassifier> classifiers = new LinkedList<>(); - private List<ActivityConverter> converters = new LinkedList<>(); - - /* - Use getInstance to get a globally shared thread-safe ActivityConverterUtil, - rather than call this constructor. Reflection-based resolution of - converters across all modules can be slow and should only happen - once per JVM. - */ - protected ActivityConverterUtil() { - configure(); - } + // for each of these classes: + // use TypeUtil to switch the document to that type + Map<Class, Object> typedDocs = convertToDetectedClasses(detectedClasses, document); - protected ActivityConverterUtil(ActivityConverterProcessorConfiguration configuration) { - classifiers = configuration.getClassifiers(); - converters = configuration.getConverters(); - configure(); + if ( typedDocs.size() == 0 ) { + LOGGER.warn("Unable to convert to any detected Class"); + return null; + } else { + LOGGER.debug("Document has " + typedDocs.size() + " representations: " + typedDocs.toString()); } - public List<Activity> convert(Object document) { - List<Activity> result = new ArrayList<>(); + // for each specified / discovered converter + for ( ActivityConverter converter : converters ) { - List<Class> detectedClasses = detectClasses(document); + Object typedDoc = typedDocs.get(converter.requiredClass()); - if( detectedClasses.size() == 0 ) { - LOGGER.warn("Unable to classify"); - return null; - } else { - LOGGER.debug("Classified document as " + detectedClasses); - } - - // for each of these classes: - // use TypeUtil to switch the document to that type - Map<Class, Object> typedDocs = convertToDetectedClasses(detectedClasses, document); + List<Activity> activities = applyConverter(converter, typedDoc); - if( typedDocs.size() == 0 ) { - LOGGER.warn("Unable to convert to any detected Class"); - return null; - } - else { - LOGGER.debug("Document has " + typedDocs.size() + " representations: " + typedDocs.toString()); - } + result.addAll(activities); + } - // for each specified / discovered converter - for( ActivityConverter converter : converters ) { + return result; + } - Object typedDoc = typedDocs.get(converter.requiredClass()); + protected List<Activity> applyConverter(ActivityConverter converter, Object typedDoc) { - List<Activity> activities = applyConverter(converter, typedDoc); + List<Activity> activities = new ArrayList<>(); + // if the document can be typed as the required class + if ( typedDoc != null ) { - result.addAll(activities); - } + // let the converter create activities if it can + try { + activities = convertToActivity(converter, typedDoc); + } catch ( Exception ex ) { + LOGGER.debug("convertToActivity caught exception " + ex.getMessage()); + } - return result; } + return activities; + } - protected List<Activity> applyConverter(ActivityConverter converter, Object typedDoc) { - - List<Activity> activities = new ArrayList<>(); - // if the document can be typed as the required class - if( typedDoc != null ) { - - // let the converter create activities if it can - try { - activities = convertToActivity(converter, typedDoc); - } catch( Exception e ) { - LOGGER.debug("convertToActivity caught exception " + e.getMessage()); - } + protected List<Activity> convertToActivity(ActivityConverter converter, Object document) { - } - return activities; + List<Activity> activities = new ArrayList<>(); + try { + activities = converter.toActivityList(document); + } catch (ActivityConversionException e1) { + LOGGER.debug(converter.getClass().getCanonicalName() + " unable to convert " + converter.requiredClass().getClass().getCanonicalName() + " to Activity"); } - protected List<Activity> convertToActivity(ActivityConverter converter, Object document) { + for (Activity activity : activities) { - List<Activity> activities = new ArrayList<>(); - try { - activities = converter.toActivityList(document); - } catch (ActivityConversionException e1) { - LOGGER.debug(converter.getClass().getCanonicalName() + " unable to convert " + converter.requiredClass().getClass().getCanonicalName() + " to Activity"); - } + if (activity != null) { - for (Activity activity : activities) { + // only accept valid activities + // this primitive validity check should be replaced with + // one that applies javax.validation to JSR303 annotations + // on the Activity json schema once a suitable implementation + // is found. + if (!ActivityUtil.isValid(activity)) { + activities.remove(activity); + LOGGER.debug(converter.getClass().getCanonicalName() + " produced invalid Activity converting " + converter.requiredClass().getClass().getCanonicalName()); + } - if (activity != null) { + } else { + LOGGER.debug(converter.getClass().getCanonicalName() + " returned null converting " + converter.requiredClass().getClass().getCanonicalName() + " to Activity"); + } - // only accept valid activities - // this primitive validity check should be replaced with - // one that applies javax.validation to JSR303 annotations - // on the Activity json schema once a suitable implementation - // is found. - if (!ActivityUtil.isValid(activity)) { - activities.remove(activity); - LOGGER.debug(converter.getClass().getCanonicalName() + " produced invalid Activity converting " + converter.requiredClass().getClass().getCanonicalName()); - } + } + return activities; - } else { - LOGGER.debug(converter.getClass().getCanonicalName() + " returned null converting " + converter.requiredClass().getClass().getCanonicalName() + " to Activity"); - } + } - } - return activities; + protected List<Class> detectClasses(Object document) { - } + // ConcurrentHashSet is preferable, but it's only in guava 15+ + // spark 1.5.0 uses guava 14 so for the moment this is the workaround + // Set<Class> detectedClasses = new ConcurrentHashSet(); + Set<Class> detectedClasses = Collections.newSetFromMap(new ConcurrentHashMap<Class, Boolean>()); - protected List<Class> detectClasses(Object document) { - - // ConcurrentHashSet is preferable, but it's only in guava 15+ - // spark 1.5.0 uses guava 14 so for the moment this is the workaround - // Set<Class> detectedClasses = new ConcurrentHashSet(); - Set<Class> detectedClasses = Collections.newSetFromMap(new ConcurrentHashMap<Class, Boolean>()); - - for( DocumentClassifier classifier : classifiers ) { - try { - List<Class> detected = classifier.detectClasses(document); - if (detected != null && detected.size() > 0) - detectedClasses.addAll(detected); - } catch( Exception e) { - LOGGER.warn("{} failed in method detectClasses - ()", classifier.getClass().getCanonicalName(), e); - } + for ( DocumentClassifier classifier : classifiers ) { + try { + List<Class> detected = classifier.detectClasses(document); + if (detected != null && detected.size() > 0) { + detectedClasses.addAll(detected); } - - return Lists.newArrayList(detectedClasses); + } catch ( Exception ex ) { + LOGGER.warn("{} failed in method detectClasses - ()", classifier.getClass().getCanonicalName(), ex); + } } - private Map<Class, Object> convertToDetectedClasses(List<Class> datumClasses, Object document) { + return Lists.newArrayList(detectedClasses); + } - Map<Class, Object> convertedDocuments = new HashMap<>(); - for( Class detectedClass : datumClasses ) { + private Map<Class, Object> convertToDetectedClasses(List<Class> datumClasses, Object document) { - Object typedDoc; - if (detectedClass.isInstance(document)) - typedDoc = document; - else - typedDoc = TypeConverterUtil.getInstance().convert(document, detectedClass); + Map<Class, Object> convertedDocuments = new HashMap<>(); + for ( Class detectedClass : datumClasses ) { - if( typedDoc != null ) - convertedDocuments.put(detectedClass, typedDoc); - } + Object typedDoc; + if (detectedClass.isInstance(document)) { + typedDoc = document; + } else { + typedDoc = TypeConverterUtil.getInstance().convert(document, detectedClass); + } - return convertedDocuments; + if ( typedDoc != null ) { + convertedDocuments.put(detectedClass, typedDoc); + } } - public void configure() { - Reflections reflections = new Reflections(new ConfigurationBuilder() - .setUrls(ClasspathHelper.forPackage("org.apache.streams")) - .setScanners(new SubTypesScanner())); - if ( classifiers.size() == 0) { - Set<Class<? extends DocumentClassifier>> classifierClasses = reflections.getSubTypesOf(DocumentClassifier.class); - for (Class classifierClass : classifierClasses) { - try { - this.classifiers.add((DocumentClassifier) classifierClass.newInstance()); - } catch (Exception e) { - LOGGER.warn("Exception instantiating " + classifierClass); - } - } + return convertedDocuments; + } + + /** + * configure ActivityConverterUtil. + */ + public void configure() { + Reflections reflections = new Reflections(new ConfigurationBuilder() + .setUrls(ClasspathHelper.forPackage("org.apache.streams")) + .setScanners(new SubTypesScanner())); + if ( classifiers.size() == 0) { + Set<Class<? extends DocumentClassifier>> classifierClasses = reflections.getSubTypesOf(DocumentClassifier.class); + for (Class classifierClass : classifierClasses) { + try { + this.classifiers.add((DocumentClassifier) classifierClass.newInstance()); + } catch (Exception ex) { + LOGGER.warn("Exception instantiating " + classifierClass); } - Preconditions.checkArgument(classifiers.size() > 0); - if ( converters.size() == 0) { - Set<Class<? extends ActivityConverter>> converterClasses = reflections.getSubTypesOf(ActivityConverter.class); - for (Class converterClass : converterClasses) { - try { - this.converters.add((ActivityConverter) converterClass.newInstance()); - } catch (Exception e) { - LOGGER.warn("Exception instantiating " + converterClass); - } - } + } + } + Preconditions.checkArgument(classifiers.size() > 0); + if ( converters.size() == 0) { + Set<Class<? extends ActivityConverter>> converterClasses = reflections.getSubTypesOf(ActivityConverter.class); + for (Class converterClass : converterClasses) { + try { + this.converters.add((ActivityConverter) converterClass.newInstance()); + } catch (Exception ex) { + LOGGER.warn("Exception instantiating " + converterClass); } - Preconditions.checkArgument(this.converters.size() > 0); + } } + Preconditions.checkArgument(this.converters.size() > 0); + } } http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityObjectConverterProcessor.java ---------------------------------------------------------------------- diff --git a/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityObjectConverterProcessor.java b/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityObjectConverterProcessor.java index ff45877..d77cbec 100644 --- a/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityObjectConverterProcessor.java +++ b/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityObjectConverterProcessor.java @@ -19,12 +19,13 @@ under the License. package org.apache.streams.converter; -import com.google.common.collect.Lists; import org.apache.streams.core.StreamsDatum; import org.apache.streams.core.StreamsProcessor; import org.apache.streams.core.util.DatumUtils; -import org.apache.streams.pojo.json.Activity; import org.apache.streams.pojo.json.ActivityObject; + +import com.google.common.collect.Lists; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,70 +35,72 @@ import java.util.List; * ActivityObjectConverterProcessor is a utility processor for converting any datum document * to an Activity. * + * <p/> * By default it will handle string json and objectnode representation of existing Activities, * translating them into the POJO representation(s) preferred by each registered/detected * ActivityConverter. * + * <p/> * To use this capability without a dedicated stream processor, just use ActivityConverterUtil. */ public class ActivityObjectConverterProcessor implements StreamsProcessor { - public static final String STREAMS_ID = "ActivityObjectConverterProcessor"; + public static final String STREAMS_ID = "ActivityObjectConverterProcessor"; - private final static Logger LOGGER = LoggerFactory.getLogger(ActivityObjectConverterProcessor.class); + private static final Logger LOGGER = LoggerFactory.getLogger(ActivityObjectConverterProcessor.class); - private ActivityObjectConverterUtil converterUtil; + private ActivityObjectConverterUtil converterUtil; - private ActivityObjectConverterProcessorConfiguration configuration; + private ActivityObjectConverterProcessorConfiguration configuration; - public ActivityObjectConverterProcessor() { - } + public ActivityObjectConverterProcessor() { + } - public ActivityObjectConverterProcessor(ActivityObjectConverterProcessorConfiguration configuration) { - this.configuration = configuration; - } - - @Override - public String getId() { - return STREAMS_ID; - } + public ActivityObjectConverterProcessor(ActivityObjectConverterProcessorConfiguration configuration) { + this.configuration = configuration; + } - @Override - public List<StreamsDatum> process(StreamsDatum entry) { + @Override + public String getId() { + return STREAMS_ID; + } - List<StreamsDatum> result = Lists.newLinkedList(); - Object document = entry.getDocument(); + @Override + public List<StreamsDatum> process(StreamsDatum entry) { - try { + List<StreamsDatum> result = Lists.newLinkedList(); + Object document = entry.getDocument(); - // first determine which classes this document might actually be - ActivityObject activityObject = converterUtil.convert(document); + try { - StreamsDatum datum = DatumUtils.cloneDatum(entry); - datum.setId(activityObject.getId()); - datum.setDocument(activityObject); - result.add(datum); + // first determine which classes this document might actually be + ActivityObject activityObject = converterUtil.convert(document); - } catch( Exception e ) { - LOGGER.warn("General exception in process! " + e.getMessage()); - } finally { - return result; - } + StreamsDatum datum = DatumUtils.cloneDatum(entry); + datum.setId(activityObject.getId()); + datum.setDocument(activityObject); + result.add(datum); + } catch ( Exception ex ) { + LOGGER.warn("General exception in process! " + ex.getMessage()); + } finally { + return result; } - @Override - public void prepare(Object configurationObject) { - if( configurationObject instanceof ActivityObjectConverterProcessorConfiguration) - converterUtil = ActivityObjectConverterUtil.getInstance((ActivityObjectConverterProcessorConfiguration)configurationObject); - else - converterUtil = ActivityObjectConverterUtil.getInstance(); + } + @Override + public void prepare(Object configurationObject) { + if( configurationObject instanceof ActivityObjectConverterProcessorConfiguration) { + converterUtil = ActivityObjectConverterUtil.getInstance((ActivityObjectConverterProcessorConfiguration) configurationObject); + } else { + converterUtil = ActivityObjectConverterUtil.getInstance(); } + } - @Override - public void cleanUp() { + @Override + public void cleanUp() { - } + } -}; +} http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityObjectConverterUtil.java ---------------------------------------------------------------------- diff --git a/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityObjectConverterUtil.java b/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityObjectConverterUtil.java index 8085780..408384d 100644 --- a/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityObjectConverterUtil.java +++ b/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityObjectConverterUtil.java @@ -19,15 +19,15 @@ under the License. package org.apache.streams.converter; -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import org.apache.streams.data.ActivityObjectConverter; import org.apache.streams.data.DocumentClassifier; -import org.apache.streams.data.util.ActivityUtil; import org.apache.streams.exceptions.ActivityConversionException; -import org.apache.streams.pojo.json.Activity; import org.apache.streams.pojo.json.ActivityObject; + +import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; + import org.reflections.Reflections; import org.reflections.scanners.SubTypesScanner; import org.reflections.util.ClasspathHelper; @@ -46,210 +46,229 @@ import java.util.concurrent.ConcurrentHashMap; * ActivityObjectConverterUtil converts document into all possible ActivityObject * representations based on registered DocumentClassifiers and ActivityObjectConverters. * + * <p/> * Implementations and contributed modules may implement DocumentClassifiers * and ActivityObjectConverters to translate additional document types into desired * ActivityObject formats. * + * <p/> * A DocumentClassifier's reponsibility is to recognize document formats and label them, * using a jackson-compatible POJO class. * + * <p/> * An ActivityObjectConverter's reponsibility is to converting a raw document associated with an * incoming POJO class into an activity object. * */ public class ActivityObjectConverterUtil { - private final static Logger LOGGER = LoggerFactory.getLogger(ActivityObjectConverterUtil.class); - - private static final ActivityObjectConverterUtil INSTANCE = new ActivityObjectConverterUtil(); - - public static ActivityObjectConverterUtil getInstance() { - return INSTANCE; - } - - public static ActivityObjectConverterUtil getInstance(ActivityObjectConverterProcessorConfiguration configuration) { - return new ActivityObjectConverterUtil(configuration); + private static final Logger LOGGER = LoggerFactory.getLogger(ActivityObjectConverterUtil.class); + + private static final ActivityObjectConverterUtil INSTANCE = new ActivityObjectConverterUtil(); + + public static ActivityObjectConverterUtil getInstance() { + return INSTANCE; + } + + public static ActivityObjectConverterUtil getInstance(ActivityObjectConverterProcessorConfiguration configuration) { + return new ActivityObjectConverterUtil(configuration); + } + + private List<DocumentClassifier> classifiers = Lists.newLinkedList(); + private List<ActivityObjectConverter> converters = Lists.newLinkedList(); + + /* + Use getInstance to get a globally shared thread-safe ActivityConverterUtil, + rather than call this constructor. Reflection-based resolution of + converters across all modules can be slow and should only happen + once per JVM. + */ + protected ActivityObjectConverterUtil() { + configure(); + } + + protected ActivityObjectConverterUtil(ActivityObjectConverterProcessorConfiguration configuration) { + classifiers = configuration.getClassifiers(); + converters = configuration.getConverters(); + configure(); + } + + /** + * convert document to ActivityObject. + * + * @param document document to convert + * @return result + */ + public synchronized ActivityObject convert(Object document) { + + List<Class> detectedClasses = detectClasses(document); + + if (detectedClasses.size() == 0) { + LOGGER.warn("Unable to classify"); + return null; + } else { + LOGGER.debug("Classified document as " + detectedClasses); } - private List<DocumentClassifier> classifiers = Lists.newLinkedList(); - private List<ActivityObjectConverter> converters = Lists.newLinkedList(); - - /* - Use getInstance to get a globally shared thread-safe ActivityConverterUtil, - rather than call this constructor. Reflection-based resolution of - converters across all modules can be slow and should only happen - once per JVM. - */ - protected ActivityObjectConverterUtil() { - configure(); - } + // for each of these classes: + // use TypeUtil to switch the document to that type + Map<Class, Object> typedDocs = convertToDetectedClasses(detectedClasses, document); - protected ActivityObjectConverterUtil(ActivityObjectConverterProcessorConfiguration configuration) { - classifiers = configuration.getClassifiers(); - converters = configuration.getConverters(); - configure(); + if (typedDocs.size() == 0) { + LOGGER.warn("Unable to convert to any detected Class"); + return null; + } else { + LOGGER.debug("Document has " + typedDocs.size() + " representations: " + typedDocs.toString()); } - public synchronized ActivityObject convert(Object document) { + Map<Class, ActivityObject> convertedDocs = new HashMap<>(); - List<Class> detectedClasses = detectClasses(document); + // for each specified / discovered converter + for (ActivityObjectConverter converter : converters) { - if (detectedClasses.size() == 0) { - LOGGER.warn("Unable to classify"); - return null; - } else { - LOGGER.debug("Classified document as " + detectedClasses); - } + Class requiredClass = converter.requiredClass(); - // for each of these classes: - // use TypeUtil to switch the document to that type - Map<Class, Object> typedDocs = convertToDetectedClasses(detectedClasses, document); + Object typedDoc = typedDocs.get(requiredClass); - if (typedDocs.size() == 0) { - LOGGER.warn("Unable to convert to any detected Class"); - return null; - } else { - LOGGER.debug("Document has " + typedDocs.size() + " representations: " + typedDocs.toString()); - } + ActivityObject activityObject = applyConverter(converter, typedDoc); - Map<Class, ActivityObject> convertedDocs = new HashMap<>(); + convertedDocs.put(requiredClass, activityObject); + } - // for each specified / discovered converter - for (ActivityObjectConverter converter : converters) { + ActivityObject result = deepestDescendant(convertedDocs); - Class requiredClass = converter.requiredClass(); + return result; + } - Object typedDoc = typedDocs.get(requiredClass); + protected ActivityObject applyConverter(ActivityObjectConverter converter, Object typedDoc) { - ActivityObject activityObject = applyConverter(converter, typedDoc); + ActivityObject activityObject = null; + // if the document can be typed as the required class + if (typedDoc != null) { - convertedDocs.put(requiredClass, activityObject); - } + // let the converter create activities if it can + try { + activityObject = convertToActivityObject(converter, typedDoc); + } catch (Exception ex) { + LOGGER.debug("convertToActivity caught exception " + ex.getMessage()); + } - ActivityObject result = deepestDescendant(convertedDocs); - - return result; } + return activityObject; + } - protected ActivityObject applyConverter(ActivityObjectConverter converter, Object typedDoc) { - - ActivityObject activityObject = null; - // if the document can be typed as the required class - if (typedDoc != null) { + protected ActivityObject convertToActivityObject(ActivityObjectConverter converter, Object document) { - // let the converter create activities if it can - try { - activityObject = convertToActivityObject(converter, typedDoc); - } catch (Exception e) { - LOGGER.debug("convertToActivity caught exception " + e.getMessage()); - } - - } - return activityObject; + ActivityObject activityObject = null; + try { + activityObject = converter.toActivityObject(document); + } catch (ActivityConversionException e1) { + LOGGER.debug(converter.getClass().getCanonicalName() + " unable to convert " + converter.requiredClass().getClass().getCanonicalName() + " to Activity"); } - protected ActivityObject convertToActivityObject(ActivityObjectConverter converter, Object document) { + return activityObject; - ActivityObject activityObject = null; - try { - activityObject = converter.toActivityObject(document); - } catch (ActivityConversionException e1) { - LOGGER.debug(converter.getClass().getCanonicalName() + " unable to convert " + converter.requiredClass().getClass().getCanonicalName() + " to Activity"); - } + } - return activityObject; - - } + protected List<Class> detectClasses(Object document) { - protected List<Class> detectClasses(Object document) { - - // ConcurrentHashSet is preferable, but it's only in guava 15+ - // spark 1.5.0 uses guava 14 so for the moment this is the workaround - // Set<Class> detectedClasses = new ConcurrentHashSet(); - Set<Class> detectedClasses = Collections.newSetFromMap(new ConcurrentHashMap<Class, Boolean>()); - for (DocumentClassifier classifier : classifiers) { - try { - List<Class> detected = classifier.detectClasses(document); - if (detected != null && detected.size() > 0) - detectedClasses.addAll(detected); - } catch (Exception e) { - LOGGER.warn("{} failed in method detectClasses - ()", classifier.getClass().getCanonicalName(), e); - } + // ConcurrentHashSet is preferable, but it's only in guava 15+ + // spark 1.5.0 uses guava 14 so for the moment this is the workaround + // Set<Class> detectedClasses = new ConcurrentHashSet(); + Set<Class> detectedClasses = Collections.newSetFromMap(new ConcurrentHashMap<Class, Boolean>()); + for (DocumentClassifier classifier : classifiers) { + try { + List<Class> detected = classifier.detectClasses(document); + if (detected != null && detected.size() > 0) { + detectedClasses.addAll(detected); } - - return Lists.newArrayList(detectedClasses); + } catch (Exception ex) { + LOGGER.warn("{} failed in method detectClasses - ()", classifier.getClass().getCanonicalName(), ex); + } } - private Map<Class, Object> convertToDetectedClasses(List<Class> datumClasses, Object document) { + return Lists.newArrayList(detectedClasses); + } - Map<Class, Object> convertedDocuments = Maps.newHashMap(); - for (Class detectedClass : datumClasses) { + private Map<Class, Object> convertToDetectedClasses(List<Class> datumClasses, Object document) { - Object typedDoc; - if (detectedClass.isInstance(document)) - typedDoc = document; - else - typedDoc = TypeConverterUtil.getInstance().convert(document, detectedClass); + Map<Class, Object> convertedDocuments = Maps.newHashMap(); + for (Class detectedClass : datumClasses) { - if (typedDoc != null) - convertedDocuments.put(detectedClass, typedDoc); - } + Object typedDoc; + if (detectedClass.isInstance(document)) { + typedDoc = document; + } else { + typedDoc = TypeConverterUtil.getInstance().convert(document, detectedClass); + } - return convertedDocuments; + if (typedDoc != null) { + convertedDocuments.put(detectedClass, typedDoc); + } } - public void configure() { - Reflections reflections = new Reflections(new ConfigurationBuilder() - .setUrls(ClasspathHelper.forPackage("org.apache.streams")) - .setScanners(new SubTypesScanner())); - if (classifiers.size() == 0) { - Set<Class<? extends DocumentClassifier>> classifierClasses = reflections.getSubTypesOf(DocumentClassifier.class); - for (Class classifierClass : classifierClasses) { - try { - this.classifiers.add((DocumentClassifier) classifierClass.newInstance()); - } catch (Exception e) { - LOGGER.warn("Exception instantiating " + classifierClass); - } - } + return convertedDocuments; + } + + /** + * configure ActivityObjectConverterUtil. + */ + public void configure() { + Reflections reflections = new Reflections(new ConfigurationBuilder() + .setUrls(ClasspathHelper.forPackage("org.apache.streams")) + .setScanners(new SubTypesScanner())); + if (classifiers.size() == 0) { + Set<Class<? extends DocumentClassifier>> classifierClasses = reflections.getSubTypesOf(DocumentClassifier.class); + for (Class classifierClass : classifierClasses) { + try { + this.classifiers.add((DocumentClassifier) classifierClass.newInstance()); + } catch (Exception ex) { + LOGGER.warn("Exception instantiating " + classifierClass); } - Preconditions.checkArgument(classifiers.size() > 0); - if (converters.size() == 0) { - Set<Class<? extends ActivityObjectConverter>> converterClasses = reflections.getSubTypesOf(ActivityObjectConverter.class); - for (Class converterClass : converterClasses) { - try { - this.converters.add((ActivityObjectConverter) converterClass.newInstance()); - } catch (Exception e) { - LOGGER.warn("Exception instantiating " + converterClass); - } - } + } + } + Preconditions.checkArgument(classifiers.size() > 0); + if (converters.size() == 0) { + Set<Class<? extends ActivityObjectConverter>> converterClasses = reflections.getSubTypesOf(ActivityObjectConverter.class); + for (Class converterClass : converterClasses) { + try { + this.converters.add((ActivityObjectConverter) converterClass.newInstance()); + } catch (Exception ex) { + LOGGER.warn("Exception instantiating " + converterClass); } - Preconditions.checkArgument(this.converters.size() > 0); + } } + Preconditions.checkArgument(this.converters.size() > 0); + } - private boolean isAncestor(Class possibleDescendant, Class possibleAncestor) { - if (possibleDescendant.equals(Object.class)) - return false; - if (possibleDescendant.getSuperclass().equals(possibleAncestor)) - return true; - else return isAncestor(possibleDescendant.getSuperclass(), possibleAncestor); + private boolean isAncestor(Class possibleDescendant, Class possibleAncestor) { + if (possibleDescendant.equals(Object.class)) { + return false; + } + if (possibleDescendant.getSuperclass().equals(possibleAncestor)) { + return true; + } else { + return isAncestor(possibleDescendant.getSuperclass(), possibleAncestor); } + } - // prefer the most specific ActivityObject sub-class returned by all converters - private ActivityObject deepestDescendant(Map<Class, ActivityObject> map) { + // prefer the most specific ActivityObject sub-class returned by all converters + private ActivityObject deepestDescendant(Map<Class, ActivityObject> map) { - ActivityObject result = null; + ActivityObject result = null; - for( Map.Entry<Class, ActivityObject> entry : map.entrySet()) { - if( entry.getKey() != null ) { - if (result == null) - result = entry.getValue(); - else if (isAncestor(entry.getKey(), result.getClass())) - result = entry.getValue(); - } + for ( Map.Entry<Class, ActivityObject> entry : map.entrySet()) { + if ( entry.getKey() != null ) { + if (result == null) { + result = entry.getValue(); + } else if (isAncestor(entry.getKey(), result.getClass())) { + result = entry.getValue(); } - - return result; + } } + return result; + } + }
