You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by gk...@apache.org on 2021/08/04 06:41:16 UTC

svn commit: r1076289 [13/25] - in /websites/production/turbine/content/fulcrum/fulcrum-cache: ./ apidocs/ apidocs/jquery/ apidocs/jquery/external/ apidocs/jquery/external/jquery/ apidocs/jquery/images/ apidocs/jquery/jszip-utils/ apidocs/jquery/jszip-u...

Added: websites/production/turbine/content/fulcrum/fulcrum-cache/jacoco/jacoco.xml
==============================================================================
--- websites/production/turbine/content/fulcrum/fulcrum-cache/jacoco/jacoco.xml (added)
+++ websites/production/turbine/content/fulcrum/fulcrum-cache/jacoco/jacoco.xml Wed Aug  4 06:41:15 2021
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><!DOCTYPE report PUBLIC "-//JACOCO//DTD Report 1.1//EN" "report.dtd"><report name="Fulcrum Cache"><sessioninfo id="CEDIS144-f5dc0ff1" start="1628059076143" dump="1628059185408"/><package name="org/apache/fulcrum/cache/impl"><class name="org/apache/fulcrum/cache/impl/DefaultGlobalCacheService" sourcefilename="DefaultGlobalCacheService.java"><method name="&lt;init&gt;" desc="()V" line="84"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCacheCheckFrequency" desc="()J" line="114"><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="getObject" desc="(Ljava/lang/String;)Lorg/apache/fulcrum/cache/Cached
 Object;" line="133"><counter type="INSTRUCTION" missed="25" covered="27"/><counter type="BRANCH" missed="6" covered="6"/><counter type="LINE" missed="9" covered="8"/><counter type="COMPLEXITY" missed="4" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="addObject" desc="(Ljava/lang/String;Lorg/apache/fulcrum/cache/CachedObject;)V" line="183"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="removeObject" desc="(Ljava/lang/String;)V" line="199"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getKeys" desc="()Ljava/util/List;" line="213"><counter type="INSTRUCTION" missed="
 2" covered="31"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="2" covered="7"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCachedObjects" desc="()Ljava/util/List;" line="238"><counter type="INSTRUCTION" missed="2" covered="35"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="2" covered="9"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="run" desc="()V" line="267"><counter type="INSTRUCTION" missed="1" covered="19"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="1" covered="7"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="clearCache" desc="()V" line="292"><counter type="INSTRUCTION" missed="36" covered="42"/><counter type="BRANCH" missed="6" covered="6"/><counter type="LIN
 E" missed="10" covered="9"/><counter type="COMPLEXITY" missed="4" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getNumberOfObjects" desc="()I" line="333"><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="getCacheSize" desc="()I" line="344"><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="flushCache" desc="()V" line="362"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="configure" desc="(Lorg/apache/avalon/framework/configuration/Configuration;)V" li
 ne="372"><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="initialize" desc="()V" line="384"><counter type="INSTRUCTION" missed="0" covered="24"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="dispose" desc="()V" line="402"><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="87" covered="244"/><counter type="BRANCH" missed="13" covered="21"/><counter type="LINE" missed="29" covered="67"/><counter type="COMPLEXITY" missed="10" covered="22"/><counter type="METHOD" missed="1" covered="14"/><counter type="CLASS" missed
 ="0" covered="1"/></class><class name="org/apache/fulcrum/cache/impl/EHCacheService" sourcefilename="EHCacheService.java"><method name="&lt;init&gt;" desc="()V" line="91"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="configure" desc="(Lorg/apache/avalon/framework/configuration/Configuration;)V" line="102"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="initialize" desc="()V" line="114"><counter type="INSTRUCTION" missed="7" covered="46"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="11"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name
 ="dispose" desc="()V" line="147"><counter type="INSTRUCTION" missed="0" covered="20"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="addObject" desc="(Ljava/lang/String;Lorg/apache/fulcrum/cache/CachedObject;)V" line="162"><counter type="INSTRUCTION" missed="4" covered="26"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="6"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="flushCache" desc="()V" line="183"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCachedObjects" desc="()Ljava/util/List;" line="192"><counter type="INSTRUCTION" missed="0" covered="31"/><counter type="BRANCH" missed
 ="1" covered="3"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCacheSize" desc="()I" line="214"><counter type="INSTRUCTION" missed="5" 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="getKeys" desc="()Ljava/util/List;" line="224"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getNumberOfObjects" desc="()I" line="234"><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="getObject" desc="(Ljava/lang/String
 ;)Lorg/apache/fulcrum/cache/CachedObject;" line="243"><counter type="INSTRUCTION" missed="41" covered="23"/><counter type="BRANCH" missed="8" covered="4"/><counter type="LINE" missed="14" covered="7"/><counter type="COMPLEXITY" missed="5" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="removeObject" desc="(Ljava/lang/String;)V" line="299"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="run" desc="()V" line="309"><counter type="INSTRUCTION" missed="24" covered="38"/><counter type="BRANCH" missed="8" covered="6"/><counter type="LINE" missed="8" covered="12"/><counter type="COMPLEXITY" missed="6" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="81" covered="229"/><counter type="BRANCH" missed="19" covered="15"/><counter type="LIN
 E" missed="25" covered="64"/><counter type="COMPLEXITY" missed="15" covered="15"/><counter type="METHOD" missed="1" covered="12"/><counter type="CLASS" missed="0" covered="1"/></class><class name="org/apache/fulcrum/cache/impl/JCSCacheService" sourcefilename="JCSCacheService.java"><method name="&lt;init&gt;" desc="()V" line="95"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="configure" desc="(Lorg/apache/avalon/framework/configuration/Configuration;)V" line="107"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="initialize" desc="()V" line="120"><counter type="INSTRUCTION" missed="0" covered="33"/><counter type="LINE" missed="0" covered="9"/><counte
 r type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="dispose" desc="()V" line="144"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getObject" desc="(Ljava/lang/String;)Lorg/apache/fulcrum/cache/CachedObject;" line="161"><counter type="INSTRUCTION" missed="41" covered="21"/><counter type="BRANCH" missed="8" covered="4"/><counter type="LINE" missed="14" covered="6"/><counter type="COMPLEXITY" missed="5" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="addObject" desc="(Ljava/lang/String;Lorg/apache/fulcrum/cache/CachedObject;)V" line="217"><counter type="INSTRUCTION" missed="38" covered="59"/><counter type="BRANCH" missed="3" covered="3"/><counter type="LINE" missed="6" covered="12"/><counter type="COMPLEXITY" missed="3" c
 overed="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="removeObject" desc="(Ljava/lang/String;)V" line="259"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getKeys" desc="()Ljava/util/List;" line="268"><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="getCachedObjects" desc="()Ljava/util/List;" line="279"><counter type="INSTRUCTION" missed="0" covered="33"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="run" desc="()V" line="299"><counter type="INSTRUCTION" mi
 ssed="17" covered="44"/><counter type="BRANCH" missed="6" covered="8"/><counter type="LINE" missed="5" covered="13"/><counter type="COMPLEXITY" missed="4" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCacheSize" desc="()I" line="348"><counter type="INSTRUCTION" missed="43" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getNumberOfObjects" desc="()I" line="373"><counter type="INSTRUCTION" missed="0" covered="25"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="flushCache" desc="()V" line="392"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COM
 PLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="86"><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><counter type="INSTRUCTION" missed="139" covered="286"/><counter type="BRANCH" missed="21" covered="21"/><counter type="LINE" missed="33" covered="75"/><counter type="COMPLEXITY" missed="16" covered="19"/><counter type="METHOD" missed="1" covered="13"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="JCSCacheService.java"><line nr="86" mi="0" ci="3" mb="0" cb="0"/><line nr="95" mi="0" ci="2" mb="0" cb="0"/><line nr="97" mi="0" ci="1" mb="0" cb="0"/><line nr="107" mi="0" ci="5" mb="0" cb="0"/><line nr="108" mi="0" ci="2" mb="0" cb="0"/><line nr="109" mi="0" ci="7" mb="0" cb="0"/><line nr="110" mi="0" ci="7" mb="0" cb="0"/><
 line nr="112" mi="0" ci="1" mb="0" cb="0"/><line nr="120" mi="0" ci="3" mb="0" cb="0"/><line nr="121" mi="0" ci="5" mb="0" cb="0"/><line nr="124" mi="0" ci="3" mb="0" cb="0"/><line nr="125" mi="0" ci="6" mb="0" cb="0"/><line nr="131" mi="0" ci="4" mb="0" cb="0"/><line nr="132" mi="0" ci="4" mb="0" cb="0"/><line nr="133" mi="0" ci="3" mb="0" cb="0"/><line nr="135" mi="0" ci="4" mb="0" cb="0"/><line nr="136" mi="0" ci="1" mb="0" cb="0"/><line nr="144" mi="0" ci="3" mb="0" cb="0"/><line nr="145" mi="0" ci="3" mb="0" cb="0"/><line nr="147" mi="0" ci="3" mb="0" cb="0"/><line nr="148" mi="0" ci="3" mb="0" cb="0"/><line nr="149" mi="0" ci="2" mb="0" cb="0"/><line nr="151" mi="0" ci="4" mb="0" cb="0"/><line nr="152" mi="0" ci="1" mb="0" cb="0"/><line nr="161" mi="0" ci="7" mb="0" cb="0"/><line nr="163" mi="0" ci="2" mb="0" cb="2"/><line nr="166" mi="0" ci="4" mb="0" cb="0"/><line nr="169" mi="0" ci="3" mb="1" cb="1"/><line nr="171" mi="3" ci="0" mb="2" cb="0"/><line nr="173" mi="3" ci="0" m
 b="0" cb="0"/><line nr="174" mi="3" ci="0" mb="2" cb="0"/><line nr="177" mi="3" ci="0" mb="0" cb="0"/><line nr="178" mi="4" ci="0" mb="0" cb="0"/><line nr="182" mi="2" ci="0" mb="0" cb="0"/><line nr="183" mi="3" ci="0" mb="2" cb="0"/><line nr="186" mi="3" ci="0" mb="0" cb="0"/><line nr="187" mi="4" ci="0" mb="0" cb="0"/><line nr="189" mi="1" ci="0" mb="0" cb="0"/><line nr="193" mi="3" ci="0" mb="0" cb="0"/><line nr="194" mi="4" ci="0" mb="0" cb="0"/><line nr="198" mi="0" ci="3" mb="1" cb="1"/><line nr="201" mi="3" ci="0" mb="0" cb="0"/><line nr="202" mi="2" ci="0" mb="0" cb="0"/><line nr="205" mi="0" ci="2" mb="0" cb="0"/><line nr="217" mi="0" ci="4" mb="1" cb="1"/><line nr="219" mi="12" ci="0" mb="0" cb="0"/><line nr="220" mi="1" ci="0" mb="0" cb="0"/><line nr="224" mi="5" ci="0" mb="0" cb="0"/><line nr="227" mi="0" ci="5" mb="0" cb="0"/><line nr="229" mi="0" ci="3" mb="1" cb="1"/><line nr="231" mi="4" ci="0" mb="0" cb="0"/><line nr="235" mi="0" ci="3" mb="0" cb="0"/><line nr="237"
  mi="0" ci="8" mb="0" cb="0"/><line nr="238" mi="0" ci="12" mb="0" cb="0"/><line nr="239" mi="1" ci="11" mb="1" cb="1"/><line nr="242" mi="0" ci="2" mb="0" cb="0"/><line nr="243" mi="0" ci="2" mb="0" cb="0"/><line nr="245" mi="0" ci="7" mb="0" cb="0"/><line nr="247" mi="1" ci="0" mb="0" cb="0"/><line nr="249" mi="14" ci="0" mb="0" cb="0"/><line nr="250" mi="0" ci="1" mb="0" cb="0"/><line nr="251" mi="0" ci="1" mb="0" cb="0"/><line nr="259" mi="0" ci="5" mb="0" cb="0"/><line nr="260" mi="0" ci="1" mb="0" cb="0"/><line nr="268" mi="0" ci="4" mb="0" cb="0"/><line nr="269" mi="0" ci="7" mb="0" cb="0"/><line nr="270" mi="0" ci="2" mb="0" cb="0"/><line nr="279" mi="0" ci="4" mb="0" cb="0"/><line nr="280" mi="0" ci="13" mb="0" cb="2"/><line nr="282" mi="0" ci="7" mb="0" cb="0"/><line nr="283" mi="0" ci="2" mb="1" cb="1"/><line nr="285" mi="0" ci="4" mb="0" cb="0"/><line nr="287" mi="0" ci="1" mb="0" cb="0"/><line nr="289" mi="0" ci="2" mb="0" cb="0"/><line nr="299" mi="0" ci="3" mb="0" cb=
 "2"/><line nr="305" mi="0" ci="3" mb="0" cb="0"/><line nr="307" mi="0" ci="1" mb="0" cb="0"/><line nr="309" mi="0" ci="3" mb="1" cb="1"/><line nr="311" mi="0" ci="1" mb="0" cb="0"/><line nr="313" mi="0" ci="1" mb="0" cb="0"/><line nr="315" mi="0" ci="13" mb="0" cb="2"/><line nr="317" mi="0" ci="7" mb="0" cb="0"/><line nr="318" mi="0" ci="2" mb="0" cb="2"/><line nr="320" mi="0" ci="4" mb="0" cb="0"/><line nr="324" mi="0" ci="3" mb="1" cb="1"/><line nr="326" mi="3" ci="0" mb="0" cb="0"/><line nr="327" mi="3" ci="0" mb="2" cb="0"/><line nr="329" mi="6" ci="0" mb="0" cb="0"/><line nr="331" mi="3" ci="0" mb="2" cb="0"/><line nr="333" mi="2" ci="0" mb="0" cb="0"/><line nr="337" mi="0" ci="2" mb="0" cb="0"/><line nr="339" mi="0" ci="1" mb="0" cb="0"/><line nr="348" mi="4" ci="0" mb="0" cb="0"/><line nr="349" mi="5" ci="0" mb="0" cb="0"/><line nr="350" mi="5" ci="0" mb="0" cb="0"/><line nr="352" mi="10" ci="0" mb="2" cb="0"/><line nr="354" mi="7" ci="0" mb="0" cb="0"/><line nr="355" mi="1" 
 ci="0" mb="0" cb="0"/><line nr="357" mi="2" ci="0" mb="0" cb="0"/><line nr="364" mi="9" ci="0" mb="0" cb="0"/><line nr="373" mi="0" ci="2" mb="0" cb="0"/><line nr="375" mi="0" ci="13" mb="0" cb="2"/><line nr="377" mi="0" ci="6" mb="1" cb="1"/><line nr="379" mi="0" ci="1" mb="0" cb="0"/><line nr="381" mi="0" ci="1" mb="0" cb="0"/><line nr="383" mi="0" ci="2" mb="0" cb="0"/><line nr="392" mi="0" ci="4" mb="0" cb="0"/><line nr="393" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="139" covered="286"/><counter type="BRANCH" missed="21" covered="21"/><counter type="LINE" missed="33" covered="75"/><counter type="COMPLEXITY" missed="16" covered="19"/><counter type="METHOD" missed="1" covered="13"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="EHCacheService.java"><line nr="91" mi="0" ci="2" mb="0" cb="0"/><line nr="93" mi="0" ci="1" mb="0" cb="0"/><line nr="102" mi="0" ci="5" mb="0" cb="0"/><line nr="103" mi="0" ci="2" mb="0" cb="0"/><line nr=
 "104" mi="0" ci="7" mb="0" cb="0"/><line nr="105" mi="0" ci="7" mb="0" cb="0"/><line nr="106" mi="0" ci="1" mb="0" cb="0"/><line nr="114" mi="0" ci="3" mb="1" cb="1"/><line nr="116" mi="0" ci="5" mb="0" cb="0"/><line nr="117" mi="0" ci="6" mb="0" cb="0"/><line nr="121" mi="7" ci="0" mb="0" cb="0"/><line nr="124" mi="0" ci="7" mb="0" cb="0"/><line nr="127" mi="0" ci="3" mb="0" cb="0"/><line nr="128" mi="0" ci="6" mb="0" cb="0"/><line nr="134" mi="0" ci="4" mb="0" cb="0"/><line nr="135" mi="0" ci="4" mb="0" cb="0"/><line nr="136" mi="0" ci="3" mb="0" cb="0"/><line nr="138" mi="0" ci="4" mb="0" cb="0"/><line nr="139" mi="0" ci="1" mb="0" cb="0"/><line nr="147" mi="0" ci="3" mb="0" cb="0"/><line nr="148" mi="0" ci="3" mb="0" cb="0"/><line nr="150" mi="0" ci="3" mb="0" cb="0"/><line nr="151" mi="0" ci="3" mb="0" cb="0"/><line nr="152" mi="0" ci="3" mb="0" cb="0"/><line nr="153" mi="0" ci="4" mb="0" cb="0"/><line nr="154" mi="0" ci="1" mb="0" cb="0"/><line nr="162" mi="0" ci="6" mb="0" cb
 ="0"/><line nr="164" mi="0" ci="3" mb="1" cb="1"/><line nr="166" mi="4" ci="0" mb="0" cb="0"/><line nr="170" mi="0" ci="3" mb="0" cb="0"/><line nr="171" mi="0" ci="9" mb="0" cb="0"/><line nr="174" mi="0" ci="4" mb="0" cb="0"/><line nr="175" mi="0" ci="1" mb="0" cb="0"/><line nr="183" mi="0" ci="3" mb="0" cb="0"/><line nr="184" mi="0" ci="1" mb="0" cb="0"/><line nr="192" mi="0" ci="4" mb="0" cb="0"/><line nr="194" mi="0" ci="11" mb="0" cb="2"/><line nr="196" mi="0" ci="5" mb="0" cb="0"/><line nr="198" mi="0" ci="2" mb="1" cb="1"/><line nr="200" mi="0" ci="6" mb="0" cb="0"/><line nr="202" mi="0" ci="1" mb="0" cb="0"/><line nr="204" mi="0" ci="2" mb="0" cb="0"/><line nr="214" mi="5" ci="0" mb="0" cb="0"/><line nr="224" mi="0" ci="4" mb="0" cb="0"/><line nr="225" mi="0" ci="2" mb="0" cb="0"/><line nr="234" mi="0" ci="4" mb="0" cb="0"/><line nr="243" mi="0" ci="5" mb="0" cb="0"/><line nr="245" mi="0" ci="2" mb="0" cb="2"/><line nr="248" mi="0" ci="4" mb="0" cb="0"/><line nr="252" mi="0" 
 ci="4" mb="0" cb="0"/><line nr="254" mi="0" ci="3" mb="1" cb="1"/><line nr="256" mi="3" ci="0" mb="2" cb="0"/><line nr="258" mi="3" ci="0" mb="0" cb="0"/><line nr="259" mi="3" ci="0" mb="2" cb="0"/><line nr="262" mi="3" ci="0" mb="0" cb="0"/><line nr="263" mi="4" ci="0" mb="0" cb="0"/><line nr="267" mi="2" ci="0" mb="0" cb="0"/><line nr="268" mi="3" ci="0" mb="2" cb="0"/><line nr="271" mi="3" ci="0" mb="0" cb="0"/><line nr="272" mi="4" ci="0" mb="0" cb="0"/><line nr="274" mi="1" ci="0" mb="0" cb="0"/><line nr="278" mi="3" ci="0" mb="0" cb="0"/><line nr="279" mi="4" ci="0" mb="0" cb="0"/><line nr="283" mi="0" ci="3" mb="1" cb="1"/><line nr="286" mi="3" ci="0" mb="0" cb="0"/><line nr="287" mi="2" ci="0" mb="0" cb="0"/><line nr="290" mi="0" ci="2" mb="0" cb="0"/><line nr="299" mi="0" ci="5" mb="0" cb="0"/><line nr="300" mi="0" ci="1" mb="0" cb="0"/><line nr="309" mi="0" ci="3" mb="1" cb="1"/><line nr="315" mi="0" ci="3" mb="0" cb="0"/><line nr="317" mi="0" ci="1" mb="0" cb="0"/><line n
 r="319" mi="0" ci="3" mb="1" cb="1"/><line nr="321" mi="0" ci="1" mb="0" cb="0"/><line nr="323" mi="0" ci="1" mb="0" cb="0"/><line nr="325" mi="0" ci="11" mb="0" cb="2"/><line nr="327" mi="0" ci="5" mb="0" cb="0"/><line nr="329" mi="0" ci="2" mb="1" cb="1"/><line nr="331" mi="5" ci="0" mb="0" cb="0"/><line nr="332" mi="1" ci="0" mb="0" cb="0"/><line nr="335" mi="0" ci="3" mb="0" cb="0"/><line nr="337" mi="0" ci="3" mb="1" cb="1"/><line nr="339" mi="3" ci="0" mb="0" cb="0"/><line nr="340" mi="3" ci="0" mb="2" cb="0"/><line nr="342" mi="6" ci="0" mb="0" cb="0"/><line nr="344" mi="3" ci="0" mb="2" cb="0"/><line nr="346" mi="2" ci="0" mb="0" cb="0"/><line nr="349" mi="0" ci="2" mb="0" cb="0"/><line nr="351" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="81" covered="229"/><counter type="BRANCH" missed="19" covered="15"/><counter type="LINE" missed="25" covered="64"/><counter type="COMPLEXITY" missed="15" covered="15"/><counter type="METHOD" missed="1" covered="12"/><co
 unter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="DefaultGlobalCacheService.java"><line nr="84" mi="0" ci="3" mb="0" cb="0"/><line nr="103" mi="0" ci="2" mb="0" cb="0"/><line nr="105" mi="0" ci="1" mb="0" cb="0"/><line nr="114" mi="0" ci="3" mb="0" cb="0"/><line nr="133" mi="0" ci="6" mb="0" cb="0"/><line nr="134" mi="0" ci="2" mb="0" cb="2"/><line nr="137" mi="0" ci="4" mb="0" cb="0"/><line nr="139" mi="0" ci="3" mb="0" cb="2"/><line nr="141" mi="0" ci="3" mb="1" cb="1"/><line nr="143" mi="3" ci="0" mb="0" cb="0"/><line nr="144" mi="3" ci="0" mb="2" cb="0"/><line nr="146" mi="4" ci="0" mb="0" cb="0"/><line nr="149" mi="2" ci="0" mb="0" cb="0"/><line nr="150" mi="3" ci="0" mb="2" cb="0"/><line nr="152" mi="4" ci="0" mb="0" cb="0"/><line nr="154" mi="1" ci="0" mb="0" cb="0"/><line nr="158" mi="0" ci="4" mb="0" cb="0"/><line nr="161" mi="0" ci="3" mb="1" cb="1"/><line nr="164" mi="3" ci="0" mb="0" cb="0"/><line nr="165" mi="2" ci="0" mb="0" cb="0"/><line nr="16
 7" mi="0" ci="2" mb="0" cb="0"/><line nr="183" mi="0" ci="5" mb="0" cb="2"/><line nr="185" mi="0" ci="5" mb="0" cb="0"/><line nr="187" mi="0" ci="6" mb="0" cb="0"/><line nr="188" mi="0" ci="1" mb="0" cb="0"/><line nr="199" mi="0" ci="5" mb="0" cb="0"/><line nr="200" mi="0" ci="1" mb="0" cb="0"/><line nr="213" mi="0" ci="7" mb="0" cb="0"/><line nr="214" mi="0" ci="12" mb="0" cb="2"/><line nr="218" mi="0" ci="4" mb="0" cb="0"/><line nr="220" mi="1" ci="0" mb="0" cb="0"/><line nr="223" mi="1" ci="0" mb="0" cb="0"/><line nr="224" mi="0" ci="1" mb="0" cb="0"/><line nr="225" mi="0" ci="4" mb="0" cb="0"/><line nr="226" mi="0" ci="1" mb="0" cb="0"/><line nr="227" mi="0" ci="2" mb="0" cb="0"/><line nr="238" mi="0" ci="7" mb="0" cb="0"/><line nr="239" mi="0" ci="12" mb="0" cb="2"/><line nr="241" mi="0" ci="2" mb="0" cb="0"/><line nr="245" mi="0" ci="4" mb="0" cb="0"/><line nr="246" mi="0" ci="2" mb="1" cb="1"/><line nr="248" mi="0" ci="4" mb="0" cb="0"/><line nr="251" mi="1" ci="0" mb="0" cb=
 "0"/><line nr="254" mi="1" ci="0" mb="0" cb="0"/><line nr="255" mi="0" ci="1" mb="0" cb="0"/><line nr="256" mi="0" ci="1" mb="0" cb="0"/><line nr="257" mi="0" ci="2" mb="0" cb="0"/><line nr="267" mi="0" ci="3" mb="0" cb="2"/><line nr="271" mi="0" ci="4" mb="0" cb="0"/><line nr="275" mi="0" ci="4" mb="0" cb="0"/><line nr="277" mi="1" ci="0" mb="0" cb="0"/><line nr="280" mi="0" ci="1" mb="0" cb="0"/><line nr="281" mi="0" ci="3" mb="0" cb="0"/><line nr="283" mi="0" ci="3" mb="0" cb="0"/><line nr="285" mi="0" ci="1" mb="0" cb="0"/><line nr="292" mi="0" ci="5" mb="0" cb="0"/><line nr="295" mi="0" ci="12" mb="0" cb="2"/><line nr="297" mi="0" ci="6" mb="0" cb="0"/><line nr="298" mi="0" ci="3" mb="1" cb="1"/><line nr="300" mi="3" ci="0" mb="0" cb="0"/><line nr="301" mi="3" ci="0" mb="2" cb="0"/><line nr="303" mi="6" ci="0" mb="0" cb="0"/><line nr="305" mi="3" ci="0" mb="2" cb="0"/><line nr="308" mi="4" ci="0" mb="0" cb="0"/><line nr="310" mi="1" ci="0" mb="0" cb="0"/><line nr="311" mi="0" c
 i="3" mb="0" cb="2"/><line nr="313" mi="0" ci="5" mb="0" cb="0"/><line nr="315" mi="0" ci="1" mb="0" cb="0"/><line nr="317" mi="4" ci="6" mb="1" cb="1"/><line nr="319" mi="6" ci="0" mb="0" cb="0"/><line nr="320" mi="3" ci="0" mb="0" cb="0"/><line nr="321" mi="2" ci="0" mb="0" cb="0"/><line nr="322" mi="1" ci="0" mb="0" cb="0"/><line nr="323" mi="0" ci="1" mb="0" cb="0"/><line nr="333" mi="0" ci="4" mb="0" cb="0"/><line nr="344" mi="4" ci="0" mb="0" cb="0"/><line nr="345" mi="5" ci="0" mb="0" cb="0"/><line nr="346" mi="4" ci="0" mb="0" cb="0"/><line nr="347" mi="2" ci="0" mb="0" cb="0"/><line nr="353" mi="6" ci="0" mb="0" cb="0"/><line nr="362" mi="0" ci="3" mb="0" cb="0"/><line nr="363" mi="0" ci="1" mb="0" cb="0"/><line nr="372" mi="0" ci="6" mb="0" cb="0"/><line nr="374" mi="0" ci="6" mb="0" cb="0"/><line nr="376" mi="0" ci="1" mb="0" cb="0"/><line nr="384" mi="0" ci="7" mb="0" cb="0"/><line nr="386" mi="0" ci="3" mb="0" cb="0"/><line nr="387" mi="0" ci="6" mb="0" cb="0"/><line nr
 ="392" mi="0" ci="4" mb="0" cb="0"/><line nr="393" mi="0" ci="3" mb="0" cb="0"/><line nr="394" mi="0" ci="1" mb="0" cb="0"/><line nr="402" mi="0" ci="4" mb="0" cb="0"/><line nr="404" mi="0" ci="3" mb="0" cb="0"/><line nr="405" mi="0" ci="2" mb="0" cb="0"/><line nr="406" mi="0" ci="3" mb="0" cb="0"/><line nr="407" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="87" covered="244"/><counter type="BRANCH" missed="13" covered="21"/><counter type="LINE" missed="29" covered="67"/><counter type="COMPLEXITY" missed="10" covered="22"/><counter type="METHOD" missed="1" covered="14"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="307" covered="759"/><counter type="BRANCH" missed="53" covered="57"/><counter type="LINE" missed="87" covered="206"/><counter type="COMPLEXITY" missed="41" covered="56"/><counter type="METHOD" missed="3" covered="39"/><counter type="CLASS" missed="0" covered="3"/></package><package name="org/apache/fulcru
 m/cache"><class name="org/apache/fulcrum/cache/RefreshableCachedObject" sourcefilename="RefreshableCachedObject.java"><method name="&lt;init&gt;" desc="(Lorg/apache/fulcrum/cache/Refreshable;)V" line="53"><counter type="INSTRUCTION" missed="10" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;init&gt;" desc="(Lorg/apache/fulcrum/cache/Refreshable;J)V" line="53"><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setTTL" desc="(J)V" line="95"><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getTTL" desc="()J" line="107"><
 counter type="INSTRUCTION" missed="9" 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="touch" desc="()V" line="117"><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="isUntouched" desc="()Z" line="130"><counter type="INSTRUCTION" missed="20" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="refresh" desc="()V" line="145"><counter type="INSTRUCTION" missed="17" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></me
 thod><method name="getLastAccess" desc="()J" line="155"><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="setLastAccess" desc="(J)V" line="160"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="96" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="31" covered="0"/><counter type="COMPLEXITY" missed="10" covered="0"/><counter type="METHOD" missed="9" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="org/apache/fulcrum/cache/CachedObject" sourcefilename="CachedObject.java"><method name="&lt;init&gt;" desc="(Ljava/lang/Object;)V" line="76"><counter type="INSTRUCTION" 
 missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Ljava/lang/Object;J)V" line="54"><counter type="INSTRUCTION" missed="0" covered="30"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getContents" desc="()Ljava/lang/Object;" line="109"><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="getCreated" desc="()J" line="119"><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" c
 overed="0"/></method><method name="getExpires" desc="()J" line="129"><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="setExpires" desc="(J)V" line="140"><counter type="INSTRUCTION" missed="34" covered="0"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setStale" desc="(Z)V" line="166"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isStale" desc="()Z" line="177"><counter type="INSTRUCTION" missed="0" covered="26"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed
 ="0" covered="5"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="37" covered="72"/><counter type="BRANCH" missed="7" covered="5"/><counter type="LINE" missed="8" covered="20"/><counter type="COMPLEXITY" missed="6" covered="8"/><counter type="METHOD" missed="2" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="org/apache/fulcrum/cache/GlobalCacheService" sourcefilename="GlobalCacheService.java"><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="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" mi
 ssed="0" covered="1"/></class><class name="org/apache/fulcrum/cache/ObjectExpiredException" sourcefilename="ObjectExpiredException.java"><method name="&lt;init&gt;" desc="()V" line="29"><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><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"/><counter type="CLASS" missed="0" covered="1"/></class><class name="org/apache/fulcrum/cache/Refreshable" sourcefilename="Refreshable.java"/><sourcefile name="CachedObject.java"><line nr="54" mi="0" ci="3" mb="0" cb="0"/><line nr="66" mi="0" ci="5" mb="0" cb="0"/><line nr="76" mi="0" ci="4" mb="0" cb="0"/><line nr="77" mi="0" ci="1" mb="0" cb="0"/><line nr="89" mi="0" ci="2" mb="0" cb="0"/><line nr="90" mi="0"
  ci="4" mb="0" cb="2"/><line nr="92" mi="0" ci="6" mb="0" cb="0"/><line nr="94" mi="0" ci="3" mb="0" cb="0"/><line nr="97" mi="0" ci="3" mb="0" cb="0"/><line nr="99" mi="0" ci="3" mb="0" cb="0"/><line nr="100" mi="0" ci="1" mb="0" cb="0"/><line nr="109" mi="0" ci="3" mb="0" cb="0"/><line nr="119" mi="3" ci="0" mb="0" cb="0"/><line nr="129" mi="0" ci="3" mb="0" cb="0"/><line nr="140" mi="4" ci="0" mb="2" cb="0"/><line nr="142" mi="6" ci="0" mb="0" cb="0"/><line nr="146" mi="3" ci="0" mb="0" cb="0"/><line nr="148" mi="4" ci="0" mb="2" cb="0"/><line nr="150" mi="4" ci="0" mb="0" cb="0"/><line nr="154" mi="12" ci="0" mb="2" cb="0"/><line nr="156" mi="1" ci="0" mb="0" cb="0"/><line nr="166" mi="0" ci="4" mb="0" cb="0"/><line nr="167" mi="0" ci="1" mb="0" cb="0"/><line nr="177" mi="0" ci="2" mb="0" cb="0"/><line nr="178" mi="0" ci="5" mb="1" cb="1"/><line nr="180" mi="0" ci="13" mb="0" cb="2"/><line nr="181" mi="0" ci="4" mb="0" cb="0"/><line nr="183" mi="0" ci="2" mb="0" cb="0"/><counter
  type="INSTRUCTION" missed="37" covered="72"/><counter type="BRANCH" missed="7" covered="5"/><counter type="LINE" missed="8" covered="20"/><counter type="COMPLEXITY" missed="6" covered="8"/><counter type="METHOD" missed="2" covered="6"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="Refreshable.java"/><sourcefile name="GlobalCacheService.java"><line nr="35" mi="0" ci="4" mb="0" cb="0"/><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"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ObjectExpiredException.java"><line nr="29" mi="0" ci="3" mb="0" cb="0"/><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"/><counter type="CLASS" missed="0" covere
 d="1"/></sourcefile><sourcefile name="RefreshableCachedObject.java"><line nr="53" mi="6" ci="0" mb="0" cb="0"/><line nr="68" mi="3" ci="0" mb="0" cb="0"/><line nr="69" mi="3" ci="0" mb="0" cb="0"/><line nr="70" mi="1" ci="0" mb="0" cb="0"/><line nr="83" mi="4" ci="0" mb="0" cb="0"/><line nr="84" mi="3" ci="0" mb="0" cb="0"/><line nr="85" mi="1" ci="0" mb="0" cb="0"/><line nr="95" mi="4" ci="0" mb="0" cb="0"/><line nr="96" mi="3" ci="0" mb="0" cb="0"/><line nr="97" mi="3" ci="0" mb="0" cb="0"/><line nr="98" mi="1" ci="0" mb="0" cb="0"/><line nr="107" mi="4" ci="0" mb="0" cb="0"/><line nr="108" mi="5" ci="0" mb="0" cb="0"/><line nr="117" mi="4" ci="0" mb="0" cb="0"/><line nr="118" mi="3" ci="0" mb="0" cb="0"/><line nr="119" mi="3" ci="0" mb="0" cb="0"/><line nr="120" mi="1" ci="0" mb="0" cb="0"/><line nr="130" mi="2" ci="0" mb="0" cb="0"/><line nr="131" mi="4" ci="0" mb="0" cb="0"/><line nr="132" mi="8" ci="0" mb="2" cb="0"/><line nr="134" mi="2" ci="0" mb="0" cb="0"/><line nr="136" m
 i="4" ci="0" mb="0" cb="0"/><line nr="145" mi="4" ci="0" mb="0" cb="0"/><line nr="146" mi="4" ci="0" mb="0" cb="0"/><line nr="148" mi="3" ci="0" mb="0" cb="0"/><line nr="149" mi="2" ci="0" mb="0" cb="0"/><line nr="150" mi="3" ci="0" mb="0" cb="0"/><line nr="151" mi="1" ci="0" mb="0" cb="0"/><line nr="155" mi="3" ci="0" mb="0" cb="0"/><line nr="160" mi="3" ci="0" mb="0" cb="0"/><line nr="161" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="96" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="31" covered="0"/><counter type="COMPLEXITY" missed="10" covered="0"/><counter type="METHOD" missed="9" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="133" covered="79"/><counter type="BRANCH" missed="9" covered="5"/><counter type="LINE" missed="39" covered="22"/><counter type="COMPLEXITY" missed="16" covered="10"/><counter type="METHOD" missed="11" covered="8"/><counter type="CLAS
 S" missed="1" covered="3"/></package><counter type="INSTRUCTION" missed="440" covered="838"/><counter type="BRANCH" missed="62" covered="62"/><counter type="LINE" missed="126" covered="228"/><counter type="COMPLEXITY" missed="57" covered="66"/><counter type="METHOD" missed="14" covered="47"/><counter type="CLASS" missed="1" covered="6"/></report>
\ No newline at end of file

Added: websites/production/turbine/content/fulcrum/fulcrum-cache/jacoco/org.apache.fulcrum.cache.impl/DefaultGlobalCacheService.html
==============================================================================
--- websites/production/turbine/content/fulcrum/fulcrum-cache/jacoco/org.apache.fulcrum.cache.impl/DefaultGlobalCacheService.html (added)
+++ websites/production/turbine/content/fulcrum/fulcrum-cache/jacoco/org.apache.fulcrum.cache.impl/DefaultGlobalCacheService.html Wed Aug  4 06:41:15 2021
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>DefaultGlobalCacheService</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Fulcrum Cache</a> &gt; <a href="index.html" class="el_package">org.apache.fulcrum.cache.impl</a> &gt; <span class="el_class">DefaultGlobalCacheService</span></div><h1>DefaultGlobalCacheService</h1><table class="coverage" cellsp
 acing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">87 of 331</td><td class="ctr2">73%</td><td class="bar">13 of 34</td><td class="ctr2">61%</td><td class="ctr
 1">10</td><td class="ctr2">32</td><td class="ctr1">29</td><td class="ctr2">96</td><td class="ctr1">1</td><td class="ctr2">15</td></tr></tfoot><tbody><tr><td id="a1"><a href="DefaultGlobalCacheService.java.html#L292" class="el_method">clearCache()</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="55" height="10" title="36" alt="36"/><img src="../jacoco-resources/greenbar.gif" width="64" height="10" title="42" alt="42"/></td><td class="ctr2" id="c12">53%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="60" height="10" title="6" alt="6"/><img src="../jacoco-resources/greenbar.gif" width="60" height="10" title="6" alt="6"/></td><td class="ctr2" id="e4">50%</td><td class="ctr1" id="f0">4</td><td class="ctr2" id="g0">7</td><td class="ctr1" id="h0">10</td><td class="ctr2" id="i0">19</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a11"><a href="DefaultGlobalCacheService.java.html#L133" class="el_me
 thod">getObject(String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="38" height="10" title="25" alt="25"/><img src="../jacoco-resources/greenbar.gif" width="41" height="10" title="27" alt="27"/></td><td class="ctr2" id="c13">51%</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="60" height="10" title="6" alt="6"/><img src="../jacoco-resources/greenbar.gif" width="60" height="10" title="6" alt="6"/></td><td class="ctr2" id="e5">50%</td><td class="ctr1" id="f1">4</td><td class="ctr2" id="g1">7</td><td class="ctr1" id="h1">9</td><td class="ctr2" id="i1">17</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a8"><a href="DefaultGlobalCacheService.java.html#L344" class="el_method">getCacheSize()</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="32" height="10" title="21" alt="21"/></td><td class="ctr2" id="c14">0%</td><td class="bar" id="d6"/><td class="ctr2" id="e6
 ">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h2">5</td><td class="ctr2" id="i6">5</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a7"><a href="DefaultGlobalCacheService.java.html#L238" class="el_method">getCachedObjects()</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="3" height="10" title="2" alt="2"/><img src="../jacoco-resources/greenbar.gif" width="53" height="10" title="35" alt="35"/></td><td class="ctr2" id="c10">94%</td><td class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="10" height="10" title="1" alt="1"/><img src="../jacoco-resources/greenbar.gif" width="30" height="10" title="3" alt="3"/></td><td class="ctr2" id="e3">75%</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g2">3</td><td class="ctr1" id="h3">2</td><td class="ctr2" id="i2">11</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a9"><a href="D
 efaultGlobalCacheService.java.html#L213" class="el_method">getKeys()</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="3" height="10" title="2" alt="2"/><img src="../jacoco-resources/greenbar.gif" width="47" height="10" title="31" alt="31"/></td><td class="ctr2" id="c11">93%</td><td class="bar" id="d3"><img src="../jacoco-resources/greenbar.gif" width="20" height="10" title="2" alt="2"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" id="f4">0</td><td class="ctr2" id="g3">2</td><td class="ctr1" id="h4">2</td><td class="ctr2" id="i3">9</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a14"><a href="DefaultGlobalCacheService.java.html#L267" class="el_method">run()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="1" height="10" title="1" alt="1"/><img src="../jacoco-resources/greenbar.gif" width="29" height="10" title="19" alt="19"/></td><td class="ctr2" id="c9">95%</td><td class="ba
 r" id="d4"><img src="../jacoco-resources/greenbar.gif" width="20" height="10" title="2" alt="2"/></td><td class="ctr2" id="e1">100%</td><td class="ctr1" id="f5">0</td><td class="ctr2" id="g4">2</td><td class="ctr1" id="h5">1</td><td class="ctr2" id="i4">8</td><td class="ctr1" id="j5">0</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a12"><a href="DefaultGlobalCacheService.java.html#L384" class="el_method">initialize()</a></td><td class="bar" id="b6"><img src="../jacoco-resources/greenbar.gif" width="36" height="10" title="24" alt="24"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f6">0</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h6">0</td><td class="ctr2" id="i5">6</td><td class="ctr1" id="j6">0</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a0"><a href="DefaultGlobalCacheService.java.html#L183" class="el_method">addObject(String, CachedObject)</a></td><td class="bar" id="b7"><img src="../j
 acoco-resources/greenbar.gif" width="26" height="10" title="17" alt="17"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d5"><img src="../jacoco-resources/greenbar.gif" width="20" height="10" title="2" alt="2"/></td><td class="ctr2" id="e2">100%</td><td class="ctr1" id="f7">0</td><td class="ctr2" id="g5">2</td><td class="ctr1" id="h7">0</td><td class="ctr2" id="i8">4</td><td class="ctr1" id="j7">0</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a2"><a href="DefaultGlobalCacheService.java.html#L372" class="el_method">configure(Configuration)</a></td><td class="bar" id="b8"><img src="../jacoco-resources/greenbar.gif" width="20" height="10" title="13" alt="13"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">0</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h8">0</td><td class="ctr2" id="i9">3</td><td class="ctr1" id="j8">0</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a4"><a href="D
 efaultGlobalCacheService.java.html#L402" class="el_method">dispose()</a></td><td class="bar" id="b9"><img src="../jacoco-resources/greenbar.gif" width="20" height="10" title="13" alt="13"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f9">0</td><td class="ctr2" id="g9">1</td><td class="ctr1" id="h9">0</td><td class="ctr2" id="i7">5</td><td class="ctr1" id="j9">0</td><td class="ctr2" id="k9">1</td></tr><tr><td id="a3"><a href="DefaultGlobalCacheService.java.html#L84" class="el_method">DefaultGlobalCacheService()</a></td><td class="bar" id="b10"><img src="../jacoco-resources/greenbar.gif" width="9" height="10" title="6" alt="6"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f10">0</td><td class="ctr2" id="g10">1</td><td class="ctr1" id="h10">0</td><td class="ctr2" id="i10">3</td><td class="ctr1" id="j10">0</td><td class="ctr2" id="k10">1</td
 ></tr><tr><td id="a13"><a href="DefaultGlobalCacheService.java.html#L199" class="el_method">removeObject(String)</a></td><td class="bar" id="b11"><img src="../jacoco-resources/greenbar.gif" width="9" height="10" title="6" alt="6"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d11"/><td class="ctr2" id="e11">n/a</td><td class="ctr1" id="f11">0</td><td class="ctr2" id="g11">1</td><td class="ctr1" id="h11">0</td><td class="ctr2" id="i11">2</td><td class="ctr1" id="j11">0</td><td class="ctr2" id="k11">1</td></tr><tr><td id="a10"><a href="DefaultGlobalCacheService.java.html#L333" class="el_method">getNumberOfObjects()</a></td><td class="bar" id="b12"><img src="../jacoco-resources/greenbar.gif" width="6" height="10" title="4" alt="4"/></td><td class="ctr2" id="c6">100%</td><td class="bar" id="d12"/><td class="ctr2" id="e12">n/a</td><td class="ctr1" id="f12">0</td><td class="ctr2" id="g12">1</td><td class="ctr1" id="h12">0</td><td class="ctr2" id="i13">1</td><td class="ctr1" i
 d="j12">0</td><td class="ctr2" id="k12">1</td></tr><tr><td id="a5"><a href="DefaultGlobalCacheService.java.html#L362" class="el_method">flushCache()</a></td><td class="bar" id="b13"><img src="../jacoco-resources/greenbar.gif" width="6" height="10" title="4" alt="4"/></td><td class="ctr2" id="c7">100%</td><td class="bar" id="d13"/><td class="ctr2" id="e13">n/a</td><td class="ctr1" id="f13">0</td><td class="ctr2" id="g13">1</td><td class="ctr1" id="h13">0</td><td class="ctr2" id="i12">2</td><td class="ctr1" id="j13">0</td><td class="ctr2" id="k13">1</td></tr><tr><td id="a6"><a href="DefaultGlobalCacheService.java.html#L114" class="el_method">getCacheCheckFrequency()</a></td><td class="bar" id="b14"><img src="../jacoco-resources/greenbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c8">100%</td><td class="bar" id="d14"/><td class="ctr2" id="e14">n/a</td><td class="ctr1" id="f14">0</td><td class="ctr2" id="g14">1</td><td class="ctr1" id="h14">0</td><td class="
 ctr2" id="i14">1</td><td class="ctr1" id="j14">0</td><td class="ctr2" id="k14">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file

Added: websites/production/turbine/content/fulcrum/fulcrum-cache/jacoco/org.apache.fulcrum.cache.impl/DefaultGlobalCacheService.java.html
==============================================================================
--- websites/production/turbine/content/fulcrum/fulcrum-cache/jacoco/org.apache.fulcrum.cache.impl/DefaultGlobalCacheService.java.html (added)
+++ websites/production/turbine/content/fulcrum/fulcrum-cache/jacoco/org.apache.fulcrum.cache.impl/DefaultGlobalCacheService.java.html Wed Aug  4 06:41:15 2021
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>DefaultGlobalCacheService.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Fulcrum Cache</a> &gt; <a href="index.source.html" class="el_package">org.apache.fulcrum.cache.impl</a> &gt; <span class="el_so
 urce">DefaultGlobalCacheService.java</span></div><h1>DefaultGlobalCacheService.java</h1><pre class="source lang-java linenums">package org.apache.fulcrum.cache.impl;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * &quot;License&quot;); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.activity.Initializable;
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.fulcrum.cache.CachedObject;
+import org.apache.fulcrum.cache.GlobalCacheService;
+import org.apache.fulcrum.cache.ObjectExpiredException;
+import org.apache.fulcrum.cache.RefreshableCachedObject;
+
+/**
+ * This Service functions as a Global Cache. A global cache is a good place to
+ * store items that you may need to access often but don't necessarily need (or
+ * want) to fetch from the database everytime. A good example would be a look up
+ * table of States that you store in a database and use throughout your
+ * application. Since information about States doesn't change very often, you
+ * could store this information in the Global Cache and decrease the overhead of
+ * hitting the database everytime you need State information.
+ *
+ * @author &lt;a href=&quot;mailto:mbryson@mont.mindspring.com&quot;&gt;Dave Bryson&lt;/a&gt;
+ * @author &lt;a href=&quot;mailto:jon@clearink.com&quot;&gt;Jon S. Stevens&lt;/a&gt;
+ * @author &lt;a href=&quot;mailto:john@zenplex.com&quot;&gt;John Thorhauer&lt;/a&gt;
+ * @author &lt;a href=&quot;mailto:hps@intermeta.de&quot;&gt;Henning P. Schmiedehausen&lt;/a&gt;
+ * @author &lt;a href=&quot;mailto:epugh@upstate.com&quot;&gt;Eric Pugh&lt;/a&gt;
+ * @author &lt;a href=&quot;mailto:peter@courefreshableCachedObjectux.biz&quot;&gt;Peter CourefreshableCachedObjectux&lt;/a&gt;
+ * @version $Id: DefaultGlobalCacheService.java 1890338 2021-05-31 10:31:19Z gk $
+ */
+public class DefaultGlobalCacheService extends AbstractLogEnabled implements
+        GlobalCacheService, Runnable, Configurable, Initializable, Disposable,
+        ThreadSafe
+{
+    /**
+     * Initial size of hash table Value must be &amp;gt; 0. Default = 20
+     */
+    public static final int DEFAULT_INITIAL_CACHE_SIZE = 20;
+
+    /**
+     * The property for the InitalCacheSize
+     */
+    public static final String INITIAL_CACHE_SIZE = &quot;cacheInitialSize&quot;;
+
+    /**
+     * The property for the Cache check frequency
+     */
+    public static final String CACHE_CHECK_FREQUENCY = &quot;cacheCheckFrequency&quot;;
+
+    /**
+     * Cache check frequency in Millis (1000 Millis = 1 second). Value must be &amp;gt;
+     * 0. Default = 5 seconds
+     */
+    public static final long DEFAULT_CACHE_CHECK_FREQUENCY = 5000; // 5 seconds
+
+    /** The cache. */
+<span class="fc" id="L84">    protected transient ConcurrentHashMap&lt;String, CachedObject&lt;?&gt;&gt; cache = null;</span>
+
+    /**
+     * cacheCheckFrequency (default - 5 seconds)
+     */
+    private transient long cacheCheckFrequency;
+
+    /**
+     * cacheInitialSize (default - 20)
+     */
+    private transient int cacheInitialSize;
+
+    /** thread for removing stale items from the cache */
+    private transient Thread houseKeepingThread;
+
+    /** flag to stop the housekeeping thread when the component is disposed. */
+    private transient boolean continueThread;
+    
+    public DefaultGlobalCacheService()
+<span class="fc" id="L103">    {</span>
+     
+<span class="fc" id="L105">    }</span>
+
+    /**
+     * Get the Cache Check Frequency in milliseconds
+     *
+     * @return the time between two cache check runs in milliseconds
+     */
+    public long getCacheCheckFrequency()
+    {
+<span class="fc" id="L114">        return this.cacheCheckFrequency;</span>
+    }
+
+    /**
+     * Returns an item from the cache. /** Returns an item from the cache.
+     * RefreshableCachedObject will be refreshed if it is expired and not
+     * untouched.
+     *
+     * @param objectId
+     *            The key of the stored object.
+     * @return The object from the cache.
+     * @throws ObjectExpiredException
+     *                when either the object is not in the cache or it has
+     *                expired.
+     */
+    @Override
+    public &lt;T&gt; CachedObject&lt;T&gt; getObject(String objectId) throws ObjectExpiredException
+    {
+        @SuppressWarnings(&quot;unchecked&quot;)
+<span class="fc" id="L133">        final CachedObject&lt;T&gt; cachedObject = (CachedObject&lt;T&gt;) this.cache.get(objectId);</span>
+<span class="fc bfc" id="L134" title="All 2 branches covered.">        if (cachedObject == null)</span>
+        {
+            // Not in the cache.
+<span class="fc" id="L137">            throw new ObjectExpiredException();</span>
+        }
+<span class="fc bfc" id="L139" title="All 2 branches covered.">        if (cachedObject.isStale())</span>
+        {
+<span class="pc bpc" id="L141" title="1 of 2 branches missed.">            if (cachedObject instanceof RefreshableCachedObject)</span>
+            {
+<span class="nc" id="L143">                RefreshableCachedObject&lt;?&gt; refreshableCachedObj = (RefreshableCachedObject&lt;?&gt;) cachedObject;</span>
+<span class="nc bnc" id="L144" title="All 2 branches missed.">                if (refreshableCachedObj.isUntouched())</span>
+                {
+<span class="nc" id="L146">                    throw new ObjectExpiredException();</span>
+                }
+                // Refresh Object
+<span class="nc" id="L149">                refreshableCachedObj.refresh();</span>
+<span class="nc bnc" id="L150" title="All 2 branches missed.">                if (refreshableCachedObj.isStale())</span>
+                {
+<span class="nc" id="L152">                    throw new ObjectExpiredException();</span>
+                }
+<span class="nc" id="L154">            }</span>
+            else
+            {
+                // Expired.
+<span class="fc" id="L158">                throw new ObjectExpiredException();</span>
+            }
+        }
+<span class="pc bpc" id="L161" title="1 of 2 branches missed.">        if (cachedObject instanceof RefreshableCachedObject)</span>
+        {
+            // notify it that it's being accessed.
+<span class="nc" id="L164">            RefreshableCachedObject&lt;?&gt; refreshableCachedObj = (RefreshableCachedObject&lt;?&gt;) cachedObject;</span>
+<span class="nc" id="L165">            refreshableCachedObj.touch();</span>
+        }
+<span class="fc" id="L167">        return cachedObject;</span>
+    }
+
+    /**
+     * Adds an object to the cache.
+     *
+     * @param objectId
+     *            The key to store the object by.
+     * @param object
+     *            The object to cache.
+     */
+    @Override
+    public &lt;T&gt; void addObject(final String objectId, final CachedObject&lt;T&gt; object)
+    {
+        // If the cache already contains the key, remove it and add
+        // the fresh one.
+<span class="fc bfc" id="L183" title="All 2 branches covered.">        if (this.cache.containsKey(objectId))</span>
+        {
+<span class="fc" id="L185">            this.cache.remove(objectId);</span>
+        }
+<span class="fc" id="L187">        this.cache.put(objectId, object);</span>
+<span class="fc" id="L188">    }</span>
+
+    /**
+     * Removes an object from the cache.
+     *
+     * @param objectId
+     *            The String id for the object.
+     */
+    @Override
+    public void removeObject(String objectId)
+    {
+<span class="fc" id="L199">        this.cache.remove(objectId);</span>
+<span class="fc" id="L200">    }</span>
+
+    /**
+     * Returns a copy of keys to objects in the cache as a list.
+     *
+     * Note that keys to expired objects are not returned.
+     *
+     * @return A List of &lt;code&gt;String&lt;/code&gt;'s representing the keys to
+     *         objects in the cache.
+     */
+    @Override
+    public List&lt;String&gt; getKeys()
+    {
+<span class="fc" id="L213">        ArrayList&lt;String&gt; keys = new ArrayList&lt;&gt;(this.cache.size());</span>
+<span class="fc bfc" id="L214" title="All 2 branches covered.">        for (String key : this.cache.keySet())</span>
+        {
+            try
+            {
+<span class="fc" id="L218">            	getObject(key);</span>
+            }
+<span class="nc" id="L220">            catch (ObjectExpiredException oee)</span>
+            {
+                // this is OK we just do not want this key
+<span class="nc" id="L223">                continue;</span>
+<span class="fc" id="L224">            }</span>
+<span class="fc" id="L225">            keys.add(key);</span>
+<span class="fc" id="L226">        }</span>
+<span class="fc" id="L227">        return keys;</span>
+    }
+
+    /**
+     * Returns a copy of the non-expired CachedObjects in the cache as a list.
+     *
+     * @return A List of &lt;code&gt;CachedObject&lt;/code&gt; objects held in the cache
+     */
+    @Override
+    public List&lt;CachedObject&lt;?&gt;&gt; getCachedObjects()
+    {
+<span class="fc" id="L238">        final ArrayList&lt;CachedObject&lt;?&gt;&gt; objects = new ArrayList&lt;&gt;(this.cache.size());</span>
+<span class="fc bfc" id="L239" title="All 2 branches covered.">        for (String key : this.cache.keySet())</span>
+        {
+<span class="fc" id="L241">            CachedObject&lt;?&gt; cachedObject = null;</span>
+            try
+            {
+            	// only add non-null objects
+<span class="fc" id="L245">                cachedObject = getObject(key);</span>
+<span class="pc bpc" id="L246" title="1 of 2 branches missed.">                if ( cachedObject != null )</span>
+                {
+<span class="fc" id="L248">                	objects.add(cachedObject);</span>
+                }
+            }
+<span class="nc" id="L251">            catch (ObjectExpiredException oee)</span>
+            {
+                // this is OK we just do not want this object
+<span class="nc" id="L254">                continue;</span>
+<span class="fc" id="L255">            }</span>
+<span class="fc" id="L256">        }</span>
+<span class="fc" id="L257">        return objects;</span>
+    }
+
+    /**
+     * Circle through the cache and remove stale objects. Frequency is
+     * determined by the cacheCheckFrequency property.
+     */
+    @Override
+    public void run()
+    {
+<span class="fc bfc" id="L267" title="All 2 branches covered.">        while (this.continueThread)</span>
+        {
+            // Sleep for amount of time set in cacheCheckFrequency -
+            // default = 5 seconds.
+<span class="fc" id="L271">            synchronized (this)</span>
+            {
+                try
+                {
+<span class="fc" id="L275">                    wait(this.cacheCheckFrequency);</span>
+                }
+<span class="nc" id="L277">                catch (InterruptedException exc)</span>
+                {
+                    // to be expected
+<span class="fc" id="L280">                }</span>
+<span class="fc" id="L281">            }</span>
+
+<span class="fc" id="L283">            clearCache();</span>
+        }
+<span class="fc" id="L285">    }</span>
+
+    /**
+     * Iterate through the cache and remove or refresh stale objects.
+     */
+    public void clearCache()
+    {
+<span class="fc" id="L292">        List&lt;String&gt; refreshThese = new ArrayList&lt;&gt;(20);</span>
+        // Sync on this object so that other threads do not
+        // change the Hashtable while enumerating over it.
+<span class="fc bfc" id="L295" title="All 2 branches covered.">        for (String key : this.cache.keySet())</span>
+        {
+<span class="fc" id="L297">            final CachedObject&lt;?&gt; cachedObject = this.cache.get(key);</span>
+<span class="pc bpc" id="L298" title="1 of 2 branches missed.">            if (cachedObject instanceof RefreshableCachedObject)</span>
+            {
+<span class="nc" id="L300">                RefreshableCachedObject&lt;?&gt; refreshableObject = (RefreshableCachedObject&lt;?&gt;) cachedObject;</span>
+<span class="nc bnc" id="L301" title="All 2 branches missed.">                if (refreshableObject.isUntouched())</span>
+                {
+<span class="nc" id="L303">                    this.cache.remove(key);</span>
+                }
+<span class="nc bnc" id="L305" title="All 2 branches missed.">                else if (refreshableObject.isStale())</span>
+                {
+                    // to prolong holding the lock on this object
+<span class="nc" id="L308">                    refreshThese.add(key);</span>
+                }
+<span class="nc" id="L310">            }</span>
+<span class="fc bfc" id="L311" title="All 2 branches covered.">            else if (cachedObject.isStale())</span>
+            {
+<span class="fc" id="L313">                this.cache.remove(key);</span>
+            }
+<span class="fc" id="L315">        }</span>
+
+<span class="pc bpc" id="L317" title="1 of 2 branches missed.">        for (String key : refreshThese)</span>
+        {
+<span class="nc" id="L319">            CachedObject&lt;?&gt; cachedObject = this.cache.get(key);</span>
+<span class="nc" id="L320">            RefreshableCachedObject&lt;?&gt; refreshableCachedObject = (RefreshableCachedObject&lt;?&gt;) cachedObject;</span>
+<span class="nc" id="L321">            refreshableCachedObject.refresh();</span>
+<span class="nc" id="L322">        }</span>
+<span class="fc" id="L323">    }</span>
+
+    /**
+     * Returns the number of objects currently stored in the cache
+     *
+     * @return int number of object in the cache
+     */
+    @Override
+    public int getNumberOfObjects()
+    {
+<span class="fc" id="L333">        return this.cache.size();</span>
+    }
+
+    /**
+     * Returns the current size of the cache.
+     *
+     * @return int representing current cache size in number of bytes
+     */
+    @Override
+    public int getCacheSize() throws IOException
+    {
+<span class="nc" id="L344">        final ByteArrayOutputStream baos = new ByteArrayOutputStream();</span>
+<span class="nc" id="L345">        final ObjectOutputStream out = new ObjectOutputStream(baos);</span>
+<span class="nc" id="L346">        out.writeObject(this.cache);</span>
+<span class="nc" id="L347">        out.flush();</span>
+        //
+        // Subtract 4 bytes from the length, because the serialization
+        // magic number (2 bytes) and version number (2 bytes) are
+        // both written to the stream before the object
+        //
+<span class="nc" id="L353">        return baos.toByteArray().length - 4;</span>
+    }
+
+    /**
+     * Flush the cache of all objects.
+     */
+    @Override
+    public void flushCache()
+    {
+<span class="fc" id="L362">        this.cache.clear();</span>
+<span class="fc" id="L363">    }</span>
+
+    // ---------------- Avalon Lifecycle Methods ---------------------
+    /**
+     * Avalon component lifecycle method
+     */
+    @Override
+    public void configure(Configuration conf) throws ConfigurationException
+    {
+<span class="fc" id="L372">        this.cacheCheckFrequency = conf.getAttributeAsLong(</span>
+                CACHE_CHECK_FREQUENCY, DEFAULT_CACHE_CHECK_FREQUENCY);
+<span class="fc" id="L374">        this.cacheInitialSize = conf.getAttributeAsInteger(INITIAL_CACHE_SIZE,</span>
+                DEFAULT_INITIAL_CACHE_SIZE);
+<span class="fc" id="L376">    }</span>
+
+    /**
+     * Avalon component lifecycle method
+     */
+    @Override
+    public void initialize() throws Exception
+    {
+<span class="fc" id="L384">        this.cache = new ConcurrentHashMap&lt;&gt;(this.cacheInitialSize);</span>
+        // Start housekeeping thread.
+<span class="fc" id="L386">        this.continueThread = true;</span>
+<span class="fc" id="L387">        this.houseKeepingThread = new Thread(this);</span>
+        // Indicate that this is a system thread. JVM will quit only when
+        // there are no more active user threads. Settings threads spawned
+        // internally by Turbine as daemons allows commandline applications
+        // using Turbine to terminate in an orderly manner.
+<span class="fc" id="L392">        this.houseKeepingThread.setDaemon(true);</span>
+<span class="fc" id="L393">        this.houseKeepingThread.start();</span>
+<span class="fc" id="L394">    }</span>
+
+    /**
+     * Avalon component lifecycle method
+     */
+    @Override
+    public void dispose()
+    {
+<span class="fc" id="L402">        synchronized (this)</span>
+        {
+<span class="fc" id="L404">            this.continueThread = false;</span>
+<span class="fc" id="L405">            notifyAll();</span>
+<span class="fc" id="L406">        }</span>
+<span class="fc" id="L407">    }</span>
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body></html>
\ No newline at end of file

Added: websites/production/turbine/content/fulcrum/fulcrum-cache/jacoco/org.apache.fulcrum.cache.impl/EHCacheService.html
==============================================================================
--- websites/production/turbine/content/fulcrum/fulcrum-cache/jacoco/org.apache.fulcrum.cache.impl/EHCacheService.html (added)
+++ websites/production/turbine/content/fulcrum/fulcrum-cache/jacoco/org.apache.fulcrum.cache.impl/EHCacheService.html Wed Aug  4 06:41:15 2021
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>EHCacheService</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Fulcrum Cache</a> &gt; <a href="index.html" class="el_package">org.apache.fulcrum.cache.impl</a> &gt; <span class="el_class">EHCacheService</span></div><h1>EHCacheService</h1><table class="coverage" cellspacing="0" id="coveragetable"><the
 ad><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">81 of 310</td><td class="ctr2">73%</td><td class="bar">19 of 34</td><td class="ctr2">44%</td><td class="ctr1">15</td><td class="ctr2">30</td
 ><td class="ctr1">25</td><td class="ctr2">89</td><td class="ctr1">1</td><td class="ctr2">13</td></tr></tfoot><tbody><tr><td id="a9"><a href="EHCacheService.java.html#L243" class="el_method">getObject(String)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="76" height="10" title="41" alt="41"/><img src="../jacoco-resources/greenbar.gif" width="43" height="10" title="23" alt="23"/></td><td class="ctr2" id="c11">35%</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="68" height="10" title="8" alt="8"/><img src="../jacoco-resources/greenbar.gif" width="34" height="10" title="4" alt="4"/></td><td class="ctr2" id="e4">33%</td><td class="ctr1" id="f1">5</td><td class="ctr2" id="g1">7</td><td class="ctr1" id="h0">14</td><td class="ctr2" id="i0">21</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a12"><a href="EHCacheService.java.html#L309" class="el_method">run()</a></td><td class="bar" id="b1"><img s
 rc="../jacoco-resources/redbar.gif" width="45" height="10" title="24" alt="24"/><img src="../jacoco-resources/greenbar.gif" width="71" height="10" title="38" alt="38"/></td><td class="ctr2" id="c10">61%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="68" height="10" title="8" alt="8"/><img src="../jacoco-resources/greenbar.gif" width="51" height="10" title="6" alt="6"/></td><td class="ctr2" id="e3">42%</td><td class="ctr1" id="f0">6</td><td class="ctr2" id="g0">8</td><td class="ctr1" id="h1">8</td><td class="ctr2" id="i1">20</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a10"><a href="EHCacheService.java.html#L114" class="el_method">initialize()</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="13" height="10" title="7" alt="7"/><img src="../jacoco-resources/greenbar.gif" width="86" height="10" title="46" alt="46"/></td><td class="ctr2" id="c8">86%</td><td class="bar" id="d3"><img src="..
 /jacoco-resources/redbar.gif" width="8" height="10" title="1" alt="1"/><img src="../jacoco-resources/greenbar.gif" width="8" height="10" title="1" alt="1"/></td><td class="ctr2" id="e1">50%</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g3">2</td><td class="ctr1" id="h2">1</td><td class="ctr2" id="i2">12</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a6"><a href="EHCacheService.java.html#L214" class="el_method">getCacheSize()</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="9" height="10" title="5" alt="5"/></td><td class="ctr2" id="c12">0%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h3">1</td><td class="ctr2" id="i11">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a0"><a href="EHCacheService.java.html#L162" class="el_method">addObject(String, CachedObject)</a></td><td c
 lass="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="7" height="10" title="4" alt="4"/><img src="../jacoco-resources/greenbar.gif" width="48" height="10" title="26" alt="26"/></td><td class="ctr2" id="c9">86%</td><td class="bar" id="d4"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="1" alt="1"/><img src="../jacoco-resources/greenbar.gif" width="8" height="10" title="1" alt="1"/></td><td class="ctr2" id="e2">50%</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">2</td><td class="ctr1" id="h4">1</td><td class="ctr2" id="i3">7</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a5"><a href="EHCacheService.java.html#L192" class="el_method">getCachedObjects()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/greenbar.gif" width="58" height="10" title="31" alt="31"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="1
 " alt="1"/><img src="../jacoco-resources/greenbar.gif" width="25" height="10" title="3" alt="3"/></td><td class="ctr2" id="e0">75%</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g2">3</td><td class="ctr1" id="h5">0</td><td class="ctr2" id="i4">7</td><td class="ctr1" id="j5">0</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a1"><a href="EHCacheService.java.html#L102" class="el_method">configure(Configuration)</a></td><td class="bar" id="b6"><img src="../jacoco-resources/greenbar.gif" width="41" height="10" title="22" alt="22"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">0</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">0</td><td class="ctr2" id="i6">5</td><td class="ctr1" id="j6">0</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a2"><a href="EHCacheService.java.html#L147" class="el_method">dispose()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/greenbar.gif" widt
 h="37" height="10" title="20" alt="20"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">0</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h7">0</td><td class="ctr2" id="i5">7</td><td class="ctr1" id="j7">0</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a7"><a href="EHCacheService.java.html#L224" class="el_method">getKeys()</a></td><td class="bar" id="b8"><img src="../jacoco-resources/greenbar.gif" width="11" height="10" title="6" alt="6"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">0</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h8">0</td><td class="ctr2" id="i7">2</td><td class="ctr1" id="j8">0</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a11"><a href="EHCacheService.java.html#L299" class="el_method">removeObject(String)</a></td><td class="bar" id="b9"><img src="../jacoco-resources/greenbar.gif" width="
 11" height="10" title="6" alt="6"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f9">0</td><td class="ctr2" id="g9">1</td><td class="ctr1" id="h9">0</td><td class="ctr2" id="i8">2</td><td class="ctr1" id="j9">0</td><td class="ctr2" id="k9">1</td></tr><tr><td id="a4"><a href="EHCacheService.java.html#L183" class="el_method">flushCache()</a></td><td class="bar" id="b10"><img src="../jacoco-resources/greenbar.gif" width="7" height="10" title="4" alt="4"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f10">0</td><td class="ctr2" id="g10">1</td><td class="ctr1" id="h10">0</td><td class="ctr2" id="i9">2</td><td class="ctr1" id="j10">0</td><td class="ctr2" id="k10">1</td></tr><tr><td id="a8"><a href="EHCacheService.java.html#L234" class="el_method">getNumberOfObjects()</a></td><td class="bar" id="b11"><img src="../jacoco-resources/greenbar.gif" wi
 dth="7" height="10" title="4" alt="4"/></td><td class="ctr2" id="c6">100%</td><td class="bar" id="d11"/><td class="ctr2" id="e11">n/a</td><td class="ctr1" id="f11">0</td><td class="ctr2" id="g11">1</td><td class="ctr1" id="h11">0</td><td class="ctr2" id="i12">1</td><td class="ctr1" id="j11">0</td><td class="ctr2" id="k11">1</td></tr><tr><td id="a3"><a href="EHCacheService.java.html#L91" class="el_method">EHCacheService()</a></td><td class="bar" id="b12"><img src="../jacoco-resources/greenbar.gif" width="5" height="10" title="3" alt="3"/></td><td class="ctr2" id="c7">100%</td><td class="bar" id="d12"/><td class="ctr2" id="e12">n/a</td><td class="ctr1" id="f12">0</td><td class="ctr2" id="g12">1</td><td class="ctr1" id="h12">0</td><td class="ctr2" id="i10">2</td><td class="ctr1" id="j12">0</td><td class="ctr2" id="k12">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.6.202009150832</span></div></body><
 /html>
\ No newline at end of file