001    package org.apache.maven.repository.internal;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one
005     * or more contributor license agreements.  See the NOTICE file
006     * distributed with this work for additional information
007     * regarding copyright ownership.  The ASF licenses this file
008     * to you under the Apache License, Version 2.0 (the
009     * "License"); you may not use this file except in compliance
010     * with the License.  You may obtain a copy of the License at
011     *
012     *   http://www.apache.org/licenses/LICENSE-2.0
013     *
014     * Unless required by applicable law or agreed to in writing,
015     * software distributed under the License is distributed on an
016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017     * KIND, either express or implied.  See the License for the
018     * specific language governing permissions and limitations
019     * under the License.
020     */
021    
022    import java.util.Arrays;
023    import java.util.List;
024    
025    import org.eclipse.aether.artifact.Artifact;
026    import org.eclipse.aether.collection.CollectRequest;
027    import org.eclipse.aether.collection.CollectResult;
028    import org.eclipse.aether.graph.Dependency;
029    import org.eclipse.aether.graph.DependencyNode;
030    import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
031    import org.eclipse.aether.resolution.ArtifactDescriptorResult;
032    import org.eclipse.aether.resolution.ArtifactRequest;
033    import org.eclipse.aether.resolution.ArtifactResult;
034    import org.eclipse.aether.artifact.DefaultArtifact;
035    
036    public class RepositorySystemTest
037        extends AbstractRepositoryTestCase
038    {
039        public void testResolveVersionRange()
040            throws Exception
041        {
042            //VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request )
043            //                throws VersionRangeResolutionException;
044    
045        }
046    
047        public void testResolveVersion()
048            throws Exception
049        {
050            //VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
051            //                throws VersionResolutionException;
052        }
053    
054        public void testReadArtifactDescriptor()
055            throws Exception
056        {
057            Artifact artifact = new DefaultArtifact( "ut.simple:artifact:extension:classifier:1.0" );
058    
059            ArtifactDescriptorRequest request = new ArtifactDescriptorRequest();
060            request.setArtifact( artifact );
061            request.addRepository( newTestRepository() );
062            
063            ArtifactDescriptorResult result = system.readArtifactDescriptor( session, request );
064    
065            List<Dependency> deps = result.getDependencies();
066            assertEquals( 2, deps.size() );
067            checkUtSimpleArtifactDependencies( deps.get( 0 ), deps.get( 1 ) );
068        }
069    
070        /**
071         * check ut.simple:artifact:1.0 dependencies
072         */
073        private void checkUtSimpleArtifactDependencies( Dependency dep1, Dependency dep2 )
074        {
075            assertEquals( "compile", dep1.getScope() );
076            assertFalse( dep1.isOptional() );
077            assertEquals( 0, dep1.getExclusions().size() );
078            Artifact depArtifact = dep1.getArtifact();
079            assertEquals( "ut.simple", depArtifact.getGroupId() );
080            assertEquals( "dependency", depArtifact.getArtifactId() );
081            assertEquals( "1.0", depArtifact.getVersion() );
082            assertEquals( "1.0", depArtifact.getBaseVersion() );
083            assertNull( depArtifact.getFile() );
084            assertFalse( depArtifact.isSnapshot() );
085            assertEquals( "", depArtifact.getClassifier() );
086            assertEquals( "jar", depArtifact.getExtension() );
087            assertEquals( "java", depArtifact.getProperty( "language", null ) );
088            assertEquals( "jar", depArtifact.getProperty( "type", null ) );
089            assertEquals( "true", depArtifact.getProperty( "constitutesBuildPath", null ) );
090            assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) );
091            assertEquals( 4, depArtifact.getProperties().size() );
092    
093            assertEquals( "compile", dep2.getScope() );
094            assertFalse( dep2.isOptional() );
095            assertEquals( 0, dep2.getExclusions().size() );
096            depArtifact = dep2.getArtifact();
097            assertEquals( "ut.simple", depArtifact.getGroupId() );
098            assertEquals( "dependency", depArtifact.getArtifactId() );
099            assertEquals( "1.0", depArtifact.getVersion() );
100            assertEquals( "1.0", depArtifact.getBaseVersion() );
101            assertNull( depArtifact.getFile() );
102            assertFalse( depArtifact.isSnapshot() );
103            assertEquals( "sources", depArtifact.getClassifier() );
104            assertEquals( "jar", depArtifact.getExtension() );
105            assertEquals( "java", depArtifact.getProperty( "language", null ) );
106            assertEquals( "jar", depArtifact.getProperty( "type", null ) ); // shouldn't it be java-sources given the classifier?
107            assertEquals( "true", depArtifact.getProperty( "constitutesBuildPath", null ) ); // shouldn't it be false given the classifier?
108            assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) );
109            assertEquals( 4, depArtifact.getProperties().size() );
110        }
111    
112        public void testCollectDependencies()
113            throws Exception
114        {
115            Artifact artifact = new DefaultArtifact( "ut.simple:artifact:extension:classifier:1.0" );
116            // notice: extension and classifier not really used in this test...
117    
118            CollectRequest collectRequest = new CollectRequest();
119            collectRequest.setRoot( new Dependency( artifact, null ) );
120            collectRequest.addRepository( newTestRepository() );
121    
122            CollectResult collectResult = system.collectDependencies( session, collectRequest );
123    
124            List<DependencyNode> nodes = collectResult.getRoot().getChildren();
125            assertEquals( 2, nodes.size() );
126            checkUtSimpleArtifactDependencies( nodes.get( 0 ).getDependency(), nodes.get( 1 ).getDependency() );
127        }
128    
129        public void testResolveArtifact()
130            throws Exception
131        {
132            Artifact artifact = new DefaultArtifact( "ut.simple:artifact:1.0" );
133    
134            ArtifactRequest artifactRequest = new ArtifactRequest();
135            artifactRequest.setArtifact( artifact );
136            artifactRequest.addRepository( newTestRepository() );
137    
138            ArtifactResult artifactResult = system.resolveArtifact( session, artifactRequest );
139            checkArtifactResult( artifactResult, "artifact-1.0.jar" );
140    
141            artifact = new DefaultArtifact( "ut.simple:artifact:zip:1.0" );
142            artifactRequest.setArtifact( artifact );
143            artifactResult = system.resolveArtifact( session, artifactRequest );
144            checkArtifactResult( artifactResult, "artifact-1.0.zip" );
145    
146            artifact = new DefaultArtifact( "ut.simple:artifact:zip:classifier:1.0" );
147            artifactRequest.setArtifact( artifact );
148            artifactResult = system.resolveArtifact( session, artifactRequest );
149            checkArtifactResult( artifactResult, "artifact-1.0-classifier.zip" );
150        }
151    
152        private void checkArtifactResult( ArtifactResult result, String filename )
153        {
154            assertFalse( result.isMissing() );
155            assertTrue( result.isResolved() );
156            Artifact artifact = result.getArtifact();
157            assertNotNull( artifact.getFile() );
158            assertEquals( filename, artifact.getFile().getName() );
159        }
160    
161        public void testResolveArtifacts()
162            throws Exception
163        {
164            ArtifactRequest req1 = new ArtifactRequest();
165            req1.setArtifact( new DefaultArtifact( "ut.simple:artifact:1.0" ) );
166            req1.addRepository( newTestRepository() );
167    
168            ArtifactRequest req2 = new ArtifactRequest();
169            req2.setArtifact( new DefaultArtifact( "ut.simple:artifact:zip:1.0" ) );
170            req2.addRepository( newTestRepository() );
171    
172            ArtifactRequest req3 = new ArtifactRequest();
173            req3.setArtifact( new DefaultArtifact( "ut.simple:artifact:zip:classifier:1.0" ) );
174            req3.addRepository( newTestRepository() );
175    
176            List<ArtifactRequest> requests = Arrays.asList( req1, req2, req3 );
177    
178            List<ArtifactResult> results = system.resolveArtifacts( session, requests );
179    
180            assertEquals( 3, results.size() );
181            checkArtifactResult( results.get( 0 ), "artifact-1.0.jar" );
182            checkArtifactResult( results.get( 1 ), "artifact-1.0.zip" );
183            checkArtifactResult( results.get( 2 ), "artifact-1.0-classifier.zip" );
184        }
185    
186        public void testResolveMetadata()
187            throws Exception
188        {
189            //List<MetadataResult> resolveMetadata( RepositorySystemSession session,
190            //                                      Collection<? extends MetadataRequest> requests );
191        }
192    
193        public void testInstall()
194            throws Exception
195        {
196            //InstallResult install( RepositorySystemSession session, InstallRequest request )
197            //                throws InstallationException;
198            // release, snapshot unique ou non unique, attachement
199        }
200    
201        public void testDeploy()
202            throws Exception
203        {
204            //DeployResult deploy( RepositorySystemSession session, DeployRequest request )
205            //                throws DeploymentException;
206        }
207    
208        public void testNewLocalRepositoryManager()
209            throws Exception
210        {
211            //LocalRepositoryManager newLocalRepositoryManager( LocalRepository localRepository );
212        }
213    
214        public void testNewSyncContext()
215            throws Exception
216        {
217            //SyncContext newSyncContext( RepositorySystemSession session, boolean shared );
218        }
219    
220    }