<?xml version="1.0" encoding="UTF-8" standalone="yes"?><!DOCTYPE report PUBLIC "-//JACOCO//DTD Report 1.0//EN" "report.dtd"><report name="aroma-application-service"><sessioninfo id="builder-153d3673" start="1456174162906" dump="1456174180027"/><package name="tech/aroma/application/service"><class name="tech/aroma/application/service/ApplicationServiceBase"><method name="&lt;init&gt;" desc="(Ltech/sirwellington/alchemy/thrift/operations/ThriftOperation;Ljava/util/concurrent/ExecutorService;)V" line="60"><counter type="INSTRUCTION" missed="0" covered="20"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getApiVersion" desc="()D" line="71"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="sendMessage" desc="(Ltech/aroma/thrift/application/service/SendMessageRequest;)Ltech/aroma/thrift/application/service/SendMessageResponse;" line="80"><counter type="INSTRUCTION" missed="0" covered="18"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="sendMessageAsync" desc="(Ltech/aroma/thrift/application/service/SendMessageRequest;)V" line="92"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$sendMessageAsync$0" desc="(Ltech/aroma/thrift/application/service/SendMessageRequest;)Ltech/aroma/thrift/application/service/SendMessageResponse;" line="98"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="52"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="62"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="18"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="tech/aroma/application/service/ApplicationAssertions"><method name="&lt;init&gt;" desc="()V" line="51"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="validTokenIn" desc="(Ltech/aroma/thrift/authentication/service/AuthenticationService$Iface;)Ltech/sirwellington/alchemy/arguments/AlchemyAssertion;" line="57"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="withMessage" desc="(Ljava/lang/String;)Ltech/sirwellington/alchemy/arguments/ExceptionMapper;" line="94"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$withMessage$1" desc="(Ljava/lang/String;Ltech/sirwellington/alchemy/arguments/FailedAssertionException;)Ltech/aroma/thrift/exceptions/InvalidArgumentException;" line="94"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$validTokenIn$0" desc="(Ltech/aroma/thrift/authentication/service/AuthenticationService$Iface;Ltech/aroma/thrift/authentication/ApplicationToken;)V" line="63"><counter type="INSTRUCTION" missed="13" covered="31"/><counter type="LINE" missed="4" covered="12"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="48"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="20" covered="53"/><counter type="LINE" missed="6" covered="18"/><counter type="COMPLEXITY" missed="1" covered="5"/><counter type="METHOD" missed="1" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><class name="tech/aroma/application/service/ModuleApplicationService$ServiceModule"><method name="&lt;init&gt;" desc="()V" line="56"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="tech/aroma/application/service/ModuleApplicationService"><method name="&lt;init&gt;" desc="()V" line="38"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="configure" desc="()V" line="45"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="provideTokenMapper" desc="()Ljava/util/function/Function;" line="53"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="40"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="tech/aroma/application/service/AuthenticationLayer"><method name="&lt;init&gt;" desc="(Ltech/aroma/thrift/authentication/service/AuthenticationService$Iface;Ltech/aroma/thrift/application/service/ApplicationService$Iface;Ljava/util/function/Function;)V" line="70"><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getApiVersion" desc="()D" line="82"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="sendMessage" desc="(Ltech/aroma/thrift/application/service/SendMessageRequest;)Ltech/aroma/thrift/application/service/SendMessageResponse;" line="91"><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="sendMessageAsync" desc="(Ltech/aroma/thrift/application/service/SendMessageRequest;)V" line="106"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getAdditionalTokenInfo" desc="(Ltech/aroma/thrift/authentication/ApplicationToken;)Ltech/aroma/thrift/authentication/ApplicationToken;" line="114"><counter type="INSTRUCTION" missed="0" covered="39"/><counter type="LINE" missed="0" covered="14"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="tryToGetTokenInfo" desc="(Ltech/aroma/thrift/authentication/service/GetTokenInfoRequest;)Ltech/aroma/thrift/authentication/service/GetTokenInfoResponse;" line="138"><counter type="INSTRUCTION" missed="18" covered="5"/><counter type="LINE" missed="3" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="convertToAppToken" desc="(Ltech/aroma/thrift/authentication/AuthenticationToken;)Ltech/aroma/thrift/authentication/ApplicationToken;" line="149"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="checkTokenIsValid" desc="(Ltech/aroma/thrift/authentication/ApplicationToken;)V" line="154"><counter type="INSTRUCTION" missed="18" covered="39"/><counter type="LINE" missed="3" covered="16"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="60"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="36" covered="165"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="6" covered="51"/><counter type="COMPLEXITY" missed="0" covered="10"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="ApplicationAssertions.java"><line nr="48" mi="0" ci="4" mb="0" cb="0"/><line nr="51" mi="2" ci="0" mb="0" cb="0"/><line nr="52" mi="5" ci="0" mb="0" cb="0"/><line nr="57" mi="0" ci="3" mb="0" cb="0"/><line nr="58" mi="0" ci="1" mb="0" cb="0"/><line nr="59" mi="0" ci="3" mb="0" cb="0"/><line nr="61" mi="0" ci="3" mb="0" cb="0"/><line nr="63" mi="0" ci="3" mb="0" cb="0"/><line nr="64" mi="0" ci="1" mb="0" cb="0"/><line nr="65" mi="0" ci="3" mb="0" cb="0"/><line nr="67" mi="0" ci="4" mb="0" cb="0"/><line nr="68" mi="0" ci="1" mb="0" cb="0"/><line nr="69" mi="0" ci="3" mb="0" cb="0"/><line nr="71" mi="0" ci="4" mb="0" cb="0"/><line nr="72" mi="0" ci="4" mb="0" cb="0"/><line nr="73" mi="0" ci="2" mb="0" cb="0"/><line nr="78" mi="0" ci="4" mb="0" cb="0"/><line nr="80" mi="1" ci="0" mb="0" cb="0"/><line nr="82" mi="5" ci="0" mb="0" cb="0"/><line nr="84" mi="1" ci="0" mb="0" cb="0"/><line nr="86" mi="6" ci="0" mb="0" cb="0"/><line nr="87" mi="0" ci="1" mb="0" cb="0"/><line nr="88" mi="0" ci="1" mb="0" cb="0"/><line nr="94" mi="0" ci="8" mb="0" cb="0"/><counter type="INSTRUCTION" missed="20" covered="53"/><counter type="LINE" missed="6" covered="18"/><counter type="COMPLEXITY" missed="1" covered="5"/><counter type="METHOD" missed="1" covered="5"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="AuthenticationLayer.java"><line nr="60" mi="0" ci="4" mb="0" cb="0"/><line nr="70" mi="0" ci="2" mb="0" cb="0"/><line nr="71" mi="0" ci="12" mb="0" cb="0"/><line nr="72" mi="0" ci="3" mb="0" cb="0"/><line nr="74" mi="0" ci="3" mb="0" cb="0"/><line nr="75" mi="0" ci="3" mb="0" cb="0"/><line nr="76" mi="0" ci="3" mb="0" cb="0"/><line nr="77" mi="0" ci="1" mb="0" cb="0"/><line nr="82" mi="0" ci="4" mb="0" cb="0"/><line nr="91" mi="0" ci="5" mb="0" cb="0"/><line nr="92" mi="0" ci="4" mb="0" cb="0"/><line nr="94" mi="0" ci="4" mb="0" cb="2"/><line nr="96" mi="0" ci="5" mb="0" cb="0"/><line nr="97" mi="0" ci="4" mb="0" cb="0"/><line nr="100" mi="0" ci="5" mb="0" cb="0"/><line nr="106" mi="0" ci="5" mb="0" cb="0"/><line nr="107" mi="0" ci="4" mb="0" cb="0"/><line nr="109" mi="0" ci="4" mb="0" cb="0"/><line nr="110" mi="0" ci="1" mb="0" cb="0"/><line nr="114" mi="0" ci="5" mb="0" cb="0"/><line nr="115" mi="0" ci="2" mb="0" cb="0"/><line nr="116" mi="0" ci="2" mb="0" cb="0"/><line nr="118" mi="0" ci="4" mb="0" cb="0"/><line nr="120" mi="0" ci="3" mb="0" cb="0"/><line nr="121" mi="0" ci="2" mb="0" cb="0"/><line nr="122" mi="0" ci="1" mb="0" cb="0"/><line nr="123" mi="0" ci="3" mb="0" cb="0"/><line nr="125" mi="0" ci="4" mb="0" cb="0"/><line nr="126" mi="0" ci="2" mb="0" cb="0"/><line nr="127" mi="0" ci="1" mb="0" cb="0"/><line nr="128" mi="0" ci="3" mb="0" cb="0"/><line nr="130" mi="0" ci="5" mb="0" cb="0"/><line nr="131" mi="0" ci="2" mb="0" cb="0"/><line nr="138" mi="0" ci="5" mb="0" cb="0"/><line nr="140" mi="1" ci="0" mb="0" cb="0"/><line nr="142" mi="4" ci="0" mb="0" cb="0"/><line nr="143" mi="13" ci="0" mb="0" cb="0"/><line nr="149" mi="0" ci="6" mb="0" cb="0"/><line nr="154" mi="0" ci="3" mb="0" cb="0"/><line nr="155" mi="0" ci="2" mb="0" cb="0"/><line nr="156" mi="0" ci="1" mb="0" cb="0"/><line nr="157" mi="0" ci="3" mb="0" cb="0"/><line nr="159" mi="0" ci="4" mb="0" cb="0"/><line nr="160" mi="0" ci="2" mb="0" cb="0"/><line nr="161" mi="0" ci="1" mb="0" cb="0"/><line nr="162" mi="0" ci="3" mb="0" cb="0"/><line nr="164" mi="0" ci="5" mb="0" cb="0"/><line nr="165" mi="0" ci="3" mb="0" cb="0"/><line nr="166" mi="0" ci="2" mb="0" cb="0"/><line nr="170" mi="0" ci="5" mb="0" cb="0"/><line nr="172" mi="0" ci="1" mb="0" cb="0"/><line nr="174" mi="0" ci="2" mb="0" cb="0"/><line nr="176" mi="1" ci="0" mb="0" cb="0"/><line nr="178" mi="4" ci="0" mb="0" cb="0"/><line nr="179" mi="13" ci="0" mb="0" cb="0"/><line nr="180" mi="0" ci="1" mb="0" cb="0"/><line nr="181" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="36" covered="165"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="6" covered="51"/><counter type="COMPLEXITY" missed="0" covered="10"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ApplicationServiceBase.java"><line nr="52" mi="0" ci="4" mb="0" cb="0"/><line nr="60" mi="0" ci="2" mb="0" cb="0"/><line nr="61" mi="0" ci="8" mb="0" cb="0"/><line nr="62" mi="0" ci="3" mb="0" cb="0"/><line nr="64" mi="0" ci="3" mb="0" cb="0"/><line nr="65" mi="0" ci="3" mb="0" cb="0"/><line nr="66" mi="0" ci="1" mb="0" cb="0"/><line nr="71" mi="0" ci="2" mb="0" cb="0"/><line nr="80" mi="0" ci="4" mb="0" cb="0"/><line nr="82" mi="0" ci="3" mb="0" cb="0"/><line nr="83" mi="0" ci="2" mb="0" cb="0"/><line nr="84" mi="0" ci="3" mb="0" cb="0"/><line nr="86" mi="0" ci="6" mb="0" cb="0"/><line nr="92" mi="0" ci="2" mb="0" cb="2"/><line nr="94" mi="0" ci="3" mb="0" cb="0"/><line nr="95" mi="0" ci="1" mb="0" cb="0"/><line nr="98" mi="0" ci="11" mb="0" cb="0"/><line nr="99" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="62"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="18"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ModuleApplicationService.java"><line nr="38" mi="0" ci="3" mb="0" cb="0"/><line nr="40" mi="0" ci="4" mb="0" cb="0"/><line nr="45" mi="0" ci="6" mb="0" cb="0"/><line nr="47" mi="0" ci="6" mb="0" cb="0"/><line nr="48" mi="0" ci="1" mb="0" cb="0"/><line nr="53" mi="0" ci="2" mb="0" cb="0"/><line nr="56" mi="0" ci="2" mb="0" cb="0"/><line nr="59" mi="0" ci="4" mb="0" cb="0"/><line nr="60" mi="0" ci="4" mb="0" cb="0"/><line nr="61" mi="0" ci="2" mb="0" cb="0"/><line nr="62" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="35"/><counter type="LINE" missed="0" covered="11"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><counter type="INSTRUCTION" missed="56" covered="315"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="12" covered="98"/><counter type="COMPLEXITY" missed="1" covered="27"/><counter type="METHOD" missed="1" covered="25"/><counter type="CLASS" missed="0" covered="5"/></package><package name="tech/aroma/application/service/server"><class name="tech/aroma/application/service/server/TcpServer$AromaServicesProvider"><method name="&lt;init&gt;" desc="()V" line="90"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="configure" desc="()V" line="96"><counter type="INSTRUCTION" missed="0" covered="1"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="provideAuthenticationService" desc="()Ltech/aroma/thrift/authentication/service/AuthenticationService$Iface;" line="103"><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="provideNotificationService" desc="()Ltech/aroma/thrift/notification/service/NotificationService$Iface;" line="114"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="13" covered="4"/><counter type="LINE" missed="4" covered="2"/><counter type="COMPLEXITY" missed="2" covered="2"/><counter type="METHOD" missed="2" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="tech/aroma/application/service/server/TcpServer"><method name="&lt;init&gt;" desc="()V" line="55"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="main" desc="([Ljava/lang/String;)V" line="63"><counter type="INSTRUCTION" missed="93" covered="0"/><counter type="LINE" missed="17" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;clinit&gt;" desc="()V" line="58"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="96" covered="4"/><counter type="LINE" missed="18" covered="1"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="2" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="TcpServer.java"><line nr="55" mi="3" ci="0" mb="0" cb="0"/><line nr="58" mi="0" ci="4" mb="0" cb="0"/><line nr="63" mi="35" ci="0" mb="0" cb="0"/><line nr="69" mi="5" ci="0" mb="0" cb="0"/><line nr="70" mi="5" ci="0" mb="0" cb="0"/><line nr="72" mi="5" ci="0" mb="0" cb="0"/><line nr="73" mi="7" ci="0" mb="0" cb="0"/><line nr="75" mi="7" ci="0" mb="0" cb="0"/><line nr="76" mi="3" ci="0" mb="0" cb="0"/><line nr="77" mi="3" ci="0" mb="0" cb="0"/><line nr="78" mi="2" ci="0" mb="0" cb="0"/><line nr="79" mi="2" ci="0" mb="0" cb="0"/><line nr="80" mi="2" ci="0" mb="0" cb="0"/><line nr="81" mi="2" ci="0" mb="0" cb="0"/><line nr="83" mi="5" ci="0" mb="0" cb="0"/><line nr="85" mi="5" ci="0" mb="0" cb="0"/><line nr="86" mi="2" ci="0" mb="0" cb="0"/><line nr="87" mi="2" ci="0" mb="0" cb="0"/><line nr="88" mi="1" ci="0" mb="0" cb="0"/><line nr="90" mi="0" ci="3" mb="0" cb="0"/><line nr="96" mi="0" ci="1" mb="0" cb="0"/><line nr="103" mi="2" ci="0" mb="0" cb="0"/><line nr="105" mi="1" ci="0" mb="0" cb="0"/><line nr="107" mi="6" ci="0" mb="0" cb="0"/><line nr="114" mi="4" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="109" covered="8"/><counter type="LINE" missed="22" covered="3"/><counter type="COMPLEXITY" missed="4" covered="3"/><counter type="METHOD" missed="4" covered="3"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><counter type="INSTRUCTION" missed="109" covered="8"/><counter type="LINE" missed="22" covered="3"/><counter type="COMPLEXITY" missed="4" covered="3"/><counter type="METHOD" missed="4" covered="3"/><counter type="CLASS" missed="0" covered="2"/></package><package name="tech/aroma/application/service/operations"><class name="tech/aroma/application/service/operations/ModuleApplicationServiceOperations"><method name="&lt;init&gt;" desc="()V" line="33"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="configure" desc="()V" line="40"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="35"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="tech/aroma/application/service/operations/ModuleApplicationServiceOperations$1"><method name="&lt;init&gt;" desc="(Ltech/aroma/application/service/operations/ModuleApplicationServiceOperations;)V" line="40"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="tech/aroma/application/service/operations/SendMessageOperation"><method name="&lt;init&gt;" desc="(Ltech/aroma/thrift/authentication/service/AuthenticationService$Iface;Ltech/aroma/data/ApplicationRepository;Ltech/aroma/data/FollowerRepository;Ltech/aroma/data/InboxRepository;Ltech/aroma/data/MessageRepository;Ltech/aroma/data/UserRepository;Ltech/aroma/thrift/notification/service/NotificationService$Iface;)V" line="88"><counter type="INSTRUCTION" missed="0" covered="55"/><counter type="LINE" missed="0" covered="11"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="process" desc="(Ltech/aroma/thrift/application/service/SendMessageRequest;)Ltech/aroma/thrift/application/service/SendMessageResponse;" line="107"><counter type="INSTRUCTION" missed="0" covered="68"/><counter type="LINE" missed="0" covered="21"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="tryToGetTokenInfo" desc="(Ltech/aroma/thrift/authentication/ApplicationToken;)Ltech/aroma/thrift/authentication/service/GetTokenInfoResponse;" line="144"><counter type="INSTRUCTION" missed="27" covered="44"/><counter type="LINE" missed="6" covered="14"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createMessageFrom" desc="(Ltech/aroma/thrift/application/service/SendMessageRequest;Ltech/aroma/thrift/authentication/ApplicationToken;)Ltech/aroma/thrift/Message;" line="179"><counter type="INSTRUCTION" missed="0" covered="38"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createNotificationRequestFor" desc="(Ltech/aroma/thrift/Message;)Ltech/aroma/thrift/notification/service/SendNotificationRequest;" line="198"><counter type="INSTRUCTION" missed="0" covered="37"/><counter type="LINE" missed="0" covered="11"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="tryToSendNotification" desc="(Ltech/aroma/thrift/notification/service/SendNotificationRequest;)V" line="218"><counter type="INSTRUCTION" missed="6" covered="7"/><counter type="LINE" missed="2" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="checkAppId" desc="(Ljava/lang/String;)V" line="228"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="storeInFollowerInboxes" desc="(Ltech/aroma/thrift/Message;)V" line="237"><counter type="INSTRUCTION" missed="0" covered="30"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getOwnerForApp" desc="(Ljava/lang/String;)Ljava/util/Set;" line="252"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="tryToSaveInInbox" desc="(Ltech/aroma/thrift/Message;Ltech/aroma/thrift/User;)V" line="262"><counter type="INSTRUCTION" missed="18" covered="14"/><counter type="LINE" missed="2" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toUser" desc="(Ljava/lang/String;)Ltech/aroma/thrift/User;" line="277"><counter type="INSTRUCTION" missed="12" covered="5"/><counter type="LINE" missed="3" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$storeInFollowerInboxes$0" desc="(Ltech/aroma/thrift/Message;Ltech/aroma/thrift/User;)V" line="245"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="70"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="63" covered="335"/><counter type="LINE" missed="13" covered="98"/><counter type="COMPLEXITY" missed="0" covered="13"/><counter type="METHOD" missed="0" covered="13"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="SendMessageOperation.java"><line nr="70" mi="0" ci="4" mb="0" cb="0"/><line nr="88" mi="0" ci="2" mb="0" cb="0"/><line nr="89" mi="0" ci="28" mb="0" cb="0"/><line nr="90" mi="0" ci="3" mb="0" cb="0"/><line nr="92" mi="0" ci="3" mb="0" cb="0"/><line nr="93" mi="0" ci="3" mb="0" cb="0"/><line nr="94" mi="0" ci="3" mb="0" cb="0"/><line nr="95" mi="0" ci="3" mb="0" cb="0"/><line nr="96" mi="0" ci="3" mb="0" cb="0"/><line nr="97" mi="0" ci="3" mb="0" cb="0"/><line nr="98" mi="0" ci="3" mb="0" cb="0"/><line nr="99" mi="0" ci="1" mb="0" cb="0"/><line nr="107" mi="0" ci="3" mb="0" cb="0"/><line nr="108" mi="0" ci="2" mb="0" cb="0"/><line nr="109" mi="0" ci="1" mb="0" cb="0"/><line nr="110" mi="0" ci="3" mb="0" cb="0"/><line nr="112" mi="0" ci="4" mb="0" cb="0"/><line nr="113" mi="0" ci="2" mb="0" cb="0"/><line nr="114" mi="0" ci="1" mb="0" cb="0"/><line nr="115" mi="0" ci="3" mb="0" cb="0"/><line nr="117" mi="0" ci="5" mb="0" cb="0"/><line nr="119" mi="0" ci="6" mb="0" cb="0"/><line nr="121" mi="0" ci="3" mb="0" cb="0"/><line nr="122" mi="0" ci="3" mb="0" cb="0"/><line nr="124" mi="0" ci="5" mb="0" cb="0"/><line nr="126" mi="0" ci="5" mb="0" cb="0"/><line nr="127" mi="0" ci="3" mb="0" cb="0"/><line nr="129" mi="0" ci="3" mb="0" cb="0"/><line nr="130" mi="0" ci="4" mb="0" cb="0"/><line nr="132" mi="0" ci="3" mb="0" cb="0"/><line nr="134" mi="0" ci="5" mb="0" cb="0"/><line nr="135" mi="0" ci="2" mb="0" cb="0"/><line nr="137" mi="0" ci="2" mb="0" cb="0"/><line nr="144" mi="0" ci="5" mb="0" cb="0"/><line nr="145" mi="0" ci="2" mb="0" cb="0"/><line nr="146" mi="0" ci="2" mb="0" cb="0"/><line nr="151" mi="0" ci="5" mb="0" cb="0"/><line nr="153" mi="1" ci="0" mb="0" cb="0"/><line nr="155" mi="5" ci="0" mb="0" cb="0"/><line nr="156" mi="2" ci="0" mb="0" cb="0"/><line nr="158" mi="1" ci="0" mb="0" cb="0"/><line nr="160" mi="5" ci="0" mb="0" cb="0"/><line nr="161" mi="13" ci="0" mb="0" cb="0"/><line nr="162" mi="0" ci="1" mb="0" cb="0"/><line nr="164" mi="0" ci="10" mb="0" cb="0"/><line nr="165" mi="0" ci="2" mb="0" cb="0"/><line nr="166" mi="0" ci="1" mb="0" cb="0"/><line nr="167" mi="0" ci="3" mb="0" cb="0"/><line nr="169" mi="0" ci="5" mb="0" cb="0"/><line nr="170" mi="0" ci="2" mb="0" cb="0"/><line nr="171" mi="0" ci="1" mb="0" cb="0"/><line nr="172" mi="0" ci="3" mb="0" cb="0"/><line nr="174" mi="0" ci="2" mb="0" cb="0"/><line nr="179" mi="0" ci="2" mb="0" cb="0"/><line nr="181" mi="0" ci="5" mb="0" cb="0"/><line nr="182" mi="0" ci="3" mb="0" cb="0"/><line nr="183" mi="0" ci="2" mb="0" cb="0"/><line nr="184" mi="0" ci="4" mb="0" cb="0"/><line nr="185" mi="0" ci="3" mb="0" cb="0"/><line nr="186" mi="0" ci="3" mb="0" cb="0"/><line nr="187" mi="0" ci="3" mb="0" cb="0"/><line nr="188" mi="0" ci="1" mb="0" cb="0"/><line nr="189" mi="0" ci="5" mb="0" cb="0"/><line nr="190" mi="0" ci="3" mb="0" cb="0"/><line nr="191" mi="0" ci="2" mb="0" cb="0"/><line nr="193" mi="0" ci="2" mb="0" cb="0"/><line nr="198" mi="0" ci="5" mb="0" cb="0"/><line nr="199" mi="0" ci="3" mb="0" cb="0"/><line nr="200" mi="0" ci="3" mb="0" cb="0"/><line nr="201" mi="0" ci="2" mb="0" cb="0"/><line nr="203" mi="0" ci="4" mb="0" cb="0"/><line nr="204" mi="0" ci="3" mb="0" cb="0"/><line nr="206" mi="0" ci="3" mb="0" cb="0"/><line nr="207" mi="0" ci="4" mb="0" cb="0"/><line nr="208" mi="0" ci="2" mb="0" cb="0"/><line nr="209" mi="0" ci="2" mb="0" cb="0"/><line nr="211" mi="0" ci="6" mb="0" cb="0"/><line nr="218" mi="0" ci="5" mb="0" cb="0"/><line nr="220" mi="1" ci="0" mb="0" cb="0"/><line nr="222" mi="5" ci="0" mb="0" cb="0"/><line nr="223" mi="0" ci="1" mb="0" cb="0"/><line nr="224" mi="0" ci="1" mb="0" cb="0"/><line nr="228" mi="0" ci="3" mb="0" cb="0"/><line nr="229" mi="0" ci="2" mb="0" cb="0"/><line nr="230" mi="0" ci="1" mb="0" cb="0"/><line nr="231" mi="0" ci="3" mb="0" cb="0"/><line nr="232" mi="0" ci="3" mb="0" cb="0"/><line nr="233" mi="0" ci="1" mb="0" cb="0"/><line nr="237" mi="0" ci="3" mb="0" cb="0"/><line nr="239" mi="0" ci="6" mb="0" cb="0"/><line nr="241" mi="0" ci="4" mb="0" cb="0"/><line nr="242" mi="0" ci="4" mb="0" cb="0"/><line nr="244" mi="0" ci="5" mb="0" cb="0"/><line nr="245" mi="0" ci="6" mb="0" cb="0"/><line nr="247" mi="0" ci="6" mb="0" cb="0"/><line nr="248" mi="0" ci="1" mb="0" cb="0"/><line nr="252" mi="0" ci="5" mb="0" cb="0"/><line nr="254" mi="0" ci="2" mb="0" cb="0"/><line nr="255" mi="0" ci="3" mb="0" cb="0"/><line nr="256" mi="0" ci="1" mb="0" cb="0"/><line nr="257" mi="0" ci="4" mb="0" cb="0"/><line nr="262" mi="0" ci="6" mb="0" cb="0"/><line nr="265" mi="0" ci="6" mb="0" cb="0"/><line nr="267" mi="1" ci="0" mb="0" cb="0"/><line nr="269" mi="17" ci="0" mb="0" cb="0"/><line nr="270" mi="0" ci="1" mb="0" cb="0"/><line nr="271" mi="0" ci="1" mb="0" cb="0"/><line nr="277" mi="0" ci="5" mb="0" cb="0"/><line nr="279" mi="1" ci="0" mb="0" cb="0"/><line nr="281" mi="5" ci="0" mb="0" cb="0"/><line nr="282" mi="6" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="63" covered="335"/><counter type="LINE" missed="13" covered="98"/><counter type="COMPLEXITY" missed="0" covered="13"/><counter type="METHOD" missed="0" covered="13"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ModuleApplicationServiceOperations.java"><line nr="33" mi="0" ci="3" mb="0" cb="0"/><line nr="35" mi="0" ci="4" mb="0" cb="0"/><line nr="40" mi="0" ci="13" mb="0" cb="0"/><line nr="41" mi="0" ci="2" mb="0" cb="0"/><line nr="42" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="23"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><counter type="INSTRUCTION" missed="63" covered="358"/><counter type="LINE" missed="13" covered="103"/><counter type="COMPLEXITY" missed="0" covered="17"/><counter type="METHOD" missed="0" covered="17"/><counter type="CLASS" missed="0" covered="3"/></package><counter type="INSTRUCTION" missed="228" covered="681"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="47" covered="204"/><counter type="COMPLEXITY" missed="5" covered="47"/><counter type="METHOD" missed="5" covered="45"/><counter type="CLASS" missed="0" covered="10"/></report>