diff options
Diffstat (limited to 'bundles/org.eclipse.team.core')
-rw-r--r-- | bundles/org.eclipse.team.core/schema/bundleImporters.exsd | 50 | ||||
-rw-r--r-- | bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/importing/BundleImporterExtension.java | 26 |
2 files changed, 52 insertions, 24 deletions
diff --git a/bundles/org.eclipse.team.core/schema/bundleImporters.exsd b/bundles/org.eclipse.team.core/schema/bundleImporters.exsd index 747a545ab..35e80a223 100644 --- a/bundles/org.eclipse.team.core/schema/bundleImporters.exsd +++ b/bundles/org.eclipse.team.core/schema/bundleImporters.exsd @@ -52,16 +52,9 @@ A bundle importer is capable of creating a project in the workspace based on a b <element name="importer"> <complexType> - <attribute name="class" type="string" use="required"> - <annotation> - <documentation> - Fully qualified name of a Java class providing an implementation of <code>org.eclipse.team.core.importing.provisional.IBundleImporterDelegate</code> for this handler. - </documentation> - <appInfo> - <meta.attribute kind="java" basedOn=":org.eclipse.team.core.importing.provisional.IBundleImporterDelegate"/> - </appInfo> - </annotation> - </attribute> + <sequence minOccurs="0" maxOccurs="unbounded"> + <element ref="supports"/> + </sequence> <attribute name="id" type="string" use="required"> <annotation> <documentation> @@ -82,13 +75,35 @@ A bundle importer is capable of creating a project in the workspace based on a b <attribute name="name" type="string" use="required"> <annotation> <documentation> - The name of this bundle importer, suitable for display to an end user. + The name of this bundle importer, suitable for display to the end user. </documentation> <appInfo> <meta.attribute translatable="true"/> </appInfo> </annotation> </attribute> + <attribute name="repository" type="string" use="required"> + <annotation> + <documentation> + The id of org.eclipse.team.core.repository extension that is associated with this importer. + </documentation> + <appInfo> + <meta.attribute kind="identifier" basedOn="org.eclipse.team.core.repository/repository/@id"/> + </appInfo> + </annotation> + </attribute> + </complexType> + </element> + + <element name="supports"> + <complexType> + <attribute name="prefix" type="string" use="required"> + <annotation> + <documentation> + The SCM URL prefix being supported by this importer. + </documentation> + </annotation> + </attribute> </complexType> </element> @@ -113,7 +128,10 @@ A bundle importer is capable of creating a project in the workspace based on a b <extension point="org.eclipse.team.core.bundleImporters"> <importer id="com.example.ExampleIdentifier" - class="com.example.ExampleBundleImporter"> + name="Example Importer" + repository="com.example.ExampleNature"> + <supports prefix="scm:example:"> + </supports> </importer> </extension> </pre> @@ -121,14 +139,6 @@ A bundle importer is capable of creating a project in the workspace based on a b </documentation> </annotation> - <annotation> - <appInfo> - <meta.section type="apiinfo"/> - </appInfo> - <documentation> - Value of a importer's <b>class</b> attribute must be a fully qualified name of a Java class that implements the interface <b>org.eclipse.team.core.importing.provisional.IBundleImporterDelegate</b>. - </documentation> - </annotation> <annotation> <appInfo> diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/importing/BundleImporterExtension.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/importing/BundleImporterExtension.java index eb27bb5fc..f0201a961 100644 --- a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/importing/BundleImporterExtension.java +++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/importing/BundleImporterExtension.java @@ -10,13 +10,13 @@ *******************************************************************************/ package org.eclipse.team.internal.core.importing; -import java.util.Map; +import java.util.*; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.*; +import org.eclipse.team.core.RepositoryProviderType; import org.eclipse.team.core.ScmUrlImportDescription; -import org.eclipse.team.core.importing.provisional.IBundleImporter; -import org.eclipse.team.core.importing.provisional.IBundleImporterDelegate; +import org.eclipse.team.core.importing.provisional.*; import org.eclipse.team.internal.core.TeamPlugin; /** @@ -58,7 +58,25 @@ public class BundleImporterExtension implements IBundleImporter { */ private synchronized IBundleImporterDelegate getDelegate() throws CoreException { if (delegate == null) { - delegate = (IBundleImporterDelegate) element.createExecutableExtension("class"); //$NON-NLS-1$ + delegate = new BundleImporterDelegate() { + private Set supportedValues; + private RepositoryProviderType providerType; + protected Set getSupportedValues() { + if (supportedValues == null) { + IConfigurationElement[] supported = element.getChildren("supported"); //$NON-NLS-1$ + supportedValues = new HashSet(supported.length); + for (int i = 0; i < supported.length; i++) { + supportedValues.add(supported[i].getAttribute("value")); //$NON-NLS-1$ + } + } + return supportedValues; + } + protected RepositoryProviderType getProviderType() { + if (providerType == null) + providerType = RepositoryProviderType.getProviderType(element.getAttribute("repository")); //$NON-NLS-1$ + return providerType; + } + }; } return delegate; } |