Author: snjeza
Date: 2012-04-29 16:05:54 -0400 (Sun, 29 Apr 2012)
New Revision: 40618
Modified:
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/utils/MavenArtifactHelper.java
Log:
JBIDE-11684 - EAP 5.0. ER6 Maven artefacts are not compatible with JBT Java EE Web
Project
Modified:
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/utils/MavenArtifactHelper.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/utils/MavenArtifactHelper.java 2012-04-29
01:20:25 UTC (rev 40617)
+++
trunk/maven/plugins/org.jboss.tools.maven.project.examples/src/org/jboss/tools/maven/project/examples/utils/MavenArtifactHelper.java 2012-04-29
20:05:54 UTC (rev 40618)
@@ -11,14 +11,18 @@
package org.jboss.tools.maven.project.examples.utils;
import java.util.ArrayList;
+import java.util.List;
import java.util.Set;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.repository.internal.MavenRepositorySystemSession;
+import org.codehaus.plexus.DefaultPlexusContainer;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.m2e.core.MavenPlugin;
import org.eclipse.m2e.core.embedder.IMaven;
@@ -27,18 +31,27 @@
import org.jboss.tools.maven.project.examples.Messages;
import org.jboss.tools.maven.project.examples.xpl.DependencyKey;
import org.jboss.tools.project.examples.model.ProjectExample;
+import org.sonatype.aether.RepositorySystem;
+import org.sonatype.aether.repository.LocalRepository;
+import org.sonatype.aether.repository.RemoteRepository;
+import org.sonatype.aether.resolution.VersionRangeRequest;
+import org.sonatype.aether.resolution.VersionRangeResolutionException;
+import org.sonatype.aether.resolution.VersionRangeResult;
+import org.sonatype.aether.util.artifact.DefaultArtifact;
+import org.sonatype.aether.version.Version;
public class MavenArtifactHelper {
private static final DependencyKey ENTERPRISE_JBOSS_SPEC =
DependencyKey.fromPortableString("org.jboss.spec:jboss-javaee-web-6.0:pom:3.0.0.Beta1-redhat-1::");
//$NON-NLS-1$
+ private static final String COORDS =
"org.jboss.spec:jboss-javaee-web-6.0:[0,)"; //$NON-NLS-1$
/**
* Checks if the EAP repository is available
*
- * @return true if org.jboss.spec:jboss-javaee-web-6.0:pom:3.0.0.Beta1-redhat-1 can be
resolved
+ * @return true if org.jboss.spec:jboss-javaee-web-6.0:pom:*redhat* can be resolved
*/
public static boolean isEnterpriseRepositoryAvailable() {
- boolean isRepoAvailable = isArtifactAvailable(ENTERPRISE_JBOSS_SPEC); //$NON-NLS-1$
+ boolean isRepoAvailable = artifactExists(COORDS);
return isRepoAvailable;
}
@@ -91,4 +104,48 @@
}
return Status.OK_STATUS;
}
+
+ private static boolean artifactExists(String coords) {
+ RepositorySystem system;
+ try {
+ system = new DefaultPlexusContainer()
+ .lookup(RepositorySystem.class);
+ } catch (Exception e) {
+ MavenProjectExamplesActivator.log(e);
+ return false;
+ }
+ MavenRepositorySystemSession session = new MavenRepositorySystemSession();
+ String localRepoHome = System.getProperty("user.home") //$NON-NLS-1$
+ + Path.SEPARATOR + ".m2" + Path.SEPARATOR + "repository";
//$NON-NLS-1$ //$NON-NLS-2$
+ LocalRepository localRepo = new LocalRepository(localRepoHome);
+ session.setLocalRepositoryManager(system.newLocalRepositoryManager(localRepo));
+ org.sonatype.aether.artifact.Artifact artifact = new DefaultArtifact(coords);
+ VersionRangeRequest rangeRequest = new VersionRangeRequest();
+ rangeRequest.setArtifact(artifact);
+ List<ArtifactRepository> repos = new ArrayList<ArtifactRepository>();
+ IMaven maven = MavenPlugin.getMaven();
+ try {
+ repos.addAll(maven.getArtifactRepositories(false));
+ } catch (CoreException e) {
+ MavenProjectExamplesActivator.log(e);
+ return false;
+ }
+ for (ArtifactRepository repo : repos) {
+ RemoteRepository remoteRepo = new RemoteRepository(repo.getId(), "default",
repo.getUrl()); //$NON-NLS-1$
+ rangeRequest.addRepository(remoteRepo);
+ }
+ try {
+ VersionRangeResult result = system.resolveVersionRange(
+ session, rangeRequest);
+ List<Version> versions = result.getVersions();
+ for (Version version:versions) {
+ if (version != null && version.toString().contains("redhat")) {
//$NON-NLS-1$
+ return true;
+ }
+ }
+ } catch (VersionRangeResolutionException e) {
+ MavenProjectExamplesActivator.log(e);
+ }
+ return false;
+ }
}