Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.team.core')
-rw-r--r--bundles/org.eclipse.team.core/schema/bundleImporters.exsd50
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/importing/BundleImporterExtension.java26
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 &lt;code&gt;org.eclipse.team.core.importing.provisional.IBundleImporterDelegate&lt;/code&gt; 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
&lt;extension point=&quot;org.eclipse.team.core.bundleImporters&quot;&gt;
&lt;importer
id=&quot;com.example.ExampleIdentifier&quot;
- class=&quot;com.example.ExampleBundleImporter&quot;&gt;
+ name=&quot;Example Importer&quot;
+ repository=&quot;com.example.ExampleNature&quot;&gt;
+ &lt;supports prefix=&quot;scm:example:&quot;&gt;
+ &lt;/supports&gt;
&lt;/importer&gt;
&lt;/extension&gt;
&lt;/pre&gt;
@@ -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&apos;s &lt;b&gt;class&lt;/b&gt; attribute must be a fully qualified name of a Java class that implements the interface &lt;b&gt;org.eclipse.team.core.importing.provisional.IBundleImporterDelegate&lt;/b&gt;.
- </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;
}

Back to the top