<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>DaysOldRepositoryPurgeTest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../testapidocs/org/apache/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.html">View Javadoc</a></div><pre>
<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <strong class="jxr_keyword">package</strong> org.apache.archiva.consumers.core.repository;
<a class="jxr_linenumber" name="L2" href="#L2">2</a>   
<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> *  <a href="http://www.apache.org/licenses/LICENSE-2." target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.</a>0</em>
<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <em class="jxr_comment"> * under the License.</em>
<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <em class="jxr_comment"> */</em>
<a class="jxr_linenumber" name="L21" href="#L21">21</a>  
<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.admin.model.beans.ManagedRepository;
<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.metadata.model.ArtifactMetadata;
<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.repository.events.RepositoryListener;
<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.lang.time.DateUtils;
<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> org.junit.After;
<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> org.junit.Test;
<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> org.mockito.ArgumentCaptor;
<a class="jxr_linenumber" name="L29" href="#L29">29</a>  
<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> java.io.File;
<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> java.nio.file.Path;
<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> java.text.SimpleDateFormat;
<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> java.util.Calendar;
<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">import</strong> java.util.HashSet;
<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
<a class="jxr_linenumber" name="L38" href="#L38">38</a>  
<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertTrue;
<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.eq;
<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.*;
<a class="jxr_linenumber" name="L42" href="#L42">42</a>  
<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/archiva/consumers/core/repository/DaysOldRepositoryPurgeTest.html">DaysOldRepositoryPurgeTest</a>
<a class="jxr_linenumber" name="L46" href="#L46">46</a>      <strong class="jxr_keyword">extends</strong> <a href="../../../../../../org/apache/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.html">AbstractRepositoryPurgeTest</a>
<a class="jxr_linenumber" name="L47" href="#L47">47</a>  {
<a class="jxr_linenumber" name="L48" href="#L48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> OLD_TIMESTAMP = 1179382029;
<a class="jxr_linenumber" name="L49" href="#L49">49</a>  
<a class="jxr_linenumber" name="L50" href="#L50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> setLastModified( String dirPath, <strong class="jxr_keyword">long</strong> lastModified )
<a class="jxr_linenumber" name="L51" href="#L51">51</a>      {
<a class="jxr_linenumber" name="L52" href="#L52">52</a>          File dir = <strong class="jxr_keyword">new</strong> File( dirPath );
<a class="jxr_linenumber" name="L53" href="#L53">53</a>          File[] contents = dir.listFiles();
<a class="jxr_linenumber" name="L54" href="#L54">54</a>          <strong class="jxr_keyword">for</strong> ( File content : contents )
<a class="jxr_linenumber" name="L55" href="#L55">55</a>          {
<a class="jxr_linenumber" name="L56" href="#L56">56</a>              content.setLastModified( lastModified );
<a class="jxr_linenumber" name="L57" href="#L57">57</a>          }
<a class="jxr_linenumber" name="L58" href="#L58">58</a>      }
<a class="jxr_linenumber" name="L59" href="#L59">59</a>  
<a class="jxr_linenumber" name="L60" href="#L60">60</a>      @After
<a class="jxr_linenumber" name="L61" href="#L61">61</a>      @Override
<a class="jxr_linenumber" name="L62" href="#L62">62</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDown()
<a class="jxr_linenumber" name="L63" href="#L63">63</a>          <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="L64" href="#L64">64</a>      {
<a class="jxr_linenumber" name="L65" href="#L65">65</a>          <strong class="jxr_keyword">super</strong>.tearDown();
<a class="jxr_linenumber" name="L66" href="#L66">66</a>          repoPurge = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="L67" href="#L67">67</a>      }
<a class="jxr_linenumber" name="L68" href="#L68">68</a>  
<a class="jxr_linenumber" name="L69" href="#L69">69</a>      @Test
<a class="jxr_linenumber" name="L70" href="#L70">70</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testByLastModified()
<a class="jxr_linenumber" name="L71" href="#L71">71</a>          <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="L72" href="#L72">72</a>      {
<a class="jxr_linenumber" name="L73" href="#L73">73</a>          ManagedRepository repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME );
<a class="jxr_linenumber" name="L74" href="#L74">74</a>          repoPurge = <strong class="jxr_keyword">new</strong> DaysOldRepositoryPurge( getRepository(), repoConfiguration.getDaysOlder(),
<a class="jxr_linenumber" name="L75" href="#L75">75</a>                                                  repoConfiguration.getRetentionCount(), repositorySession,
<a class="jxr_linenumber" name="L76" href="#L76">76</a>                                                  Collections.singletonList( listener ) );
<a class="jxr_linenumber" name="L77" href="#L77">77</a>  
<a class="jxr_linenumber" name="L78" href="#L78">78</a>          String repoRoot = prepareTestRepos();
<a class="jxr_linenumber" name="L79" href="#L79">79</a>          String projectNs = <span class="jxr_string">"org.apache.maven.plugins"</span>;
<a class="jxr_linenumber" name="L80" href="#L80">80</a>          String projectPath = projectNs.replaceAll(<span class="jxr_string">"&#92;&#92;."</span>,<span class="jxr_string">"/"</span>);
<a class="jxr_linenumber" name="L81" href="#L81">81</a>          String projectName = <span class="jxr_string">"maven-install-plugin"</span>;
<a class="jxr_linenumber" name="L82" href="#L82">82</a>          String projectVersion = <span class="jxr_string">"2.2-SNAPSHOT"</span>;
<a class="jxr_linenumber" name="L83" href="#L83">83</a>          String projectRoot = repoRoot + <span class="jxr_string">"/"</span> + projectPath+<span class="jxr_string">"/"</span>+projectName;
<a class="jxr_linenumber" name="L84" href="#L84">84</a>          Path repo = getTestRepoRootPath();
<a class="jxr_linenumber" name="L85" href="#L85">85</a>          Path vDir = repo.resolve(projectPath).resolve(projectName).resolve(projectVersion);
<a class="jxr_linenumber" name="L86" href="#L86">86</a>          Set&lt;String&gt; deletedVersions = <strong class="jxr_keyword">new</strong> HashSet&lt;&gt;();
<a class="jxr_linenumber" name="L87" href="#L87">87</a>          deletedVersions.add(<span class="jxr_string">"2.2-SNAPSHOT"</span>);
<a class="jxr_linenumber" name="L88" href="#L88">88</a>          deletedVersions.add(<span class="jxr_string">"2.2-20061118.060401-2"</span>);
<a class="jxr_linenumber" name="L89" href="#L89">89</a>  
<a class="jxr_linenumber" name="L90" href="#L90">90</a>          setLastModified( projectRoot + <span class="jxr_string">"/"</span> + projectVersion + <span class="jxr_string">"/"</span>, OLD_TIMESTAMP );
<a class="jxr_linenumber" name="L91" href="#L91">91</a>  
<a class="jxr_linenumber" name="L92" href="#L92">92</a>          <em class="jxr_comment">// test listeners for the correct artifacts</em>
<a class="jxr_linenumber" name="L93" href="#L93">93</a>          listener.deleteArtifact( metadataRepository, getRepository().getId(), <span class="jxr_string">"org.apache.maven.plugins"</span>,
<a class="jxr_linenumber" name="L94" href="#L94">94</a>                                   <span class="jxr_string">"maven-install-plugin"</span>, <span class="jxr_string">"2.2-SNAPSHOT"</span>, <span class="jxr_string">"maven-install-plugin-2.2-SNAPSHOT.jar"</span> );
<a class="jxr_linenumber" name="L95" href="#L95">95</a>          listener.deleteArtifact( metadataRepository, getRepository().getId(), <span class="jxr_string">"org.apache.maven.plugins"</span>,
<a class="jxr_linenumber" name="L96" href="#L96">96</a>                                   <span class="jxr_string">"maven-install-plugin"</span>, <span class="jxr_string">"2.2-SNAPSHOT"</span>, <span class="jxr_string">"maven-install-plugin-2.2-SNAPSHOT.pom"</span> );
<a class="jxr_linenumber" name="L97" href="#L97">97</a>          listener.deleteArtifact( metadataRepository, getRepository().getId(), <span class="jxr_string">"org.apache.maven.plugins"</span>,
<a class="jxr_linenumber" name="L98" href="#L98">98</a>                                   <span class="jxr_string">"maven-install-plugin"</span>, <span class="jxr_string">"2.2-20061118.060401-2"</span>,
<a class="jxr_linenumber" name="L99" href="#L99">99</a>                                   <span class="jxr_string">"maven-install-plugin-2.2-20061118.060401-2.jar"</span> );
<a class="jxr_linenumber" name="L100" href="#L100">100</a>         listener.deleteArtifact( metadataRepository, getRepository().getId(), <span class="jxr_string">"org.apache.maven.plugins"</span>,
<a class="jxr_linenumber" name="L101" href="#L101">101</a>                                  <span class="jxr_string">"maven-install-plugin"</span>, <span class="jxr_string">"2.2-20061118.060401-2"</span>,
<a class="jxr_linenumber" name="L102" href="#L102">102</a>                                  <span class="jxr_string">"maven-install-plugin-2.2-20061118.060401-2.pom"</span> );
<a class="jxr_linenumber" name="L103" href="#L103">103</a>         listenerControl.replay();
<a class="jxr_linenumber" name="L104" href="#L104">104</a> 
<a class="jxr_linenumber" name="L105" href="#L105">105</a>         <em class="jxr_comment">// Provide the metadata list</em>
<a class="jxr_linenumber" name="L106" href="#L106">106</a>         List&lt;ArtifactMetadata&gt; ml = getArtifactMetadataFromDir(TEST_REPO_ID , projectName, repo.getParent(), vDir );
<a class="jxr_linenumber" name="L107" href="#L107">107</a>         when(metadataRepository.getArtifacts(TEST_REPO_ID, projectNs,
<a class="jxr_linenumber" name="L108" href="#L108">108</a>             projectName, projectVersion)).thenReturn(ml);
<a class="jxr_linenumber" name="L109" href="#L109">109</a> 
<a class="jxr_linenumber" name="L110" href="#L110">110</a>         repoPurge.process( PATH_TO_BY_DAYS_OLD_ARTIFACT );
<a class="jxr_linenumber" name="L111" href="#L111">111</a> 
<a class="jxr_linenumber" name="L112" href="#L112">112</a>         listenerControl.verify();
<a class="jxr_linenumber" name="L113" href="#L113">113</a> 
<a class="jxr_linenumber" name="L114" href="#L114">114</a>         <em class="jxr_comment">// Verify the metadataRepository invocations</em>
<a class="jxr_linenumber" name="L115" href="#L115">115</a>         verify(metadataRepository, never()).removeProjectVersion(eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion));
<a class="jxr_linenumber" name="L116" href="#L116">116</a>         ArgumentCaptor&lt;ArtifactMetadata&gt; metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L117" href="#L117">117</a>         verify(metadataRepository, times(2)).removeArtifact(metadataArg.capture(), eq(projectVersion));
<a class="jxr_linenumber" name="L118" href="#L118">118</a>         List&lt;ArtifactMetadata&gt; metaL = metadataArg.getAllValues();
<a class="jxr_linenumber" name="L119" href="#L119">119</a>         <strong class="jxr_keyword">for</strong> (ArtifactMetadata meta : metaL) {
<a class="jxr_linenumber" name="L120" href="#L120">120</a>             assertTrue(meta.getId().startsWith(projectName));
<a class="jxr_linenumber" name="L121" href="#L121">121</a>             assertTrue(deletedVersions.contains(meta.getVersion()));
<a class="jxr_linenumber" name="L122" href="#L122">122</a>         }
<a class="jxr_linenumber" name="L123" href="#L123">123</a> 
<a class="jxr_linenumber" name="L124" href="#L124">124</a> 
<a class="jxr_linenumber" name="L125" href="#L125">125</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-SNAPSHOT.jar"</span> );
<a class="jxr_linenumber" name="L126" href="#L126">126</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-SNAPSHOT.jar.md5"</span> );
<a class="jxr_linenumber" name="L127" href="#L127">127</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-SNAPSHOT.jar.sha1"</span> );
<a class="jxr_linenumber" name="L128" href="#L128">128</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-SNAPSHOT.pom"</span> );
<a class="jxr_linenumber" name="L129" href="#L129">129</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-SNAPSHOT.pom.md5"</span> );
<a class="jxr_linenumber" name="L130" href="#L130">130</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-SNAPSHOT.pom.sha1"</span> );
<a class="jxr_linenumber" name="L131" href="#L131">131</a> 
<a class="jxr_linenumber" name="L132" href="#L132">132</a>         <em class="jxr_comment">// shouldn't be deleted because even if older than 30 days (because retention count = 2)</em>
<a class="jxr_linenumber" name="L133" href="#L133">133</a>         assertExists( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20070513.034619-5.jar"</span> );
<a class="jxr_linenumber" name="L134" href="#L134">134</a>         assertExists( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20070513.034619-5.jar.md5"</span> );
<a class="jxr_linenumber" name="L135" href="#L135">135</a>         assertExists( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20070513.034619-5.jar.sha1"</span> );
<a class="jxr_linenumber" name="L136" href="#L136">136</a>         assertExists( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20070513.034619-5.pom"</span> );
<a class="jxr_linenumber" name="L137" href="#L137">137</a>         assertExists( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20070513.034619-5.pom.md5"</span> );
<a class="jxr_linenumber" name="L138" href="#L138">138</a>         assertExists( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20070513.034619-5.pom.sha1"</span> );
<a class="jxr_linenumber" name="L139" href="#L139">139</a> 
<a class="jxr_linenumber" name="L140" href="#L140">140</a>         assertExists( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20070510.010101-4.jar"</span> );
<a class="jxr_linenumber" name="L141" href="#L141">141</a>         assertExists( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20070510.010101-4.jar.md5"</span> );
<a class="jxr_linenumber" name="L142" href="#L142">142</a>         assertExists( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20070510.010101-4.jar.sha1"</span> );
<a class="jxr_linenumber" name="L143" href="#L143">143</a>         assertExists( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20070510.010101-4.pom"</span> );
<a class="jxr_linenumber" name="L144" href="#L144">144</a>         assertExists( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20070510.010101-4.pom.md5"</span> );
<a class="jxr_linenumber" name="L145" href="#L145">145</a>         assertExists( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20070510.010101-4.pom.sha1"</span> );
<a class="jxr_linenumber" name="L146" href="#L146">146</a> 
<a class="jxr_linenumber" name="L147" href="#L147">147</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20061118.060401-2.jar"</span> );
<a class="jxr_linenumber" name="L148" href="#L148">148</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20061118.060401-2.jar.md5"</span> );
<a class="jxr_linenumber" name="L149" href="#L149">149</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20061118.060401-2.jar.sha1"</span> );
<a class="jxr_linenumber" name="L150" href="#L150">150</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20061118.060401-2.pom"</span> );
<a class="jxr_linenumber" name="L151" href="#L151">151</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20061118.060401-2.pom.md5"</span> );
<a class="jxr_linenumber" name="L152" href="#L152">152</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.2-SNAPSHOT/maven-install-plugin-2.2-20061118.060401-2.pom.sha1"</span> );
<a class="jxr_linenumber" name="L153" href="#L153">153</a>     }
<a class="jxr_linenumber" name="L154" href="#L154">154</a> 
<a class="jxr_linenumber" name="L155" href="#L155">155</a>     @Test
<a class="jxr_linenumber" name="L156" href="#L156">156</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testOrderOfDeletion()
<a class="jxr_linenumber" name="L157" href="#L157">157</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="L158" href="#L158">158</a>     {
<a class="jxr_linenumber" name="L159" href="#L159">159</a>         ManagedRepository repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME );
<a class="jxr_linenumber" name="L160" href="#L160">160</a>         List&lt;RepositoryListener&gt; listeners = Collections.singletonList( listener );
<a class="jxr_linenumber" name="L161" href="#L161">161</a>         repoPurge = <strong class="jxr_keyword">new</strong> DaysOldRepositoryPurge( getRepository(), repoConfiguration.getDaysOlder(),
<a class="jxr_linenumber" name="L162" href="#L162">162</a>                                                 repoConfiguration.getRetentionCount(), repositorySession, listeners );
<a class="jxr_linenumber" name="L163" href="#L163">163</a> 
<a class="jxr_linenumber" name="L164" href="#L164">164</a>         String repoRoot = prepareTestRepos();
<a class="jxr_linenumber" name="L165" href="#L165">165</a>         String projectNs = <span class="jxr_string">"org.apache.maven.plugins"</span>;
<a class="jxr_linenumber" name="L166" href="#L166">166</a>         String projectPath = projectNs.replaceAll(<span class="jxr_string">"&#92;&#92;."</span>,<span class="jxr_string">"/"</span>);
<a class="jxr_linenumber" name="L167" href="#L167">167</a>         String projectName = <span class="jxr_string">"maven-assembly-plugin"</span>;
<a class="jxr_linenumber" name="L168" href="#L168">168</a>         String projectVersion = <span class="jxr_string">"1.1.2-SNAPSHOT"</span>;
<a class="jxr_linenumber" name="L169" href="#L169">169</a>         String projectRoot = repoRoot + <span class="jxr_string">"/"</span> + projectPath+<span class="jxr_string">"/"</span>+projectName;
<a class="jxr_linenumber" name="L170" href="#L170">170</a>         Path repo = getTestRepoRootPath();
<a class="jxr_linenumber" name="L171" href="#L171">171</a>         Path vDir = repo.resolve(projectPath).resolve(projectName).resolve(projectVersion);
<a class="jxr_linenumber" name="L172" href="#L172">172</a>         Set&lt;String&gt; deletedVersions = <strong class="jxr_keyword">new</strong> HashSet&lt;&gt;();
<a class="jxr_linenumber" name="L173" href="#L173">173</a>         deletedVersions.add(<span class="jxr_string">"1.1.2-20070427.065136-1"</span>);
<a class="jxr_linenumber" name="L174" href="#L174">174</a> 
<a class="jxr_linenumber" name="L175" href="#L175">175</a>         setLastModified( projectRoot + <span class="jxr_string">"/"</span> + projectVersion + <span class="jxr_string">"/"</span>, OLD_TIMESTAMP );
<a class="jxr_linenumber" name="L176" href="#L176">176</a> 
<a class="jxr_linenumber" name="L177" href="#L177">177</a>         <em class="jxr_comment">// test listeners for the correct artifacts</em>
<a class="jxr_linenumber" name="L178" href="#L178">178</a>         listener.deleteArtifact( metadataRepository, getRepository().getId(), <span class="jxr_string">"org.apache.maven.plugins"</span>,
<a class="jxr_linenumber" name="L179" href="#L179">179</a>                                  <span class="jxr_string">"maven-assembly-plugin"</span>, <span class="jxr_string">"1.1.2-20070427.065136-1"</span>,
<a class="jxr_linenumber" name="L180" href="#L180">180</a>                                  <span class="jxr_string">"maven-assembly-plugin-1.1.2-20070427.065136-1.jar"</span> );
<a class="jxr_linenumber" name="L181" href="#L181">181</a>         listener.deleteArtifact( metadataRepository, getRepository().getId(), <span class="jxr_string">"org.apache.maven.plugins"</span>,
<a class="jxr_linenumber" name="L182" href="#L182">182</a>                                  <span class="jxr_string">"maven-assembly-plugin"</span>, <span class="jxr_string">"1.1.2-20070427.065136-1"</span>,
<a class="jxr_linenumber" name="L183" href="#L183">183</a>                                  <span class="jxr_string">"maven-assembly-plugin-1.1.2-20070427.065136-1.pom"</span> );
<a class="jxr_linenumber" name="L184" href="#L184">184</a>         listenerControl.replay();
<a class="jxr_linenumber" name="L185" href="#L185">185</a> 
<a class="jxr_linenumber" name="L186" href="#L186">186</a>         <em class="jxr_comment">// Provide the metadata list</em>
<a class="jxr_linenumber" name="L187" href="#L187">187</a>         List&lt;ArtifactMetadata&gt; ml = getArtifactMetadataFromDir(TEST_REPO_ID , projectName, repo.getParent(), vDir );
<a class="jxr_linenumber" name="L188" href="#L188">188</a>         when(metadataRepository.getArtifacts(TEST_REPO_ID, projectNs,
<a class="jxr_linenumber" name="L189" href="#L189">189</a>             projectName, projectVersion)).thenReturn(ml);
<a class="jxr_linenumber" name="L190" href="#L190">190</a> 
<a class="jxr_linenumber" name="L191" href="#L191">191</a> 
<a class="jxr_linenumber" name="L192" href="#L192">192</a>         repoPurge.process( PATH_TO_TEST_ORDER_OF_DELETION );
<a class="jxr_linenumber" name="L193" href="#L193">193</a> 
<a class="jxr_linenumber" name="L194" href="#L194">194</a>         listenerControl.verify();
<a class="jxr_linenumber" name="L195" href="#L195">195</a> 
<a class="jxr_linenumber" name="L196" href="#L196">196</a>         <em class="jxr_comment">// Verify the metadataRepository invocations</em>
<a class="jxr_linenumber" name="L197" href="#L197">197</a>         verify(metadataRepository, never()).removeProjectVersion(eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion));
<a class="jxr_linenumber" name="L198" href="#L198">198</a>         ArgumentCaptor&lt;ArtifactMetadata&gt; metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L199" href="#L199">199</a>         verify(metadataRepository, times(deletedVersions.size())).removeArtifact(metadataArg.capture(), eq(projectVersion));
<a class="jxr_linenumber" name="L200" href="#L200">200</a>         List&lt;ArtifactMetadata&gt; metaL = metadataArg.getAllValues();
<a class="jxr_linenumber" name="L201" href="#L201">201</a>         <strong class="jxr_keyword">for</strong> (ArtifactMetadata meta : metaL) {
<a class="jxr_linenumber" name="L202" href="#L202">202</a>             assertTrue(meta.getId().startsWith(projectName));
<a class="jxr_linenumber" name="L203" href="#L203">203</a>             assertTrue(deletedVersions.contains(meta.getVersion()));
<a class="jxr_linenumber" name="L204" href="#L204">204</a>         }
<a class="jxr_linenumber" name="L205" href="#L205">205</a> 
<a class="jxr_linenumber" name="L206" href="#L206">206</a> 
<a class="jxr_linenumber" name="L207" href="#L207">207</a>         assertDeleted( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070427.065136-1.jar"</span> );
<a class="jxr_linenumber" name="L208" href="#L208">208</a>         assertDeleted( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070427.065136-1.jar.sha1"</span> );
<a class="jxr_linenumber" name="L209" href="#L209">209</a>         assertDeleted( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070427.065136-1.jar.md5"</span> );
<a class="jxr_linenumber" name="L210" href="#L210">210</a>         assertDeleted( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070427.065136-1.pom"</span> );
<a class="jxr_linenumber" name="L211" href="#L211">211</a>         assertDeleted( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070427.065136-1.pom.sha1"</span> );
<a class="jxr_linenumber" name="L212" href="#L212">212</a>         assertDeleted( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070427.065136-1.pom.md5"</span> );
<a class="jxr_linenumber" name="L213" href="#L213">213</a> 
<a class="jxr_linenumber" name="L214" href="#L214">214</a>         <em class="jxr_comment">// the following should not have been deleted</em>
<a class="jxr_linenumber" name="L215" href="#L215">215</a>         assertExists( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070506.163513-2.jar"</span> );
<a class="jxr_linenumber" name="L216" href="#L216">216</a>         assertExists( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070506.163513-2.jar.sha1"</span> );
<a class="jxr_linenumber" name="L217" href="#L217">217</a>         assertExists( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070506.163513-2.jar.md5"</span> );
<a class="jxr_linenumber" name="L218" href="#L218">218</a>         assertExists( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070506.163513-2.pom"</span> );
<a class="jxr_linenumber" name="L219" href="#L219">219</a>         assertExists( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070506.163513-2.pom.sha1"</span> );
<a class="jxr_linenumber" name="L220" href="#L220">220</a>         assertExists( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070506.163513-2.pom.md5"</span> );
<a class="jxr_linenumber" name="L221" href="#L221">221</a> 
<a class="jxr_linenumber" name="L222" href="#L222">222</a>         assertExists( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070615.105019-3.jar"</span> );
<a class="jxr_linenumber" name="L223" href="#L223">223</a>         assertExists( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070615.105019-3.jar.sha1"</span> );
<a class="jxr_linenumber" name="L224" href="#L224">224</a>         assertExists( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070615.105019-3.jar.md5"</span> );
<a class="jxr_linenumber" name="L225" href="#L225">225</a>         assertExists( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070615.105019-3.pom"</span> );
<a class="jxr_linenumber" name="L226" href="#L226">226</a>         assertExists( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070615.105019-3.pom.sha1"</span> );
<a class="jxr_linenumber" name="L227" href="#L227">227</a>         assertExists( projectRoot + <span class="jxr_string">"/1.1.2-SNAPSHOT/maven-assembly-plugin-1.1.2-20070615.105019-3.pom.md5"</span> );
<a class="jxr_linenumber" name="L228" href="#L228">228</a>     }
<a class="jxr_linenumber" name="L229" href="#L229">229</a> 
<a class="jxr_linenumber" name="L230" href="#L230">230</a>     @Test
<a class="jxr_linenumber" name="L231" href="#L231">231</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMetadataDrivenSnapshots()
<a class="jxr_linenumber" name="L232" href="#L232">232</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="L233" href="#L233">233</a>     {
<a class="jxr_linenumber" name="L234" href="#L234">234</a>         ManagedRepository repoConfiguration = getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME );
<a class="jxr_linenumber" name="L235" href="#L235">235</a>         List&lt;RepositoryListener&gt; listeners = Collections.singletonList( listener );
<a class="jxr_linenumber" name="L236" href="#L236">236</a>         repoPurge = <strong class="jxr_keyword">new</strong> DaysOldRepositoryPurge( getRepository(), repoConfiguration.getDaysOlder(),
<a class="jxr_linenumber" name="L237" href="#L237">237</a>                                                 repoConfiguration.getRetentionCount(), repositorySession, listeners );
<a class="jxr_linenumber" name="L238" href="#L238">238</a> 
<a class="jxr_linenumber" name="L239" href="#L239">239</a>         String repoRoot = prepareTestRepos();
<a class="jxr_linenumber" name="L240" href="#L240">240</a>         String projectNs = <span class="jxr_string">"org.codehaus.plexus"</span>;
<a class="jxr_linenumber" name="L241" href="#L241">241</a>         String projectPath = projectNs.replaceAll(<span class="jxr_string">"&#92;&#92;."</span>,<span class="jxr_string">"/"</span>);
<a class="jxr_linenumber" name="L242" href="#L242">242</a>         String projectName = <span class="jxr_string">"plexus-utils"</span>;
<a class="jxr_linenumber" name="L243" href="#L243">243</a>         String projectVersion = <span class="jxr_string">"1.4.3-SNAPSHOT"</span>;
<a class="jxr_linenumber" name="L244" href="#L244">244</a>         String projectRoot = repoRoot + <span class="jxr_string">"/"</span> + projectPath+<span class="jxr_string">"/"</span>+projectName;
<a class="jxr_linenumber" name="L245" href="#L245">245</a>         Path repo = getTestRepoRootPath();
<a class="jxr_linenumber" name="L246" href="#L246">246</a>         Path vDir = repo.resolve(projectPath).resolve(projectName).resolve(projectVersion);
<a class="jxr_linenumber" name="L247" href="#L247">247</a>         Set&lt;String&gt; deletedVersions = <strong class="jxr_keyword">new</strong> HashSet&lt;&gt;();
<a class="jxr_linenumber" name="L248" href="#L248">248</a>         deletedVersions.add(<span class="jxr_string">"1.4.3-20070113.163208-4"</span>);
<a class="jxr_linenumber" name="L249" href="#L249">249</a> 
<a class="jxr_linenumber" name="L250" href="#L250">250</a> 
<a class="jxr_linenumber" name="L251" href="#L251">251</a>         String versionRoot = projectRoot + <span class="jxr_string">"/"</span>+ projectVersion;
<a class="jxr_linenumber" name="L252" href="#L252">252</a> 
<a class="jxr_linenumber" name="L253" href="#L253">253</a>         Calendar currentDate = Calendar.getInstance( DateUtils.UTC_TIME_ZONE );
<a class="jxr_linenumber" name="L254" href="#L254">254</a>         setLastModified( versionRoot, currentDate.getTimeInMillis() );
<a class="jxr_linenumber" name="L255" href="#L255">255</a> 
<a class="jxr_linenumber" name="L256" href="#L256">256</a>         String timestamp = <strong class="jxr_keyword">new</strong> SimpleDateFormat( <span class="jxr_string">"yyyyMMdd.HHmmss"</span> ).format( currentDate.getTime() );
<a class="jxr_linenumber" name="L257" href="#L257">257</a> 
<a class="jxr_linenumber" name="L258" href="#L258">258</a>         <strong class="jxr_keyword">for</strong> ( <strong class="jxr_keyword">int</strong> i = 5; i &lt;= 7; i++ )
<a class="jxr_linenumber" name="L259" href="#L259">259</a>         {
<a class="jxr_linenumber" name="L260" href="#L260">260</a>             File jarFile = <strong class="jxr_keyword">new</strong> File( versionRoot, <span class="jxr_string">"/plexus-utils-1.4.3-"</span> + timestamp + <span class="jxr_string">"-"</span> + i + <span class="jxr_string">".jar"</span> );
<a class="jxr_linenumber" name="L261" href="#L261">261</a>             jarFile.createNewFile();
<a class="jxr_linenumber" name="L262" href="#L262">262</a>             File pomFile = <strong class="jxr_keyword">new</strong> File( versionRoot, <span class="jxr_string">"/plexus-utils-1.4.3-"</span> + timestamp + <span class="jxr_string">"-"</span> + i + <span class="jxr_string">".pom"</span> );
<a class="jxr_linenumber" name="L263" href="#L263">263</a>             pomFile.createNewFile();
<a class="jxr_linenumber" name="L264" href="#L264">264</a> 
<a class="jxr_linenumber" name="L265" href="#L265">265</a>             <em class="jxr_comment">// set timestamp to older than 100 days for the first build, but ensure the filename timestamp is honoured instead</em>
<a class="jxr_linenumber" name="L266" href="#L266">266</a>             <strong class="jxr_keyword">if</strong> ( i == 5 )
<a class="jxr_linenumber" name="L267" href="#L267">267</a>             {
<a class="jxr_linenumber" name="L268" href="#L268">268</a>                 jarFile.setLastModified( OLD_TIMESTAMP );
<a class="jxr_linenumber" name="L269" href="#L269">269</a>                 pomFile.setLastModified( OLD_TIMESTAMP );
<a class="jxr_linenumber" name="L270" href="#L270">270</a>             }
<a class="jxr_linenumber" name="L271" href="#L271">271</a>         }
<a class="jxr_linenumber" name="L272" href="#L272">272</a> 
<a class="jxr_linenumber" name="L273" href="#L273">273</a>         <em class="jxr_comment">// test listeners for the correct artifacts</em>
<a class="jxr_linenumber" name="L274" href="#L274">274</a>         listener.deleteArtifact( metadataRepository, getRepository().getId(), <span class="jxr_string">"org.codehaus.plexus"</span>, <span class="jxr_string">"plexus-utils"</span>,
<a class="jxr_linenumber" name="L275" href="#L275">275</a>                                  <span class="jxr_string">"1.4.3-20070113.163208-4"</span>, <span class="jxr_string">"plexus-utils-1.4.3-20070113.163208-4.jar"</span> );
<a class="jxr_linenumber" name="L276" href="#L276">276</a>         listener.deleteArtifact( metadataRepository, getRepository().getId(), <span class="jxr_string">"org.codehaus.plexus"</span>, <span class="jxr_string">"plexus-utils"</span>,
<a class="jxr_linenumber" name="L277" href="#L277">277</a>                                  <span class="jxr_string">"1.4.3-20070113.163208-4"</span>, <span class="jxr_string">"plexus-utils-1.4.3-20070113.163208-4.pom"</span> );
<a class="jxr_linenumber" name="L278" href="#L278">278</a>         listenerControl.replay();
<a class="jxr_linenumber" name="L279" href="#L279">279</a> 
<a class="jxr_linenumber" name="L280" href="#L280">280</a>         <em class="jxr_comment">// Provide the metadata list</em>
<a class="jxr_linenumber" name="L281" href="#L281">281</a>         List&lt;ArtifactMetadata&gt; ml = getArtifactMetadataFromDir(TEST_REPO_ID , projectName, repo.getParent(), vDir );
<a class="jxr_linenumber" name="L282" href="#L282">282</a>         when(metadataRepository.getArtifacts(TEST_REPO_ID, projectNs,
<a class="jxr_linenumber" name="L283" href="#L283">283</a>             projectName, projectVersion)).thenReturn(ml);
<a class="jxr_linenumber" name="L284" href="#L284">284</a> 
<a class="jxr_linenumber" name="L285" href="#L285">285</a> 
<a class="jxr_linenumber" name="L286" href="#L286">286</a>         repoPurge.process( PATH_TO_BY_DAYS_OLD_METADATA_DRIVEN_ARTIFACT );
<a class="jxr_linenumber" name="L287" href="#L287">287</a> 
<a class="jxr_linenumber" name="L288" href="#L288">288</a>         listenerControl.verify();
<a class="jxr_linenumber" name="L289" href="#L289">289</a> 
<a class="jxr_linenumber" name="L290" href="#L290">290</a>         <em class="jxr_comment">// Verify the metadataRepository invocations</em>
<a class="jxr_linenumber" name="L291" href="#L291">291</a>         verify(metadataRepository, never()).removeProjectVersion(eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion));
<a class="jxr_linenumber" name="L292" href="#L292">292</a>         ArgumentCaptor&lt;ArtifactMetadata&gt; metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L293" href="#L293">293</a>         verify(metadataRepository, times(deletedVersions.size())).removeArtifact(metadataArg.capture(), eq(projectVersion));
<a class="jxr_linenumber" name="L294" href="#L294">294</a>         List&lt;ArtifactMetadata&gt; metaL = metadataArg.getAllValues();
<a class="jxr_linenumber" name="L295" href="#L295">295</a>         <strong class="jxr_keyword">for</strong> (ArtifactMetadata meta : metaL) {
<a class="jxr_linenumber" name="L296" href="#L296">296</a>             assertTrue(meta.getId().startsWith(projectName));
<a class="jxr_linenumber" name="L297" href="#L297">297</a>             assertTrue(deletedVersions.contains(meta.getVersion()));
<a class="jxr_linenumber" name="L298" href="#L298">298</a>         }
<a class="jxr_linenumber" name="L299" href="#L299">299</a> 
<a class="jxr_linenumber" name="L300" href="#L300">300</a> 
<a class="jxr_linenumber" name="L301" href="#L301">301</a>         <em class="jxr_comment">// this should be deleted since the filename version (timestamp) is older than</em>
<a class="jxr_linenumber" name="L302" href="#L302">302</a>         <em class="jxr_comment">// 100 days even if the last modified date was &lt;100 days ago</em>
<a class="jxr_linenumber" name="L303" href="#L303">303</a>         assertDeleted( versionRoot + <span class="jxr_string">"/plexus-utils-1.4.3-20070113.163208-4.jar"</span> );
<a class="jxr_linenumber" name="L304" href="#L304">304</a>         assertDeleted( versionRoot + <span class="jxr_string">"/plexus-utils-1.4.3-20070113.163208-4.jar.sha1"</span> );
<a class="jxr_linenumber" name="L305" href="#L305">305</a>         assertDeleted( versionRoot + <span class="jxr_string">"/plexus-utils-1.4.3-20070113.163208-4.pom"</span> );
<a class="jxr_linenumber" name="L306" href="#L306">306</a>         assertDeleted( versionRoot + <span class="jxr_string">"/plexus-utils-1.4.3-20070113.163208-4.pom.sha1"</span> );
<a class="jxr_linenumber" name="L307" href="#L307">307</a> 
<a class="jxr_linenumber" name="L308" href="#L308">308</a>         <em class="jxr_comment">// this should not be deleted because last modified date is &lt;100 days ago</em>
<a class="jxr_linenumber" name="L309" href="#L309">309</a>         assertExists( versionRoot + <span class="jxr_string">"/plexus-utils-1.4.3-SNAPSHOT.jar"</span> );
<a class="jxr_linenumber" name="L310" href="#L310">310</a>         assertExists( versionRoot + <span class="jxr_string">"/plexus-utils-1.4.3-SNAPSHOT.pom"</span> );
<a class="jxr_linenumber" name="L311" href="#L311">311</a> 
<a class="jxr_linenumber" name="L312" href="#L312">312</a>         <strong class="jxr_keyword">for</strong> ( <strong class="jxr_keyword">int</strong> i = 5; i &lt;= 7; i++ )
<a class="jxr_linenumber" name="L313" href="#L313">313</a>         {
<a class="jxr_linenumber" name="L314" href="#L314">314</a>             assertExists( versionRoot + <span class="jxr_string">"/plexus-utils-1.4.3-"</span> + timestamp + <span class="jxr_string">"-"</span> + i + <span class="jxr_string">".jar"</span> );
<a class="jxr_linenumber" name="L315" href="#L315">315</a>             assertExists( versionRoot + <span class="jxr_string">"/plexus-utils-1.4.3-"</span> + timestamp + <span class="jxr_string">"-"</span> + i + <span class="jxr_string">".pom"</span> );
<a class="jxr_linenumber" name="L316" href="#L316">316</a>         }
<a class="jxr_linenumber" name="L317" href="#L317">317</a>     }
<a class="jxr_linenumber" name="L318" href="#L318">318</a> 
<a class="jxr_linenumber" name="L319" href="#L319">319</a> 
<a class="jxr_linenumber" name="L320" href="#L320">320</a> }
</pre>
<hr/>
<div id="footer">Copyright &#169; 2006&#x2013;2022 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</div>
</body>
</html>
