Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Piggott2011-03-18 17:50:24 +0000
committerMatthew Piggott2011-03-18 17:51:33 +0000
commit8ffc2f3999270c29596e9f647a743f56c7935512 (patch)
tree11f714d9a4b97bf7fe6a0c1ed6fe4b11e6d9cd80 /org.eclipse.m2e.discovery-directory
parent20adda52abe844ebd1acae94ade1984c86262acc (diff)
downloadm2e-core-8ffc2f3999270c29596e9f647a743f56c7935512.tar.gz
m2e-core-8ffc2f3999270c29596e9f647a743f56c7935512.tar.xz
m2e-core-8ffc2f3999270c29596e9f647a743f56c7935512.zip
Add validation for m2e marketplace content
Diffstat (limited to 'org.eclipse.m2e.discovery-directory')
-rw-r--r--org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.classpath7
-rw-r--r--org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.gitignore1
-rw-r--r--org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.project34
-rw-r--r--org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.settings/org.eclipse.jdt.core.prefs9
-rw-r--r--org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.settings/org.eclipse.m2e.core.prefs5
-rw-r--r--org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/META-INF/MANIFEST.MF33
-rw-r--r--org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/build.properties16
-rw-r--r--org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/pom.xml36
-rw-r--r--org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/src/org/eclipse/m2e/discovery/directory/tests/DiscoveryDirectoryTest.java206
-rw-r--r--org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/src/org/eclipse/m2e/discovery/directory/tests/TestActivator.java36
-rw-r--r--org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/src/org/eclipse/m2e/discovery/directory/tests/TestM2EBundleStrategy.java43
-rw-r--r--org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-parent/pom.xml92
-rw-r--r--org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery.oss/pom.xml2
-rw-r--r--org.eclipse.m2e.discovery-directory/pom.xml1
14 files changed, 520 insertions, 1 deletions
diff --git a/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.classpath b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.classpath
new file mode 100644
index 00000000..798048dd
--- /dev/null
+++ b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.gitignore b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.gitignore
new file mode 100644
index 00000000..ea8c4bf7
--- /dev/null
+++ b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.gitignore
@@ -0,0 +1 @@
+/target
diff --git a/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.project b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.project
new file mode 100644
index 00000000..0c230bb5
--- /dev/null
+++ b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.m2e.discovery-directory.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..2619beaf
--- /dev/null
+++ b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+#Fri Mar 18 09:43:06 EDT 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000..facff118
--- /dev/null
+++ b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,5 @@
+#Fri Mar 18 09:35:09 EDT 2011
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/META-INF/MANIFEST.MF b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..c0a83049
--- /dev/null
+++ b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,33 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.m2e.discovery.directory.tests;singleton:=true
+Bundle-Version: 0.13.0.qualifier
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.ui,
+ org.junit,
+ org.eclipse.equinox.p2.discovery,
+ org.eclipse.equinox.p2.discovery.compatibility,
+ org.eclipse.equinox.p2.core,
+ org.eclipse.equinox.p2.ui.discovery,
+ org.eclipse.m2e.discovery.oss
+Bundle-RequiredExecutionEnvironment: J2SE-1.5,
+ JavaSE-1.6
+Bundle-ClassPath: .
+Bundle-Vendor: %Bundle-Vendor
+MavenArtifact-GroupId: org.eclipse.m2e
+MavenArtifact-ArtifactId: org.eclipse.m2e.test
+Import-Package: org.eclipse.equinox.internal.p2.discovery,
+ org.eclipse.equinox.internal.p2.discovery.compatibility,
+ org.eclipse.equinox.internal.p2.discovery.compatibility.util,
+ org.eclipse.equinox.internal.p2.discovery.model,
+ org.eclipse.equinox.internal.p2.discovery.util,
+ org.eclipse.equinox.p2.metadata,
+ org.eclipse.equinox.p2.query,
+ org.eclipse.equinox.p2.repository.metadata,
+ org.eclipse.m2e.core.project.configurator,
+ org.eclipse.m2e.internal.discovery,
+ org.eclipse.m2e.internal.discovery.strategy,
+ org.eclipse.m2e.internal.discovery.wizards
+Bundle-Activator: org.eclipse.m2e.discovery.directory.tests.TestActivator
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/build.properties b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/build.properties
new file mode 100644
index 00000000..6fc49046
--- /dev/null
+++ b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/build.properties
@@ -0,0 +1,16 @@
+#
+# Copyright (c) 2008-2010 Sonatype, Inc.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Sonatype, Inc. - initial API and implementation
+#
+
+bin.includes = META-INF/,\
+ .
+jars.compile.order = .
+output.. = target/classes
+source.. = src/ \ No newline at end of file
diff --git a/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/pom.xml b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/pom.xml
new file mode 100644
index 00000000..f5dba0ec
--- /dev/null
+++ b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/pom.xml
@@ -0,0 +1,36 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>org.eclipse.m2e.discovery-parent</artifactId>
+ <groupId>org.eclipse.m2e</groupId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../org.eclipse.m2e.discovery-parent/pom.xml</relativePath>
+ </parent>
+ <artifactId>org.eclipse.m2e.discovery-directory.tests</artifactId>
+ <packaging>eclipse-test-plugin</packaging>
+
+ <repositories>
+ <repository>
+ <id>snapshots</id>
+ <url>https://repository.sonatype.org/content/repositories/snapshots/</url>
+ </repository>
+ <repository>
+ <id>m2e-latest-build</id>
+ <layout>p2</layout>
+ <url>${m2e-core.url}</url>
+ </repository>
+ </repositories>
+
+ <build>
+ <sourceDirectory>src</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>src</directory>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ </build>
+</project> \ No newline at end of file
diff --git a/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/src/org/eclipse/m2e/discovery/directory/tests/DiscoveryDirectoryTest.java b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/src/org/eclipse/m2e/discovery/directory/tests/DiscoveryDirectoryTest.java
new file mode 100644
index 00000000..58a1f05a
--- /dev/null
+++ b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/src/org/eclipse/m2e/discovery/directory/tests/DiscoveryDirectoryTest.java
@@ -0,0 +1,206 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Sonatype, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Sonatype, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.m2e.discovery.directory.tests;
+
+import java.lang.reflect.InvocationTargetException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.Collections;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
+import org.eclipse.equinox.internal.p2.discovery.AbstractCatalogSource;
+import org.eclipse.equinox.internal.p2.discovery.Catalog;
+import org.eclipse.equinox.internal.p2.discovery.DiscoveryCore;
+import org.eclipse.equinox.internal.p2.discovery.model.CatalogCategory;
+import org.eclipse.equinox.internal.p2.discovery.model.CatalogItem;
+import org.eclipse.equinox.internal.p2.discovery.model.Icon;
+import org.eclipse.equinox.p2.core.IProvisioningAgent;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.metadata.IVersionedId;
+import org.eclipse.equinox.p2.metadata.VersionedId;
+import org.eclipse.equinox.p2.query.IQuery;
+import org.eclipse.equinox.p2.query.IQueryResult;
+import org.eclipse.equinox.p2.query.QueryUtil;
+import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
+import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
+import org.eclipse.jface.operation.IRunnableContext;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.resource.LocalResourceManager;
+import org.eclipse.jface.resource.ResourceManager;
+import org.eclipse.jface.window.IShellProvider;
+import org.eclipse.m2e.internal.discovery.MavenDiscovery;
+import org.eclipse.m2e.internal.discovery.wizards.MavenCatalogConfiguration;
+import org.eclipse.m2e.internal.discovery.wizards.MavenCatalogViewer;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.internal.Workbench;
+
+
+@SuppressWarnings("restriction")
+public class DiscoveryDirectoryTest extends TestCase implements IShellProvider {
+
+ private ResourceManager resourceManager;
+
+ private Shell shell;
+
+ private Catalog catalog;
+
+ private MavenCatalogConfiguration configuration;
+
+ private IProgressMonitor monitor;
+
+ @Override
+ public void setUp() throws Exception {
+ catalog = new Catalog();
+ catalog.setEnvironment(DiscoveryCore.createEnvironment());
+ catalog.setVerifyUpdateSiteAvailability(false);
+ catalog.getDiscoveryStrategies().add(new TestM2EBundleStrategy());
+
+ // Build the list of tags to show in the Wizard header
+ catalog.setTags(Collections.singletonList(MavenDiscovery.APPLICABLE_TAG));
+
+ // Create configuration for the catalog
+ configuration = new MavenCatalogConfiguration();
+ configuration.setShowTagFilter(true);
+ configuration.setSelectedTags(Collections.singletonList(MavenDiscovery.APPLICABLE_TAG));
+ configuration.setShowInstalledFilter(false);
+ configuration.setSelectedPackagingTypes(Collections.EMPTY_LIST);
+ configuration.setSelectedMojos(Collections.EMPTY_LIST);
+ configuration.setSelectedLifecycleIds(Collections.EMPTY_LIST);
+ configuration.setSelectedConfigurators(Collections.EMPTY_LIST);
+ shell = new Shell(Workbench.getInstance().getDisplay());
+ this.resourceManager = new LocalResourceManager(JFaceResources.getResources(Workbench.getInstance().getDisplay()));
+ monitor = new NullProgressMonitor();
+ }
+
+ public void tearDown() throws Exception {
+ resourceManager.dispose();
+ shell.dispose();
+ resourceManager = null;
+ shell = null;
+ }
+
+ /*
+ * This is to ensure that each CatalogCategory has a valid icon associated with it.
+ */
+ public void testImagesPresent() throws Exception {
+ updateMavenCatalog();
+
+ for(CatalogCategory category : catalog.getCategories()) {
+ assertNotNull("Icon missing for catalog category: " + category.getId(),
+ getIconImage(category.getSource(), category.getIcon(), 48, true));
+ }
+ }
+
+ /*
+ * This ensures each CatalogItem has a valid update site which has the IU available.
+ */
+ public void testHasIUs() throws Exception {
+ updateMavenCatalog();
+ IMetadataRepositoryManager mgr = getMetadataRepositoryManager();
+
+ for(CatalogItem item : catalog.getItems()) {
+ URI uri = getUri(item);
+ if(uri.getHost().equals("localhost")) {
+ // these should be tests entries, we don't care about them.
+ continue;
+ }
+ IMetadataRepository repo = mgr.loadRepository(uri, monitor);
+ assertFalse("Has IUs: " + item.getId(), item.getInstallableUnits().isEmpty());
+ if(repo == null) {
+ fail("Unknown failure loading repository for item: " + item.getId());
+ return;
+ }
+ for(String iuId : item.getInstallableUnits()) {
+ IVersionedId iuVid = VersionedId.parse(iuId);
+ IQuery<IInstallableUnit> q = QueryUtil.createIUQuery(iuVid);
+ IQueryResult<IInstallableUnit> result = repo.query(q, monitor);
+ assertFalse("CatalogItem " + item.getId() + " missing IU: " + iuId, result.isEmpty());
+ }
+ }
+ }
+
+ private URI getUri(CatalogItem item) {
+ URI uri = null;
+ try {
+ uri = new URI(item.getSiteUrl());
+ return uri;
+ } catch(URISyntaxException ex) {
+ throw new IllegalArgumentException("Failed to create URI for CatalogItem " + item.getId() + "\n"
+ + item.getSiteUrl(), ex);
+ }
+ }
+
+ private Image getIconImage(AbstractCatalogSource discoverySource, Icon icon, int dimension, boolean fallback) {
+ String imagePath;
+ switch(dimension) {
+ case 64:
+ imagePath = icon.getImage64();
+ if(imagePath != null || !fallback) {
+ break;
+ }
+ case 48:
+ imagePath = icon.getImage48();
+ if(imagePath != null || !fallback) {
+ break;
+ }
+ case 32:
+ imagePath = icon.getImage32();
+ break;
+ default:
+ throw new IllegalArgumentException();
+ }
+ if(imagePath != null && imagePath.length() > 0) {
+ URL resource = discoverySource.getResource(imagePath);
+ if(resource != null) {
+ ImageDescriptor descriptor = ImageDescriptor.createFromURL(resource);
+ return resourceManager.createImage(descriptor);
+ }
+ }
+ return null;
+ }
+
+ private IMetadataRepositoryManager getMetadataRepositoryManager() {
+ IProvisioningAgent agent = (IProvisioningAgent) ServiceHelper.getService(TestActivator.getDefault().getBundle()
+ .getBundleContext(), IProvisioningAgent.SERVICE_NAME);
+ return (IMetadataRepositoryManager) agent.getService(IMetadataRepositoryManager.SERVICE_NAME);
+ }
+
+ private void updateMavenCatalog() {
+ MavenCatalogViewer mcv = new MavenCatalogViewer(catalog, this, new RunnableContext(), configuration);
+ mcv.createControl(shell);
+ mcv.updateCatalog();
+ }
+
+ private static class RunnableContext implements IRunnableContext {
+ public RunnableContext() {
+ }
+
+ public void run(boolean fork, boolean cancelable, IRunnableWithProgress runnable) throws InvocationTargetException,
+ InterruptedException {
+ runnable.run(new NullProgressMonitor());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.window.IShellProvider#getShell()
+ */
+ public Shell getShell() {
+ return shell;
+ }
+}
diff --git a/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/src/org/eclipse/m2e/discovery/directory/tests/TestActivator.java b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/src/org/eclipse/m2e/discovery/directory/tests/TestActivator.java
new file mode 100644
index 00000000..9811eb85
--- /dev/null
+++ b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/src/org/eclipse/m2e/discovery/directory/tests/TestActivator.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Sonatype, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Sonatype, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.m2e.discovery.directory.tests;
+
+import org.osgi.framework.BundleContext;
+
+import org.eclipse.core.runtime.Plugin;
+
+public class TestActivator extends Plugin {
+ private static TestActivator instance;
+
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ instance = this;
+ }
+
+ public void stop(BundleContext context) throws Exception {
+ super.stop(context);
+ instance = null;
+ }
+
+ /**
+ * @return Returns the instance.
+ */
+ public static TestActivator getDefault() {
+ return instance;
+ }
+}
diff --git a/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/src/org/eclipse/m2e/discovery/directory/tests/TestM2EBundleStrategy.java b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/src/org/eclipse/m2e/discovery/directory/tests/TestM2EBundleStrategy.java
new file mode 100644
index 00000000..2d894eb6
--- /dev/null
+++ b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-directory.tests/src/org/eclipse/m2e/discovery/directory/tests/TestM2EBundleStrategy.java
@@ -0,0 +1,43 @@
+package org.eclipse.m2e.discovery.directory.tests;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IContributor;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.equinox.internal.p2.discovery.AbstractCatalogSource;
+import org.eclipse.equinox.internal.p2.discovery.Policy;
+import org.eclipse.equinox.internal.p2.discovery.compatibility.BundleDiscoverySource;
+import org.eclipse.equinox.internal.p2.discovery.compatibility.ConnectorDiscoveryExtensionReader;
+import org.eclipse.m2e.internal.discovery.strategy.M2ERemoteBundleDiscoveryStrategy;
+
+@SuppressWarnings("restriction")
+public class TestM2EBundleStrategy extends M2ERemoteBundleDiscoveryStrategy {
+
+ @Override
+ public void performDiscovery(IProgressMonitor monitor) throws CoreException {
+ if (items == null || categories == null) {
+ throw new IllegalStateException();
+ }
+ IExtensionPoint extensionPoint = getExtensionRegistry().getExtensionPoint(ConnectorDiscoveryExtensionReader.EXTENSION_POINT_ID);
+ IExtension[] extensions = extensionPoint.getExtensions();
+ monitor.beginTask("Loading local extensions", extensions.length == 0 ? 1 : extensions.length);
+ try {
+ if (extensions.length > 0) {
+ processExtensions(new SubProgressMonitor(monitor, extensions.length), extensions);
+ }
+ } finally {
+ monitor.done();
+ }
+ }
+
+ @Override
+ protected AbstractCatalogSource computeDiscoverySource(IContributor contributor) {
+ Policy policy = new Policy(true);
+ BundleDiscoverySource bundleDiscoverySource = new BundleDiscoverySource(Platform.getBundle(contributor.getName()));
+ bundleDiscoverySource.setPolicy(policy);
+ return bundleDiscoverySource;
+ }
+}
diff --git a/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-parent/pom.xml b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-parent/pom.xml
index e2d1e1c5..c7939f5c 100644
--- a/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-parent/pom.xml
+++ b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery-parent/pom.xml
@@ -20,7 +20,12 @@
<properties>
<discovery.folder>/home/data/users/prapicau/downloads/technology/m2e/discovery/</discovery.folder>
+ <tycho-version>0.10.0</tycho-version>
+ <!-- References the latest m2eclipse build over https by default -->
+ <m2e-core.url>https://grid.sonatype.org/ci/view/M2E/job/m2eclipse-core-e37-at-eclipse/jdk=java-5x,label=m2e/lastSuccessfulBuild/artifact/org.eclipse.m2e.site/target/site/</m2e-core.url>
</properties>
+
+
<build>
<extensions>
<extension>
@@ -29,5 +34,92 @@
<version>1.0-beta-7</version>
</extension>
</extensions>
+ <plugins>
+ <plugin>
+ <groupId>org.sonatype.tycho</groupId>
+ <artifactId>tycho-maven-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <extensions>true</extensions>
+ </plugin>
+ <plugin>
+ <groupId>org.sonatype.tycho</groupId>
+ <artifactId>maven-osgi-test-plugin</artifactId>
+ <configuration>
+ <forkedProcessTimeoutInSeconds>1800</forkedProcessTimeoutInSeconds>
+ <environmentVariables>
+ <TEMP>${java.io.tmpdir}</TEMP>
+ </environmentVariables>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.sonatype.tycho</groupId>
+ <artifactId>target-platform-configuration</artifactId>
+ <version>${tycho-version}</version>
+ <configuration>
+ <resolver>p2</resolver>
+ <pomDependencies>consider</pomDependencies>
+ <target>
+ <artifact>
+ <groupId>org.eclipse.m2e</groupId>
+ <artifactId>target-platform</artifactId>
+ <version>0.13.0-SNAPSHOT</version>
+ <classifier>m2e-e37</classifier>
+ </artifact>
+ </target>
+ <ignoreTychoRepositories>true</ignoreTychoRepositories>
+ </configuration>
+ </plugin>
+ </plugins>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.sonatype.tycho</groupId>
+ <artifactId>maven-osgi-lifecycle-plugin</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.sonatype.tycho</groupId>
+ <artifactId>maven-osgi-packaging-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <configuration>
+ <!-- workaround for TYCHO-349 or TYCHO-313 -->
+ <strictVersions>false</strictVersions>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.sonatype.tycho</groupId>
+ <artifactId>maven-osgi-test-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <configuration>
+ <useUIHarness>true</useUIHarness>
+ <includes>
+ <include>**/*Test.java</include>
+ </includes>
+ <argLine>${tycho.test.jvmArgs}</argLine>
+ <forkedProcessTimeoutInSeconds>7200</forkedProcessTimeoutInSeconds>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.sonatype.tycho</groupId>
+ <artifactId>maven-osgi-compiler-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.sonatype.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ <!-- important for self-hosting -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <version>2.4.3</version>
+ </plugin>
+ </plugins>
+ </pluginManagement>
</build>
</project> \ No newline at end of file
diff --git a/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery.oss/pom.xml b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery.oss/pom.xml
index 0316e157..9c287754 100644
--- a/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery.oss/pom.xml
+++ b/org.eclipse.m2e.discovery-directory/org.eclipse.m2e.discovery.oss/pom.xml
@@ -11,7 +11,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>org.eclipse.m2e.discovery.oss</artifactId>
- <packaging>jar</packaging>
+ <packaging>eclipse-plugin</packaging>
<build>
<resources>
diff --git a/org.eclipse.m2e.discovery-directory/pom.xml b/org.eclipse.m2e.discovery-directory/pom.xml
index 51b76b1f..5594d120 100644
--- a/org.eclipse.m2e.discovery-directory/pom.xml
+++ b/org.eclipse.m2e.discovery-directory/pom.xml
@@ -15,6 +15,7 @@
<modules>
<module>org.eclipse.m2e.discovery.oss</module>
<module>org.eclipse.m2e.discovery-parent</module>
+ <module>org.eclipse.m2e.discovery-directory.tests</module>
</modules>
<profiles>

Back to the top