/******************************************************************************* * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved. * 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 *******************************************************************************/ package org.ebayopensource.turmeric.eclipse.mavenapi.test.impl; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.apache.commons.io.IOUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.project.MavenProject; import org.apache.maven.repository.metadata.ArtifactMetadata; import org.ebayopensource.turmeric.eclipse.mavenapi.MavenApiPlugin; import org.ebayopensource.turmeric.eclipse.mavenapi.exception.MavenEclipseApiException; import org.ebayopensource.turmeric.eclipse.mavenapi.impl.EclipseArtifactMetadata; import org.ebayopensource.turmeric.eclipse.mavenapi.impl.MavenEclipseApi; import org.ebayopensource.turmeric.eclipse.mavenapi.impl.MavenEclipseUtil; import org.ebayopensource.turmeric.eclipse.mavenapi.request.AbstractProjectMavenizationRequest; import org.ebayopensource.turmeric.eclipse.mavenapi.request.ProjectMavenizationRequest; import org.ebayopensource.turmeric.eclipse.utils.collections.ListUtil; import org.ebayopensource.turmeric.eclipse.utils.plugin.WorkspaceUtil; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Platform; import org.eclipse.jdt.core.JavaCore; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; /** * @author yayu * */ public class TestMavenEclipseApi { private static MavenEclipseApi api; /** * @throws java.lang.Exception */ @BeforeClass public static void setUpBeforeClass() throws Exception { api = (MavenEclipseApi)MavenApiPlugin.getDefault().getMavenEclipseApi(); api.refreshAllIndices(); int retry = 0; while (retry < 10 && api.findGroup("junit").isEmpty()) { Thread.sleep(1000); retry++; } } /** * Test method for {@link org.ebayopensource.turmeric.eclipse.mavenapi.impl.MavenEclipseApi#mavenizeProject(org.ebayopensource.turmeric.eclipse.mavenapi.request.ProjectMavenizationRequest, org.eclipse.core.runtime.IProgressMonitor)}. * @throws Exception */ @Test public void testMavenizeProjectProjectMavenizationRequestIProgressMonitor() throws Exception { String projctName = "TestProjectApi"; IProject project = WorkspaceUtil.getProject(projctName); if (project.isAccessible()) { project.delete(true, new NullProgressMonitor()); } IPath workspaceRoot = ResourcesPlugin.getWorkspace().getRoot().getLocation(); IProgressMonitor monitor = new NullProgressMonitor(); project = WorkspaceUtil.createProject("TestProject", workspaceRoot, monitor); final IProjectDescription description = project.getDescription(); final List<String> natureIDs = ListUtil.array(description .getNatureIds()); natureIDs.add(JavaCore.NATURE_ID); description.setNatureIds(natureIDs.toArray(new String[0])); project.setDescription(description, monitor); ProjectMavenizationRequest request = ProjectMavenizationRequest.createRequest(project); final ArtifactMetadata artifact = new ArtifactMetadata( "org.ebayopensource.turmeric.project", project.getName(), "1.0.0", "jar" ); request.setArtifact(artifact); final Collection<ArtifactMetadata> dependencies = new ArrayList<ArtifactMetadata>(); ArtifactMetadata metadata = new EclipseArtifactMetadata("junit", "junit", "4.4"); metadata.setType("jar"); dependencies.add(metadata); request.setDependencies(dependencies); //setup SOA app dir structure request.setSourcePath("src"); request.setTestSourcePath("test"); /*request.setTestOutputPath("bin"); request.setOutputPath("bin");*/ api.mavenizeProject((AbstractProjectMavenizationRequest)request, new NullProgressMonitor()); Assert.assertTrue(MavenEclipseUtil.hasMavenNature(project)); } /** * Test method for {@link org.ebayopensource.turmeric.eclipse.mavenapi.impl.MavenEclipseApi#resolveArtifact(org.apache.maven.repository.metadata.ArtifactMetadata)}. * @throws MavenEclipseApiException */ @Test public void testResolveArtifactArtifactMetadata() throws MavenEclipseApiException { ArtifactMetadata metadata = new EclipseArtifactMetadata("junit", "junit", "4.4"); metadata.setType("jar"); Artifact artifact = api.resolveArtifact(metadata); Assert.assertEquals(metadata.getGroupId(), artifact.getGroupId()); Assert.assertEquals(metadata.getArtifactId(), artifact.getArtifactId()); Assert.assertEquals(metadata.getVersion(), artifact.getVersion()); } /** * Test method for {@link org.ebayopensource.turmeric.eclipse.mavenapi.impl.MavenEclipseApi#findGroup(java.lang.String)}. */ @Test public void testFindGroup() throws MavenEclipseApiException{ Collection<Artifact> collection = api.findGroup("junit"); Assert.assertNotNull(collection); /*boolean isEmpty = collection.isEmpty(); Assert.assertFalse(isEmpty);*/ } /** * Test method for {@link org.ebayopensource.turmeric.eclipse.mavenapi.impl.MavenEclipseApi#findArtifact(java.lang.String)}. */ @Test public void testFindArtifact() throws MavenEclipseApiException{ Collection<Artifact> collection = api.findArtifact("junit:junit"); Assert.assertNotNull(collection); /*boolean isEmpty = collection.isEmpty(); Assert.assertFalse(isEmpty);*/ } /** * Test method for {@link org.ebayopensource.turmeric.eclipse.mavenapi.impl.MavenEclipseApi#resolveArtifactAsClasspath(org.apache.maven.repository.metadata.ArtifactMetadata)}. * @throws MavenEclipseApiException */ @Test public void testResolveArtifactAsClasspathArtifactMetadata() throws MavenEclipseApiException { ArtifactMetadata metadata = new EclipseArtifactMetadata("junit", "junit", "4.4"); metadata.setType("jar"); List<Artifact> artifacts = api.resolveArtifactAsClasspath(metadata); Assert.assertNotNull(artifacts); /*boolean isEmpty = artifacts.isEmpty(); Assert.assertFalse(isEmpty);*/ } /** * Test method for {@link org.ebayopensource.turmeric.eclipse.mavenapi.impl.MavenEclipseApi#resolveArtifactAsProject(org.apache.maven.artifact.Artifact)}. */ @Ignore("currently failing") @Test public void testResolveArtifactAsProject() throws MavenEclipseApiException { Collection<Artifact> data = api.findArtifactByName("junit"); Assert.assertNotNull(data); Assert.assertTrue(data.size() > 0); Artifact artifact = data.iterator().next(); System.out.println(artifact.toString()); MavenProject mProject = api.resolveArtifactAsProject(artifact); Assert.assertNotNull(mProject); Assert.assertEquals(artifact.toString(), mProject.toString()); } /** * Test method for {@link org.ebayopensource.turmeric.eclipse.mavenapi.impl.MavenEclipseApi#findArtifactByName(java.lang.String)}. */ @Test public void testFindArtifactByName() throws MavenEclipseApiException{ Collection<Artifact> data = api.findArtifactByName("junit"); Assert.assertNotNull(data); /*boolean isEmpty = data.isEmpty(); Assert.assertFalse(isEmpty);*/ } /** * Test method for {@link org.ebayopensource.turmeric.eclipse.mavenapi.impl.MavenEclipseApi#findArtifactByNameAndGroup(java.lang.String, java.lang.String)}. */ @Test public void testFindArtifactByNameAndGroup() throws MavenEclipseApiException { Collection<Artifact> data = api.findArtifactByNameAndGroup("junit", "junit"); Assert.assertNotNull(data); /*boolean isEmpty = data.isEmpty(); Assert.assertFalse(isEmpty);*/ } /** * Test method for {@link org.ebayopensource.turmeric.eclipse.mavenapi.impl.MavenEclipseApi#findArtifactByNameAndGroupAndRepositoryUrl(java.lang.String, java.lang.String, java.lang.String)}. */ @Test public void testFindArtifactByNameAndGroupAndRepositoryUrl() throws MavenEclipseApiException { Collection<Artifact> data = api.findArtifactByNameAndGroupAndRepositoryUrl("junit", "junit", "http://repo1.maven.org/maven2/"); Assert.assertNotNull(data); /*boolean isEmpty = data.isEmpty(); Assert.assertFalse(isEmpty);*/ } /** * Test method for {@link org.ebayopensource.turmeric.eclipse.mavenapi.impl.AbstractMavenEclipseApi#parsePom()}. * @throws IOException * @throws MavenEclipseApiException * @throws URISyntaxException */ @Test public void testParsePom() throws IOException, MavenEclipseApiException, URISyntaxException { URL url = Platform.getBundle("org.ebayopensource.turmeric.eclipse.mavenapi.test").getEntry("pom.xml"); Assert.assertNotNull(url); InputStream ins = null; try { ins = url.openStream(); Assert.assertNotNull(api.parsePom(ins)); } finally { IOUtils.closeQuietly(ins); } Collection<Artifact> data = api.findArtifactByNameAndGroupAndRepositoryUrl("junit", "junit", "http://repo1.maven.org/maven2/"); Assert.assertNotNull(data); boolean isEmpty = data.isEmpty(); if (isEmpty == false) { Assert.assertFalse(isEmpty); Artifact artifact = data.iterator().next(); MavenApiPlugin.getDefault().getMavenEclipseApi().resolveArtifact(artifact); File file = MavenEclipseUtil.getArtifactPOMFile(artifact); Assert.assertNotNull(file); Assert.assertTrue(file.exists()); Assert.assertNotNull(api.parsePom(file)); } } }