You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ManagedDefaultRepositoryContentTest.java 67KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567
  1. package org.apache.archiva.repository.maven.content;
  2. /*
  3. * Licensed to the Apache Software Foundation (ASF) under one
  4. * or more contributor license agreements. See the NOTICE file
  5. * distributed with this work for additional information
  6. * regarding copyright ownership. The ASF licenses this file
  7. * to you under the Apache License, Version 2.0 (the
  8. * "License"); you may not use this file except in compliance
  9. * with the License. You may obtain a copy of the License at
  10. *
  11. * http://www.apache.org/licenses/LICENSE-2.0
  12. * Unless required by applicable law or agreed to in writing,
  13. * software distributed under the License is distributed on an
  14. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15. * KIND, either express or implied. See the License for the
  16. * specific language governing permissions and limitations
  17. * under the License.
  18. */
  19. import org.apache.archiva.common.filelock.FileLockManager;
  20. import org.apache.archiva.common.utils.VersionComparator;
  21. import org.apache.archiva.configuration.ArchivaConfiguration;
  22. import org.apache.archiva.configuration.FileType;
  23. import org.apache.archiva.configuration.FileTypes;
  24. import org.apache.archiva.model.ArtifactReference;
  25. import org.apache.archiva.model.ProjectReference;
  26. import org.apache.archiva.model.VersionedReference;
  27. import org.apache.archiva.repository.EditableManagedRepository;
  28. import org.apache.archiva.repository.LayoutException;
  29. import org.apache.archiva.repository.ManagedRepository;
  30. import org.apache.archiva.repository.ManagedRepositoryContent;
  31. import org.apache.archiva.repository.RepositoryContent;
  32. import org.apache.archiva.repository.content.Artifact;
  33. import org.apache.archiva.repository.content.BaseArtifactTypes;
  34. import org.apache.archiva.repository.content.ContentItem;
  35. import org.apache.archiva.repository.content.ItemNotFoundException;
  36. import org.apache.archiva.repository.content.ItemSelector;
  37. import org.apache.archiva.repository.content.Namespace;
  38. import org.apache.archiva.repository.content.Project;
  39. import org.apache.archiva.repository.content.Version;
  40. import org.apache.archiva.repository.content.base.ArchivaItemSelector;
  41. import org.apache.archiva.repository.maven.MavenManagedRepository;
  42. import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
  43. import org.apache.archiva.repository.storage.StorageAsset;
  44. import org.apache.commons.io.FileUtils;
  45. import org.junit.Before;
  46. import org.junit.Test;
  47. import javax.inject.Inject;
  48. import javax.inject.Named;
  49. import java.io.IOException;
  50. import java.io.OutputStream;
  51. import java.io.Reader;
  52. import java.net.URISyntaxException;
  53. import java.nio.charset.Charset;
  54. import java.nio.file.Files;
  55. import java.nio.file.Path;
  56. import java.nio.file.Paths;
  57. import java.nio.file.attribute.FileTime;
  58. import java.util.ArrayList;
  59. import java.util.Arrays;
  60. import java.util.Collections;
  61. import java.util.List;
  62. import java.util.Set;
  63. import java.util.stream.Collectors;
  64. import java.util.stream.Stream;
  65. import static org.junit.Assert.*;
  66. /**
  67. * ManagedDefaultRepositoryContentTest
  68. */
  69. public class ManagedDefaultRepositoryContentTest
  70. extends AbstractManagedRepositoryContentTest
  71. {
  72. private ManagedDefaultRepositoryContent repoContent;
  73. @Inject
  74. FileTypes fileTypes;
  75. @Inject
  76. @Named ( "archivaConfiguration#default" )
  77. ArchivaConfiguration archivaConfiguration;
  78. @Inject
  79. List<? extends ArtifactMappingProvider> artifactMappingProviders;
  80. @Inject
  81. MavenContentHelper contentHelper;
  82. @Inject
  83. FileLockManager fileLockManager;
  84. private Path getRepositoryPath(String repoName) {
  85. try
  86. {
  87. return Paths.get( Thread.currentThread( ).getContextClassLoader( ).getResource( "repositories/" + repoName ).toURI( ) );
  88. }
  89. catch ( URISyntaxException e )
  90. {
  91. throw new RuntimeException( "Could not resolve repository path " + e.getMessage( ), e );
  92. }
  93. }
  94. @Before
  95. public void setUp()
  96. throws Exception
  97. {
  98. Path repoDir = getRepositoryPath( "default-repository" );
  99. MavenManagedRepository repository = createRepository( "testRepo", "Unit Test Repo", repoDir );
  100. FileType fileType = archivaConfiguration.getConfiguration().getRepositoryScanning().getFileTypes().get( 0 );
  101. fileType.addPattern( "**/*.xml" );
  102. assertEquals( FileTypes.ARTIFACTS, fileType.getId() );
  103. fileTypes.afterConfigurationChange( null, "fileType", null );
  104. repoContent = new ManagedDefaultRepositoryContent(repository, artifactMappingProviders, fileTypes, fileLockManager);
  105. repoContent.setMavenContentHelper( contentHelper );
  106. //repoContent = (ManagedRepositoryContent) lookup( ManagedRepositoryContent.class, "default" );
  107. }
  108. @Test
  109. public void testGetVersionsSnapshotA()
  110. throws Exception
  111. {
  112. assertVersions( "snap_shots_a", "1.0-alpha-11-SNAPSHOT",
  113. new String[]{ "1.0-alpha-11-SNAPSHOT", "1.0-alpha-11-20070221.194724-2",
  114. "1.0-alpha-11-20070302.212723-3", "1.0-alpha-11-20070303.152828-4",
  115. "1.0-alpha-11-20070305.215149-5", "1.0-alpha-11-20070307.170909-6",
  116. "1.0-alpha-11-20070314.211405-9", "1.0-alpha-11-20070316.175232-11" } );
  117. }
  118. @Test
  119. public void testToMetadataPathFromProjectReference()
  120. {
  121. ProjectReference reference = new ProjectReference();
  122. reference.setGroupId( "com.foo" );
  123. reference.setArtifactId( "foo-tool" );
  124. assertEquals( "com/foo/foo-tool/maven-metadata.xml", repoContent.toMetadataPath( reference ) );
  125. }
  126. @Test
  127. public void testToMetadataPathFromVersionReference()
  128. {
  129. VersionedReference reference = new VersionedReference();
  130. reference.setGroupId( "com.foo" );
  131. reference.setArtifactId( "foo-tool" );
  132. reference.setVersion( "1.0" );
  133. assertEquals( "com/foo/foo-tool/1.0/maven-metadata.xml", repoContent.toMetadataPath( reference ) );
  134. }
  135. @Test
  136. @Override
  137. public void testToPathOnNullArtifactReference()
  138. {
  139. try
  140. {
  141. ArtifactReference reference = null;
  142. repoContent.toPath( reference );
  143. fail( "Should have failed due to null artifact reference." );
  144. }
  145. catch ( IllegalArgumentException e )
  146. {
  147. /* expected path */
  148. }
  149. }
  150. @Test
  151. public void testExcludeMetadataFile()
  152. throws Exception
  153. {
  154. assertVersions( "include_xml", "1.0", new String[]{ "1.0" } );
  155. }
  156. private void assertVersions( String artifactId, String version, String[] expectedVersions )
  157. throws Exception
  158. {
  159. VersionedReference reference = new VersionedReference();
  160. reference.setGroupId( "org.apache.archiva.metadata.tests" );
  161. reference.setArtifactId( artifactId );
  162. reference.setVersion( version );
  163. // Use the test metadata-repository, which is already setup for
  164. // These kind of version tests.
  165. Path repoDir = getRepositoryPath( "metadata-repository" );
  166. ((EditableManagedRepository)repoContent.getRepository()).setLocation( repoDir.toAbsolutePath().toUri() );
  167. // Request the versions.
  168. Set<String> testedVersionSet = repoContent.getVersions( reference );
  169. // Sort the list (for asserts later)
  170. final VersionComparator comparator = new VersionComparator( );
  171. List<String> testedVersions = new ArrayList<>();
  172. testedVersions.addAll( testedVersionSet );
  173. Collections.sort( testedVersions, comparator );
  174. // Test the expected array of versions, to the actual tested versions
  175. assertEquals( "Assert Versions: length/size", expectedVersions.length, testedVersions.size() );
  176. for ( int i = 0; i < expectedVersions.length; i++ )
  177. {
  178. String actualVersion = testedVersions.get( i );
  179. assertEquals( "Versions[" + i + "]", expectedVersions[i], actualVersion );
  180. }
  181. ItemSelector selector = ArchivaItemSelector.builder( )
  182. .withNamespace( "org.apache.archiva.metadata.tests" )
  183. .withProjectId( artifactId )
  184. .withVersion( version )
  185. .build( );
  186. List<String> versions = repoContent.getVersions( selector ).stream()
  187. .map(v -> v.getVersion()).sorted( comparator ).collect( Collectors.toList());
  188. assertArrayEquals( expectedVersions, versions.toArray( ) );
  189. }
  190. @Test
  191. public void getTestGetProjectWithIllegalArgs() {
  192. ItemSelector selector = ArchivaItemSelector.builder( )
  193. .withNamespace( "org.apache" )
  194. .withVersion( "1.0" )
  195. .build();
  196. try
  197. {
  198. repoContent.getProject( selector );
  199. assertFalse( "Should throw IllegalArgumentException if no project id is given", true );
  200. } catch (IllegalArgumentException e) {
  201. // Everything fine
  202. assertTrue( e.getMessage( ).contains( "Project id must be set" ) );
  203. }
  204. }
  205. @Test
  206. public void getTestGetVersionWithIllegalArgs() {
  207. ItemSelector selector = ArchivaItemSelector.builder( )
  208. .withNamespace( "org.apache.maven" )
  209. .withVersion( "1.0" )
  210. .build();
  211. try
  212. {
  213. repoContent.getVersion( selector );
  214. assertFalse( "Should throw IllegalArgumentException if no project id is given", true );
  215. } catch (IllegalArgumentException e) {
  216. // Everything fine
  217. assertTrue( e.getMessage( ).contains( "Project id must be set" ) );
  218. }
  219. selector = ArchivaItemSelector.builder( )
  220. .withNamespace( "org.apache.maven" )
  221. .withProjectId( "shared" )
  222. .build();
  223. try
  224. {
  225. repoContent.getVersion( selector );
  226. assertFalse( "Should throw IllegalArgumentException if no version is given", true );
  227. } catch (IllegalArgumentException e) {
  228. // Everything fine
  229. assertTrue( e.getMessage( ).contains( "Version must be set" ) );
  230. }
  231. }
  232. @Test
  233. public void getTestGetArtifactWithIllegalArgs() {
  234. ItemSelector selector = ArchivaItemSelector.builder( )
  235. .withNamespace( "org.apache.maven" )
  236. .withVersion( "1.0" )
  237. .withArtifactId( "shared" )
  238. .withArtifactVersion("1.0")
  239. .build();
  240. try
  241. {
  242. repoContent.getArtifact( selector );
  243. assertFalse( "Should throw IllegalArgumentException if no project id is given", true );
  244. } catch (IllegalArgumentException e) {
  245. // Everything fine
  246. assertTrue( e.getMessage( ).contains( "Project id must be set" ) );
  247. }
  248. selector = ArchivaItemSelector.builder( )
  249. .withNamespace( "org.apache.maven" )
  250. .withProjectId( "shared" )
  251. .withArtifactId( "shared" )
  252. .withArtifactVersion("1.0")
  253. .build();
  254. try
  255. {
  256. repoContent.getArtifact( selector );
  257. assertFalse( "Should throw IllegalArgumentException if no version is given", true );
  258. } catch (IllegalArgumentException e) {
  259. // Everything fine
  260. assertTrue( e.getMessage( ).contains( "Version must be set" ) );
  261. }
  262. selector = ArchivaItemSelector.builder( )
  263. .withNamespace( "org.apache.maven" )
  264. .withProjectId( "shared" )
  265. .withVersion("1.0")
  266. .withArtifactVersion("1.0")
  267. .build();
  268. try
  269. {
  270. repoContent.getArtifact( selector );
  271. assertFalse( "Should throw IllegalArgumentException if no artifact id is given", true );
  272. } catch (IllegalArgumentException e) {
  273. // Everything fine
  274. assertTrue( e.getMessage( ).contains( "Artifact id must be set" ) );
  275. }
  276. }
  277. @Test
  278. public void testGetProjects() {
  279. ItemSelector selector = ArchivaItemSelector.builder( )
  280. .withNamespace( "org.apache.maven" ).build();
  281. Namespace ns = repoContent.getNamespace( selector );
  282. assertNotNull( ns );
  283. List<? extends Project> projects = repoContent.getProjects( ns );
  284. assertEquals( 12, projects.size( ) );
  285. String[] expected = new String[]{
  286. "A", "B", "C", "archiva", "discovery", "maven-parent", "samplejar", "shared", "some-ejb", "test",
  287. "testing", "update"
  288. };
  289. Object[] actual = projects.stream( ).map( p -> p.getId( ) ).sorted( ).toArray( );
  290. assertArrayEquals( expected, actual);
  291. }
  292. @Test
  293. public void testGetProjectsWithSelector() {
  294. ItemSelector selector = ArchivaItemSelector.builder( )
  295. .withNamespace( "org.apache.maven" ).build();
  296. List<? extends Project> projects = repoContent.getProjects( selector );
  297. assertEquals( 12, projects.size( ) );
  298. String[] expected = new String[]{
  299. "A", "B", "C", "archiva", "discovery", "maven-parent", "samplejar", "shared", "some-ejb", "test",
  300. "testing", "update"
  301. };
  302. Object[] actual = projects.stream( ).map( p -> p.getId( ) ).sorted( ).toArray( );
  303. assertArrayEquals( expected, actual);
  304. }
  305. @Test
  306. public void testGetVersionsWithIllegalSelector() {
  307. ItemSelector selector = ArchivaItemSelector.builder( )
  308. .withNamespace( "org.apache.maven" ).build();
  309. try
  310. {
  311. List<? extends Version> versions = repoContent.getVersions( selector );
  312. assertFalse( "IllegalArgumentException expected, when project id not set", true );
  313. } catch (IllegalArgumentException e) {
  314. assertEquals( "Project id not set, while retrieving versions.", e.getMessage( ) );
  315. }
  316. }
  317. @Test
  318. public void testGetVersionsWithSelector() {
  319. ItemSelector selector = ArchivaItemSelector.builder( )
  320. .withNamespace( "org.apache.maven" )
  321. .withProjectId( "samplejar" ).build();
  322. List<? extends Version> versions = repoContent.getVersions( selector );
  323. assertNotNull( versions );
  324. assertEquals( 2, versions.size( ) );
  325. }
  326. @Override
  327. protected ArtifactReference toArtifactReference( String path )
  328. throws LayoutException
  329. {
  330. return repoContent.toArtifactReference( path );
  331. }
  332. @Override
  333. protected ItemSelector toItemSelector( String path ) throws LayoutException
  334. {
  335. return repoContent.toItemSelector( path );
  336. }
  337. @Override
  338. protected String toPath( ArtifactReference reference )
  339. {
  340. return repoContent.toPath( reference );
  341. }
  342. @Override
  343. protected String toPath( ItemSelector selector ) {
  344. return repoContent.toPath( selector );
  345. }
  346. @Override
  347. protected ManagedRepositoryContent getManaged( )
  348. {
  349. return repoContent;
  350. }
  351. @Override
  352. protected RepositoryContent getContent( )
  353. {
  354. return repoContent;
  355. }
  356. private Path setupRepoCopy( String source, String target) throws IOException
  357. {
  358. Path defaultRepo = getRepositoryPath( source );
  359. Path newRepo = defaultRepo.getParent( ).resolve( target );
  360. FileUtils.copyDirectory( defaultRepo.toFile( ), newRepo.toFile( ) );
  361. MavenManagedRepository repository = createRepository( "testRepo", "Unit Test Repo", newRepo );
  362. FileType fileType = archivaConfiguration.getConfiguration().getRepositoryScanning().getFileTypes().get( 0 );
  363. fileType.addPattern( "**/*.xml" );
  364. assertEquals( FileTypes.ARTIFACTS, fileType.getId() );
  365. fileTypes.afterConfigurationChange( null, "fileType", null );
  366. repoContent = new ManagedDefaultRepositoryContent(repository, artifactMappingProviders, fileTypes, fileLockManager);
  367. return newRepo;
  368. }
  369. @Test
  370. public void testDeleteArtifactWithType() throws IOException, org.apache.archiva.repository.ContentNotFoundException, org.apache.archiva.repository.ContentAccessException
  371. {
  372. Path deleteRepo = setupRepoCopy( "delete-repository", "delete-repository-2" );
  373. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0-source.jar" ) ) );
  374. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar" ) ) );
  375. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar.md5" ) ) );
  376. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar.sha1" ) ) );
  377. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.pom" ) ) );
  378. ArtifactReference ref = new ArtifactReference( );
  379. ref.setGroupId( "org.apache.maven" );
  380. ref.setArtifactId( "samplejar" );
  381. ref.setVersion( "1.0" );
  382. ref.setType( "jar" );
  383. repoContent.deleteArtifact( ref );
  384. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0-source.jar" ) ) );
  385. assertFalse( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar" ) ) );
  386. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar.md5" ) ) );
  387. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar.sha1" ) ) );
  388. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.pom" ) ) );
  389. }
  390. @Test
  391. public void testDeleteArtifactWithClassifier() throws IOException, org.apache.archiva.repository.ContentNotFoundException, org.apache.archiva.repository.ContentAccessException
  392. {
  393. Path deleteRepo = setupRepoCopy( "default-repository", "default-repository-2" );
  394. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0-source.jar" ) ) );
  395. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0-source.jar.sha1" ) ) );
  396. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar" ) ) );
  397. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar.md5" ) ) );
  398. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar.sha1" ) ) );
  399. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.pom" ) ) );
  400. ArtifactReference ref = new ArtifactReference( );
  401. ref.setGroupId( "org.apache.maven" );
  402. ref.setArtifactId( "samplejar" );
  403. ref.setVersion( "1.0" );
  404. ref.setClassifier( "source" );
  405. ref.setType( "jar" );
  406. repoContent.deleteArtifact( ref );
  407. assertFalse( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0-source.jar" ) ) );
  408. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0-source.jar.sha1" ) ) );
  409. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar" ) ) );
  410. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar.md5" ) ) );
  411. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar.sha1" ) ) );
  412. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.pom" ) ) );
  413. }
  414. @Test
  415. public void testDeleteArtifactWithoutType() throws IOException, org.apache.archiva.repository.ContentNotFoundException, org.apache.archiva.repository.ContentAccessException
  416. {
  417. Path deleteRepo = setupRepoCopy( "default-repository", "default-repository-2" );
  418. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0-source.jar" ) ) );
  419. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0-source.jar.sha1" ) ) );
  420. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar" ) ) );
  421. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar.md5" ) ) );
  422. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar.sha1" ) ) );
  423. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.pom" ) ) );
  424. ArtifactReference ref = new ArtifactReference( );
  425. ref.setGroupId( "org.apache.maven" );
  426. ref.setArtifactId( "samplejar" );
  427. ref.setVersion( "1.0" );
  428. repoContent.deleteArtifact( ref );
  429. assertFalse( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0" ) ) );
  430. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar" ) ) );
  431. }
  432. @Test
  433. public void testDeleteVersion() throws IOException, org.apache.archiva.repository.ContentNotFoundException, org.apache.archiva.repository.ContentAccessException
  434. {
  435. Path deleteRepo = setupRepoCopy( "delete-repository", "delete-repository-2" );
  436. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0-source.jar" ) ) );
  437. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar" ) ) );
  438. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar.md5" ) ) );
  439. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar.sha1" ) ) );
  440. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.pom" ) ) );
  441. VersionedReference ref = new VersionedReference( ).groupId( "org.apache.maven" ).artifactId( "samplejar" ).version( "1.0" );
  442. repoContent.deleteVersion( ref );
  443. assertFalse( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0" ) ) );
  444. }
  445. @Test
  446. public void testDeleteProject() throws IOException, org.apache.archiva.repository.ContentNotFoundException, org.apache.archiva.repository.ContentAccessException
  447. {
  448. Path deleteRepo = setupRepoCopy( "delete-repository", "delete-repository-2" );
  449. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0-source.jar" ) ) );
  450. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar" ) ) );
  451. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar.md5" ) ) );
  452. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar.sha1" ) ) );
  453. assertTrue( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0/samplejar-1.0.pom" ) ) );
  454. ProjectReference ref = new ProjectReference( ).groupId( "org.apache.maven" ).artifactId( "samplejar" );
  455. repoContent.deleteProject( ref );
  456. assertFalse( Files.exists( deleteRepo.resolve( "org/apache/maven/samplejar/1.0" ) ) );
  457. }
  458. @Test
  459. public void testGetArtifactStreamWithVersionSelector() {
  460. ItemSelector selector = ArchivaItemSelector.builder( )
  461. .withNamespace( "javax.sql" )
  462. .withProjectId( "jdbc" )
  463. .withVersion( "2.0" ).build();
  464. try(Stream<? extends Artifact> stream = repoContent.newArtifactStream( selector ))
  465. {
  466. assertNotNull( stream );
  467. List<? extends Artifact> results = stream.collect( Collectors.toList( ) );
  468. checkArtifactListWithVersionSelector1( results );
  469. }
  470. }
  471. @Test
  472. public void testGetArtifactListWithVersionSelector() {
  473. ItemSelector selector = ArchivaItemSelector.builder( )
  474. .withNamespace( "javax.sql" )
  475. .withProjectId( "jdbc" )
  476. .withVersion( "2.0" ).build();
  477. List<? extends Artifact> results = repoContent.getArtifacts( selector );
  478. checkArtifactListWithVersionSelector1( results );
  479. }
  480. private void checkArtifactListWithVersionSelector1( List<? extends Artifact> results )
  481. {
  482. assertNotNull( results );
  483. assertEquals( 2, results.size( ) );
  484. Artifact mainArtifact = results.stream( ).filter( a -> a.getFileName( ).equals( "jdbc-2.0.jar" ) ).findFirst( ).get( );
  485. assertNotNull( mainArtifact );
  486. assertEquals( BaseArtifactTypes.MAIN, mainArtifact.getArtifactType( ) );
  487. Artifact metaArtifact = results.stream( ).filter( a -> a.getFileName( ).equals( "maven-metadata-repository.xml" ) ).findFirst( ).get( );
  488. assertNotNull( metaArtifact );
  489. assertEquals( MavenTypes.REPOSITORY_METADATA, metaArtifact.getArtifactType( ) );
  490. }
  491. @Test
  492. public void testGetArtifactStreamWithVersionSelector2() {
  493. ItemSelector selector = ArchivaItemSelector.builder( )
  494. .withNamespace( "org.apache.axis2" )
  495. .withProjectId( "axis2" )
  496. .withVersion( "1.3-SNAPSHOT" ).build();
  497. try(Stream<? extends Artifact> stream = repoContent.newArtifactStream( selector ))
  498. {
  499. assertNotNull( stream );
  500. List<? extends Artifact> results = stream.collect( Collectors.toList( ) );
  501. checkArtifactListWithVersionSelector2( results );
  502. }
  503. }
  504. @Test
  505. public void testGetArtifactListWithVersionSelector2() {
  506. ItemSelector selector = ArchivaItemSelector.builder( )
  507. .withNamespace( "org.apache.axis2" )
  508. .withProjectId( "axis2" )
  509. .withVersion( "1.3-SNAPSHOT" ).build();
  510. List<? extends Artifact> results = repoContent.getArtifacts( selector );
  511. checkArtifactListWithVersionSelector2( results );
  512. }
  513. private void checkArtifactListWithVersionSelector2( List<? extends Artifact> results )
  514. {
  515. assertNotNull( results );
  516. assertEquals( 39, results.size( ) );
  517. Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equals( "axis2-1.3-20070725.210059-1.pom" ) )
  518. .findFirst( ).get( );
  519. assertNotNull( artifact );
  520. assertEquals( "pom", artifact.getExtension( ) );
  521. assertEquals( BaseArtifactTypes.MAIN, artifact.getArtifactType( ) );
  522. assertEquals( "1.3-SNAPSHOT", artifact.getVersion( ).getVersion( ) );
  523. assertEquals( "1.3-20070725.210059-1", artifact.getArtifactVersion( ) );
  524. assertEquals( ".pom", artifact.getRemainder( ) );
  525. assertEquals( "axis2", artifact.getId( ) );
  526. assertEquals( "axis2", artifact.getVersion( ).getProject( ).getId( ) );
  527. assertEquals( "org.apache.axis2", artifact.getVersion( ).getProject( ).getNamespace( ).getNamespace( ) );
  528. assertEquals( "", artifact.getClassifier( ) );
  529. assertEquals( "pom", artifact.getType( ) );
  530. artifact = null;
  531. artifact = results.stream( ).filter( a -> a.getFileName( ).equals( "axis2-1.3-20070725.210059-1.pom.md5" ) )
  532. .findFirst( ).get( );
  533. assertNotNull( artifact );
  534. assertEquals( "md5", artifact.getExtension( ) );
  535. assertEquals( BaseArtifactTypes.RELATED, artifact.getArtifactType( ) );
  536. assertEquals( "1.3-SNAPSHOT", artifact.getVersion( ).getVersion( ) );
  537. assertEquals( "1.3-20070725.210059-1", artifact.getArtifactVersion( ) );
  538. assertEquals( ".pom.md5", artifact.getRemainder( ) );
  539. assertEquals( "axis2", artifact.getId( ) );
  540. assertEquals( "axis2", artifact.getVersion( ).getProject( ).getId( ) );
  541. assertEquals( "org.apache.axis2", artifact.getVersion( ).getProject( ).getNamespace( ).getNamespace( ) );
  542. assertEquals( "", artifact.getClassifier( ) );
  543. assertEquals( "md5", artifact.getType( ) );
  544. artifact = null;
  545. artifact = results.stream( ).filter( a -> a.getFileName( ).equals( "maven-metadata.xml" ) )
  546. .findFirst( ).get( );
  547. assertNotNull( artifact );
  548. assertEquals( BaseArtifactTypes.METADATA, artifact.getArtifactType( ) );
  549. assertEquals( "1.3-SNAPSHOT", artifact.getVersion( ).getVersion( ) );
  550. assertEquals( "xml", artifact.getExtension( ) );
  551. }
  552. @Test
  553. public void testGetArtifactListWithArtifactSelector1() {
  554. ItemSelector selector = ArchivaItemSelector.builder( )
  555. .withNamespace( "org.apache.axis2" )
  556. .withProjectId( "axis2" )
  557. .withVersion( "1.3-SNAPSHOT" )
  558. .withArtifactVersion( "1.3-20070731.113304-21" )
  559. .withExtension( "pom" )
  560. .build( );
  561. List<? extends Artifact> results = repoContent.getArtifacts( selector );
  562. checkArtifactListWithArtifactSelector1( results );
  563. }
  564. @Test
  565. public void testGetArtifactStreamWithArtifactSelector1() {
  566. ItemSelector selector = ArchivaItemSelector.builder( )
  567. .withNamespace( "org.apache.axis2" )
  568. .withProjectId( "axis2" )
  569. .withVersion( "1.3-SNAPSHOT" )
  570. .withArtifactVersion( "1.3-20070731.113304-21" )
  571. .withExtension( "pom" )
  572. .build( );
  573. try(Stream<? extends Artifact> results = repoContent.newArtifactStream( selector ))
  574. {
  575. checkArtifactListWithArtifactSelector1( results.collect( Collectors.toList()) );
  576. }
  577. }
  578. private void checkArtifactListWithArtifactSelector1( List<? extends Artifact> results )
  579. {
  580. assertNotNull( results );
  581. assertEquals( 1, results.size( ) );
  582. Artifact artifact = results.get( 0 );
  583. assertEquals( "pom", artifact.getExtension( ) );
  584. assertEquals( BaseArtifactTypes.MAIN, artifact.getArtifactType( ) );
  585. }
  586. @Test
  587. public void testGetArtifactListWithArtifactSelector2() {
  588. ItemSelector selector = ArchivaItemSelector.builder( )
  589. .withNamespace( "org.apache.axis2" )
  590. .withProjectId( "axis2" )
  591. .withVersion( "1.3-SNAPSHOT" )
  592. .withArtifactVersion( "1.3-20070731.113304-21" )
  593. .withExtension( "pom" )
  594. .includeRelatedArtifacts()
  595. .build( );
  596. List<? extends Artifact> results = repoContent.getArtifacts( selector );
  597. checkArtifactListWithArtifactSelector2( results );
  598. }
  599. @Test
  600. public void testGetArtifactStreamWithArtifactSelector2() {
  601. ItemSelector selector = ArchivaItemSelector.builder( )
  602. .withNamespace( "org.apache.axis2" )
  603. .withProjectId( "axis2" )
  604. .withVersion( "1.3-SNAPSHOT" )
  605. .withArtifactVersion( "1.3-20070731.113304-21" )
  606. .withExtension( "pom" )
  607. .includeRelatedArtifacts()
  608. .build( );
  609. try(Stream<? extends Artifact> results = repoContent.newArtifactStream( selector ))
  610. {
  611. checkArtifactListWithArtifactSelector2( results.collect( Collectors.toList()) );
  612. }
  613. }
  614. private void checkArtifactListWithArtifactSelector2( List<? extends Artifact> results )
  615. {
  616. assertNotNull( results );
  617. assertEquals( 3, results.size( ) );
  618. Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "axis2-1.3-20070731.113304-21.pom" ) )
  619. .findFirst( ).get( );
  620. assertNotNull( artifact );
  621. assertEquals( "pom", artifact.getExtension( ) );
  622. assertEquals( BaseArtifactTypes.MAIN, artifact.getArtifactType( ) );
  623. artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "axis2-1.3-20070731.113304-21.pom.sha1" ) )
  624. .findFirst( ).get( );
  625. assertNotNull( artifact );
  626. assertEquals( "sha1", artifact.getExtension( ) );
  627. assertEquals( BaseArtifactTypes.RELATED, artifact.getArtifactType( ) );
  628. }
  629. @Test
  630. public void testArtifactListWithProjectSelector() {
  631. ItemSelector selector = ArchivaItemSelector.builder( )
  632. .withNamespace( "org.apache.maven.shared" )
  633. .withProjectId( "maven-downloader" )
  634. .build( );
  635. List<? extends Artifact> results = repoContent.getArtifacts( selector );
  636. checkArtifactListWithProjectSelector( results );
  637. }
  638. @Test
  639. public void testArtifactStreamWithProjectSelector() {
  640. ItemSelector selector = ArchivaItemSelector.builder( )
  641. .withNamespace( "org.apache.maven.shared" )
  642. .withProjectId( "maven-downloader" )
  643. .build( );
  644. Stream<? extends Artifact> results = repoContent.newArtifactStream( selector );
  645. checkArtifactListWithProjectSelector( results.collect( Collectors.toList()) );
  646. }
  647. private void checkArtifactListWithProjectSelector( List<? extends Artifact> results )
  648. {
  649. assertNotNull( results );
  650. assertEquals( 27, results.size( ) );
  651. Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "maven-metadata.xml" ) )
  652. .findFirst( ).get( );
  653. assertNotNull( artifact );
  654. assertEquals( "xml", artifact.getExtension( ) );
  655. assertEquals( BaseArtifactTypes.METADATA, artifact.getArtifactType( ) );
  656. artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "maven-downloader-1.0-sources.jar" ) )
  657. .findFirst( ).get( );
  658. assertNotNull( artifact );
  659. assertEquals( BaseArtifactTypes.MAIN, artifact.getArtifactType( ) );
  660. assertEquals( "sources", artifact.getClassifier( ) );
  661. assertEquals( "java-source", artifact.getType( ) );
  662. artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "maven-downloader-1.0-sources.jar.sha1" ) )
  663. .findFirst( ).get( );
  664. assertNotNull( artifact );
  665. assertEquals( BaseArtifactTypes.RELATED, artifact.getArtifactType( ) );
  666. assertEquals( "sources", artifact.getClassifier( ) );
  667. assertEquals( "sha1", artifact.getType( ) );
  668. assertEquals( ".jar.sha1", artifact.getRemainder( ) );
  669. }
  670. @Test
  671. public void testArtifactListWithNamespaceSelector() {
  672. ItemSelector selector = ArchivaItemSelector.builder( )
  673. .withNamespace( "org.multilevel" )
  674. .build( );
  675. List<? extends Artifact> results = repoContent.getArtifacts( selector );
  676. assertNotNull( results );
  677. assertEquals( 3, results.size( ) );
  678. assertTrue( results.get( 0 ).getFileName( ).startsWith( "testproj1" ) );
  679. }
  680. @Test
  681. public void testArtifactListWithNamespaceSelectorRecursive() {
  682. ItemSelector selector = ArchivaItemSelector.builder( )
  683. .withNamespace( "org.multilevel" )
  684. .recurse()
  685. .build( );
  686. List<? extends Artifact> results = repoContent.getArtifacts( selector );
  687. checkArtifactListWithNamespaceSelectorRecursive( results );
  688. }
  689. @Test
  690. public void testArtifactStreamWithNamespaceSelectorRecursive() {
  691. ItemSelector selector = ArchivaItemSelector.builder( )
  692. .withNamespace( "org.multilevel" )
  693. .recurse()
  694. .build( );
  695. Stream<? extends Artifact> results = repoContent.newArtifactStream( selector );
  696. checkArtifactListWithNamespaceSelectorRecursive( results.collect( Collectors.toList()) );
  697. }
  698. private void checkArtifactListWithNamespaceSelectorRecursive( List<? extends Artifact> results )
  699. {
  700. assertNotNull( results );
  701. assertEquals( 6, results.size( ) );
  702. Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "testproj2-1.0.pom" ) )
  703. .findFirst( ).get( );
  704. assertNotNull( artifact );
  705. assertEquals( 6, artifact.getAsset( ).getParent( ).getPath( ).split( "/" ).length );
  706. artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "testproj1-1.0.pom" ) )
  707. .findFirst( ).get( );
  708. assertNotNull( artifact );
  709. assertEquals( 5, artifact.getAsset( ).getParent( ).getPath( ).split( "/" ).length );
  710. }
  711. @Test
  712. public void testArtifactListWithArtifactSelector1() {
  713. ItemSelector selector = ArchivaItemSelector.builder( )
  714. .withNamespace( "org.apache.maven" )
  715. .withProjectId( "test" )
  716. .withVersion( "1.0-SNAPSHOT" )
  717. .withArtifactId( "test" )
  718. .withArtifactVersion( "1.0-20050611.112233-1" )
  719. .build( );
  720. List<? extends Artifact> results = repoContent.getArtifacts( selector );
  721. assertNotNull( results );
  722. assertEquals( 1, results.size( ) );
  723. Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "test-1.0-20050611.112233-1.jar" ) )
  724. .findFirst().get();
  725. assertNotNull( artifact );
  726. assertEquals( "", artifact.getClassifier( ) );
  727. }
  728. @Test
  729. public void testArtifactListWithArtifactSelector2() {
  730. ItemSelector selector = ArchivaItemSelector.builder( )
  731. .withNamespace( "org.apache.maven" )
  732. .withProjectId( "test" )
  733. .withVersion( "1.0-SNAPSHOT" )
  734. .withClassifier( "*" )
  735. .withArtifactId( "test" )
  736. .withArtifactVersion( "1.0-20050611.112233-1" )
  737. .build( );
  738. List<? extends Artifact> results = repoContent.getArtifacts( selector );
  739. assertNotNull( results );
  740. assertEquals( 2, results.size( ) );
  741. Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "test-1.0-20050611.112233-1-javadoc.jar" ) )
  742. .findFirst().get();
  743. assertNotNull( artifact );
  744. assertEquals( "javadoc", artifact.getClassifier( ) );
  745. assertEquals( "javadoc", artifact.getType( ) );
  746. }
  747. @Test
  748. public void testArtifactListWithArtifactSelector3() {
  749. ItemSelector selector = ArchivaItemSelector.builder( )
  750. .withNamespace( "org.apache.maven" )
  751. .withProjectId( "test" )
  752. .withVersion( "1.0-SNAPSHOT" )
  753. .withClassifier( "*" )
  754. .withArtifactVersion( "1.0-20050611.112233-1" )
  755. .build( );
  756. List<? extends Artifact> results = repoContent.getArtifacts( selector );
  757. assertNotNull( results );
  758. assertEquals( 3, results.size( ) );
  759. Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "test-1.0-20050611.112233-1-javadoc.jar" ) )
  760. .findFirst().get();
  761. assertNotNull( artifact );
  762. assertEquals( "javadoc", artifact.getClassifier( ) );
  763. assertEquals( "javadoc", artifact.getType( ) );
  764. artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "wrong-artifactId-1.0-20050611.112233-1.jar" ) )
  765. .findFirst().get();
  766. assertNotNull( artifact );
  767. assertEquals( "", artifact.getClassifier( ) );
  768. assertEquals( "wrong-artifactId", artifact.getId( ) );
  769. }
  770. @Test
  771. public void testArtifactListWithArtifactSelector4() {
  772. ItemSelector selector = ArchivaItemSelector.builder( )
  773. .withNamespace( "org.apache.maven" )
  774. .withProjectId( "test" )
  775. .withVersion( "1.0-SNAPSHOT" )
  776. .withClassifier( "" )
  777. .build( );
  778. List<? extends Artifact> results = repoContent.getArtifacts( selector );
  779. assertNotNull( results );
  780. assertEquals( 5, results.size( ) );
  781. Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "test-1.0-20050611.112233-1-javadoc.jar" ) )
  782. .findFirst().get();
  783. assertNotNull( artifact );
  784. assertEquals( "javadoc", artifact.getClassifier( ) );
  785. assertEquals( "javadoc", artifact.getType( ) );
  786. artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "wrong-artifactId-1.0-20050611.112233-1.jar" ) )
  787. .findFirst().get();
  788. assertNotNull( artifact );
  789. assertEquals( "", artifact.getClassifier( ) );
  790. assertEquals( "wrong-artifactId", artifact.getId( ) );
  791. artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "wrong-artifactId-1.0-20050611.1122x-1.jar" ) )
  792. .findFirst().get();
  793. assertNotNull( artifact );
  794. assertEquals( "", artifact.getClassifier( ) );
  795. assertEquals( "wrong-artifactId", artifact.getId( ) );
  796. assertEquals( "", artifact.getArtifactVersion( ) );
  797. artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "test-1.0-20050611.1122x-1.jar" ) )
  798. .findFirst().get();
  799. assertNotNull( artifact );
  800. assertEquals( "", artifact.getClassifier( ) );
  801. assertEquals( "test", artifact.getId( ) );
  802. assertEquals( "1.0-20050611.1122x-1", artifact.getArtifactVersion( ) );
  803. }
  804. @Test
  805. public void testArtifactListWithArtifactSelectorWithClassifier() {
  806. ItemSelector selector = ArchivaItemSelector.builder( )
  807. .withNamespace( "org.apache.maven" )
  808. .withProjectId( "test" )
  809. .withVersion( "1.0-SNAPSHOT" )
  810. .withArtifactId( "test" )
  811. .withClassifier( "javadoc" )
  812. .withArtifactVersion( "1.0-20050611.112233-1" )
  813. .build( );
  814. List<? extends Artifact> results = repoContent.getArtifacts( selector );
  815. assertNotNull( results );
  816. assertEquals( 1, results.size( ) );
  817. Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "test-1.0-20050611.112233-1-javadoc.jar" ) )
  818. .findFirst().get();
  819. assertNotNull( artifact );
  820. assertEquals( "javadoc", artifact.getClassifier( ) );
  821. assertEquals( "javadoc", artifact.getType( ) );
  822. }
  823. @Test
  824. public void testArtifactListWithArtifactSelectorWrongArtifact() {
  825. ItemSelector selector = ArchivaItemSelector.builder( )
  826. .withNamespace( "org.apache.maven" )
  827. .withProjectId( "test" )
  828. .withVersion( "1.0-SNAPSHOT" )
  829. .withArtifactId( "wrong-artifactId" )
  830. .withArtifactVersion( "1.0-20050611.112233-1" )
  831. .build( );
  832. List<? extends Artifact> results = repoContent.getArtifacts( selector );
  833. assertNotNull( results );
  834. assertEquals( 1, results.size( ) );
  835. Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "wrong-artifactId-1.0-20050611.112233-1.jar" ) )
  836. .findFirst().get();
  837. assertNotNull( artifact );
  838. }
  839. @Test
  840. public void testArtifactListWithArtifactSelectorVersionPattern() {
  841. ItemSelector selector = ArchivaItemSelector.builder( )
  842. .withNamespace( "org.apache.maven" )
  843. .withProjectId( "test" )
  844. .withVersion( "1.0-SNAPSHOT" )
  845. .withArtifactVersion( "1.0-*" )
  846. .build( );
  847. List<? extends Artifact> results = repoContent.getArtifacts( selector );
  848. assertNotNull( results );
  849. assertEquals( 5, results.size( ) );
  850. Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "wrong-artifactId-1.0-20050611.112233-1.jar" ) )
  851. .findFirst().get();
  852. assertNotNull( artifact );
  853. }
  854. @Test
  855. public void testGetArtifactFromContentItem() {
  856. ItemSelector selector = ArchivaItemSelector.builder( )
  857. .withNamespace( "org.apache.maven" ).build();
  858. Namespace ns = repoContent.getNamespace( selector );
  859. List<? extends Artifact> artifacts = repoContent.getArtifacts( ns );
  860. assertNotNull( artifacts );
  861. assertEquals( 39, artifacts.size( ) );
  862. List<? extends Artifact> artifacts2 = repoContent.getArtifacts( (ContentItem)ns );
  863. assertArrayEquals( artifacts.toArray(), artifacts2.toArray() );
  864. selector = ArchivaItemSelector.builder( )
  865. .withNamespace( "org.apache.maven.shared" )
  866. .withProjectId( "maven-downloader" )
  867. .build();
  868. Project project = repoContent.getProject( selector );
  869. artifacts = repoContent.getArtifacts( project );
  870. assertNotNull( artifacts );
  871. assertEquals( 27, artifacts.size( ) );
  872. artifacts2 = repoContent.getArtifacts( (ContentItem)project );
  873. assertArrayEquals( artifacts.toArray(), artifacts2.toArray() );
  874. selector = ArchivaItemSelector.builder( )
  875. .withNamespace( "org.apache.maven.shared" )
  876. .withProjectId( "maven-downloader" )
  877. .withVersion( "1.1" )
  878. .build( );
  879. Version version = repoContent.getVersion( selector );
  880. artifacts = repoContent.getArtifacts( version );
  881. assertNotNull( artifacts );
  882. assertEquals( 12, artifacts.size( ) );
  883. artifacts2 = repoContent.getArtifacts( (ContentItem)version );
  884. assertArrayEquals( artifacts.toArray(), artifacts2.toArray() );
  885. }
  886. @Test
  887. public void testGetRelatedArtifactsFromArtifact() {
  888. ItemSelector selector = ArchivaItemSelector.builder( )
  889. .withNamespace( "org.apache.maven.shared" )
  890. .withProjectId( "maven-downloader" )
  891. .withVersion( "1.1" )
  892. .withExtension( "jar" )
  893. .withArtifactId( "maven-downloader" ).build( );
  894. Artifact artifact = repoContent.getArtifact( selector );
  895. assertNotNull( artifact );
  896. List<? extends Artifact> artifacts = repoContent.getArtifacts( artifact );
  897. assertNotNull( artifacts );
  898. assertEquals( 2, artifacts.size( ) );
  899. }
  900. @Test
  901. public void testToItemFromPath() throws LayoutException
  902. {
  903. String path = "/org/apache/maven/shared";
  904. ContentItem item = repoContent.toItem( path );
  905. assertNotNull( item );
  906. assertTrue( item instanceof Namespace );
  907. path = "/org/apache/maven/shared/maven-downloader";
  908. item = repoContent.toItem( path );
  909. assertNotNull( item );
  910. assertTrue( item instanceof Project );
  911. path = "/org/apache/maven/shared/maven-downloader/1.1";
  912. item = repoContent.toItem( path );
  913. assertNotNull( item );
  914. assertTrue( item instanceof Version );
  915. path = "/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.jar";
  916. item = repoContent.toItem( path );
  917. assertNotNull( item );
  918. assertTrue( item instanceof Artifact );
  919. }
  920. @Test
  921. public void testToItemFromAssetPath() throws LayoutException
  922. {
  923. StorageAsset path = repoContent.getRepository().getAsset("/org/apache/maven/shared");
  924. ContentItem item = repoContent.toItem( path );
  925. assertNotNull( item );
  926. assertTrue( item instanceof Namespace );
  927. path = repoContent.getRepository( ).getAsset( "/org/apache/maven/shared/maven-downloader" );
  928. item = repoContent.toItem( path );
  929. assertNotNull( item );
  930. assertTrue( item instanceof Project );
  931. path = repoContent.getRepository( ).getAsset( "/org/apache/maven/shared/maven-downloader/1.1" );
  932. item = repoContent.toItem( path );
  933. assertNotNull( item );
  934. assertTrue( item instanceof Version );
  935. path = repoContent.getRepository( ).getAsset( "/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.jar" );
  936. item = repoContent.toItem( path );
  937. assertNotNull( item );
  938. assertTrue( item instanceof Artifact );
  939. }
  940. @Test
  941. public void testHasContent() throws LayoutException
  942. {
  943. ItemSelector selector = ArchivaItemSelector.builder( )
  944. .withNamespace( "org.apache.maven.shared" )
  945. .withProjectId( "maven-downloader" )
  946. .withVersion( "1.1" )
  947. .withArtifactId( "maven-downloader" )
  948. .withExtension( "jar" )
  949. .build();
  950. assertTrue( repoContent.hasContent( selector ) );
  951. selector = ArchivaItemSelector.builder( )
  952. .withNamespace( "org.apache.maven.shared" )
  953. .withProjectId( "maven-downloader" )
  954. .withVersion( "1.1" )
  955. .withArtifactId( "maven-downloader" )
  956. .withExtension( "zip" )
  957. .build();
  958. assertFalse( repoContent.hasContent( selector ) );
  959. }
  960. @Test
  961. public void testGetItemWithNamespaceSelector() {
  962. ItemSelector selector = ArchivaItemSelector.builder( )
  963. .withNamespace( "org.apache.maven" )
  964. .build( );
  965. ContentItem item = repoContent.getItem( selector );
  966. assertNotNull( item );
  967. assertTrue( item instanceof Namespace );
  968. }
  969. @Test
  970. public void testGetItemWithProjectSelector() {
  971. ItemSelector selector = ArchivaItemSelector.builder( )
  972. .withNamespace( "org.apache.maven" )
  973. .withProjectId( "shared" )
  974. .build( );
  975. ContentItem item = repoContent.getItem( selector );
  976. assertNotNull( item );
  977. assertTrue( item instanceof Project );
  978. }
  979. @Test
  980. public void testGetItemWithVersionSelector() {
  981. ItemSelector selector = ArchivaItemSelector.builder( )
  982. .withNamespace( "org.apache.maven" )
  983. .withProjectId( "samplejar" )
  984. .withVersion("2.0")
  985. .build( );
  986. ContentItem item = repoContent.getItem( selector );
  987. assertNotNull( item );
  988. assertTrue( item instanceof Version );
  989. }
  990. @Test
  991. public void testGetItemWithArtifactSelector() {
  992. ItemSelector selector = ArchivaItemSelector.builder( )
  993. .withNamespace( "org.apache.maven" )
  994. .withProjectId( "samplejar" )
  995. .withVersion("2.0")
  996. .withArtifactId( "samplejar" )
  997. .build( );
  998. ContentItem item = repoContent.getItem( selector );
  999. assertNotNull( item );
  1000. assertTrue( item instanceof Artifact );
  1001. }
  1002. @Test
  1003. public void testGetNamespaceFromPath() {
  1004. StorageAsset path = repoContent.getRepository( ).getAsset( "/org/apache/axis2" );
  1005. Namespace ns = repoContent.getNamespaceFromPath( path );
  1006. assertNotNull( ns );
  1007. assertEquals( "org.apache.axis2", ns.getNamespace( ) );
  1008. }
  1009. @Test
  1010. public void testArtifactListWithArtifactSelectorAndRelated() {
  1011. ItemSelector selector = ArchivaItemSelector.builder( )
  1012. .withNamespace( "org.apache.maven" )
  1013. .withProjectId( "samplejar" )
  1014. .withVersion( "1.0" )
  1015. .withArtifactVersion( "1.0" )
  1016. .withArtifactId( "samplejar" )
  1017. .withExtension( "jar" )
  1018. .includeRelatedArtifacts()
  1019. .build( );
  1020. List<? extends Artifact> results = repoContent.getArtifacts( selector );
  1021. assertNotNull( results );
  1022. assertEquals( 3, results.size( ) );
  1023. Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "samplejar-1.0.jar" ) )
  1024. .findFirst().get();
  1025. assertNotNull( artifact );
  1026. assertEquals( BaseArtifactTypes.MAIN, artifact.getArtifactType( ) );
  1027. artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "samplejar-1.0.jar.md5" ) )
  1028. .findFirst().get();
  1029. assertNotNull( artifact );
  1030. assertEquals( BaseArtifactTypes.RELATED, artifact.getArtifactType( ) );
  1031. assertEquals( "md5", artifact.getExtension( ) );
  1032. artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "samplejar-1.0.jar.sha1" ) )
  1033. .findFirst().get();
  1034. assertNotNull( artifact );
  1035. assertEquals( BaseArtifactTypes.RELATED, artifact.getArtifactType( ) );
  1036. assertEquals( "sha1", artifact.getExtension( ) );
  1037. }
  1038. private Path copyRepository(String repoName) throws IOException, URISyntaxException
  1039. {
  1040. Path tempDir = Files.createTempDirectory( "archiva-repocontent" );
  1041. Path repoSource = Paths.get( Thread.currentThread( ).getContextClassLoader( ).getResource( "repositories/" + repoName ).toURI( ) );
  1042. assertTrue( Files.exists( repoSource ) );
  1043. FileUtils.copyDirectory( repoSource.toFile( ), tempDir.toFile() );
  1044. return tempDir;
  1045. }
  1046. private ManagedRepository createManagedRepoWithContent(String sourceRepoName) throws IOException, URISyntaxException
  1047. {
  1048. Path repoDir = copyRepository( sourceRepoName );
  1049. MavenManagedRepository repo = createRepository( sourceRepoName, sourceRepoName, repoDir );
  1050. ManagedDefaultRepositoryContent deleteRepoContent = new ManagedDefaultRepositoryContent( repo, artifactMappingProviders, fileTypes, fileLockManager );
  1051. deleteRepoContent.setMavenContentHelper( contentHelper );
  1052. return repo;
  1053. }
  1054. @Test
  1055. public void deleteNamespaceItem() throws IOException, URISyntaxException, ItemNotFoundException
  1056. {
  1057. ManagedRepository repo = createManagedRepoWithContent( "delete-repository" );
  1058. ManagedRepositoryContent myRepoContent = repo.getContent( );
  1059. Path repoRoot = repo.getAsset( "" ).getFilePath( );
  1060. assertTrue( Files.exists(repoRoot.resolve( "org/apache/maven" )) );
  1061. ArchivaItemSelector selector = ArchivaItemSelector.builder( )
  1062. .withNamespace( "org.apache.maven" ).build();
  1063. ContentItem item = myRepoContent.getItem( selector );
  1064. assertTrue( item instanceof Namespace );
  1065. myRepoContent.deleteItem( item );
  1066. assertFalse( Files.exists(repoRoot.resolve( "org/apache/maven" )) );
  1067. assertTrue( Files.exists(repoRoot.resolve( "org/apache" )) );
  1068. // Sub namespaces are deleted too
  1069. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar" )) );
  1070. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/sub/samplejar" )) );
  1071. selector = ArchivaItemSelector.builder( )
  1072. .withNamespace( "org.apache.test" ).build();
  1073. item = myRepoContent.getItem( selector );
  1074. assertTrue( item instanceof Namespace );
  1075. myRepoContent.deleteItem( item );
  1076. assertFalse( Files.exists(repoRoot.resolve( "org/apache/test/samplejar" )) );
  1077. assertFalse( Files.exists(repoRoot.resolve( "org/apache/test/sub/samplejar" )) );
  1078. }
  1079. @Test
  1080. public void deleteProjectItem() throws IOException, URISyntaxException, ItemNotFoundException
  1081. {
  1082. ManagedRepository repo = createManagedRepoWithContent( "delete-repository" );
  1083. ManagedRepositoryContent myRepoContent = repo.getContent( );
  1084. Path repoRoot = repo.getAsset( "" ).getFilePath( );
  1085. assertTrue( Files.exists(repoRoot.resolve( "org/apache/maven/A" )) );
  1086. ArchivaItemSelector selector = ArchivaItemSelector.builder( )
  1087. .withNamespace( "org.apache.maven" )
  1088. .withProjectId( "A" ).build();
  1089. ContentItem item = myRepoContent.getItem( selector );
  1090. assertTrue( item instanceof Project );
  1091. myRepoContent.deleteItem( item );
  1092. assertTrue( Files.exists(repoRoot.resolve( "org/apache/maven" )) );
  1093. assertTrue( Files.exists( repoRoot.resolve( "org/apache/maven/samplejar/1.0" ) ) );
  1094. assertTrue( Files.exists( repoRoot.resolve( "org/apache/maven/samplejar/2.0" ) ) );
  1095. assertFalse( Files.exists(repoRoot.resolve( "org/apache/maven/A" )) );
  1096. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar" )) );
  1097. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/sub/samplejar" )) );
  1098. selector = ArchivaItemSelector.builder( )
  1099. .withNamespace( "org.apache.test" )
  1100. .withProjectId( "samplejar" ).build();
  1101. item = myRepoContent.getItem( selector );
  1102. assertTrue( item instanceof Project );
  1103. myRepoContent.deleteItem( item );
  1104. assertFalse( Files.exists(repoRoot.resolve( "org/apache/test/samplejar" )) );
  1105. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/sub/samplejar" )) );
  1106. }
  1107. @Test
  1108. public void deleteVersionItem() throws IOException, URISyntaxException, ItemNotFoundException
  1109. {
  1110. ManagedRepository repo = createManagedRepoWithContent( "delete-repository" );
  1111. ManagedRepositoryContent myRepoContent = repo.getContent( );
  1112. Path repoRoot = repo.getAsset( "" ).getFilePath( );
  1113. assertTrue( Files.exists(repoRoot.resolve( "org/apache/maven/A/1.0" )) );
  1114. ArchivaItemSelector selector = ArchivaItemSelector.builder( )
  1115. .withNamespace( "org.apache.maven" )
  1116. .withProjectId( "A" )
  1117. .withVersion( "1.0" ).build();
  1118. ContentItem item = myRepoContent.getItem( selector );
  1119. assertTrue( item instanceof Version );
  1120. myRepoContent.deleteItem( item );
  1121. assertTrue( Files.exists(repoRoot.resolve( "org/apache/maven/A" )) );
  1122. assertTrue( Files.exists( repoRoot.resolve( "org/apache/maven/samplejar/1.0" ) ) );
  1123. assertTrue( Files.exists( repoRoot.resolve( "org/apache/maven/samplejar/2.0" ) ) );
  1124. assertFalse( Files.exists(repoRoot.resolve( "org/apache/maven/A/1.0" )) );
  1125. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar" )) );
  1126. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/sub/samplejar" )) );
  1127. selector = ArchivaItemSelector.builder( )
  1128. .withNamespace( "org.apache.test" )
  1129. .withProjectId( "samplejar" )
  1130. .withVersion( "2.0" ).build();
  1131. item = myRepoContent.getItem( selector );
  1132. assertTrue( item instanceof Version );
  1133. myRepoContent.deleteItem( item );
  1134. assertFalse( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/2.0" )) );
  1135. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0" )) );
  1136. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/sub/samplejar/1.0" )) );
  1137. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/sub/samplejar/2.0" )) );
  1138. }
  1139. @Test
  1140. public void deleteArtifactItem() throws IOException, URISyntaxException, ItemNotFoundException
  1141. {
  1142. ManagedRepository repo = createManagedRepoWithContent( "delete-repository" );
  1143. ManagedRepositoryContent myRepoContent = repo.getContent( );
  1144. Path repoRoot = repo.getAsset( "" ).getFilePath( );
  1145. assertTrue( Files.exists(repoRoot.resolve( "org/apache/maven/A/1.0/A-1.0.pom" )) );
  1146. assertTrue( Files.exists(repoRoot.resolve( "org/apache/maven/A/1.0/A-1.0.war" )) );
  1147. ArchivaItemSelector selector = ArchivaItemSelector.builder( )
  1148. .withNamespace( "org.apache.maven" )
  1149. .withProjectId( "A" )
  1150. .withVersion( "1.0" )
  1151. .withArtifactId( "A" )
  1152. .withArtifactVersion( "1.0" )
  1153. .withExtension( "pom" )
  1154. .build();
  1155. ContentItem item = myRepoContent.getItem( selector );
  1156. assertTrue( item instanceof Artifact );
  1157. myRepoContent.deleteItem( item );
  1158. assertTrue( Files.exists( repoRoot.resolve( "org/apache/maven/samplejar/1.0" ) ) );
  1159. assertTrue( Files.exists( repoRoot.resolve( "org/apache/maven/samplejar/2.0" ) ) );
  1160. assertFalse( Files.exists(repoRoot.resolve( "org/apache/maven/A/1.0/A-1.0.pom" )) );
  1161. assertTrue( Files.exists(repoRoot.resolve( "org/apache/maven/A/1.0/A-1.0.war" )) );
  1162. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.jar" )) );
  1163. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.jar.md5" )) );
  1164. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.jar.sha1" )) );
  1165. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.pom" )) );
  1166. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0-source.jar" )) );
  1167. selector = ArchivaItemSelector.builder( )
  1168. .withNamespace( "org.apache.test" )
  1169. .withProjectId( "samplejar" )
  1170. .withVersion( "1.0" )
  1171. .withArtifactId( "samplejar" )
  1172. .withArtifactVersion( "1.0" )
  1173. .withExtension( "jar" )
  1174. .build();
  1175. item = myRepoContent.getItem( selector );
  1176. assertTrue( item instanceof Artifact );
  1177. myRepoContent.deleteItem( item );
  1178. assertFalse( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.jar" )) );
  1179. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.jar.md5" )) );
  1180. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.jar.sha1" )) );
  1181. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.pom" )) );
  1182. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0-source.jar" )) );
  1183. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/2.0" )) );
  1184. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/sub/samplejar/1.0" )) );
  1185. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/sub/samplejar/2.0" )) );
  1186. selector = ArchivaItemSelector.builder( )
  1187. .withNamespace( "org.apache.test" )
  1188. .withProjectId( "samplejar" )
  1189. .withVersion( "1.0" )
  1190. .withArtifactId( "samplejar" )
  1191. .withArtifactVersion( "1.0" )
  1192. .withClassifier( "source" )
  1193. .withExtension( "jar" )
  1194. .build();
  1195. item = myRepoContent.getItem( selector );
  1196. assertTrue( item instanceof Artifact );
  1197. myRepoContent.deleteItem( item );
  1198. assertFalse( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.jar" )) );
  1199. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.jar.md5" )) );
  1200. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.jar.sha1" )) );
  1201. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.pom" )) );
  1202. assertFalse( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0-source.jar" )) );
  1203. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0-source.jar.sha1" )) );
  1204. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/2.0" )) );
  1205. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/sub/samplejar/1.0" )) );
  1206. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/sub/samplejar/2.0" )) );
  1207. selector = ArchivaItemSelector.builder( )
  1208. .withNamespace( "org.apache.test" )
  1209. .withProjectId( "samplejar" )
  1210. .withVersion( "1.0" )
  1211. .withArtifactId( "samplejar" )
  1212. .withArtifactVersion( "1.0" )
  1213. .withExtension( "jar.md5" )
  1214. .build();
  1215. item = myRepoContent.getItem( selector );
  1216. assertTrue( item instanceof Artifact );
  1217. myRepoContent.deleteItem( item );
  1218. assertFalse( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.jar" )) );
  1219. assertFalse( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.jar.md5" )) );
  1220. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.jar.sha1" )) );
  1221. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0.pom" )) );
  1222. assertFalse( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0-source.jar" )) );
  1223. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/1.0/samplejar-1.0-source.jar.sha1" )) );
  1224. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/samplejar/2.0" )) );
  1225. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/sub/samplejar/1.0" )) );
  1226. assertTrue( Files.exists(repoRoot.resolve( "org/apache/test/sub/samplejar/2.0" )) );
  1227. }
  1228. @Test
  1229. public void deleteItemNotFound() throws IOException, URISyntaxException, ItemNotFoundException
  1230. {
  1231. ManagedRepository repo = createManagedRepoWithContent( "delete-repository" );
  1232. ManagedRepositoryContent myRepoContent = repo.getContent( );
  1233. Path repoRoot = repo.getAsset( "" ).getFilePath( );
  1234. ArchivaItemSelector selector = ArchivaItemSelector.builder( )
  1235. .withNamespace( "org.apache.test2" )
  1236. .build( );
  1237. ContentItem item = myRepoContent.getItem( selector );
  1238. assertTrue( item instanceof Namespace );
  1239. try
  1240. {
  1241. myRepoContent.deleteItem( item );
  1242. assertTrue( "ItemNotFoundException expected for non existing namespace", false );
  1243. } catch ( ItemNotFoundException e) {
  1244. }
  1245. selector = ArchivaItemSelector.builder( )
  1246. .withNamespace( "org.apache.test" )
  1247. .withProjectId( "samplejar2" )
  1248. .build( );
  1249. item = myRepoContent.getItem( selector );
  1250. assertTrue( item instanceof Project );
  1251. try
  1252. {
  1253. myRepoContent.deleteItem( item );
  1254. assertTrue( "ItemNotFoundException expected for non existing project", false );
  1255. } catch ( ItemNotFoundException e) {
  1256. }
  1257. selector = ArchivaItemSelector.builder( )
  1258. .withNamespace( "org.apache.test" )
  1259. .withProjectId( "samplejar" )
  1260. .withVersion("1.1")
  1261. .build( );
  1262. item = myRepoContent.getItem( selector );
  1263. assertTrue( item instanceof Version );
  1264. try
  1265. {
  1266. myRepoContent.deleteItem( item );
  1267. assertTrue( "ItemNotFoundException expected for non existing version", false );
  1268. } catch ( ItemNotFoundException e) {
  1269. }
  1270. selector = ArchivaItemSelector.builder( )
  1271. .withNamespace( "org.apache.test" )
  1272. .withProjectId( "samplejar" )
  1273. .withVersion("1.0")
  1274. .withArtifactId( "samplejar" )
  1275. .withArtifactVersion( "1.0" )
  1276. .withExtension( "jax" )
  1277. .build( );
  1278. item = myRepoContent.getItem( selector );
  1279. assertTrue( item instanceof Artifact );
  1280. try
  1281. {
  1282. myRepoContent.deleteItem( item );
  1283. assertTrue( "ItemNotFoundException expected for non existing artifact", false );
  1284. } catch ( ItemNotFoundException e) {
  1285. }
  1286. }
  1287. @Test
  1288. public void testAddArtifact() throws IOException, URISyntaxException
  1289. {
  1290. ManagedRepository repo = createManagedRepoWithContent( "delete-repository" );
  1291. ManagedRepositoryContent myRepoContent = repo.getContent( );
  1292. Path repoRoot = repo.getAsset( "" ).getFilePath( );
  1293. Path tmpFile = Files.createTempFile( "archiva-mvn-repotest", "jar" );
  1294. try( OutputStream outputStream = Files.newOutputStream( tmpFile ))
  1295. {
  1296. for ( int i = 0; i < 255; i++ )
  1297. {
  1298. outputStream.write( "test.test.test\n".getBytes( Charset.forName( "UTF-8" ) ) );
  1299. }
  1300. }
  1301. Path file = repoRoot.resolve( "org/apache/maven/samplejar/2.0/samplejar-2.0.jar" );
  1302. FileTime lmt = Files.getLastModifiedTime( file );
  1303. ArchivaItemSelector selector = ArchivaItemSelector.builder( )
  1304. .withNamespace( "org.apache.maven" )
  1305. .withProjectId( "samplejar" )
  1306. .withVersion( "2.0" )
  1307. .withArtifactId( "samplejar" )
  1308. .withArtifactVersion( "2.0" )
  1309. .withExtension( "jar" )
  1310. .build( );
  1311. Artifact artifact = myRepoContent.getArtifact( selector );
  1312. myRepoContent.addArtifact( tmpFile, artifact );
  1313. FileTime lmtAfter = Files.getLastModifiedTime( file );
  1314. assertNotEquals( lmtAfter, lmt );
  1315. Reader ln = Files.newBufferedReader( file, Charset.forName( "UTF-8" ) );
  1316. char[] content = new char[50];
  1317. ln.read( content );
  1318. assertTrue( new String( content ).startsWith( "test.test.test" ) );
  1319. tmpFile = Files.createTempFile( "archiva-mvn-repotest", "jar" );
  1320. try( OutputStream outputStream = Files.newOutputStream( tmpFile ))
  1321. {
  1322. for ( int i = 0; i < 255; i++ )
  1323. {
  1324. outputStream.write( "test.test.test\n".getBytes( Charset.forName( "UTF-8" ) ) );
  1325. }
  1326. }
  1327. file = repoRoot.resolve( "org/apache/maven/samplejar/2.0/samplejar-2.0.test" );
  1328. assertFalse( Files.exists( file ) );
  1329. assertTrue( Files.exists( tmpFile ) );
  1330. selector = ArchivaItemSelector.builder( )
  1331. .withNamespace( "org.apache.maven" )
  1332. .withProjectId( "samplejar" )
  1333. .withVersion( "2.0" )
  1334. .withArtifactId( "samplejar" )
  1335. .withArtifactVersion( "2.0" )
  1336. .withExtension( "test" )
  1337. .build( );
  1338. artifact = myRepoContent.getArtifact( selector );
  1339. myRepoContent.addArtifact( tmpFile, artifact );
  1340. ln = Files.newBufferedReader( file, Charset.forName( "UTF-8" ) );
  1341. ln.read( content );
  1342. assertTrue( new String( content ).startsWith( "test.test.test" ) );
  1343. }
  1344. }