Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 214195 | Differences between
and this patch

Collapse All | Expand All

(-)plugin.xml (-2 / +10 lines)
Lines 57-62 Link Here
57
               mode="run">
57
               mode="run">
58
         </launchMode>
58
         </launchMode>
59
      </launchConfigurationTabGroup>
59
      </launchConfigurationTabGroup>
60
    </extension>	
60
    </extension>
61
61
62
</plugin>
62
   <extension point="org.eclipse.mylyn.tasks.ui.projectLinkProviders">
63
      <linkProvider
64
          id="org.eclipse.mylyn.pde.ui.eclipsePluginRepositoryLinkProvider"
65
          class="org.eclipse.mylyn.internal.pde.ui.EclipseTaskRepositoryLinkProvider"
66
          name="Eclipse.org Plugin Link"
67
          order="1010"/>
68
   </extension>  
69
70
</plugin>
(-)META-INF/MANIFEST.MF (+1 lines)
Lines 22-27 Link Here
22
 org.eclipse.jdt.launching,
22
 org.eclipse.jdt.launching,
23
 org.eclipse.jdt.junit,
23
 org.eclipse.jdt.junit,
24
 org.eclipse.mylyn.tasks.core,
24
 org.eclipse.mylyn.tasks.core,
25
 org.eclipse.mylyn.tasks.ui,
25
 org.eclipse.mylyn.context.ui,
26
 org.eclipse.mylyn.context.ui,
26
 org.eclipse.mylyn.ide.ui,
27
 org.eclipse.mylyn.ide.ui,
27
 org.eclipse.mylyn.java.ui,
28
 org.eclipse.mylyn.java.ui,
(-)src/org/eclipse/mylyn/internal/pde/ui/EclipseTaskRepositoryLinkProvider.java (+64 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2004, 2007 Mylyn project committers and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *******************************************************************************/
8
9
package org.eclipse.mylyn.internal.pde.ui;
10
11
import org.eclipse.core.resources.IProject;
12
import org.eclipse.core.resources.IResource;
13
import org.eclipse.mylyn.tasks.core.TaskRepository;
14
import org.eclipse.mylyn.tasks.core.TaskRepositoryManager;
15
import org.eclipse.mylyn.tasks.ui.AbstractTaskRepositoryLinkProvider;
16
import org.eclipse.pde.core.IModel;
17
import org.eclipse.pde.core.plugin.IPluginModelBase;
18
import org.eclipse.pde.core.plugin.PluginRegistry;
19
import org.eclipse.pde.internal.core.PDECore;
20
import org.eclipse.pde.internal.core.ifeature.IFeatureModel;
21
import org.eclipse.pde.internal.core.natures.PDE;
22
23
/**
24
 * Task repository link provider for Eclipse.org PDE projects
25
 * 
26
 * @author Eugene Kuleshov
27
 * 
28
 * TODO could use extension point to declare mapping for 3rd party plugin providers
29
 */
30
public class EclipseTaskRepositoryLinkProvider extends AbstractTaskRepositoryLinkProvider {
31
32
	public TaskRepository getTaskRepository(IResource resource, TaskRepositoryManager repositoryManager) {
33
		IProject project = resource.getProject();
34
		if (PDE.hasPluginNature(project)) {
35
			IPluginModelBase pluginModel = PluginRegistry.findModel(project);
36
			if (pluginModel != null) {
37
				String providerName = pluginModel.getPluginBase().getProviderName();
38
				return getTaskRepository(providerName, pluginModel, repositoryManager);
39
			}
40
		} else if (PDE.hasFeatureNature(project)) {
41
			IFeatureModel featureModel = PDECore.getDefault().getFeatureModelManager().getFeatureModel(project);
42
			if (featureModel != null) {
43
				String providerName = featureModel.getFeature().getProviderName();
44
				return getTaskRepository(providerName, featureModel, repositoryManager);
45
			}
46
		} else if (PDE.hasUpdateSiteNature(project)) {
47
			// TODO could use referenced features to lookup task repository
48
		}
49
50
		// ignore
51
		return null;
52
	}
53
54
	private TaskRepository getTaskRepository(String providerName, IModel model, TaskRepositoryManager repositoryManager) {
55
		if (providerName.startsWith("%")) {
56
			providerName = model.getResourceString(providerName);
57
		}
58
		if ("Eclipse.org".equals(providerName)) {
59
			return repositoryManager.getRepository("https://bugs.eclipse.org/bugs");
60
		}
61
		return null;
62
	}
63
64
}
(-)META-INF/MANIFEST.MF (-1 / +2 lines)
Lines 35-41 Link Here
35
 org.eclipse.mylyn.resources.tests,
35
 org.eclipse.mylyn.resources.tests,
36
 org.eclipse.mylyn.monitor.core,
36
 org.eclipse.mylyn.monitor.core,
37
 org.eclipse.mylyn.pde.ui,
37
 org.eclipse.mylyn.pde.ui,
38
 org.eclipse.mylyn.context.tests
38
 org.eclipse.mylyn.context.tests,
39
 org.eclipse.pde.core
39
Eclipse-AutoStart: true
40
Eclipse-AutoStart: true
40
Bundle-ClassPath: mylyn-java-tests.jar
41
Bundle-ClassPath: mylyn-java-tests.jar
41
Export-Package: org.eclipse.mylyn.java.tests,
42
Export-Package: org.eclipse.mylyn.java.tests,
(-)src/org/eclipse/mylyn/internal/pde/ui/EclipseTaskRepositoryLinkProviderTest.java (+120 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2004, 2007 Mylyn project committers and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *******************************************************************************/
8
9
package org.eclipse.mylyn.internal.pde.ui;
10
11
import junit.framework.TestCase;
12
13
import org.eclipse.core.resources.IProject;
14
import org.eclipse.mylyn.tasks.core.TaskRepository;
15
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
16
17
/**
18
 * @author Eugene Kuleshov
19
 */
20
public class EclipseTaskRepositoryLinkProviderTest extends TestCase {
21
22
	public void testEclipsePluginProject() throws Exception {
23
		TaskRepository repo1 = TasksUiPlugin.getRepositoryManager().getRepository("https://bugs.eclipse.org/bugs");
24
		assertNotNull("Eclipse.org repository is not found", repo1);
25
		
26
		String mf = "Manifest-Version: 1.0\n" + //
27
				"Bundle-ManifestVersion: 2\n" + //
28
				"Bundle-Name: Mylyn PDE Tests 1\n" + // 
29
				"Bundle-SymbolicName: org.eclipse.mylyn.pde.tests1\n" + // 
30
				"Bundle-Version: 1.0.0\n" + //
31
				"Bundle-Vendor: Eclipse.org\n" + // 
32
				"Bundle-RequiredExecutionEnvironment: J2SE-1.3\n";
33
		
34
		PdeProject pdeProject = new PdeProject("eclipsePluginProject");
35
		pdeProject.createPlugin(mf);
36
		
37
		IProject project = pdeProject.getProject();
38
39
		TasksUiPlugin tasksUiPlugin = TasksUiPlugin.getDefault();
40
41
		TaskRepository repo2 = tasksUiPlugin.getRepositoryForResource(project, true);
42
		assertEquals(repo1, repo2);
43
		
44
		assertFalse(tasksUiPlugin.canSetRepositoryForResource(project));
45
		
46
		pdeProject.delete();
47
	}
48
	
49
	public void testAcmePluginProject() throws Exception {
50
		TaskRepository repo1 = TasksUiPlugin.getRepositoryManager().getRepository("https://bugs.eclipse.org/bugs");
51
		assertNotNull("Eclipse.org repository is not found", repo1);
52
		
53
		String mf = "Manifest-Version: 1.0\n" + //
54
				"Bundle-ManifestVersion: 2\n" + //
55
				"Bundle-Name: Mylyn PDE Tests 2\n" + //
56
				"Bundle-SymbolicName: org.eclpse.mylyn.pde.tests2\n" + // 
57
				"Bundle-Version: 1.0.0\n" + //
58
				"Bundle-Vendor: Acme.org\n" + //
59
				"Bundle-RequiredExecutionEnvironment: J2SE-1.3\n";
60
		
61
		PdeProject pdeProject = new PdeProject("acmePluginProject");
62
		pdeProject.createPlugin(mf);
63
		
64
		TaskRepository repo2 = TasksUiPlugin.getDefault().getRepositoryForResource(pdeProject.getProject(), true);
65
		
66
		pdeProject.delete();
67
		
68
		assertNull("Not expected to find repository " + repo2, repo2);
69
	}
70
71
	public void testEclipseFeatureProject() throws Exception {
72
		TaskRepository repo1 = TasksUiPlugin.getRepositoryManager().getRepository("https://bugs.eclipse.org/bugs");
73
		assertNotNull("Eclipse.org repository is not found", repo1);
74
		
75
		String feature = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + // 
76
				"<feature\n" + //
77
				"      id=\"org.eclipse.mylyn.pde.tests2_feature\"\n" + // 
78
				"      label=\"Mylyn PDE Test Feature 2\"\n" + //
79
				"      version=\"2.3.0.qualifier\"\n" + //
80
				"      provider-name=\"Eclipse.org\">" + //
81
				"</feature>";
82
		
83
		PdeProject pdeProject = new PdeProject("eclipseFeatureProject");
84
		pdeProject.createFeature(feature);
85
		
86
		IProject project = pdeProject.getProject();
87
88
		TasksUiPlugin tasksUiPlugin = TasksUiPlugin.getDefault();
89
		
90
		TaskRepository repo2 = tasksUiPlugin.getRepositoryForResource(project, true);
91
		assertEquals(repo1, repo2);
92
93
		assertFalse(tasksUiPlugin.canSetRepositoryForResource(project));
94
		
95
		pdeProject.delete();
96
	}
97
	
98
	public void testAcmeFeatureProject() throws Exception {
99
		TaskRepository repo1 = TasksUiPlugin.getRepositoryManager().getRepository("https://bugs.eclipse.org/bugs");
100
		assertNotNull("Eclipse.org repository is not found", repo1);
101
		
102
		String feature = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + // 
103
				"<feature\n" + //
104
				"      id=\"org.eclipse.mylyn.pde.tests2_feature\"\n" + // 
105
				"      label=\"Mylyn PDE Test Feature 2\"\n" + //
106
				"      version=\"2.3.0.qualifier\"\n" + //
107
				"      provider-name=\"Acme.org\">" + //
108
				"</feature>";
109
		
110
		PdeProject pdeProject = new PdeProject("acmeFeatureProject");
111
		pdeProject.createFeature(feature);
112
		
113
		TaskRepository repo2 = TasksUiPlugin.getDefault().getRepositoryForResource(pdeProject.getProject(), true);
114
		
115
		pdeProject.delete();
116
		
117
		assertNull("Not expected to find repository " + repo2, repo2);
118
	}
119
	
120
}

Return to bug 214195