/*
* Copyright (C) 2010 Toni Menzel
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.ops4j.pax.url.mvn;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import org.apache.maven.settings.Profile;
import org.apache.maven.settings.Repository;
import org.apache.maven.settings.Settings;
import org.eclipse.aether.collection.DependencyCollectionException;
import org.eclipse.aether.resolution.ArtifactResolutionException;
import org.junit.Test;
import org.ops4j.pax.url.mvn.internal.AetherBasedResolver;
import org.ops4j.pax.url.mvn.internal.config.MavenConfigurationImpl;
import org.ops4j.util.property.PropertiesPropertyResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Simply playing with mvn api.
*/
public class AetherTest {
private static Logger LOG = LoggerFactory.getLogger( AetherTest.class );
@Test
public void resolveArtifact()
throws DependencyCollectionException, ArtifactResolutionException, IOException
{
AetherBasedResolver aetherBasedResolver = new AetherBasedResolver( getConfig() );
aetherBasedResolver.resolve( "org.ops4j.pax.web", "pax-web-api", "", "jar", "0.7.2" );
aetherBasedResolver.close();
}
@Test
public void resolveRangeBased()
throws DependencyCollectionException, ArtifactResolutionException, IOException
{
AetherBasedResolver aetherBasedResolver = new AetherBasedResolver( getConfig() );
aetherBasedResolver.resolve( "org.ops4j.pax.web", "pax-web-api", "", "jar", "LATEST" );
aetherBasedResolver.close();
}
@Test
public void testCachingOfRanges()
throws DependencyCollectionException, ArtifactResolutionException, IOException
{
AetherBasedResolver aetherBasedResolver = new AetherBasedResolver( getConfig() );
aetherBasedResolver.resolve( "org.ops4j.pax.web", "pax-web-api", "", "jar", "LATEST" );
aetherBasedResolver.close();
// now again:
// no repo
aetherBasedResolver = new AetherBasedResolver( getConfig() );
aetherBasedResolver.resolve( "org.ops4j.pax.web", "pax-web-api", "", "jar", "LATEST" );
aetherBasedResolver.close();
}
private Settings getSettings()
{
Settings settings = new Settings();
settings.setLocalRepository( getCache().toURI().toASCIIString() );
Profile centralProfile = new Profile();
centralProfile.setId( "central" );
Repository central = new Repository();
central.setId( "central" );
central.setUrl( "http://repo1.maven.org/maven2");
centralProfile.addRepository( central );
settings.addProfile( centralProfile );
settings.addActiveProfile( "central" );
return settings;
}
private MavenConfigurationImpl getConfig() {
Properties p = new Properties();
MavenConfigurationImpl config = new MavenConfigurationImpl( new PropertiesPropertyResolver( p ), ServiceConstants.PID );
config.setSettings( getSettings() );
return config;
}
private File getCache() {
File base = new File( "target" );
base.mkdir();
try {
File f = File.createTempFile( "aethertest", ".dir", base );
f.delete();
f.mkdirs();
LOG.info( "Caching" + " to " + f.getAbsolutePath() );
return f;
}
catch( IOException exc ) {
throw new AssertionError( "cannot create cache", exc );
}
}
@Test
public void testResolveRDF()
throws DependencyCollectionException, ArtifactResolutionException, IOException
{
Settings settings = getSettings();
Profile jbossProfile = new Profile();
jbossProfile.setId( "jboss" );
Repository jbossRepository = new Repository();
jbossRepository.setId( "jboss" );
jbossRepository.setUrl( "http://repository.jboss.org/nexus/content/repositories/thirdparty-releases");
jbossProfile.addRepository( jbossRepository );
settings.addProfile( jbossProfile );
settings.addActiveProfile( "jboss" );
MavenConfigurationImpl config = getConfig();
config.setSettings( settings );
AetherBasedResolver aetherBasedResolver = new AetherBasedResolver( config );
aetherBasedResolver.resolve( "org.openrdf", "openrdf-model", "", "jar", "2.0.1" );
aetherBasedResolver.close();
}
}