View Javadoc
1   package org.apache.maven.archetype.source;
2   
3   /*
4    *  Copyright 2007 rafale.
5    *
6    *  Licensed under the Apache License, Version 2.0 (the "License");
7    *  you may not use this file except in compliance with the License.
8    *  You may obtain a copy of the License at
9    *
10   *       http://www.apache.org/licenses/LICENSE-2.0
11   *
12   *  Unless required by applicable law or agreed to in writing, software
13   *  distributed under the License is distributed on an "AS IS" BASIS,
14   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   *  See the License for the specific language governing permissions and
16   *  limitations under the License.
17   *  under the License.
18   */
19  
20  import java.io.File;
21  import java.io.FileWriter;
22  import java.io.Writer;
23  
24  import org.apache.maven.archetype.ArchetypeManager;
25  import org.apache.maven.archetype.catalog.Archetype;
26  import org.apache.maven.archetype.catalog.ArchetypeCatalog;
27  import org.apache.maven.archetype.catalog.io.xpp3.ArchetypeCatalogXpp3Writer;
28  import org.apache.maven.project.DefaultProjectBuildingRequest;
29  import org.apache.maven.project.ProjectBuildingRequest;
30  import org.apache.maven.repository.internal.MavenRepositorySystemSession;
31  import org.codehaus.plexus.PlexusTestCase;
32  import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
33  
34  public class LocalCatalogArchetypeDataSourceTest extends PlexusTestCase
35  {
36  
37      @Override
38      protected void setUp()
39                      throws Exception
40      {
41          super.setUp();
42  
43          File catalogDirectory = getTestFile( "target/test-classes/repositories/test-catalog" );
44          catalogDirectory.mkdirs();
45  
46          ArchetypeCatalog catalog = new ArchetypeCatalog();
47          Archetype generatedArchetype = new Archetype();
48          generatedArchetype.setGroupId( "groupId" );
49          generatedArchetype.setArtifactId( "artifactId" );
50          generatedArchetype.setVersion( "1" );
51          generatedArchetype.setRepository( "http://localhost:0/repo/" );
52          catalog.addArchetype( generatedArchetype );
53  
54          File catalogFile = new File( catalogDirectory, "archetype-catalog.xml" );
55          ArchetypeCatalogXpp3Writer catalogWriter = new ArchetypeCatalogXpp3Writer();
56          try ( Writer writer = new FileWriter( catalogFile ) )
57          {
58              catalogWriter.write( writer, catalog );
59          }
60      }
61      
62      public void testLocalCatalog()
63                      throws Exception
64      {
65          ArchetypeManager archetype = lookup( ArchetypeManager.class );
66  
67          ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest();
68          MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
69          repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( getTestFile( "target/test-classes/repositories/test-catalog" ) ) );
70          buildingRequest.setRepositorySession( repositorySession );
71          
72          
73          ArchetypeCatalog result = archetype.getLocalCatalog( buildingRequest );
74  
75          assertEquals( 1, result.getArchetypes().size() );
76          assertEquals( "groupId", result.getArchetypes().get( 0 ).getGroupId() );
77          assertEquals( "artifactId", result.getArchetypes().get( 0 ).getArtifactId() );
78          assertEquals( "1", result.getArchetypes().get( 0 ).getVersion() );
79          assertEquals( "http://localhost:0/repo/", result.getArchetypes().get( 0 ).getRepository() );
80      }
81  
82  }