<!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>/home/martin/git/archiva/bra/master/archiva/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java 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">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.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></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.managed.ManagedRepositoryAdmin;
<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin;
<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.ArchivaConfiguration;
<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.metadata.model.ArtifactMetadata;
<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.metadata.model.MetadataFacet;
<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.repository.ManagedRepository;
<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.repository.RepositoryContentFactory;
<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.repository.RepositoryRegistry;
<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.metadata.audit.RepositoryListener;
<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.repository.metadata.base.MetadataTools;
<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> org.custommonkey.xmlunit.XMLAssert;
<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> org.easymock.EasyMock;
<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">import</strong> org.junit.Before;
<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> org.junit.Test;
<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">import</strong> org.springframework.test.context.ContextConfiguration;
<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> javax.inject.Inject;
<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">import</strong> java.nio.charset.Charset;
<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <strong class="jxr_keyword">import</strong> java.nio.file.Files;
<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <strong class="jxr_keyword">import</strong> java.nio.file.Path;
<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <strong class="jxr_keyword">import</strong> java.nio.file.Paths;
<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <strong class="jxr_keyword">import</strong> java.util.HashSet;
<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
<a class="jxr_linenumber" name="L48" href="#L48">48</a>  
<a class="jxr_linenumber" name="L49" href="#L49">49</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertTrue;
<a class="jxr_linenumber" name="L50" href="#L50">50</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.eq;
<a class="jxr_linenumber" name="L51" href="#L51">51</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.*;
<a class="jxr_linenumber" name="L52" href="#L52">52</a>  
<a class="jxr_linenumber" name="L53" href="#L53">53</a>  
<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L56" href="#L56">56</a>  @ContextConfiguration( locations = { <span class="jxr_string">"classpath*:/META-INF/spring-context.xml"</span>,
<a class="jxr_linenumber" name="L57" href="#L57">57</a>      <span class="jxr_string">"classpath:/spring-context-cleanup-released-snapshots.xml"</span> } )
<a class="jxr_linenumber" name="L58" href="#L58">58</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> CleanupReleasedSnapshotsRepositoryPurgeTest
<a class="jxr_linenumber" name="L59" href="#L59">59</a>      <strong class="jxr_keyword">extends</strong> AbstractRepositoryPurgeTest
<a class="jxr_linenumber" name="L60" href="#L60">60</a>  {
<a class="jxr_linenumber" name="L61" href="#L61">61</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String INDEX_PATH = <span class="jxr_string">".index&#92;&#92;nexus-maven-repository-index.zip"</span>;
<a class="jxr_linenumber" name="L62" href="#L62">62</a>  
<a class="jxr_linenumber" name="L63" href="#L63">63</a>      <strong class="jxr_keyword">private</strong> ArchivaConfiguration archivaConfiguration;
<a class="jxr_linenumber" name="L64" href="#L64">64</a>  
<a class="jxr_linenumber" name="L65" href="#L65">65</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String PATH_TO_RELEASED_SNAPSHOT_IN_DIFF_REPO =
<a class="jxr_linenumber" name="L66" href="#L66">66</a>          <span class="jxr_string">"org/apache/archiva/released-artifact-in-diff-repo/1.0-SNAPSHOT/released-artifact-in-diff-repo-1.0-SNAPSHOT.jar"</span>;
<a class="jxr_linenumber" name="L67" href="#L67">67</a>  
<a class="jxr_linenumber" name="L68" href="#L68">68</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String PATH_TO_HIGHER_SNAPSHOT_EXISTS_IN_SAME_REPO =
<a class="jxr_linenumber" name="L69" href="#L69">69</a>          <span class="jxr_string">"org/apache/maven/plugins/maven-source-plugin/2.0.3-SNAPSHOT/maven-source-plugin-2.0.3-SNAPSHOT.jar"</span>;
<a class="jxr_linenumber" name="L70" href="#L70">70</a>  
<a class="jxr_linenumber" name="L71" href="#L71">71</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String PATH_TO_RELEASED_SNAPSHOT_IN_SAME_REPO =
<a class="jxr_linenumber" name="L72" href="#L72">72</a>          <span class="jxr_string">"org/apache/maven/plugins/maven-plugin-plugin/2.3-SNAPSHOT/maven-plugin-plugin-2.3-SNAPSHOT.jar"</span>;
<a class="jxr_linenumber" name="L73" href="#L73">73</a>  
<a class="jxr_linenumber" name="L74" href="#L74">74</a>      @Inject
<a class="jxr_linenumber" name="L75" href="#L75">75</a>      MetadataTools metadataTools;
<a class="jxr_linenumber" name="L76" href="#L76">76</a>  
<a class="jxr_linenumber" name="L77" href="#L77">77</a>      @Before
<a class="jxr_linenumber" name="L78" href="#L78">78</a>      @Override
<a class="jxr_linenumber" name="L79" href="#L79">79</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp()
<a class="jxr_linenumber" name="L80" href="#L80">80</a>          <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="L81" href="#L81">81</a>      {
<a class="jxr_linenumber" name="L82" href="#L82">82</a>          <strong class="jxr_keyword">super</strong>.setUp();
<a class="jxr_linenumber" name="L83" href="#L83">83</a>  
<a class="jxr_linenumber" name="L84" href="#L84">84</a>          RepositoryContentFactory factory =
<a class="jxr_linenumber" name="L85" href="#L85">85</a>              applicationContext.getBean( <span class="jxr_string">"repositoryContentFactory#cleanup-released-snapshots"</span>,
<a class="jxr_linenumber" name="L86" href="#L86">86</a>                                          RepositoryContentFactory.<strong class="jxr_keyword">class</strong> );
<a class="jxr_linenumber" name="L87" href="#L87">87</a>  
<a class="jxr_linenumber" name="L88" href="#L88">88</a>          archivaConfiguration =
<a class="jxr_linenumber" name="L89" href="#L89">89</a>              applicationContext.getBean( <span class="jxr_string">"archivaConfiguration#cleanup-released-snapshots"</span>, ArchivaConfiguration.<strong class="jxr_keyword">class</strong> );
<a class="jxr_linenumber" name="L90" href="#L90">90</a>  
<a class="jxr_linenumber" name="L91" href="#L91">91</a>          listenerControl = EasyMock.createControl( );
<a class="jxr_linenumber" name="L92" href="#L92">92</a>  
<a class="jxr_linenumber" name="L93" href="#L93">93</a>          listener = listenerControl.createMock( RepositoryListener.<strong class="jxr_keyword">class</strong> );
<a class="jxr_linenumber" name="L94" href="#L94">94</a>          List&lt;RepositoryListener&gt; listeners = Collections.singletonList( listener );
<a class="jxr_linenumber" name="L95" href="#L95">95</a>  
<a class="jxr_linenumber" name="L96" href="#L96">96</a>          sessionControl.reset();
<a class="jxr_linenumber" name="L97" href="#L97">97</a>          sessionFactoryControl.reset();
<a class="jxr_linenumber" name="L98" href="#L98">98</a>          EasyMock.expect( sessionFactory.createSession( ) ).andStubReturn( repositorySession );
<a class="jxr_linenumber" name="L99" href="#L99">99</a>          EasyMock.expect( repositorySession.getRepository()).andStubReturn( metadataRepository );
<a class="jxr_linenumber" name="L100" href="#L100">100</a>         repositorySession.save();
<a class="jxr_linenumber" name="L101" href="#L101">101</a>         EasyMock.expectLastCall().anyTimes();
<a class="jxr_linenumber" name="L102" href="#L102">102</a>         sessionFactoryControl.replay();
<a class="jxr_linenumber" name="L103" href="#L103">103</a>         sessionControl.replay();
<a class="jxr_linenumber" name="L104" href="#L104">104</a>         repoPurge = <strong class="jxr_keyword">new</strong> CleanupReleasedSnapshotsRepositoryPurge( getRepository(), metadataTools,
<a class="jxr_linenumber" name="L105" href="#L105">105</a>                                                                  applicationContext.getBean(
<a class="jxr_linenumber" name="L106" href="#L106">106</a>                                                                      ArchivaRepositoryRegistry.<strong class="jxr_keyword">class</strong> ),
<a class="jxr_linenumber" name="L107" href="#L107">107</a>                                                                  repositorySession, listeners );
<a class="jxr_linenumber" name="L108" href="#L108">108</a> 
<a class="jxr_linenumber" name="L109" href="#L109">109</a>         ( (DefaultManagedRepositoryAdmin) applicationContext.getBean(
<a class="jxr_linenumber" name="L110" href="#L110">110</a>             ManagedRepositoryAdmin.<strong class="jxr_keyword">class</strong> ) ).setArchivaConfiguration( archivaConfiguration );
<a class="jxr_linenumber" name="L111" href="#L111">111</a>     }
<a class="jxr_linenumber" name="L112" href="#L112">112</a> 
<a class="jxr_linenumber" name="L113" href="#L113">113</a>     @Test
<a class="jxr_linenumber" name="L114" href="#L114">114</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testReleasedSnapshotsExistsInSameRepo()
<a class="jxr_linenumber" name="L115" href="#L115">115</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="L116" href="#L116">116</a>     {
<a class="jxr_linenumber" name="L117" href="#L117">117</a>         RepositoryRegistry repositoryRegistry = applicationContext.getBean( ArchivaRepositoryRegistry.<strong class="jxr_keyword">class</strong> );
<a class="jxr_linenumber" name="L118" href="#L118">118</a>         repositoryRegistry.removeRepository( TEST_REPO_ID );
<a class="jxr_linenumber" name="L119" href="#L119">119</a>         repositoryRegistry.putRepository(
<a class="jxr_linenumber" name="L120" href="#L120">120</a>             getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ));
<a class="jxr_linenumber" name="L121" href="#L121">121</a> 
<a class="jxr_linenumber" name="L122" href="#L122">122</a>         String repoRoot = prepareTestRepos();
<a class="jxr_linenumber" name="L123" href="#L123">123</a>         String projectNs = <span class="jxr_string">"org.apache.maven.plugins"</span>;
<a class="jxr_linenumber" name="L124" href="#L124">124</a>         String projectPath = projectNs.replaceAll(<span class="jxr_string">"&#92;&#92;."</span>,<span class="jxr_string">"/"</span>);
<a class="jxr_linenumber" name="L125" href="#L125">125</a>         String projectName = <span class="jxr_string">"maven-plugin-plugin"</span>;
<a class="jxr_linenumber" name="L126" href="#L126">126</a>         String projectVersion = <span class="jxr_string">"2.3-SNAPSHOT"</span>;
<a class="jxr_linenumber" name="L127" href="#L127">127</a>         String projectRoot = repoRoot + <span class="jxr_string">"/"</span> + projectPath+<span class="jxr_string">"/"</span>+projectName;
<a class="jxr_linenumber" name="L128" href="#L128">128</a>         Path repo = getTestRepoRootPath();
<a class="jxr_linenumber" name="L129" href="#L129">129</a>         Path vDir = repo.resolve(projectPath).resolve(projectName).resolve(projectVersion);
<a class="jxr_linenumber" name="L130" href="#L130">130</a>         Set&lt;String&gt; deletedVersions = <strong class="jxr_keyword">new</strong> HashSet&lt;&gt;();
<a class="jxr_linenumber" name="L131" href="#L131">131</a>         deletedVersions.add(<span class="jxr_string">"2.3-SNAPSHOT"</span>);
<a class="jxr_linenumber" name="L132" href="#L132">132</a> 
<a class="jxr_linenumber" name="L133" href="#L133">133</a>         <em class="jxr_comment">// test listeners for the correct artifacts</em>
<a class="jxr_linenumber" name="L134" href="#L134">134</a>         listener.deleteArtifact( metadataRepository, getRepository().getId(), <span class="jxr_string">"org.apache.maven.plugins"</span>,
<a class="jxr_linenumber" name="L135" href="#L135">135</a>                                  <span class="jxr_string">"maven-plugin-plugin"</span>, <span class="jxr_string">"2.3-SNAPSHOT"</span>, <span class="jxr_string">"maven-plugin-plugin-2.3-SNAPSHOT.jar"</span> );
<a class="jxr_linenumber" name="L136" href="#L136">136</a>         listenerControl.replay();
<a class="jxr_linenumber" name="L137" href="#L137">137</a> 
<a class="jxr_linenumber" name="L138" href="#L138">138</a>         <em class="jxr_comment">// Provide the metadata list</em>
<a class="jxr_linenumber" name="L139" href="#L139">139</a>         List&lt;ArtifactMetadata&gt; ml = getArtifactMetadataFromDir(TEST_REPO_ID , projectName, repo.getParent(), vDir );
<a class="jxr_linenumber" name="L140" href="#L140">140</a>         when(metadataRepository.getArtifacts(repositorySession , TEST_REPO_ID,
<a class="jxr_linenumber" name="L141" href="#L141">141</a>             projectNs, projectName, projectVersion )).thenReturn(ml);
<a class="jxr_linenumber" name="L142" href="#L142">142</a> 
<a class="jxr_linenumber" name="L143" href="#L143">143</a> 
<a class="jxr_linenumber" name="L144" href="#L144">144</a>         repoPurge.process( PATH_TO_RELEASED_SNAPSHOT_IN_SAME_REPO );
<a class="jxr_linenumber" name="L145" href="#L145">145</a> 
<a class="jxr_linenumber" name="L146" href="#L146">146</a>         listenerControl.verify();
<a class="jxr_linenumber" name="L147" href="#L147">147</a> 
<a class="jxr_linenumber" name="L148" href="#L148">148</a>         <em class="jxr_comment">// Verify the metadataRepository invocations</em>
<a class="jxr_linenumber" name="L149" href="#L149">149</a>         <em class="jxr_comment">// complete snapshot version removal for released</em>
<a class="jxr_linenumber" name="L150" href="#L150">150</a>         verify(metadataRepository, times(1)).removeProjectVersion(eq(repositorySession) , eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion) );
<a class="jxr_linenumber" name="L151" href="#L151">151</a>         verify(metadataRepository, never()).removeProjectVersion(eq(repositorySession) , eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(<span class="jxr_string">"2.3"</span>) );
<a class="jxr_linenumber" name="L152" href="#L152">152</a> 
<a class="jxr_linenumber" name="L153" href="#L153">153</a>         <em class="jxr_comment">// check if the snapshot was removed</em>
<a class="jxr_linenumber" name="L154" href="#L154">154</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.3-SNAPSHOT"</span> );
<a class="jxr_linenumber" name="L155" href="#L155">155</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.3-SNAPSHOT/maven-plugin-plugin-2.3-SNAPSHOT.jar"</span> );
<a class="jxr_linenumber" name="L156" href="#L156">156</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.3-SNAPSHOT/maven-plugin-plugin-2.3-SNAPSHOT.jar.md5"</span> );
<a class="jxr_linenumber" name="L157" href="#L157">157</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.3-SNAPSHOT/maven-plugin-plugin-2.3-SNAPSHOT.jar.sha1"</span> );
<a class="jxr_linenumber" name="L158" href="#L158">158</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.3-SNAPSHOT/maven-plugin-plugin-2.3-SNAPSHOT.pom"</span> );
<a class="jxr_linenumber" name="L159" href="#L159">159</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.3-SNAPSHOT/maven-plugin-plugin-2.3-SNAPSHOT.pom.md5"</span> );
<a class="jxr_linenumber" name="L160" href="#L160">160</a>         assertDeleted( projectRoot + <span class="jxr_string">"/2.3-SNAPSHOT/maven-plugin-plugin-2.3-SNAPSHOT.pom.sha1"</span> );
<a class="jxr_linenumber" name="L161" href="#L161">161</a> 
<a class="jxr_linenumber" name="L162" href="#L162">162</a>         <em class="jxr_comment">// check if the released version was not removed</em>
<a class="jxr_linenumber" name="L163" href="#L163">163</a>         assertExists( projectRoot + <span class="jxr_string">"/2.3"</span> );
<a class="jxr_linenumber" name="L164" href="#L164">164</a>         assertExists( projectRoot + <span class="jxr_string">"/2.3/maven-plugin-plugin-2.3-sources.jar"</span> );
<a class="jxr_linenumber" name="L165" href="#L165">165</a>         assertExists( projectRoot + <span class="jxr_string">"/2.3/maven-plugin-plugin-2.3-sources.jar.md5"</span> );
<a class="jxr_linenumber" name="L166" href="#L166">166</a>         assertExists( projectRoot + <span class="jxr_string">"/2.3/maven-plugin-plugin-2.3-sources.jar.sha1"</span> );
<a class="jxr_linenumber" name="L167" href="#L167">167</a>         assertExists( projectRoot + <span class="jxr_string">"/2.3/maven-plugin-plugin-2.3.jar"</span> );
<a class="jxr_linenumber" name="L168" href="#L168">168</a>         assertExists( projectRoot + <span class="jxr_string">"/2.3/maven-plugin-plugin-2.3.jar.md5"</span> );
<a class="jxr_linenumber" name="L169" href="#L169">169</a>         assertExists( projectRoot + <span class="jxr_string">"/2.3/maven-plugin-plugin-2.3.jar.sha1"</span> );
<a class="jxr_linenumber" name="L170" href="#L170">170</a>         assertExists( projectRoot + <span class="jxr_string">"/2.3/maven-plugin-plugin-2.3.pom"</span> );
<a class="jxr_linenumber" name="L171" href="#L171">171</a>         assertExists( projectRoot + <span class="jxr_string">"/2.3/maven-plugin-plugin-2.3.pom.md5"</span> );
<a class="jxr_linenumber" name="L172" href="#L172">172</a>         assertExists( projectRoot + <span class="jxr_string">"/2.3/maven-plugin-plugin-2.3.pom.sha1"</span> );
<a class="jxr_linenumber" name="L173" href="#L173">173</a> 
<a class="jxr_linenumber" name="L174" href="#L174">174</a>         <em class="jxr_comment">// check if metadata file was updated</em>
<a class="jxr_linenumber" name="L175" href="#L175">175</a>         Path artifactMetadataFile = Paths.get( projectRoot + <span class="jxr_string">"/maven-metadata.xml"</span> );
<a class="jxr_linenumber" name="L176" href="#L176">176</a> 
<a class="jxr_linenumber" name="L177" href="#L177">177</a>         String metadataXml = org.apache.archiva.common.utils.FileUtils.readFileToString( artifactMetadataFile, Charset.defaultCharset() );
<a class="jxr_linenumber" name="L178" href="#L178">178</a> 
<a class="jxr_linenumber" name="L179" href="#L179">179</a>         String expectedVersions =
<a class="jxr_linenumber" name="L180" href="#L180">180</a>             <span class="jxr_string">"&lt;expected&gt;&lt;versions&gt;&lt;version&gt;2.2&lt;/version&gt;"</span> + <span class="jxr_string">"&lt;version&gt;2.3&lt;/version&gt;&lt;/versions&gt;&lt;/expected&gt;"</span>;
<a class="jxr_linenumber" name="L181" href="#L181">181</a> 
<a class="jxr_linenumber" name="L182" href="#L182">182</a>         XMLAssert.assertXpathEvaluatesTo( <span class="jxr_string">"2.3"</span>, <span class="jxr_string">"//metadata/versioning/release"</span>, metadataXml );
<a class="jxr_linenumber" name="L183" href="#L183">183</a>         XMLAssert.assertXpathEvaluatesTo( <span class="jxr_string">"2.3"</span>, <span class="jxr_string">"//metadata/versioning/latest"</span>, metadataXml );
<a class="jxr_linenumber" name="L184" href="#L184">184</a>         System.out.println(metadataXml);
<a class="jxr_linenumber" name="L185" href="#L185">185</a>         XMLAssert.assertXpathsEqual( <span class="jxr_string">"//expected/versions/version"</span>, expectedVersions,
<a class="jxr_linenumber" name="L186" href="#L186">186</a>                                      <span class="jxr_string">"//metadata/versioning/versions/version"</span>, metadataXml );
<a class="jxr_linenumber" name="L187" href="#L187">187</a>         XMLAssert.assertXpathEvaluatesTo( <span class="jxr_string">"20070315032817"</span>, <span class="jxr_string">"//metadata/versioning/lastUpdated"</span>, metadataXml );
<a class="jxr_linenumber" name="L188" href="#L188">188</a>     }
<a class="jxr_linenumber" name="L189" href="#L189">189</a> 
<a class="jxr_linenumber" name="L190" href="#L190">190</a>     @Test
<a class="jxr_linenumber" name="L191" href="#L191">191</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testNonArtifactFile()
<a class="jxr_linenumber" name="L192" href="#L192">192</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="L193" href="#L193">193</a>     {
<a class="jxr_linenumber" name="L194" href="#L194">194</a> 
<a class="jxr_linenumber" name="L195" href="#L195">195</a>         RepositoryRegistry repositoryRegistry = applicationContext.getBean( ArchivaRepositoryRegistry.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L196" href="#L196">196</a>         ManagedRepository managedRepository = repositoryRegistry.getManagedRepository( TEST_REPO_ID );
<a class="jxr_linenumber" name="L197" href="#L197">197</a>         repositoryRegistry.removeRepository( managedRepository );
<a class="jxr_linenumber" name="L198" href="#L198">198</a>         repositoryRegistry.putRepository(
<a class="jxr_linenumber" name="L199" href="#L199">199</a>             getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ));
<a class="jxr_linenumber" name="L200" href="#L200">200</a> 
<a class="jxr_linenumber" name="L201" href="#L201">201</a>         String repoRoot = prepareTestRepos();
<a class="jxr_linenumber" name="L202" href="#L202">202</a> 
<a class="jxr_linenumber" name="L203" href="#L203">203</a>         <em class="jxr_comment">// test listeners for the correct artifacts</em>
<a class="jxr_linenumber" name="L204" href="#L204">204</a>         listenerControl.replay();
<a class="jxr_linenumber" name="L205" href="#L205">205</a> 
<a class="jxr_linenumber" name="L206" href="#L206">206</a>         Path file = Paths.get(repoRoot, INDEX_PATH );
<a class="jxr_linenumber" name="L207" href="#L207">207</a>         <strong class="jxr_keyword">if</strong> ( !Files.exists(file) )
<a class="jxr_linenumber" name="L208" href="#L208">208</a>         {
<a class="jxr_linenumber" name="L209" href="#L209">209</a>             <em class="jxr_comment">// help windauze to create directory with .</em>
<a class="jxr_linenumber" name="L210" href="#L210">210</a>             Files.createDirectories( file.getParent() );
<a class="jxr_linenumber" name="L211" href="#L211">211</a>             Files.createFile( file );
<a class="jxr_linenumber" name="L212" href="#L212">212</a>         }
<a class="jxr_linenumber" name="L213" href="#L213">213</a>         assertTrue( Files.exists(file) );
<a class="jxr_linenumber" name="L214" href="#L214">214</a> 
<a class="jxr_linenumber" name="L215" href="#L215">215</a>         repoPurge.process( INDEX_PATH );
<a class="jxr_linenumber" name="L216" href="#L216">216</a> 
<a class="jxr_linenumber" name="L217" href="#L217">217</a>         listenerControl.verify();
<a class="jxr_linenumber" name="L218" href="#L218">218</a> 
<a class="jxr_linenumber" name="L219" href="#L219">219</a>         assertTrue( Files.exists(file) );
<a class="jxr_linenumber" name="L220" href="#L220">220</a>     }
<a class="jxr_linenumber" name="L221" href="#L221">221</a> 
<a class="jxr_linenumber" name="L222" href="#L222">222</a>     @Test
<a class="jxr_linenumber" name="L223" href="#L223">223</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testReleasedSnapshotsExistsInDifferentRepo()
<a class="jxr_linenumber" name="L224" href="#L224">224</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="L225" href="#L225">225</a>     {
<a class="jxr_linenumber" name="L226" href="#L226">226</a> 
<a class="jxr_linenumber" name="L227" href="#L227">227</a>         RepositoryRegistry repositoryRegistry = applicationContext.getBean( ArchivaRepositoryRegistry.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L228" href="#L228">228</a>         ManagedRepository managedRepository = repositoryRegistry.getManagedRepository( TEST_REPO_ID );
<a class="jxr_linenumber" name="L229" href="#L229">229</a>         repositoryRegistry.removeRepository( TEST_REPO_ID );
<a class="jxr_linenumber" name="L230" href="#L230">230</a>         repositoryRegistry.putRepository(
<a class="jxr_linenumber" name="L231" href="#L231">231</a>             getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ));
<a class="jxr_linenumber" name="L232" href="#L232">232</a> 
<a class="jxr_linenumber" name="L233" href="#L233">233</a> 
<a class="jxr_linenumber" name="L234" href="#L234">234</a>         repositoryRegistry.putRepository(
<a class="jxr_linenumber" name="L235" href="#L235">235</a>             getRepoConfiguration( RELEASES_TEST_REPO_ID, RELEASES_TEST_REPO_NAME ));
<a class="jxr_linenumber" name="L236" href="#L236">236</a> 
<a class="jxr_linenumber" name="L237" href="#L237">237</a>         String repoRoot = prepareTestRepos();
<a class="jxr_linenumber" name="L238" href="#L238">238</a>         String projectNs = <span class="jxr_string">"org.apache.archiva"</span>;
<a class="jxr_linenumber" name="L239" href="#L239">239</a>         String projectPath = projectNs.replaceAll(<span class="jxr_string">"&#92;&#92;."</span>,<span class="jxr_string">"/"</span>);
<a class="jxr_linenumber" name="L240" href="#L240">240</a>         String projectName = <span class="jxr_string">"released-artifact-in-diff-repo"</span>;
<a class="jxr_linenumber" name="L241" href="#L241">241</a>         String projectVersion = <span class="jxr_string">"1.0-SNAPSHOT"</span>;
<a class="jxr_linenumber" name="L242" href="#L242">242</a>         String releaseVersion = <span class="jxr_string">"1.0"</span>;
<a class="jxr_linenumber" name="L243" href="#L243">243</a>         String projectRoot = repoRoot + <span class="jxr_string">"/"</span> + projectPath+<span class="jxr_string">"/"</span>+projectName;
<a class="jxr_linenumber" name="L244" href="#L244">244</a>         Path repo = getTestRepoRootPath();
<a class="jxr_linenumber" name="L245" href="#L245">245</a>         Path vDir = repo.resolve(projectPath).resolve(projectName).resolve(projectVersion);
<a class="jxr_linenumber" name="L246" href="#L246">246</a>         Path releaseDir = repo.getParent().resolve(RELEASES_TEST_REPO_ID).resolve(projectPath).resolve(projectName).resolve(releaseVersion);
<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.0-SNAPSHOT"</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>         <em class="jxr_comment">// test listeners for the correct artifacts</em>
<a class="jxr_linenumber" name="L252" href="#L252">252</a>         listener.deleteArtifact( metadataRepository, getRepository().getId(), <span class="jxr_string">"org.apache.archiva"</span>,
<a class="jxr_linenumber" name="L253" href="#L253">253</a>                                  <span class="jxr_string">"released-artifact-in-diff-repo"</span>, <span class="jxr_string">"1.0-SNAPSHOT"</span>,
<a class="jxr_linenumber" name="L254" href="#L254">254</a>                                  <span class="jxr_string">"released-artifact-in-diff-repo-1.0-SNAPSHOT.jar"</span> );
<a class="jxr_linenumber" name="L255" href="#L255">255</a>         listenerControl.replay();
<a class="jxr_linenumber" name="L256" href="#L256">256</a> 
<a class="jxr_linenumber" name="L257" href="#L257">257</a>         <em class="jxr_comment">// Provide the metadata list</em>
<a class="jxr_linenumber" name="L258" href="#L258">258</a>         List&lt;ArtifactMetadata&gt; ml = getArtifactMetadataFromDir(TEST_REPO_ID , projectName, repo.getParent(), vDir );
<a class="jxr_linenumber" name="L259" href="#L259">259</a>         when(metadataRepository.getArtifacts(repositorySession , TEST_REPO_ID,
<a class="jxr_linenumber" name="L260" href="#L260">260</a>             projectNs, projectName, projectVersion )).thenReturn(ml);
<a class="jxr_linenumber" name="L261" href="#L261">261</a> 
<a class="jxr_linenumber" name="L262" href="#L262">262</a>         List&lt;ArtifactMetadata&gt; ml2 = getArtifactMetadataFromDir(RELEASES_TEST_REPO_ID , projectName, repo.getParent(), releaseDir );
<a class="jxr_linenumber" name="L263" href="#L263">263</a>         when(metadataRepository.getArtifacts(repositorySession , RELEASES_TEST_REPO_ID,
<a class="jxr_linenumber" name="L264" href="#L264">264</a>             projectNs, projectName, releaseVersion )).thenReturn(ml2);
<a class="jxr_linenumber" name="L265" href="#L265">265</a> 
<a class="jxr_linenumber" name="L266" href="#L266">266</a> 
<a class="jxr_linenumber" name="L267" href="#L267">267</a>         repoPurge.process( PATH_TO_RELEASED_SNAPSHOT_IN_DIFF_REPO );
<a class="jxr_linenumber" name="L268" href="#L268">268</a> 
<a class="jxr_linenumber" name="L269" href="#L269">269</a>         listenerControl.verify();
<a class="jxr_linenumber" name="L270" href="#L270">270</a> 
<a class="jxr_linenumber" name="L271" href="#L271">271</a>         <em class="jxr_comment">// Verify the metadataRepository invocations</em>
<a class="jxr_linenumber" name="L272" href="#L272">272</a>         <em class="jxr_comment">// Complete version removal for cleanup</em>
<a class="jxr_linenumber" name="L273" href="#L273">273</a>         verify(metadataRepository, times(1)).removeProjectVersion(eq(repositorySession) , eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion) );
<a class="jxr_linenumber" name="L274" href="#L274">274</a>         verify(metadataRepository, never()).removeProjectVersion(eq(repositorySession) , eq(RELEASES_TEST_REPO_ID), eq(projectNs), eq(projectName), eq(releaseVersion) );
<a class="jxr_linenumber" name="L275" href="#L275">275</a> 
<a class="jxr_linenumber" name="L276" href="#L276">276</a> 
<a class="jxr_linenumber" name="L277" href="#L277">277</a>         <em class="jxr_comment">// check if the snapshot was removed</em>
<a class="jxr_linenumber" name="L278" href="#L278">278</a>         assertDeleted( projectRoot + <span class="jxr_string">"/1.0-SNAPSHOT"</span> );
<a class="jxr_linenumber" name="L279" href="#L279">279</a>         assertDeleted( projectRoot + <span class="jxr_string">"/1.0-SNAPSHOT/released-artifact-in-diff-repo-1.0-SNAPSHOT.jar"</span> );
<a class="jxr_linenumber" name="L280" href="#L280">280</a>         assertDeleted( projectRoot + <span class="jxr_string">"/1.0-SNAPSHOT/released-artifact-in-diff-repo-1.0-SNAPSHOT.jar.md5"</span> );
<a class="jxr_linenumber" name="L281" href="#L281">281</a>         assertDeleted( projectRoot + <span class="jxr_string">"/1.0-SNAPSHOT/released-artifact-in-diff-repo-1.0-SNAPSHOT.jar.sha1"</span> );
<a class="jxr_linenumber" name="L282" href="#L282">282</a>         assertDeleted( projectRoot + <span class="jxr_string">"/1.0-SNAPSHOT/released-artifact-in-diff-repo-1.0-SNAPSHOT.pom"</span> );
<a class="jxr_linenumber" name="L283" href="#L283">283</a>         assertDeleted( projectRoot + <span class="jxr_string">"/1.0-SNAPSHOT/released-artifact-in-diff-repo-1.0-SNAPSHOT.pom.md5"</span> );
<a class="jxr_linenumber" name="L284" href="#L284">284</a>         assertDeleted( projectRoot + <span class="jxr_string">"/1.0-SNAPSHOT/released-artifact-in-diff-repo-1.0-SNAPSHOT.pom.sha1"</span> );
<a class="jxr_linenumber" name="L285" href="#L285">285</a> 
<a class="jxr_linenumber" name="L286" href="#L286">286</a>         String releasesProjectRoot =
<a class="jxr_linenumber" name="L287" href="#L287">287</a>             AbstractRepositoryPurgeTest.fixPath( Paths.get( <span class="jxr_string">"target/test-"</span> + getName() + <span class="jxr_string">"/releases-test-repo-one"</span> ).toAbsolutePath().toString()
<a class="jxr_linenumber" name="L288" href="#L288">288</a>                 + <span class="jxr_string">"/org/apache/archiva/released-artifact-in-diff-repo"</span> );
<a class="jxr_linenumber" name="L289" href="#L289">289</a> 
<a class="jxr_linenumber" name="L290" href="#L290">290</a>         <em class="jxr_comment">// check if the released version was not removed</em>
<a class="jxr_linenumber" name="L291" href="#L291">291</a>         assertExists( releasesProjectRoot + <span class="jxr_string">"/1.0"</span> );
<a class="jxr_linenumber" name="L292" href="#L292">292</a>         assertExists( releasesProjectRoot + <span class="jxr_string">"/1.0/released-artifact-in-diff-repo-1.0.jar"</span> );
<a class="jxr_linenumber" name="L293" href="#L293">293</a>         assertExists( releasesProjectRoot + <span class="jxr_string">"/1.0/released-artifact-in-diff-repo-1.0.jar.md5"</span> );
<a class="jxr_linenumber" name="L294" href="#L294">294</a>         assertExists( releasesProjectRoot + <span class="jxr_string">"/1.0/released-artifact-in-diff-repo-1.0.jar.sha1"</span> );
<a class="jxr_linenumber" name="L295" href="#L295">295</a>         assertExists( releasesProjectRoot + <span class="jxr_string">"/1.0/released-artifact-in-diff-repo-1.0.pom"</span> );
<a class="jxr_linenumber" name="L296" href="#L296">296</a>         assertExists( releasesProjectRoot + <span class="jxr_string">"/1.0/released-artifact-in-diff-repo-1.0.pom.md5"</span> );
<a class="jxr_linenumber" name="L297" href="#L297">297</a>         assertExists( releasesProjectRoot + <span class="jxr_string">"/1.0/released-artifact-in-diff-repo-1.0.pom.sha1"</span> );
<a class="jxr_linenumber" name="L298" href="#L298">298</a>         
<a class="jxr_linenumber" name="L299" href="#L299">299</a>         <em class="jxr_comment">// remove RELEASES_TEST_REPO_ID so this test will be more independant</em>
<a class="jxr_linenumber" name="L300" href="#L300">300</a>         applicationContext.getBean( ManagedRepositoryAdmin.<strong class="jxr_keyword">class</strong> ).deleteManagedRepository( RELEASES_TEST_REPO_ID, <strong class="jxr_keyword">null</strong>, false );
<a class="jxr_linenumber" name="L301" href="#L301">301</a>     }
<a class="jxr_linenumber" name="L302" href="#L302">302</a> 
<a class="jxr_linenumber" name="L303" href="#L303">303</a>     @Test
<a class="jxr_linenumber" name="L304" href="#L304">304</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testHigherSnapshotExistsInSameRepo()
<a class="jxr_linenumber" name="L305" href="#L305">305</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="L306" href="#L306">306</a>     {
<a class="jxr_linenumber" name="L307" href="#L307">307</a> 
<a class="jxr_linenumber" name="L308" href="#L308">308</a>         RepositoryRegistry repositoryRegistry = applicationContext.getBean( ArchivaRepositoryRegistry.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="L309" href="#L309">309</a>         ManagedRepository managedRepository = repositoryRegistry.getManagedRepository( TEST_REPO_ID );
<a class="jxr_linenumber" name="L310" href="#L310">310</a>         repositoryRegistry.removeRepository( TEST_REPO_ID );
<a class="jxr_linenumber" name="L311" href="#L311">311</a>         repositoryRegistry.putRepository(
<a class="jxr_linenumber" name="L312" href="#L312">312</a>             getRepoConfiguration( TEST_REPO_ID, TEST_REPO_NAME ));
<a class="jxr_linenumber" name="L313" href="#L313">313</a> 
<a class="jxr_linenumber" name="L314" href="#L314">314</a>         String repoRoot = prepareTestRepos();
<a class="jxr_linenumber" name="L315" href="#L315">315</a>         String projectNs = <span class="jxr_string">"org.apache.maven.plugins"</span>;
<a class="jxr_linenumber" name="L316" href="#L316">316</a>         String projectPath = projectNs.replaceAll(<span class="jxr_string">"&#92;&#92;."</span>,<span class="jxr_string">"/"</span>);
<a class="jxr_linenumber" name="L317" href="#L317">317</a>         String projectName = <span class="jxr_string">"maven-source-plugin"</span>;
<a class="jxr_linenumber" name="L318" href="#L318">318</a>         String projectVersion = <span class="jxr_string">"2.0.2"</span>;
<a class="jxr_linenumber" name="L319" href="#L319">319</a>         String projectRoot = repoRoot + <span class="jxr_string">"/"</span> + projectPath+<span class="jxr_string">"/"</span>+projectName;
<a class="jxr_linenumber" name="L320" href="#L320">320</a>         Path repo = getTestRepoRootPath();
<a class="jxr_linenumber" name="L321" href="#L321">321</a>         Path vDir = repo.resolve(projectPath).resolve(projectName).resolve(projectVersion);
<a class="jxr_linenumber" name="L322" href="#L322">322</a>         Path vDir2 = repo.resolve(projectPath).resolve(projectName).resolve(<span class="jxr_string">"2.0.3-SNAPSHOT"</span>);
<a class="jxr_linenumber" name="L323" href="#L323">323</a>         Path vDir3 = repo.resolve(projectPath).resolve(projectName).resolve(<span class="jxr_string">"2.0.4-SNAPSHOT"</span>);
<a class="jxr_linenumber" name="L324" href="#L324">324</a> 
<a class="jxr_linenumber" name="L325" href="#L325">325</a>         <em class="jxr_comment">// test listeners for the correct artifacts - no deletions</em>
<a class="jxr_linenumber" name="L326" href="#L326">326</a>         listenerControl.replay();
<a class="jxr_linenumber" name="L327" href="#L327">327</a> 
<a class="jxr_linenumber" name="L328" href="#L328">328</a>         <em class="jxr_comment">// Provide the metadata list</em>
<a class="jxr_linenumber" name="L329" href="#L329">329</a>         List&lt;ArtifactMetadata&gt; ml = getArtifactMetadataFromDir(TEST_REPO_ID , projectName, repo.getParent(), vDir );
<a class="jxr_linenumber" name="L330" href="#L330">330</a>         when(metadataRepository.getArtifacts(repositorySession , TEST_REPO_ID,
<a class="jxr_linenumber" name="L331" href="#L331">331</a>             projectNs, projectName, projectVersion )).thenReturn(ml);
<a class="jxr_linenumber" name="L332" href="#L332">332</a>         List&lt;ArtifactMetadata&gt; m2 = getArtifactMetadataFromDir(TEST_REPO_ID , projectName, repo.getParent(), vDir2 );
<a class="jxr_linenumber" name="L333" href="#L333">333</a>         when(metadataRepository.getArtifacts(repositorySession , TEST_REPO_ID,
<a class="jxr_linenumber" name="L334" href="#L334">334</a>             projectNs, projectName, <span class="jxr_string">"2.0.3-SNAPSHOT"</span> )).thenReturn(ml);
<a class="jxr_linenumber" name="L335" href="#L335">335</a>         List&lt;ArtifactMetadata&gt; m3 = getArtifactMetadataFromDir(TEST_REPO_ID , projectName, repo.getParent(), vDir3 );
<a class="jxr_linenumber" name="L336" href="#L336">336</a>         when(metadataRepository.getArtifacts(repositorySession , TEST_REPO_ID,
<a class="jxr_linenumber" name="L337" href="#L337">337</a>             projectNs, projectName, <span class="jxr_string">"2.0.4-SNAPSHOT"</span> )).thenReturn(ml);
<a class="jxr_linenumber" name="L338" href="#L338">338</a> 
<a class="jxr_linenumber" name="L339" href="#L339">339</a> 
<a class="jxr_linenumber" name="L340" href="#L340">340</a>         repoPurge.process( CleanupReleasedSnapshotsRepositoryPurgeTest.PATH_TO_HIGHER_SNAPSHOT_EXISTS_IN_SAME_REPO );
<a class="jxr_linenumber" name="L341" href="#L341">341</a> 
<a class="jxr_linenumber" name="L342" href="#L342">342</a>         listenerControl.verify();
<a class="jxr_linenumber" name="L343" href="#L343">343</a> 
<a class="jxr_linenumber" name="L344" href="#L344">344</a>         <em class="jxr_comment">// Verify the metadataRepository invocations</em>
<a class="jxr_linenumber" name="L345" href="#L345">345</a>         <em class="jxr_comment">// No removal</em>
<a class="jxr_linenumber" name="L346" href="#L346">346</a>         verify(metadataRepository, never()).removeProjectVersion(eq(repositorySession) , eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion) );
<a class="jxr_linenumber" name="L347" href="#L347">347</a>         verify(metadataRepository, never()).removeProjectVersion(eq(repositorySession) , eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(<span class="jxr_string">"2.0.3-SNAPSHOT"</span>) );
<a class="jxr_linenumber" name="L348" href="#L348">348</a>         verify(metadataRepository, never()).removeProjectVersion(eq(repositorySession) , eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(<span class="jxr_string">"2.0.4-SNAPSHOT"</span>) );
<a class="jxr_linenumber" name="L349" href="#L349">349</a>         verify(metadataRepository, never()).removeTimestampedArtifact(eq(repositorySession) , any(ArtifactMetadata.<strong class="jxr_keyword">class</strong>), any(String.<strong class="jxr_keyword">class</strong>) );
<a class="jxr_linenumber" name="L350" href="#L350">350</a>         verify(metadataRepository, never()).removeFacetFromArtifact(eq(repositorySession) , any(String.<strong class="jxr_keyword">class</strong>), any(String.<strong class="jxr_keyword">class</strong>), any(String.<strong class="jxr_keyword">class</strong>), any(String.<strong class="jxr_keyword">class</strong>), any( MetadataFacet.<strong class="jxr_keyword">class</strong>) );
<a class="jxr_linenumber" name="L351" href="#L351">351</a> 
<a class="jxr_linenumber" name="L352" href="#L352">352</a> 
<a class="jxr_linenumber" name="L353" href="#L353">353</a> 
<a class="jxr_linenumber" name="L354" href="#L354">354</a>         <em class="jxr_comment">// check if the snapshot was not removed</em>
<a class="jxr_linenumber" name="L355" href="#L355">355</a>         assertExists( projectRoot + <span class="jxr_string">"/2.0.3-SNAPSHOT"</span> );
<a class="jxr_linenumber" name="L356" href="#L356">356</a>         assertExists( projectRoot + <span class="jxr_string">"/2.0.3-SNAPSHOT/maven-source-plugin-2.0.3-SNAPSHOT.jar"</span> );
<a class="jxr_linenumber" name="L357" href="#L357">357</a>         assertExists( projectRoot + <span class="jxr_string">"/2.0.3-SNAPSHOT/maven-source-plugin-2.0.3-SNAPSHOT.jar.md5"</span> );
<a class="jxr_linenumber" name="L358" href="#L358">358</a>         assertExists( projectRoot + <span class="jxr_string">"/2.0.3-SNAPSHOT/maven-source-plugin-2.0.3-SNAPSHOT.jar.sha1"</span> );
<a class="jxr_linenumber" name="L359" href="#L359">359</a>         assertExists( projectRoot + <span class="jxr_string">"/2.0.3-SNAPSHOT/maven-source-plugin-2.0.3-SNAPSHOT.pom"</span> );
<a class="jxr_linenumber" name="L360" href="#L360">360</a>         assertExists( projectRoot + <span class="jxr_string">"/2.0.3-SNAPSHOT/maven-source-plugin-2.0.3-SNAPSHOT.pom.md5"</span> );
<a class="jxr_linenumber" name="L361" href="#L361">361</a>         assertExists( projectRoot + <span class="jxr_string">"/2.0.3-SNAPSHOT/maven-source-plugin-2.0.3-SNAPSHOT.pom.sha1"</span> );
<a class="jxr_linenumber" name="L362" href="#L362">362</a> 
<a class="jxr_linenumber" name="L363" href="#L363">363</a>         <em class="jxr_comment">// check if the released version was not removed</em>
<a class="jxr_linenumber" name="L364" href="#L364">364</a>         assertExists( projectRoot + <span class="jxr_string">"/2.0.4-SNAPSHOT"</span> );
<a class="jxr_linenumber" name="L365" href="#L365">365</a>         assertExists( projectRoot + <span class="jxr_string">"/2.0.4-SNAPSHOT/maven-source-plugin-2.0.4-SNAPSHOT.jar"</span> );
<a class="jxr_linenumber" name="L366" href="#L366">366</a>         assertExists( projectRoot + <span class="jxr_string">"/2.0.4-SNAPSHOT/maven-source-plugin-2.0.4-SNAPSHOT.jar.md5"</span> );
<a class="jxr_linenumber" name="L367" href="#L367">367</a>         assertExists( projectRoot + <span class="jxr_string">"/2.0.4-SNAPSHOT/maven-source-plugin-2.0.4-SNAPSHOT.jar.sha1"</span> );
<a class="jxr_linenumber" name="L368" href="#L368">368</a>         assertExists( projectRoot + <span class="jxr_string">"/2.0.4-SNAPSHOT/maven-source-plugin-2.0.4-SNAPSHOT.pom"</span> );
<a class="jxr_linenumber" name="L369" href="#L369">369</a>         assertExists( projectRoot + <span class="jxr_string">"/2.0.4-SNAPSHOT/maven-source-plugin-2.0.4-SNAPSHOT.pom.md5"</span> );
<a class="jxr_linenumber" name="L370" href="#L370">370</a>         assertExists( projectRoot + <span class="jxr_string">"/2.0.4-SNAPSHOT/maven-source-plugin-2.0.4-SNAPSHOT.pom.sha1"</span> );
<a class="jxr_linenumber" name="L371" href="#L371">371</a> 
<a class="jxr_linenumber" name="L372" href="#L372">372</a>         <em class="jxr_comment">// check if metadata file was not updated (because nothing was removed)</em>
<a class="jxr_linenumber" name="L373" href="#L373">373</a>         Path artifactMetadataFile = Paths.get( projectRoot + <span class="jxr_string">"/maven-metadata.xml"</span> );
<a class="jxr_linenumber" name="L374" href="#L374">374</a> 
<a class="jxr_linenumber" name="L375" href="#L375">375</a>         String metadataXml = org.apache.archiva.common.utils.FileUtils.readFileToString( artifactMetadataFile, Charset.defaultCharset() );
<a class="jxr_linenumber" name="L376" href="#L376">376</a> 
<a class="jxr_linenumber" name="L377" href="#L377">377</a>         String expectedVersions = <span class="jxr_string">"&lt;expected&gt;&lt;versions&gt;&lt;version&gt;2.0.3-SNAPSHOT&lt;/version&gt;"</span>
<a class="jxr_linenumber" name="L378" href="#L378">378</a>             + <span class="jxr_string">"&lt;version&gt;2.0.4-SNAPSHOT&lt;/version&gt;&lt;/versions&gt;&lt;/expected&gt;"</span>;
<a class="jxr_linenumber" name="L379" href="#L379">379</a> 
<a class="jxr_linenumber" name="L380" href="#L380">380</a>         XMLAssert.assertXpathEvaluatesTo( <span class="jxr_string">"2.0.4-SNAPSHOT"</span>, <span class="jxr_string">"//metadata/versioning/latest"</span>, metadataXml );
<a class="jxr_linenumber" name="L381" href="#L381">381</a>         XMLAssert.assertXpathsEqual( <span class="jxr_string">"//expected/versions/version"</span>, expectedVersions,
<a class="jxr_linenumber" name="L382" href="#L382">382</a>                                      <span class="jxr_string">"//metadata/versioning/versions/version"</span>, metadataXml );
<a class="jxr_linenumber" name="L383" href="#L383">383</a>         XMLAssert.assertXpathEvaluatesTo( <span class="jxr_string">"20070427033345"</span>, <span class="jxr_string">"//metadata/versioning/lastUpdated"</span>, metadataXml );
<a class="jxr_linenumber" name="L384" href="#L384">384</a>     }
<a class="jxr_linenumber" name="L385" href="#L385">385</a> }
</pre>
<hr/>
<div id="footer">Copyright &#169; 2006&#x2013;2019 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</div>
</body>
</html>