diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/ApiBuilderTest.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/ApiBuilderTest.java index 5e21b1b5e9..a8eaf9f8cc 100644 --- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/ApiBuilderTest.java +++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/ApiBuilderTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2019 IBM Corporation and others. + * Copyright (c) 2008, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -1142,7 +1142,7 @@ private static String toString(List projects) throws Exception { contents.append(System.lineSeparator()); contents.append(" is open: " + project.isOpen()); //$NON-NLS-1$ contents.append(System.lineSeparator()); - if (project.hasNature(JavaCore.NATURE_ID) && project.isAccessible()) { + if (Util.isJavaProject(project) && project.isAccessible()) { IJavaProject javaProject = JavaCore.create(project); boolean ignoreUnresolvedEntry = true; IClasspathEntry[] projectClassPath = javaProject.getResolvedClasspath(ignoreUnresolvedEntry); diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/ApiTestingEnvironment.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/ApiTestingEnvironment.java index b7d4cdda5f..bc4aa680b6 100644 --- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/ApiTestingEnvironment.java +++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/ApiTestingEnvironment.java @@ -47,7 +47,7 @@ import org.eclipse.pde.core.target.ITargetDefinition; import org.eclipse.pde.core.target.ITargetPlatformService; import org.eclipse.pde.internal.core.PDECore; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.ui.tests.util.TargetPlatformUtil; /** @@ -145,8 +145,8 @@ protected IJavaProject createProject(String projectName) { if (project.exists()) { project.delete(true, new NullProgressMonitor()); } - jproject = ProjectUtils.createPluginProject(projectName, new String[] { - PDE.PLUGIN_NATURE, ApiPlugin.NATURE_ID }); + jproject = ProjectUtils.createPluginProject(projectName, + new String[] { PluginProject.NATURE, ApiPlugin.NATURE_ID }); addProject(jproject.getProject()); } catch (CoreException ce) { ApiPlugin.log(ce); diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/tests/AbstractApiTest.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/tests/AbstractApiTest.java index 8bbd13103b..ade5486aa8 100644 --- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/tests/AbstractApiTest.java +++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/tests/AbstractApiTest.java @@ -44,7 +44,7 @@ import org.eclipse.pde.core.plugin.PluginRegistry; import org.eclipse.pde.internal.core.ICoreConstants; import org.eclipse.pde.internal.core.PDECore; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.ui.tests.util.FreezeMonitor; import org.junit.After; import org.junit.Before; @@ -155,8 +155,8 @@ protected void createProject(final String name, String[] packages) throws Except } // create project and import source - IJavaProject jproject = ProjectUtils.createPluginProject(name, new String[] { - PDE.PLUGIN_NATURE, ApiPlugin.NATURE_ID }); + IJavaProject jproject = ProjectUtils.createPluginProject(name, + new String[] { PluginProject.NATURE, ApiPlugin.NATURE_ID }); assertNotNull("The java project must have been created", jproject); //$NON-NLS-1$ IPackageFragmentRoot root = jproject.getPackageFragmentRoot(jproject.getProject().getFolder(ProjectUtils.SRC_FOLDER)); diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/tests/util/ProjectUtils.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/tests/util/ProjectUtils.java index ee3d65622c..d1890d4054 100644 --- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/tests/util/ProjectUtils.java +++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/tests/util/ProjectUtils.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2017 IBM Corporation and others. + * Copyright (c) 2008, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -34,6 +34,7 @@ import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.launching.JavaRuntime; +import org.eclipse.pde.api.tools.internal.util.Util; import org.eclipse.pde.api.tools.tests.AbstractApiTest; import org.eclipse.pde.core.project.IBundleClasspathEntry; import org.eclipse.pde.core.project.IBundleProjectDescription; @@ -201,7 +202,7 @@ public static IJavaProject createPluginProject(String projectName, String[] addi public static IJavaProject createJavaProject(String projectName, String[] additionalNatures) throws CoreException { IProgressMonitor monitor = new NullProgressMonitor(); IProject project = createProject(projectName, monitor); - if (!project.hasNature(JavaCore.NATURE_ID)) { + if (!Util.isJavaProject(project)) { addNatureToProject(project, JavaCore.NATURE_ID, monitor); } if (additionalNatures != null) { diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/util/tests/ProjectCreationTests.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/util/tests/ProjectCreationTests.java index 8e7affc28c..8f4f298896 100644 --- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/util/tests/ProjectCreationTests.java +++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/util/tests/ProjectCreationTests.java @@ -37,7 +37,7 @@ import org.eclipse.pde.api.tools.tests.util.ProjectUtils; import org.eclipse.pde.core.project.IPackageExportDescription; import org.eclipse.pde.internal.core.ICoreConstants; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -118,7 +118,7 @@ public void testImportClassesTestSource() { public void testCreatePluginProject() throws CoreException { IJavaProject jproject = getTestingJavaProject(TESTING_PROJECT_NAME); IProject project = jproject.getProject(); - assertTrue("project must have the PDE nature", project.hasNature(PDE.PLUGIN_NATURE)); //$NON-NLS-1$ + assertTrue("project must have the PDE nature", project.hasNature(PluginProject.NATURE)); //$NON-NLS-1$ assertTrue("project must have the java nature", project.hasNature(JavaCore.NATURE_ID)); //$NON-NLS-1$ assertTrue("project must have additional nature for API Tools", project.hasNature(ApiPlugin.NATURE_ID)); //$NON-NLS-1$ IFile file = project.getFile("build.properties"); //$NON-NLS-1$ diff --git a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/ApiQuickFixProcessor.java b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/ApiQuickFixProcessor.java index 602a043c38..eacf090a0e 100644 --- a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/ApiQuickFixProcessor.java +++ b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/ApiQuickFixProcessor.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) Sep 26, 2018 IBM Corporation and others. + * Copyright (c) Sep 26, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -52,6 +52,7 @@ import org.eclipse.osgi.util.TextProcessor; import org.eclipse.pde.api.tools.internal.provisional.ApiPlugin; import org.eclipse.pde.api.tools.internal.util.Signatures; +import org.eclipse.pde.api.tools.internal.util.Util; import org.eclipse.pde.api.tools.ui.internal.ApiUIPlugin; import org.eclipse.pde.api.tools.ui.internal.IApiToolsConstants; import org.eclipse.pde.api.tools.ui.internal.refactoring.CreateFileChange; @@ -134,7 +135,7 @@ public IJavaCompletionProposal[] getCorrections(IInvocationContext context, IPro List proposals = new ArrayList<>(); ICompilationUnit unit = context.getCompilationUnit(); IProject project = unit.getJavaProject().getProject(); - if (!project.hasNature(ApiPlugin.NATURE_ID)) { + if (!Util.isApiProject(project)) { return new IJavaCompletionProposal[0]; } IFile build = project.getFile("build.properties"); //$NON-NLS-1$ @@ -166,8 +167,7 @@ public IJavaCompletionProposal[] getCorrections(IInvocationContext context, IPro public static Change createChange(ICompilationUnit unit, String qualifiedname) throws CoreException { IProject project = unit.getJavaProject().getProject(); IFile buildProperties = project.getFile("build.properties"); //$NON-NLS-1$ - boolean isBundle = project.hasNature(ApiPlugin.NATURE_ID); - if (!isBundle) { + if (!Util.isApiProject(project)) { return new NullChange(); } return new CompositeChange(MarkerMessages.UnknownAnnotationResolution_3, new Change[] { diff --git a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/ApiErrorsWarningsPreferencePage.java b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/ApiErrorsWarningsPreferencePage.java index 3e7a875fb7..522f615e4e 100644 --- a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/ApiErrorsWarningsPreferencePage.java +++ b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/preferences/ApiErrorsWarningsPreferencePage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2018 IBM Corporation and others. + * Copyright (c) 2007, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -20,13 +20,12 @@ import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.preference.PreferencePage; -import org.eclipse.pde.api.tools.internal.provisional.ApiPlugin; +import org.eclipse.pde.api.tools.internal.util.Util; import org.eclipse.pde.api.tools.ui.internal.ApiUIPlugin; import org.eclipse.pde.api.tools.ui.internal.IApiToolsConstants; import org.eclipse.pde.api.tools.ui.internal.IApiToolsHelpContextIds; @@ -110,15 +109,10 @@ protected Control createContents(Composite parent) { Set set = new HashSet<>(); try { IJavaProject[] projects = JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()).getJavaProjects(); - IProject project = null; for (IJavaProject p : projects) { - project = p.getProject(); - try { - if (project.hasNature(ApiPlugin.NATURE_ID) && block.hasProjectSpecificSettings(project)) { - set.add(p); - } - } catch (CoreException ce) { - // do nothing ignore the project + IProject project = p.getProject(); + if (Util.isApiProject(project) && block.hasProjectSpecificSettings(project)) { + set.add(p); } } } catch (JavaModelException jme) { diff --git a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/wizards/ApiToolingSetupWizardPage.java b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/wizards/ApiToolingSetupWizardPage.java index e40606f6d1..9bcd7dab53 100644 --- a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/wizards/ApiToolingSetupWizardPage.java +++ b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/wizards/ApiToolingSetupWizardPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2018 IBM Corporation and others. + * Copyright (c) 2007, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -16,7 +16,6 @@ import java.io.File; import java.lang.reflect.InvocationTargetException; import java.text.MessageFormat; -import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; @@ -40,7 +39,6 @@ import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.CheckboxTableViewer; -import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ViewerComparator; @@ -57,6 +55,7 @@ import org.eclipse.pde.api.tools.ui.internal.IApiToolsConstants; import org.eclipse.pde.api.tools.ui.internal.IApiToolsHelpContextIds; import org.eclipse.pde.api.tools.ui.internal.SWTFactory; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyListener; import org.eclipse.swt.events.SelectionListener; @@ -248,24 +247,16 @@ private void updateCheckStatus(int count) { */ private IProject[] getInputProjects() { IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); - ArrayList pjs = new ArrayList<>(); - for (IProject project : projects) { - try { - if (acceptProject(project)) { - pjs.add(project); - } - } catch (CoreException ce) { - } - } - return pjs.toArray(new IProject[pjs.size()]); + return Arrays.stream(projects).filter(this::acceptProject).toArray(IProject[]::new); } - private boolean acceptProject(IProject project) throws CoreException { + @SuppressWarnings("restriction") + private boolean acceptProject(IProject project) { if (project == null) { return false; } - return (project.hasNature(JavaCore.NATURE_ID) && project.hasNature("org.eclipse.pde.PluginNature")) //$NON-NLS-1$ - && !project.hasNature(ApiPlugin.NATURE_ID) && !Util.isBinaryProject(project); + return Util.isJavaProject(project) && PluginProject.isPluginProject(project) + && !Util.isApiProject(project) && !Util.isBinaryProject(project); } /** @@ -281,25 +272,10 @@ protected Object[] getWorkbenchSelection() { IWorkbenchSite site = part.getSite(); if (site != null) { ISelectionProvider provider = site.getSelectionProvider(); - if (provider != null) { - ISelection selection = provider.getSelection(); - if (selection instanceof IStructuredSelection) { - Object[] jps = ((IStructuredSelection) provider.getSelection()).toArray(); - ArrayList pjs = new ArrayList<>(); - for (Object jp : jps) { - if (jp instanceof IAdaptable) { - IAdaptable adapt = (IAdaptable) jp; - IProject pj = adapt.getAdapter(IProject.class); - try { - if (acceptProject(pj)) { - pjs.add(pj); - } - } catch (CoreException ce) { - } - } - } - return pjs.toArray(); - } + if (provider != null && provider.getSelection() instanceof IStructuredSelection selection) { + return Arrays.stream(selection.toArray()).filter(IAdaptable.class::isInstance) + .map(IAdaptable.class::cast).map(a -> a.getAdapter(IProject.class)) + .filter(this::acceptProject).toArray(); } } } diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiAnalysisApplication.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiAnalysisApplication.java index b5342a24dc..4d0c0d583f 100644 --- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiAnalysisApplication.java +++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiAnalysisApplication.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2019, 2021 Red Hat Inc. and others. + * Copyright (c) 2019, 2024 Red Hat Inc. and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -20,6 +20,7 @@ import java.nio.file.Files; import java.util.Arrays; import java.util.Objects; +import java.util.Set; import java.util.function.Predicate; import org.eclipse.core.resources.ICommand; @@ -376,11 +377,15 @@ private IProject importProject(File projectPath) throws CoreException, IOExcepti return project; } + @SuppressWarnings("restriction") + private static final Set REMOVED_BUILDERS = Set.of( + org.eclipse.pde.internal.core.natures.PluginProject.MANIFEST_BUILDER_ID, + org.eclipse.pde.internal.core.natures.PluginProject.SCHEMA_BUILDER_ID); + private static ICommand[] removeManifestAndSchemaBuilders(ICommand[] buildSpec) { // remove manifest and schema builders - return Arrays.stream(buildSpec).filter(x -> !("org.eclipse.pde.ManifestBuilder".equals(x.getBuilderName()) //$NON-NLS-1$ - || "org.eclipse.pde.SchemaBuilder".equals(x.getBuilderName())) //$NON-NLS-1$ - ).toArray(ICommand[]::new); + return Arrays.stream(buildSpec).filter(x -> !REMOVED_BUILDERS.contains(x.getBuilderName())) + .toArray(ICommand[]::new); } @Override diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiAnnotationsClasspathContributor.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiAnnotationsClasspathContributor.java index a73029605d..cf6f6c9b90 100644 --- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiAnnotationsClasspathContributor.java +++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiAnnotationsClasspathContributor.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Christoph Läubrich and others. + * Copyright (c) 2023, 2024 Christoph Läubrich and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -22,13 +22,12 @@ import java.util.stream.Stream; import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.osgi.service.resolver.BundleDelta; import org.eclipse.osgi.service.resolver.BundleDescription; import org.eclipse.osgi.service.resolver.State; import org.eclipse.osgi.service.resolver.StateDelta; -import org.eclipse.pde.api.tools.internal.provisional.ApiPlugin; +import org.eclipse.pde.api.tools.internal.util.Util; import org.eclipse.pde.core.IClasspathContributor; import org.eclipse.pde.core.plugin.IPluginModelBase; import org.eclipse.pde.core.plugin.PluginRegistry; @@ -77,11 +76,7 @@ private boolean hasApiNature(IPluginModelBase model) { if (model != null) { IResource resource = model.getUnderlyingResource(); if (resource != null) { - try { - return resource.getProject().hasNature(ApiPlugin.NATURE_ID); - } catch (CoreException e) { - // assume not compatible project then... - } + return Util.isApiProject(resource.getProject()); } } return false; diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ApiAnalysisBuilder.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ApiAnalysisBuilder.java index 8af9faa2e6..152b4cfc45 100644 --- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ApiAnalysisBuilder.java +++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ApiAnalysisBuilder.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2019 IBM Corporation and others. + * Copyright (c) 2007, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -799,7 +799,7 @@ boolean compareBuildProperties(BuildState state) { * @since 1.1 */ boolean shouldAbort(IProject project) throws CoreException { - return !project.isAccessible() || !project.hasNature(ApiPlugin.NATURE_ID) || hasBeenBuilt(project) || hasFatalProblems(project); + return !Util.isApiProject(project) || hasBeenBuilt(project) || hasFatalProblems(project); } /** @@ -1297,7 +1297,7 @@ protected synchronized IApiAnalyzer getAnalyzer() { * * @return the list of projects required */ - IProject[] getRequiredProjects(boolean includebinaries) throws CoreException { + IProject[] getRequiredProjects(boolean includebinaries) { IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); if (this.currentproject == null || workspaceRoot == null) { return new IProject[0]; @@ -1323,16 +1323,8 @@ IProject[] getRequiredProjects(boolean includebinaries) throws CoreException { IProject p = null; switch (entry.getEntryKind()) { case IClasspathEntry.CPE_PROJECT: { - p = workspaceRoot.getProject(path.lastSegment()); // missing - // projects - // are - // considered - // too - if (isOptional(entry) && !p.hasNature(ApiPlugin.NATURE_ID)) {// except - // if - // entry - // is - // optional + p = workspaceRoot.getProject(path.lastSegment()); // missing projects are considered too + if (isOptional(entry) && !Util.isApiProject(p)) {// except if entry is optional p = null; } break; diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/Util.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/Util.java index 8f5291f031..b4b68aedd9 100644 --- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/Util.java +++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/Util.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2023 IBM Corporation and others. + * Copyright (c) 2007, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -355,12 +355,8 @@ public static IProject[] getApiProjects() { for (IProject allProject : allProjects) { project = allProject; if (project.isAccessible()) { - try { - if (project.hasNature(org.eclipse.pde.api.tools.internal.provisional.ApiPlugin.NATURE_ID)) { - temp.add(project); - } - } catch (CoreException e) { - // should not happen + if (Util.isApiProject(project)) { + temp.add(project); } } } @@ -381,20 +377,13 @@ public static IProject[] getApiProjects() { public static IProject[] getApiProjectsMinSourceLevel(String sourcelevel) { IProject[] allProjects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); ArrayList temp = new ArrayList<>(); - IProject project = null; for (IProject allProject : allProjects) { - project = allProject; - if (project.isAccessible()) { - try { - if (project.hasNature(org.eclipse.pde.api.tools.internal.provisional.ApiPlugin.NATURE_ID)) { - IJavaProject jp = JavaCore.create(project); - String src = jp.getOption(JavaCore.COMPILER_SOURCE, true); - if (src != null && src.compareTo(sourcelevel) >= 0) { - temp.add(project); - } - } - } catch (CoreException e) { - // should not happen + IProject project = allProject; + if (Util.isApiProject(project)) { + IJavaProject jp = JavaCore.create(project); + String src = jp.getOption(JavaCore.COMPILER_SOURCE, true); + if (src != null && src.compareTo(sourcelevel) >= 0) { + temp.add(project); } } } @@ -1460,7 +1449,7 @@ public static IReferenceTypeDescriptor getType(String fullyQualifiedName) { */ public static boolean isApiProject(IProject project) { try { - return project.hasNature(ApiPlugin.NATURE_ID); + return project.isOpen() && project.hasNature(ApiPlugin.NATURE_ID); } catch (CoreException e) { return false; } @@ -1473,12 +1462,9 @@ public static boolean isApiProject(IProject project) { * @return true if the project is a java project, * false otherwise */ + @SuppressWarnings("restriction") public static boolean isJavaProject(IProject project) { - try { - return project.hasNature(JavaCore.NATURE_ID); - } catch (CoreException e) { - return false; - } + return org.eclipse.pde.internal.core.natures.PluginProject.isJavaProject(project); } /** diff --git a/ds/org.eclipse.pde.ds.annotations/src/org/eclipse/pde/ds/internal/annotations/DSAnnotationCompilationParticipant.java b/ds/org.eclipse.pde.ds.annotations/src/org/eclipse/pde/ds/internal/annotations/DSAnnotationCompilationParticipant.java index c62b32d435..2140c0689d 100644 --- a/ds/org.eclipse.pde.ds.annotations/src/org/eclipse/pde/ds/internal/annotations/DSAnnotationCompilationParticipant.java +++ b/ds/org.eclipse.pde.ds.annotations/src/org/eclipse/pde/ds/internal/annotations/DSAnnotationCompilationParticipant.java @@ -74,7 +74,7 @@ import org.eclipse.pde.internal.core.WorkspaceModelManager; import org.eclipse.pde.internal.core.ibundle.IBundleModel; import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.project.PDEProject; import org.eclipse.pde.internal.ui.util.ModelModification; import org.eclipse.pde.internal.ui.util.PDEModelUtility; @@ -121,7 +121,7 @@ public boolean isActive(IJavaProject project) { return false; IProject iproject = project.getProject(); - if (!iproject.isOpen() || !PDE.hasPluginNature(iproject)) + if (!iproject.isOpen() || !PluginProject.isPluginProject(iproject)) return false; if (WorkspaceModelManager.isBinaryProject(project.getProject())) diff --git a/ds/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/builders/DSBuilder.java b/ds/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/builders/DSBuilder.java index 458eed6be5..b2c0d273fe 100644 --- a/ds/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/builders/DSBuilder.java +++ b/ds/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/builders/DSBuilder.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2015 IBM Corporation and others. + * Copyright (c) 2008, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -35,12 +35,12 @@ import org.eclipse.osgi.util.NLS; import org.eclipse.pde.internal.core.builders.DefaultSAXParser; import org.eclipse.pde.internal.core.builders.PDEBuilderHelper; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ds.core.Activator; import org.eclipse.pde.internal.ds.core.Messages; public class DSBuilder extends IncrementalProjectBuilder { - private static String PDE_NATURE = "org.eclipse.pde.PluginNature"; //$NON-NLS-1$ private static IProject[] EMPTY_LIST = new IProject[0]; class ResourceVisitor implements IResourceVisitor { @@ -52,15 +52,8 @@ public ResourceVisitor(IProgressMonitor monitor) { @Override public boolean visit(IResource resource) { - if (resource instanceof IProject) { - // TODO only check PDE projects... - IProject project = (IProject) resource; - try { - return (project.hasNature(PDE_NATURE)); - } catch (CoreException e) { - // TODO log exception - return false; - } + if (resource instanceof IProject project) { + return PluginProject.isPluginProject(project); } if (resource instanceof IFile) { // see if this is it @@ -84,20 +77,11 @@ public DeltaVisitor(IProgressMonitor monitor) { @Override public boolean visit(IResourceDelta delta) { IResource resource = delta.getResource(); - - if (resource instanceof IProject) { - // TODO only check PDE projects... - IProject project = (IProject) resource; - try { - return (project.hasNature(PDE_NATURE)); - } catch (CoreException e) { - // TODO log exception - return false; - } + if (resource instanceof IProject project) { + return PluginProject.isPluginProject(project); } - if (resource instanceof IFile) { + if (resource instanceof IFile candidate) { // see if this is it - IFile candidate = (IFile) resource; if (isDSFile(candidate)) { // That's it, but only check it if it has been added or changed if (delta.getKind() != IResourceDelta.REMOVED) { diff --git a/ds/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/builders/DSErrorReporter.java b/ds/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/builders/DSErrorReporter.java index 01f136d7e3..a8182488ac 100644 --- a/ds/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/builders/DSErrorReporter.java +++ b/ds/org.eclipse.pde.ds.core/src/org/eclipse/pde/internal/ds/core/builders/DSErrorReporter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2015 Code 9 Corporation and others. + * Copyright (c) 2008, 2024 Code 9 Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -472,17 +472,13 @@ private void validateImplementationElement(IDSImplementation implementation) { } - private void validateJavaElement(String fullyQualifiedName, - String elementName, String attrName, int index) { - try { - if (fProject.hasNature(JavaCore.NATURE_ID)) { - IJavaProject jp = JavaCore.create(fProject); - if (!DSJavaHelper.isOnClasspath(fullyQualifiedName, (jp))) { - reportJavaTypeNotFound(elementName, attrName, - fullyQualifiedName, index); - } + @SuppressWarnings("restriction") + private void validateJavaElement(String fullyQualifiedName, String elementName, String attrName, int index) { + if (org.eclipse.pde.internal.core.natures.PluginProject.isJavaProject(fProject)) { + IJavaProject jp = JavaCore.create(fProject); + if (!DSJavaHelper.isOnClasspath(fullyQualifiedName, (jp))) { + reportJavaTypeNotFound(elementName, attrName, fullyQualifiedName, index); } - } catch (CoreException e) { } } diff --git a/ds/org.eclipse.pde.ds.ui/src/org/eclipse/pde/internal/ds/ui/wizards/DSCreationOperation.java b/ds/org.eclipse.pde.ds.ui/src/org/eclipse/pde/internal/ds/ui/wizards/DSCreationOperation.java index e2730e9c5c..587e5d0dbf 100644 --- a/ds/org.eclipse.pde.ds.ui/src/org/eclipse/pde/internal/ds/ui/wizards/DSCreationOperation.java +++ b/ds/org.eclipse.pde.ds.ui/src/org/eclipse/pde/internal/ds/ui/wizards/DSCreationOperation.java @@ -36,7 +36,7 @@ import org.eclipse.pde.internal.core.build.WorkspaceBuildModel; import org.eclipse.pde.internal.core.ibundle.IBundleModel; import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.project.PDEProject; import org.eclipse.pde.internal.core.util.CoreUtility; import org.eclipse.pde.internal.ds.core.IDSComponent; @@ -81,7 +81,7 @@ protected void execute(IProgressMonitor monitor) throws CoreException, createContent(); subMonitor.worked(1); openFile(); - if (PDE.hasPluginNature(fFile.getProject())) { + if (PluginProject.isPluginProject(fFile.getProject())) { writeManifest(fFile.getProject(), subMonitor.split(1)); writeBuildProperties(fFile.getProject(), subMonitor.split(1)); } diff --git a/ds/org.eclipse.pde.ds.ui/src/org/eclipse/pde/internal/ds/ui/wizards/DSFileWizardPage.java b/ds/org.eclipse.pde.ds.ui/src/org/eclipse/pde/internal/ds/ui/wizards/DSFileWizardPage.java index 4f6dc88e17..027c1071e3 100644 --- a/ds/org.eclipse.pde.ds.ui/src/org/eclipse/pde/internal/ds/ui/wizards/DSFileWizardPage.java +++ b/ds/org.eclipse.pde.ds.ui/src/org/eclipse/pde/internal/ds/ui/wizards/DSFileWizardPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2015 Code 9 Corporation and others. + * Copyright (c) 2008, 2024 Code 9 Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -36,7 +36,7 @@ import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.pde.internal.core.bundle.WorkspaceBundlePluginModel; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.project.PDEProject; import org.eclipse.pde.internal.ds.ui.Activator; import org.eclipse.pde.internal.ds.ui.Messages; @@ -123,18 +123,12 @@ private IProject getProject(Object element) { } private void setComponentNameText(IProject project) { - try { - if (project.hasNature(PDE.PLUGIN_NATURE)) { - WorkspaceBundlePluginModel model = new WorkspaceBundlePluginModel( - PDEProject.getManifest(project), - null); - model.load(); - String header = model.getBundleModel().getBundle().getHeader( - Constants.BUNDLE_SYMBOLICNAME); - String[] h = header.split(";"); //$NON-NLS-1$ - fDSComponentNameText.setText(h[0]); - } - } catch (CoreException e) { + if (PluginProject.isPluginProject(project)) { + WorkspaceBundlePluginModel model = new WorkspaceBundlePluginModel(PDEProject.getManifest(project), null); + model.load(); + String header = model.getBundleModel().getBundle().getHeader(Constants.BUNDLE_SYMBOLICNAME); + String[] h = header.split(";"); //$NON-NLS-1$ + fDSComponentNameText.setText(h[0]); } } diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleProjectDescription.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleProjectDescription.java index 2cbea5d7fe..e287b81d15 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleProjectDescription.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/project/IBundleProjectDescription.java @@ -23,7 +23,7 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jdt.core.JavaCore; import org.eclipse.pde.internal.core.ICoreConstants; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.osgi.framework.Constants; import org.osgi.framework.Version; @@ -79,7 +79,7 @@ public interface IBundleProjectDescription { /** * Constant for the PDE Plug-in project nature, value is "org.eclipse.pde.PluginNature". */ - String PLUGIN_NATURE = PDE.PLUGIN_NATURE; + String PLUGIN_NATURE = PluginProject.NATURE; /** * Creates or modifies a bundle project and associated artifacts based current settings. diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathHelper.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathHelper.java index e6c989550e..4499ac8a72 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathHelper.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathHelper.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2003, 2022 IBM Corporation and others. + * Copyright (c) 2003, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -57,6 +57,7 @@ import org.eclipse.pde.core.plugin.IPluginModelBase; import org.eclipse.pde.core.plugin.PluginRegistry; import org.eclipse.pde.internal.core.build.WorkspaceBuildModel; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.project.PDEProject; public class ClasspathHelper { @@ -262,8 +263,8 @@ private static List findLibrary(String libName, IProject project, Map getDevPaths(IPluginModelBase model, boolean checkExcluded, Set plugins) { IProject project = model.getUnderlyingResource().getProject(); - try { - if (project.hasNature(JavaCore.NATURE_ID)) { + if (PluginProject.isJavaProject(project)) { + try { Map> classpathMap = getClasspathMap(project, checkExcluded, false); IBuild build = getBuild(project); Set result = new LinkedHashSet<>(); @@ -294,8 +295,8 @@ private static Set getDevPaths(IPluginModelBase model, boolean checkExclu // if no build.properties, add all output folders classpathMap.values().forEach(l -> addPaths(l, project, result)); return result; + } catch (CoreException e) { } - } catch (CoreException e) { } return Collections.emptySet(); } diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathUtilCore.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathUtilCore.java index cb2ba0214a..9b551483ba 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathUtilCore.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ClasspathUtilCore.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2012 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -46,6 +46,7 @@ import org.eclipse.pde.internal.core.bundle.BundleFragment; import org.eclipse.pde.internal.core.bundle.BundlePlugin; import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.plugin.Fragment; import org.eclipse.pde.internal.core.plugin.Plugin; import org.eclipse.pde.internal.core.plugin.PluginBase; @@ -89,8 +90,9 @@ public static Stream classpathEntriesForBundle(String id) { // first look if we have something in the workspace... IPluginModelBase model = PluginRegistry.findModel(id); if (model != null && model.isEnabled()) { - if (isWorkspaceProject(model)) { - IJavaProject javaProject = JavaCore.create(model.getUnderlyingResource().getProject()); + IResource resource = model.getUnderlyingResource(); + if (resource != null && PluginProject.isJavaProject(resource.getProject())) { + IJavaProject javaProject = JavaCore.create(resource.getProject()); return Stream.of(JavaCore.newProjectEntry(javaProject.getPath())); } String location = model.getInstallLocation(); @@ -125,18 +127,6 @@ public static boolean isEntryForModel(IClasspathEntry entry, IPluginModelBase pr return false; } - protected static boolean isWorkspaceProject(IPluginModelBase model) { - IResource resource = model.getUnderlyingResource(); - if (resource != null) { - try { - return resource.getProject().hasNature(JavaCore.NATURE_ID); - } catch (CoreException e) { - // nothing we can do then... - } - } - return false; - } - private static IClasspathEntry getEntryForPath(IPath path) { return JavaCore.newLibraryEntry(path, path, IPath.ROOT, new IAccessRule[0], new IClasspathAttribute[0], false); } diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalJavaSearchClasspathContainer.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalJavaSearchClasspathContainer.java index c9e9357819..a324bfef29 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalJavaSearchClasspathContainer.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalJavaSearchClasspathContainer.java @@ -13,7 +13,6 @@ *******************************************************************************/ package org.eclipse.pde.internal.core; -import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.jdt.core.IClasspathContainer; import org.eclipse.jdt.core.IClasspathEntry; @@ -24,12 +23,8 @@ public class ExternalJavaSearchClasspathContainer implements IClasspathContainer @Override public IClasspathEntry[] getClasspathEntries() { if (fEntries == null) { - try { - SearchablePluginsManager manager = PDECore.getDefault().getSearchablePluginsManager(); - fEntries = manager.computeContainerClasspathEntries(); - } catch (CoreException e) { - PDECore.logException(e); - } + SearchablePluginsManager manager = PDECore.getDefault().getSearchablePluginsManager(); + fEntries = manager.computeContainerClasspathEntries(); } return fEntries; } diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/MinimalState.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/MinimalState.java index 4265376fff..6723264173 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/MinimalState.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/MinimalState.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2023 IBM Corporation and others. + * Copyright (c) 2005, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -53,7 +53,7 @@ import org.eclipse.pde.internal.build.BundleHelper; import org.eclipse.pde.internal.build.IPDEBuildConstants; import org.eclipse.pde.internal.core.builders.PDEBuilderHelper; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.util.ManifestUtils; import org.eclipse.pde.internal.core.util.UtilMessages; import org.osgi.framework.BundleException; @@ -338,8 +338,7 @@ public static IStatus reloadSystemPackagesIntoState() { for (IProject project : ResourcesPlugin.getWorkspace().getRoot().getProjects()) { if (PDEBuilderHelper.hasManifestBuilder(project)) { try { - project.build(IncrementalProjectBuilder.FULL_BUILD, PDE.MANIFEST_BUILDER_ID, null, - null); + project.build(IncrementalProjectBuilder.FULL_BUILD, PluginProject.MANIFEST_BUILDER_ID, null, null); } catch (CoreException e) { // ignore status.add(e.getStatus()); } diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java index 5682265328..66c7472ee9 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2022 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -62,6 +62,7 @@ import org.eclipse.pde.core.target.ITargetDefinition; import org.eclipse.pde.core.target.LoadTargetDefinitionJob; import org.eclipse.pde.core.target.TargetBundle; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.target.P2TargetUtils; import org.osgi.resource.Resource; @@ -320,45 +321,39 @@ private void updateAffectedEntries(StateDelta delta) { IPluginModelBase[] models = getWorkspaceModels(); for (IPluginModelBase model : models) { IProject project = model.getUnderlyingResource().getProject(); - try { - if (project.hasNature(JavaCore.NATURE_ID)) { - map.put(JavaCore.create(project), new RequiredPluginsClasspathContainer(model, project)); - } - } catch (CoreException e) { + if (PluginProject.isJavaProject(project)) { + map.put(JavaCore.create(project), new RequiredPluginsClasspathContainer(model, project)); } } } else { BundleDelta[] deltas = delta.getChanges(); for (BundleDelta bundleDelta : deltas) { - try { - // update classpath for workspace plug-ins that are housed in a - // Java project hand have been affected by the processd model changes. - IPluginModelBase model = findModel(bundleDelta.getBundle()); - IResource resource = model == null ? null : model.getUnderlyingResource(); - if (resource != null) { - IProject project = resource.getProject(); - if (project.hasNature(JavaCore.NATURE_ID)) { - IJavaProject jProject = JavaCore.create(project); - if (!map.containsKey(jProject)) { - map.put(jProject, new RequiredPluginsClasspathContainer(model, project)); - } + // update classpath for workspace plug-ins that are housed in a + // Java project hand have been affected by the processd model changes. + IPluginModelBase model = findModel(bundleDelta.getBundle()); + IResource resource = model == null ? null : model.getUnderlyingResource(); + if (resource != null) { + IProject project = resource.getProject(); + if (PluginProject.isJavaProject(project)) { + IJavaProject jProject = JavaCore.create(project); + if (!map.containsKey(jProject)) { + map.put(jProject, new RequiredPluginsClasspathContainer(model, project)); } } - } catch (CoreException e) { } } // do secondary dependencies IPluginModelBase[] models = getWorkspaceModels(); for (IPluginModelBase model : models) { IProject project = model.getUnderlyingResource().getProject(); + if (!PluginProject.isJavaProject(project)) { + continue; + } + IJavaProject jProject = JavaCore.create(project); + if (map.containsKey(jProject)) { + continue; + } try { - if (!project.hasNature(JavaCore.NATURE_ID)) { - continue; - } - IJavaProject jProject = JavaCore.create(project); - if (map.containsKey(jProject)) { - continue; - } IBuild build = ClasspathUtilCore.getBuild(model); if (build != null && build.getEntry(IBuildEntry.SECONDARY_DEPENDENCIES) != null) { map.put(jProject, new RequiredPluginsClasspathContainer(model, build, project)); diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PreferenceInitializer.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PreferenceInitializer.java index 103ab6a46b..95ae343038 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PreferenceInitializer.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PreferenceInitializer.java @@ -17,7 +17,7 @@ import org.eclipse.core.runtime.preferences.DefaultScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.pde.internal.core.builders.CompilerFlags; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PDEProject; import org.osgi.service.prefs.BackingStoreException; public class PreferenceInitializer extends AbstractPreferenceInitializer { @@ -25,7 +25,7 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer { @Override public void initializeDefaultPreferences() { //set defaults for compiler preferences in org.eclipse.pde pref node, not org.eclipse.pde.core - IEclipsePreferences prefs = DefaultScope.INSTANCE.getNode(PDE.PLUGIN_ID); + IEclipsePreferences prefs = DefaultScope.INSTANCE.getNode(PDEProject.PLUGIN_ID); prefs.putInt(CompilerFlags.P_UNRESOLVED_IMPORTS, CompilerFlags.ERROR); prefs.putInt(CompilerFlags.P_UNRESOLVED_EX_POINTS, CompilerFlags.ERROR); prefs.putInt(CompilerFlags.P_NO_REQUIRED_ATT, CompilerFlags.ERROR); diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/SearchablePluginsManager.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/SearchablePluginsManager.java index 7849748934..b81010429f 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/SearchablePluginsManager.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/SearchablePluginsManager.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2020 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -20,6 +20,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -32,6 +33,7 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceRuleFactory; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.IWorkspaceRoot; @@ -57,6 +59,7 @@ import org.eclipse.pde.core.plugin.IPluginModelBase; import org.eclipse.pde.core.plugin.ModelEntry; import org.eclipse.pde.core.plugin.PluginRegistry; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.util.CoreUtility; /** @@ -158,14 +161,7 @@ private static Set loadStates() { public IJavaProject getProxyProject() { IWorkspaceRoot root = PDECore.getWorkspace().getRoot(); IProject project = root.getProject(PROXY_PROJECT_NAME); - try { - if (project.exists() && project.isOpen() && project.hasNature(JavaCore.NATURE_ID)) { - return JavaCore.create(project); - } - - } catch (CoreException e) { - } - return null; + return PluginProject.isJavaProject(project) ? JavaCore.create(project) : null; } public void shutdown() { @@ -177,11 +173,9 @@ public void shutdown() { } } - public IClasspathEntry[] computeContainerClasspathEntries() throws CoreException { + public IClasspathEntry[] computeContainerClasspathEntries() { ArrayList result = new ArrayList<>(); - IPluginModelBase[] wModels = PluginRegistry.getWorkspaceModels(); - List plugins; synchronized (fPluginIdSet) { plugins = new ArrayList<>(fPluginIdSet); @@ -189,14 +183,9 @@ public IClasspathEntry[] computeContainerClasspathEntries() throws CoreException for (String id : plugins) { ModelEntry entry = PluginRegistry.findEntry(id); if (entry != null) { - boolean addModel = true; - wModels = entry.getWorkspaceModels(); - for (IPluginModelBase model : wModels) { - IProject project = model.getUnderlyingResource().getProject(); - if (project.hasNature(JavaCore.NATURE_ID)) { - addModel = false; - } - } + boolean addModel = Arrays.stream(entry.getWorkspaceModels()) + .map(IPluginModelBase::getUnderlyingResource).map(IResource::getProject) + .noneMatch(PluginProject::isJavaProject); if (!addModel) { continue; } diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/bnd/BndBuilder.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/bnd/BndBuilder.java index 0cd4f2aecc..167e4ca1eb 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/bnd/BndBuilder.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/bnd/BndBuilder.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Christoph Läubrich and others. + * Copyright (c) 2023, 2024 Christoph Läubrich and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/bnd/BndProjectManager.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/bnd/BndProjectManager.java index 7b28d5aeac..b1974a515b 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/bnd/BndProjectManager.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/bnd/BndProjectManager.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Christoph Läubrich and others. + * Copyright (c) 2023, 2024 Christoph Läubrich and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -36,6 +36,7 @@ import org.eclipse.pde.internal.core.PDECore; import org.eclipse.pde.internal.core.annotations.OSGiAnnotationsClasspathContributor; import org.eclipse.pde.internal.core.natures.BndProject; +import org.eclipse.pde.internal.core.natures.PluginProject; import aQute.bnd.build.Container; import aQute.bnd.build.Container.TYPE; @@ -69,7 +70,7 @@ public static Optional getBndProject(IProject project) throws Exception private static void setupProject(Project bnd, IProject project) throws CoreException { IPath base = project.getFullPath(); - if (project.hasNature(JavaCore.NATURE_ID)) { + if (PluginProject.isJavaProject(project)) { IJavaProject javaProject = JavaCore.create(project); IClasspathEntry[] classpath = javaProject.getRawClasspath(); List src = new ArrayList<>(1); diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/bnd/ProjectJar.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/bnd/ProjectJar.java index d7b3e94881..50a05a2bb8 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/bnd/ProjectJar.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/bnd/ProjectJar.java @@ -34,6 +34,7 @@ import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; import org.eclipse.pde.internal.core.PDECore; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.project.PDEProject; import aQute.bnd.osgi.Jar; @@ -65,7 +66,7 @@ public ProjectJar(IProject project, Predicate filter) throws CoreExce return filter.test(r); }; FileResource.addResources(this, outputFolder, resourceScanner); - if (project.hasNature(JavaCore.NATURE_ID)) { + if (PluginProject.isJavaProject(project)) { IJavaProject javaProject = JavaCore.create(project); IWorkspaceRoot workspaceRoot = project.getWorkspace().getRoot(); IClasspathEntry[] classpath = javaProject.getResolvedClasspath(true); diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BundleErrorReporter.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BundleErrorReporter.java index 7de78f21d7..26ee04ca4a 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BundleErrorReporter.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/BundleErrorReporter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2023 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -84,6 +84,7 @@ import org.eclipse.pde.internal.core.ibundle.IBundle; import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase; import org.eclipse.pde.internal.core.ibundle.IManifestHeader; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.project.PDEProject; import org.eclipse.pde.internal.core.search.PluginJavaSearchUtil; import org.eclipse.pde.internal.core.util.IdUtil; @@ -119,11 +120,8 @@ protected void validate(IProgressMonitor monitor) { if (fModel == null || !validateBundleSymbolicName()) { return; } - try { - if (fProject.hasNature(JavaCore.NATURE_ID)) { - validateAutomaticModuleName(); - } - } catch (CoreException e1) { + if (PluginProject.isJavaProject(fProject)) { + validateAutomaticModuleName(); } if (!validateVersionOfRequireBundle()) { return; @@ -564,14 +562,9 @@ private void validateRequiredExecutionEnvironment() { } // if we aren't a java project, let's not check for a BREE - try { - if (!fProject.hasNature(JavaCore.NATURE_ID)) { - return; - } - } catch (CoreException e) { + if (!PluginProject.isJavaProject(fProject)) { return; } - String[] bundleEnvs = desc.getExecutionEnvironments(); if (bundleEnvs == null || bundleEnvs.length == 0) { // No EE specified @@ -975,19 +968,13 @@ private void validateBundleActivator() { return; } - if (isCheckUnknownClass()) { - try { - if (fProject.hasNature(JavaCore.NATURE_ID)) { - IJavaProject javaProject = JavaCore.create(fProject); - - // Look for this activator in the project's classpath - if (!PDEJavaHelper.isOnClasspath(activator, javaProject)) { - VirtualMarker marker = report(NLS.bind(PDECoreMessages.BundleErrorReporter_NoExist, activator), getLine(header, activator), CompilerFlags.P_UNKNOWN_CLASS, PDEMarkerFactory.M_UNKNOWN_ACTIVATOR, PDEMarkerFactory.CAT_FATAL); - addMarkerAttribute(marker,PDEMarkerFactory.compilerKey, CompilerFlags.P_UNKNOWN_CLASS); - } - } - } catch (CoreException ce) { - } + if (isCheckUnknownClass() && PluginProject.isJavaProject(fProject) + && !PDEJavaHelper.isOnClasspath(activator, JavaCore.create(fProject))) { + // Look for this activator in the project's classpath + VirtualMarker marker = report(NLS.bind(PDECoreMessages.BundleErrorReporter_NoExist, activator), + getLine(header, activator), CompilerFlags.P_UNKNOWN_CLASS, PDEMarkerFactory.M_UNKNOWN_ACTIVATOR, + PDEMarkerFactory.CAT_FATAL); + addMarkerAttribute(marker, PDEMarkerFactory.compilerKey, CompilerFlags.P_UNKNOWN_CLASS); } } @@ -1368,13 +1355,11 @@ private void addHostPackages(String hostID) { IResource resource = model.getUnderlyingResource(); if (resource != null) { addProjectPackages(resource.getProject()); - } else { + } else if (PluginProject.isJavaProject(fProject)) { try { - if (fProject.hasNature(JavaCore.NATURE_ID)) { - IPackageFragment[] fragments = PluginJavaSearchUtil.collectPackageFragments(new IPluginModelBase[] {model}, JavaCore.create(fProject), false); - for (IPackageFragment fragment : fragments) { - fProjectPackages.add(fragment.getElementName()); - } + IPackageFragment[] fragments = PluginJavaSearchUtil.collectPackageFragments(new IPluginModelBase[] { model }, JavaCore.create(fProject), false); + for (IPackageFragment fragment : fragments) { + fProjectPackages.add(fragment.getElementName()); } } catch (CoreException ce) { } @@ -1394,13 +1379,13 @@ private void addFragmentPackages(BundleDescription[] fragments) { } private void addProjectPackages(IProject proj) { - try { - if (proj.hasNature(JavaCore.NATURE_ID)) { - IJavaProject jp = JavaCore.create(proj); - IPackageFragmentRoot[] roots = jp.getPackageFragmentRoots(); - for (int i = 0; i < roots.length; i++) { - if (roots[i].getKind() == IPackageFragmentRoot.K_SOURCE || (roots[i].getKind() == IPackageFragmentRoot.K_BINARY && !roots[i].isExternal())) { - IJavaElement[] children = roots[i].getChildren(); + if (PluginProject.isJavaProject(proj)) { + try { + IPackageFragmentRoot[] roots = JavaCore.create(proj).getPackageFragmentRoots(); + for (IPackageFragmentRoot root : roots) { + if (root.getKind() == IPackageFragmentRoot.K_SOURCE + || (root.getKind() == IPackageFragmentRoot.K_BINARY && !root.isExternal())) { + IJavaElement[] children = root.getChildren(); for (IJavaElement element : children) { IPackageFragment f = (IPackageFragment) element; String name = f.getElementName(); @@ -1413,8 +1398,8 @@ private void addProjectPackages(IProject proj) { } } } + } catch (CoreException ce) { } - } catch (CoreException ce) { } } diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/CompilerFlags.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/CompilerFlags.java index 025541cab6..0eef260732 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/CompilerFlags.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/CompilerFlags.java @@ -20,7 +20,7 @@ import org.eclipse.core.runtime.preferences.IPreferencesService; import org.eclipse.core.runtime.preferences.IScopeContext; import org.eclipse.core.runtime.preferences.InstanceScope; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PDEProject; import org.osgi.service.prefs.BackingStoreException; /** @@ -126,7 +126,7 @@ public static boolean getBoolean(IProject project, String flagId) { public static String getString(IProject project, String flagId) { IPreferencesService service = Platform.getPreferencesService(); IScopeContext[] contexts = project == null ? null : new IScopeContext[] {new ProjectScope(project)}; - return service.getString(PDE.PLUGIN_ID, flagId, "", project == null ? null : contexts); //$NON-NLS-1$ + return service.getString(PDEProject.PLUGIN_ID, flagId, "", project == null ? null : contexts); //$NON-NLS-1$ } /** @@ -134,7 +134,7 @@ public static String getString(IProject project, String flagId) { */ public static void save() { try { - InstanceScope.INSTANCE.getNode(PDE.PLUGIN_ID).flush(); + InstanceScope.INSTANCE.getNode(PDEProject.PLUGIN_ID).flush(); } catch (BackingStoreException e) { } } diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/ExtensionPointSchemaBuilder.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/ExtensionPointSchemaBuilder.java index 348ba96945..82fb4f1538 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/ExtensionPointSchemaBuilder.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/ExtensionPointSchemaBuilder.java @@ -44,7 +44,7 @@ import org.eclipse.pde.internal.core.PDECore; import org.eclipse.pde.internal.core.PDECoreMessages; import org.eclipse.pde.internal.core.WorkspaceModelManager; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.schema.Schema; import org.eclipse.pde.internal.core.schema.SchemaDescriptor; @@ -124,7 +124,7 @@ private void cleanSchemasIn(IContainer container, IProgressMonitor monitor) thro } private boolean isInterestingProject(IProject project) { - return PDE.hasPluginNature(project) && !WorkspaceModelManager.isBinaryProject(project); + return PluginProject.isPluginProject(project) && !WorkspaceModelManager.isBinaryProject(project); } private void compileFile(IFile file, IProgressMonitor monitor) { diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/FeatureConsistencyChecker.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/FeatureConsistencyChecker.java index 999275b3ee..68ef247fd6 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/FeatureConsistencyChecker.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/FeatureConsistencyChecker.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2012 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -32,7 +32,7 @@ import org.eclipse.pde.internal.core.PDECore; import org.eclipse.pde.internal.core.PDECoreMessages; import org.eclipse.pde.internal.core.WorkspaceModelManager; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.FeatureProject; import org.eclipse.pde.internal.core.project.PDEProject; import org.osgi.framework.Bundle; @@ -50,12 +50,7 @@ public boolean visit(IResourceDelta delta) { if (resource instanceof IProject project) { // Only check projects with feature nature - try { - return (project.hasNature(PDE.FEATURE_NATURE)); - } catch (CoreException e) { - PDECore.logException(e); - return false; - } + return FeatureProject.isFeatureProject(project); } if (resource instanceof IFile candidate) { // see if this is it diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/PDEBuilderHelper.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/PDEBuilderHelper.java index 643dfeb6ec..a064f4050c 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/PDEBuilderHelper.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/PDEBuilderHelper.java @@ -25,7 +25,9 @@ import org.eclipse.pde.core.build.IBuild; import org.eclipse.pde.core.build.IBuildEntry; import org.eclipse.pde.internal.build.IBuildPropertiesConstants; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.FeatureProject; +import org.eclipse.pde.internal.core.natures.PluginProject; +import org.eclipse.pde.internal.core.natures.SiteProject; public class PDEBuilderHelper { @@ -74,15 +76,16 @@ public static ArrayList getSourceEntries(IBuild build) { } public static boolean isPDEProject(IProject project) { - return project != null && project.isAccessible() - && (PDE.hasPluginNature(project) || PDE.hasFeatureNature(project) || PDE.hasUpdateSiteNature(project)); + return project != null && project.isAccessible() && // + (PluginProject.isPluginProject(project) || FeatureProject.isFeatureProject(project) + || SiteProject.isSiteProject(project)); } public static boolean hasManifestBuilder(IProject project) { if (project != null && project.isAccessible()) { try { return Arrays.stream(project.getDescription().getBuildSpec()) - .anyMatch(cmd -> PDE.MANIFEST_BUILDER_ID.equals(cmd.getBuilderName())); + .anyMatch(cmd -> PluginProject.MANIFEST_BUILDER_ID.equals(cmd.getBuilderName())); } catch (CoreException e) { // must assume then that it has not the required builder } diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/UpdateSiteBuilder.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/UpdateSiteBuilder.java index f8afd55866..2ba18dc816 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/UpdateSiteBuilder.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/UpdateSiteBuilder.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2012 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -29,9 +29,8 @@ import org.eclipse.core.runtime.jobs.ISchedulingRule; import org.eclipse.core.runtime.jobs.MultiRule; import org.eclipse.osgi.util.NLS; -import org.eclipse.pde.internal.core.PDECore; import org.eclipse.pde.internal.core.PDECoreMessages; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.SiteProject; public class UpdateSiteBuilder extends IncrementalProjectBuilder { class DeltaVisitor implements IResourceDeltaVisitor { @@ -47,12 +46,7 @@ public boolean visit(IResourceDelta delta) { if (resource instanceof IProject project) { // Only check projects with feature nature - try { - return (project.hasNature(PDE.SITE_NATURE)); - } catch (CoreException e) { - PDECore.logException(e); - return false; - } + return SiteProject.isSiteProject(project); } if (resource instanceof IFile candidate) { // see if this is it diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/BndProject.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/BndProject.java index dce3690fe4..f975cd6506 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/BndProject.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/BndProject.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Christoph Läubrich and others. + * Copyright (c) 2023, 2024 Christoph Läubrich and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -15,41 +15,29 @@ import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; -import org.eclipse.pde.internal.core.bnd.BndBuilder; -public class BndProject extends BaseProject { +public class BndProject extends PDEProject { - public static final String NATURE_ID = "org.eclipse.pde.BndNature"; //$NON-NLS-1$ + public static final String NATURE_ID = PLUGIN_ID + ".BndNature"; //$NON-NLS-1$ public static final String INSTRUCTIONS_FILE_EXTENSION = ".bnd"; //$NON-NLS-1$ public static final String INSTRUCTIONS_FILE = "pde" + INSTRUCTIONS_FILE_EXTENSION; //$NON-NLS-1$ - public static final String BUILDER_ID = "org.eclipse.pde.BndBuilder"; //$NON-NLS-1$ + public static final String BUILDER_ID = PLUGIN_ID + ".BndBuilder"; //$NON-NLS-1$ @Override public void configure() throws CoreException { - addToBuildSpec(BndBuilder.BUILDER_ID); + addToBuildSpec(BUILDER_ID); } @Override public void deconfigure() throws CoreException { - removeFromBuildSpec(BndBuilder.BUILDER_ID); + removeFromBuildSpec(BUILDER_ID); } public static boolean isBndProject(IProject project) { - if (project.isOpen() && hasRequiredNatures(project)) { - return true; - } - return false; - } - - private static boolean hasRequiredNatures(IProject project) { - try { - return project.hasNature(BndProject.NATURE_ID); - } catch (CoreException e) { - return false; - } + return hasNature(project, NATURE_ID); } } diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/FeatureProject.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/FeatureProject.java index b2e532da59..50bd7cb5a1 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/FeatureProject.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/FeatureProject.java @@ -13,21 +13,26 @@ *******************************************************************************/ package org.eclipse.pde.internal.core.natures; +import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; -public class FeatureProject extends BaseProject { +public class FeatureProject extends PDEProject { - public FeatureProject() { - super(); - } + public static final String NATURE = PLUGIN_ID + ".FeatureNature"; //$NON-NLS-1$ + public static final String BUILDER_ID = PLUGIN_ID + ".FeatureBuilder"; //$NON-NLS-1$ @Override public void configure() throws CoreException { - addToBuildSpec(PDE.FEATURE_BUILDER_ID); + addToBuildSpec(BUILDER_ID); } @Override public void deconfigure() throws CoreException { - removeFromBuildSpec(PDE.FEATURE_BUILDER_ID); + removeFromBuildSpec(BUILDER_ID); + } + + public static boolean isFeatureProject(IProject project) { + return hasNature(project, NATURE); } + } diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/PDE.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/PDE.java deleted file mode 100644 index 7d0c8671ff..0000000000 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/PDE.java +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.pde.internal.core.natures; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.pde.internal.core.PDECore; - -public class PDE { - public static final String PLUGIN_ID = "org.eclipse.pde"; //$NON-NLS-1$ - - public static final String MANIFEST_BUILDER_ID = PLUGIN_ID + "." + "ManifestBuilder"; //$NON-NLS-1$ //$NON-NLS-2$ - public static final String SCHEMA_BUILDER_ID = PLUGIN_ID + "." + "SchemaBuilder"; //$NON-NLS-1$ //$NON-NLS-2$ - public static final String PLUGIN_NATURE = PLUGIN_ID + "." + "PluginNature"; //$NON-NLS-1$ //$NON-NLS-2$ - public static final String FEATURE_NATURE = PLUGIN_ID + "." + "FeatureNature"; //$NON-NLS-1$ //$NON-NLS-2$ - public static final String SITE_NATURE = PLUGIN_ID + "." + "UpdateSiteNature"; //$NON-NLS-1$ //$NON-NLS-2$ - public static final String FEATURE_BUILDER_ID = PLUGIN_ID + "." + "FeatureBuilder"; //$NON-NLS-1$ //$NON-NLS-2$ - public static final String SITE_BUILDER_ID = PLUGIN_ID + "." + "UpdateSiteBuilder"; //$NON-NLS-1$ //$NON-NLS-2$ - - public static boolean hasPluginNature(IProject project) { - try { - return project.hasNature(PLUGIN_NATURE); - } catch (CoreException e) { - PDECore.log(e); - return false; - } - } - - public static boolean hasFeatureNature(IProject project) { - try { - return project.hasNature(FEATURE_NATURE); - } catch (CoreException e) { - PDECore.log(e); - return false; - } - } - - public static boolean hasUpdateSiteNature(IProject project) { - try { - return project.hasNature(SITE_NATURE); - } catch (CoreException e) { - PDECore.log(e); - return false; - } - } - -} diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/BaseProject.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/PDEProject.java similarity index 89% rename from ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/BaseProject.java rename to ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/PDEProject.java index 7bad260383..73828c9408 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/BaseProject.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/PDEProject.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2012 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -22,12 +22,10 @@ import org.eclipse.core.runtime.PlatformObject; import org.eclipse.pde.internal.core.PDECore; -public abstract class BaseProject extends PlatformObject implements IProjectNature { - private IProject project; +public abstract class PDEProject extends PlatformObject implements IProjectNature { + public static final String PLUGIN_ID = "org.eclipse.pde"; //$NON-NLS-1$ - public BaseProject() { - super(); - } + private IProject project; protected void addToBuildSpec(String builderID) throws CoreException { @@ -107,4 +105,14 @@ private void setBuilderCommand(IProjectDescription description, ICommand newComm public void setProject(IProject project) { this.project = project; } + + static boolean hasNature(IProject project, String nature) { + try { + return project.hasNature(nature); + } catch (CoreException e) { + PDECore.log(e); + return false; + } + } + } diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/PluginProject.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/PluginProject.java index 7f6ac1c73e..01352d276b 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/PluginProject.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/PluginProject.java @@ -13,25 +13,34 @@ *******************************************************************************/ package org.eclipse.pde.internal.core.natures; +import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; +import org.eclipse.jdt.core.JavaCore; -public class PluginProject extends BaseProject { - /** - * PluginProject constructor comment. - */ - public PluginProject() { - super(); - } +public class PluginProject extends PDEProject { + + public static final String MANIFEST_BUILDER_ID = PLUGIN_ID + ".ManifestBuilder"; //$NON-NLS-1$ + public static final String SCHEMA_BUILDER_ID = PLUGIN_ID + ".SchemaBuilder"; //$NON-NLS-1$ + public static final String NATURE = PLUGIN_ID + ".PluginNature"; //$NON-NLS-1$ @Override public void configure() throws CoreException { - addToBuildSpec(PDE.MANIFEST_BUILDER_ID); - addToBuildSpec(PDE.SCHEMA_BUILDER_ID); + addToBuildSpec(MANIFEST_BUILDER_ID); + addToBuildSpec(SCHEMA_BUILDER_ID); } @Override public void deconfigure() throws CoreException { - removeFromBuildSpec(PDE.MANIFEST_BUILDER_ID); - removeFromBuildSpec(PDE.SCHEMA_BUILDER_ID); + removeFromBuildSpec(MANIFEST_BUILDER_ID); + removeFromBuildSpec(SCHEMA_BUILDER_ID); + } + + public static boolean isPluginProject(IProject project) { + return hasNature(project, NATURE); } + + public static boolean isJavaProject(IProject project) { + return PDEProject.hasNature(project, JavaCore.NATURE_ID); + } + } diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/SiteProject.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/SiteProject.java index 5383a75d82..d1e7e395ac 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/SiteProject.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/natures/SiteProject.java @@ -13,21 +13,26 @@ *******************************************************************************/ package org.eclipse.pde.internal.core.natures; +import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; -public class SiteProject extends BaseProject { +public class SiteProject extends PDEProject { - public SiteProject() { - super(); - } + public static final String NATURE = PLUGIN_ID + ".UpdateSiteNature"; //$NON-NLS-1$ + public static final String BUILDER_ID = PLUGIN_ID + ".UpdateSiteBuilder"; //$NON-NLS-1$ @Override public void configure() throws CoreException { - addToBuildSpec(PDE.SITE_BUILDER_ID); + addToBuildSpec(BUILDER_ID); } @Override public void deconfigure() throws CoreException { - removeFromBuildSpec(PDE.SITE_BUILDER_ID); + removeFromBuildSpec(BUILDER_ID); + } + + public static boolean isSiteProject(IProject project) { + return hasNature(project, NATURE); } + } diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/PDEProject.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/PDEProject.java index e1bd6dc368..851d95dadc 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/PDEProject.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/PDEProject.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2022 IBM Corporation and others. + * Copyright (c) 2010, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -31,6 +31,7 @@ import org.eclipse.pde.internal.core.PDECore; import org.eclipse.pde.internal.core.PDEManager; import org.eclipse.pde.internal.core.natures.BndProject; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.osgi.service.prefs.BackingStoreException; /** @@ -82,7 +83,7 @@ public static IContainer getBundleRoot(IProject project) { } public static IFolder getJavaOutputFolder(IProject project) throws CoreException { - if (project.hasNature(JavaCore.NATURE_ID)) { + if (PluginProject.isJavaProject(project)) { IJavaProject javaProject = JavaCore.create(project); IPath outputLocation = javaProject.getOutputLocation(); IWorkspaceRoot workspaceRoot = project.getWorkspace().getRoot(); diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/ProjectModifyOperation.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/ProjectModifyOperation.java index 39e5f8831b..d8eda7a59e 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/ProjectModifyOperation.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/project/ProjectModifyOperation.java @@ -69,6 +69,7 @@ import org.eclipse.pde.internal.core.ibundle.IBundlePluginBase; import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase; import org.eclipse.pde.internal.core.ibundle.IManifestHeader; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.plugin.WorkspacePluginModelBase; import org.eclipse.pde.internal.core.text.bundle.BundleModelFactory; import org.eclipse.pde.internal.core.text.bundle.BundleSymbolicNameHeader; @@ -163,7 +164,7 @@ public void execute(IProgressMonitor monitor, IBundleProjectDescription descript sub.split(1); configureNatures(description); sub.split(1); - if (project.hasNature(JavaCore.NATURE_ID)) { + if (PluginProject.isJavaProject(project)) { configureJavaProject(description, before, jpExisted); } sub.split(1); diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/util/PDEJavaHelper.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/util/PDEJavaHelper.java index 77f7c05592..bee64ad13b 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/util/PDEJavaHelper.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/util/PDEJavaHelper.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2019 IBM Corporation and others. + * Copyright (c) 2005, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -18,7 +18,6 @@ import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; -import java.util.ListIterator; import java.util.Map; import org.eclipse.core.resources.IProject; @@ -47,6 +46,7 @@ import org.eclipse.pde.internal.core.PDECore; import org.eclipse.pde.internal.core.PDEPreferencesManager; import org.eclipse.pde.internal.core.SearchablePluginsManager; +import org.eclipse.pde.internal.core.natures.PluginProject; public class PDEJavaHelper { @@ -296,19 +296,18 @@ private static IPackageFragment searchWorkspaceForPackage(String packageName, IP libPaths.add(path.append(libName)); } IProject[] projects = PDECore.getWorkspace().getRoot().getProjects(); - for (int i = 0; i < projects.length; i++) { + for (IProject project : projects) { + if (!PluginProject.isJavaProject(project)) { + continue; + } + IJavaProject jp = JavaCore.create(project); try { - if (!projects[i].hasNature(JavaCore.NATURE_ID) || !projects[i].isOpen()) { - continue; - } - IJavaProject jp = JavaCore.create(projects[i]); Map rootsByPath = null; - ListIterator li = libPaths.listIterator(); - while (li.hasNext()) { + for (IPath libPath : libPaths) { if (rootsByPath == null) { rootsByPath = getRootsByPath(jp); } - IPackageFragmentRoot root = rootsByPath.get(li.next()); + IPackageFragmentRoot root = rootsByPath.get(libPath); if (root != null) { IPackageFragment frag = root.getPackageFragment(packageName); if (frag.exists()) { diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/build/properties/AbstractBuildValidationTest.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/build/properties/AbstractBuildValidationTest.java index 8f67e2c26c..0c080788ae 100644 --- a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/build/properties/AbstractBuildValidationTest.java +++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/build/properties/AbstractBuildValidationTest.java @@ -47,7 +47,7 @@ import org.eclipse.pde.core.plugin.PluginRegistry; import org.eclipse.pde.internal.core.builders.CompilerFlags; import org.eclipse.pde.internal.core.builders.PDEMarkerFactory; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PDEProject; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.correction.ResolutionGenerator; import org.eclipse.pde.ui.tests.PDETestsPlugin; @@ -282,7 +282,7 @@ protected boolean buildProject(IProject project) throws CoreException { */ protected void setPreferences(IProject project, int severity) throws BackingStoreException { ProjectScope scope = new ProjectScope(project); - IEclipsePreferences projectPrefs = scope.getNode(PDE.PLUGIN_ID); + IEclipsePreferences projectPrefs = scope.getNode(PDEProject.PLUGIN_ID); projectPrefs.putInt(CompilerFlags.P_BUILD, severity); projectPrefs.putInt(CompilerFlags.P_BUILD_MISSING_OUTPUT, severity); projectPrefs.putInt(CompilerFlags.P_BUILD_SOURCE_LIBRARY, severity); diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/imports/BaseImportTestCase.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/imports/BaseImportTestCase.java index 6927a270dd..92621f6114 100644 --- a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/imports/BaseImportTestCase.java +++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/imports/BaseImportTestCase.java @@ -43,7 +43,7 @@ import org.eclipse.pde.core.plugin.PluginRegistry; import org.eclipse.pde.internal.core.BinaryRepositoryProvider; import org.eclipse.pde.internal.core.PDECore; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ui.wizards.imports.PluginImportOperation; import org.eclipse.pde.ui.tests.PDETestCase; import org.eclipse.team.core.RepositoryProvider; @@ -182,7 +182,7 @@ private void verifyProject(IPluginModelBase modelImported, boolean isJava) throw project.getPersistentProperty(PDECore.EXTERNAL_PROJECT_PROPERTY)); } } - assertTrue(project.hasNature(PDE.PLUGIN_NATURE)); + assertTrue(project.hasNature(PluginProject.NATURE)); assertEquals(isJava, project.hasNature(JavaCore.NATURE_ID)); if (isJava) { IJavaProject jProject = JavaCore.create(project); diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/imports/ImportFeatureProjectsTestCase.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/imports/ImportFeatureProjectsTestCase.java index 28dc036f55..c2c8eef520 100644 --- a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/imports/ImportFeatureProjectsTestCase.java +++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/imports/ImportFeatureProjectsTestCase.java @@ -28,7 +28,7 @@ import org.eclipse.pde.internal.core.ifeature.IFeatureInstallHandler; import org.eclipse.pde.internal.core.ifeature.IFeatureModel; import org.eclipse.pde.internal.core.ifeature.IFeaturePlugin; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.FeatureProject; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.wizards.imports.FeatureImportOperation; import org.eclipse.pde.internal.ui.wizards.imports.FeatureImportWizard.ReplaceQuery; @@ -78,7 +78,7 @@ private void verifyNatures() { IFeatureModel[] imported = PDECore.getDefault().getFeatureModelManager().getWorkspaceModels(); for (IFeatureModel element : imported) { lookingAtProject(element); - assertTrue("Verifying feature nature...", hasNature(PDE.FEATURE_NATURE)); + assertTrue("Verifying feature nature...", hasNature(FeatureProject.NATURE)); IFeatureInstallHandler installHandler = element.getFeature().getInstallHandler(); boolean shouldHaveJavaNature = installHandler != null ? installHandler.getLibrary() != null : false; assertEquals("Verifying java nature...", hasNature(JavaCore.NATURE_ID), shouldHaveJavaNature); diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/preferences/PDEPreferencesTestCase.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/preferences/PDEPreferencesTestCase.java index 34cfa3e290..762cbe43e7 100644 --- a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/preferences/PDEPreferencesTestCase.java +++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/preferences/PDEPreferencesTestCase.java @@ -21,7 +21,7 @@ import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.pde.internal.core.PDEPreferencesManager; import org.eclipse.pde.internal.core.builders.CompilerFlags; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PDEProject; import org.eclipse.pde.internal.launching.ILaunchingPreferenceConstants; import org.eclipse.pde.internal.ui.IPDEUIConstants; import org.eclipse.pde.internal.ui.IPreferenceConstants; @@ -112,7 +112,7 @@ public void testPreferenceChangeListner2(){ @Test public void testCompilerPreferences(){ // Testing the compiler preferences set by PDECore in org.eclipse.pde - PDEPreferencesManager preferences = new PDEPreferencesManager(PDE.PLUGIN_ID); + PDEPreferencesManager preferences = new PDEPreferencesManager(PDEProject.PLUGIN_ID); assertEquals(preferences.getDefaultInt(CompilerFlags.P_UNRESOLVED_IMPORTS), CompilerFlags.ERROR); assertEquals(preferences.getDefaultInt(CompilerFlags.P_DEPRECATED), CompilerFlags.WARNING); assertEquals(preferences.getDefaultInt(CompilerFlags.P_MISSING_VERSION_EXP_PKG), CompilerFlags.IGNORE); diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/project/BundleRootTests.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/project/BundleRootTests.java index 656893ce05..530f94e800 100644 --- a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/project/BundleRootTests.java +++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/project/BundleRootTests.java @@ -31,7 +31,7 @@ import org.eclipse.pde.core.project.IBundleProjectDescription; import org.eclipse.pde.core.project.IBundleProjectService; import org.eclipse.pde.internal.core.PDECore; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.project.PDEProject; import org.junit.Rule; import org.junit.Test; @@ -191,7 +191,7 @@ public void testBundleRoot() throws CoreException { assertNull("Wrong project location URI", d2.getLocationURI()); String[] natureIds = d2.getNatureIds(); assertEquals("Wrong number of natures", 2, natureIds.length); - assertEquals("Wrong nature", PDE.PLUGIN_NATURE, natureIds[0]); + assertEquals("Wrong nature", PluginProject.NATURE, natureIds[0]); assertEquals("Wrong nature", JavaCore.NATURE_ID, natureIds[1]); assertNull("Wrong imports", d2.getPackageImports()); assertNull("Wrong exports", d2.getPackageExports()); @@ -231,7 +231,7 @@ public void testAssignRootToExistingProject() throws CoreException { IBundleProjectDescription bpd = service.getDescription(project); bpd.setBundleVendor("Some Vendor"); bpd.setBundleVersion(new Version("2.0.0")); - bpd.setNatureIds(new String[]{PDE.PLUGIN_NATURE, JavaCore.NATURE_ID}); + bpd.setNatureIds(new String[] { PluginProject.NATURE, JavaCore.NATURE_ID }); bpd.apply(null); // validate @@ -257,7 +257,7 @@ public void testAssignRootToExistingProject() throws CoreException { assertNull("Wrong project location URI", d2.getLocationURI()); String[] natureIds = d2.getNatureIds(); assertEquals("Wrong number of natures", 2, natureIds.length); - assertEquals("Wrong nature", PDE.PLUGIN_NATURE, natureIds[0]); + assertEquals("Wrong nature", PluginProject.NATURE, natureIds[0]); assertEquals("Wrong nature", JavaCore.NATURE_ID, natureIds[1]); assertNull("Wrong imports", d2.getPackageImports()); assertNull("Wrong exports", d2.getPackageExports()); diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/wizards/ConvertProjectToPluginTestCase.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/wizards/ConvertProjectToPluginTestCase.java index af94f5e56d..a6c4db1531 100644 --- a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/wizards/ConvertProjectToPluginTestCase.java +++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/wizards/ConvertProjectToPluginTestCase.java @@ -28,7 +28,7 @@ import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.pde.api.tools.internal.provisional.ApiPlugin; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.project.PDEProject; import org.eclipse.pde.internal.ui.wizards.tools.ConvertProjectToPluginOperation; import org.eclipse.pde.ui.tests.PDETestCase; @@ -59,12 +59,12 @@ public void testSingleProject() throws Exception { assertNotNull(project); assertTrue(project.exists()); - assertFalse(project.hasNature(PDE.PLUGIN_NATURE)); + assertFalse(project.hasNature(PluginProject.NATURE)); assertFalse(project.hasNature(API_TOOLS_NATURE)); convertProjects(new IProject[]{project}, false); - assertTrue(project.hasNature(PDE.PLUGIN_NATURE)); + assertTrue(project.hasNature(PluginProject.NATURE)); assertFalse(project.hasNature(API_TOOLS_NATURE)); assertTrue(PDEProject.getManifest(project).exists()); assertTrue(PDEProject.getBuildProperties(project).exists()); @@ -87,14 +87,14 @@ public void testMultipleProjects() throws Exception { for (IProject project : projects) { assertNotNull(project); assertTrue(project.exists()); - assertFalse(project.hasNature(PDE.PLUGIN_NATURE)); + assertFalse(project.hasNature(PluginProject.NATURE)); assertFalse(project.hasNature(API_TOOLS_NATURE)); } convertProjects(projects, false); for (IProject project : projects) { - assertTrue(project.hasNature(PDE.PLUGIN_NATURE)); + assertTrue(project.hasNature(PluginProject.NATURE)); assertFalse(project.hasNature(API_TOOLS_NATURE)); assertTrue(PDEProject.getManifest(project).exists()); assertTrue(PDEProject.getBuildProperties(project).exists()); @@ -118,14 +118,14 @@ public void testApiToolsSetup() throws Exception { for (IProject project : projects) { assertNotNull(project); assertTrue(project.exists()); - assertFalse(project.hasNature(PDE.PLUGIN_NATURE)); + assertFalse(project.hasNature(PluginProject.NATURE)); assertFalse(project.hasNature(API_TOOLS_NATURE)); } convertProjects(projects, true); for (IProject project : projects) { - assertTrue(project.hasNature(PDE.PLUGIN_NATURE)); + assertTrue(project.hasNature(PluginProject.NATURE)); assertTrue(project.hasNature(API_TOOLS_NATURE)); assertTrue(PDEProject.getManifest(project).exists()); assertTrue(PDEProject.getBuildProperties(project).exists()); diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/wizards/NewFeatureProjectTestCase.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/wizards/NewFeatureProjectTestCase.java index 5f75fa1a7a..5c9cb12aff 100644 --- a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/wizards/NewFeatureProjectTestCase.java +++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/wizards/NewFeatureProjectTestCase.java @@ -26,7 +26,7 @@ import org.eclipse.pde.core.plugin.IPluginBase; import org.eclipse.pde.internal.core.PDECore; import org.eclipse.pde.internal.core.ifeature.IFeatureModel; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.FeatureProject; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.wizards.feature.CreateFeaturePatchOperation; import org.eclipse.pde.internal.ui.wizards.feature.CreateFeatureProjectOperation; @@ -76,7 +76,7 @@ private void createFeature(FeatureData fd, boolean patch, Object modelObject) th } private void verifyFeatureNature() { - assertTrue("Verifying feature nature...", hasNature(PDE.FEATURE_NATURE)); + assertTrue("Verifying feature nature...", hasNature(FeatureProject.NATURE)); } @Test diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/wizards/NewSiteProjectTestCase.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/wizards/NewSiteProjectTestCase.java index 4970460234..900db3fcc6 100644 --- a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/wizards/NewSiteProjectTestCase.java +++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/wizards/NewSiteProjectTestCase.java @@ -30,7 +30,7 @@ import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Platform; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.SiteProject; import org.eclipse.pde.internal.core.site.WorkspaceSiteModel; import org.eclipse.pde.internal.ui.wizards.site.NewSiteProjectCreationOperation; import org.eclipse.swt.widgets.Display; @@ -89,8 +89,7 @@ private void ensureCreated(IProject project) { assertTrue("Project not created.", project.exists()); //$NON-NLS-1$ assertTrue("Project not open.", project.isOpen()); //$NON-NLS-1$ try { - assertTrue("Site nature not added.", project //$NON-NLS-1$ - .hasNature(PDE.SITE_NATURE)); + assertTrue("Site nature not added.", project.hasNature(SiteProject.NATURE)); } catch (Exception e) { } assertTrue("site.xml not created.", project //$NON-NLS-1$ diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/annotations/OSGiAnnotationsASTVisitor.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/annotations/OSGiAnnotationsASTVisitor.java index 6ff0da36bd..5c5be88f56 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/annotations/OSGiAnnotationsASTVisitor.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/annotations/OSGiAnnotationsASTVisitor.java @@ -32,7 +32,7 @@ import org.eclipse.pde.internal.core.annotations.CustomHeaderAnnotationProcessor; import org.eclipse.pde.internal.core.annotations.ExportPackageAnnotationProcessor; import org.eclipse.pde.internal.core.annotations.OSGiAnnotationProcessor; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ui.util.ModelModification; import org.eclipse.pde.internal.ui.util.PDEModelUtility; @@ -55,7 +55,7 @@ public boolean visit(PackageDeclaration packageDeclaration) { return true; } IProject project = javaProject.getProject(); - if (!PDE.hasPluginNature(project) || WorkspaceModelManager.isBinaryProject(project)) { + if (!PluginProject.isPluginProject(project) || WorkspaceModelManager.isBinaryProject(project)) { return true; } List processors = getPackageProcessors(packageDeclaration.getName().toString()); diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/annotations/OSGiAnnotationsCompilationParticipant.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/annotations/OSGiAnnotationsCompilationParticipant.java index 22fb548641..b694271eb1 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/annotations/OSGiAnnotationsCompilationParticipant.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/annotations/OSGiAnnotationsCompilationParticipant.java @@ -22,7 +22,7 @@ import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTParser; import org.eclipse.pde.internal.core.WorkspaceModelManager; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; public class OSGiAnnotationsCompilationParticipant extends CompilationParticipant { @@ -34,7 +34,7 @@ public boolean isAnnotationProcessor() { @Override public boolean isActive(IJavaProject javaProject) { IProject project = javaProject.getProject(); - return (project.isOpen() && PDE.hasPluginNature(project) && !WorkspaceModelManager.isBinaryProject(project)); + return (project.isOpen() && PluginProject.isPluginProject(project) && !WorkspaceModelManager.isBinaryProject(project)); } @Override diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/build/BaseBuildAction.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/build/BaseBuildAction.java index 4743dfa113..68e8757fae 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/build/BaseBuildAction.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/build/BaseBuildAction.java @@ -46,7 +46,8 @@ import org.eclipse.pde.internal.core.ICoreConstants; import org.eclipse.pde.internal.core.PDEPreferencesManager; import org.eclipse.pde.internal.core.exports.BuildUtilities; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.FeatureProject; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.project.PDEProject; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.PDEUIMessages; @@ -129,7 +130,7 @@ public static boolean ensureValid(IFile file, IProgressMonitor monitor) throws C // Force the build if autobuild is off IProject project = file.getProject(); if (!project.getWorkspace().isAutoBuilding()) { - String builderID = ICoreConstants.FEATURE_FILENAME_DESCRIPTOR.equals(file.getName()) ? PDE.FEATURE_BUILDER_ID : PDE.MANIFEST_BUILDER_ID; + String builderID = ICoreConstants.FEATURE_FILENAME_DESCRIPTOR.equals(file.getName()) ? FeatureProject.BUILDER_ID : PluginProject.MANIFEST_BUILDER_ID; project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, builderID, null, monitor); } diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ConfigureProblemSeverityForPDECompilerResolution.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ConfigureProblemSeverityForPDECompilerResolution.java index 84c073f754..3feb8bb374 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ConfigureProblemSeverityForPDECompilerResolution.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/ConfigureProblemSeverityForPDECompilerResolution.java @@ -32,7 +32,7 @@ import org.eclipse.osgi.util.NLS; import org.eclipse.pde.internal.core.builders.CompilerFlags; import org.eclipse.pde.internal.core.builders.PDEMarkerFactory; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PDEProject; import org.eclipse.pde.internal.core.text.bundle.BundleModel; import org.eclipse.pde.internal.ui.PDEUIMessages; import org.eclipse.pde.internal.ui.preferences.CompilersPreferencePage; @@ -75,7 +75,7 @@ public void run(IMarker marker) { Map data = new HashMap<>(); data.put(CompilersPreferencePage.DATA_SELECT_OPTION_KEY, id); - data.put(CompilersPreferencePage.DATA_SELECT_OPTION_QUALIFIER, PDE.PLUGIN_ID); + data.put(CompilersPreferencePage.DATA_SELECT_OPTION_QUALIFIER, PDEProject.PLUGIN_ID); // If other than manifest compiler option, then show workspace preference // since there is no project specific settings. diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/java/QuickFixProcessor.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/java/QuickFixProcessor.java index 99f7436e58..69d6478931 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/java/QuickFixProcessor.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/correction/java/QuickFixProcessor.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2019 IBM Corporation and others. + * Copyright (c) 2007, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/actions/CreateModuleInfoPDEAction.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/actions/CreateModuleInfoPDEAction.java index f95d2c3349..daa548d5ad 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/actions/CreateModuleInfoPDEAction.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/actions/CreateModuleInfoPDEAction.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2018 IBM Corporation and others. + * Copyright (c) 2018, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -14,65 +14,52 @@ package org.eclipse.pde.internal.ui.editor.actions; import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IProjectNature; -import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.internal.ui.actions.CreateModuleInfoAction; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ui.PDEUIMessages; import org.eclipse.swt.widgets.Display; @SuppressWarnings("restriction") public class CreateModuleInfoPDEAction extends CreateModuleInfoAction { private ISelection fSelection; + @Override public void selectionChanged(IAction action, ISelection selection) { super.selectionChanged(action, selection); - fSelection= selection; + fSelection = selection; } - - private Display getDisplay() { Display display = Display.getCurrent(); - if (display == null) + if (display == null) { display = Display.getDefault(); + } return display; } @Override public void run(IAction action) { + if (fSelection instanceof IStructuredSelection structuredSelection) { + Object selectedElement = structuredSelection.getFirstElement(); - IJavaProject javaProject= null; - - if (fSelection instanceof IStructuredSelection) { - Object selectedElement= ((IStructuredSelection) fSelection).getFirstElement(); - - if (selectedElement instanceof IProject) { - javaProject= JavaCore.create((IProject) selectedElement); - } else if (selectedElement instanceof IJavaProject) { - javaProject= (IJavaProject) selectedElement; + IProject project; + if (selectedElement instanceof IProject iProject) { + project = iProject; + } else if (selectedElement instanceof IJavaProject javaProject) { + project = javaProject.getProject(); } else { return; } - - IProjectNature nature = null; - try { - nature = javaProject.getProject().getNature("org.eclipse.pde.PluginNature"); //$NON-NLS-1$ - } catch (CoreException e) { - - } - if (nature != null) { - if (!MessageDialog.openConfirm(getDisplay().getActiveShell(), PDEUIMessages.CreateModuleInfoPDEAction_sync_issue, - PDEUIMessages.CreateModuleInfoPDEAction_mod_info_not_in_sync)) { - return; - } + if (PluginProject.isPluginProject(project) && !MessageDialog.openConfirm(getDisplay().getActiveShell(), + PDEUIMessages.CreateModuleInfoPDEAction_sync_issue, + PDEUIMessages.CreateModuleInfoPDEAction_mod_info_not_in_sync)) { + return; } - } super.run(action); } diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/build/BuildClasspathSection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/build/BuildClasspathSection.java index 5841443756..704668feed 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/build/BuildClasspathSection.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/build/BuildClasspathSection.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2017 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -41,7 +41,7 @@ import org.eclipse.pde.core.plugin.IPluginModelBase; import org.eclipse.pde.core.plugin.PluginRegistry; import org.eclipse.pde.internal.build.IBuildPropertiesConstants; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.PDEUIMessages; import org.eclipse.pde.internal.ui.editor.FormLayoutFactory; @@ -293,17 +293,13 @@ private void initializeDialogSettings(ElementTreeSelectionDialog dialog) { dialog.addFilter(new ViewerFilter() { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { - if (element instanceof IProject) { - try { - return ((IProject) element).hasNature(PDE.PLUGIN_NATURE); - } catch (CoreException e) { - } - return false; - } else if (element instanceof IResource) { + if (element instanceof IProject project) { + return PluginProject.isPluginProject(project); + } else if (element instanceof IResource resource) { IBuildModel model = getBuildModel(); IBuildEntry entry = model.getBuild().getEntry(IBuildPropertiesConstants.PROPERTY_JAR_EXTRA_CLASSPATH); if (entry != null) - return !entry.contains(getRelativePathTokenName((IResource) element)); + return !entry.contains(getRelativePathTokenName(resource)); } return true; } diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/build/RuntimeInfoSection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/build/RuntimeInfoSection.java index 8069ac915b..99a49517c2 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/build/RuntimeInfoSection.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/build/RuntimeInfoSection.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2016 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -54,6 +54,7 @@ import org.eclipse.pde.core.build.IBuildModel; import org.eclipse.pde.core.plugin.IPluginModelBase; import org.eclipse.pde.internal.build.IBuildPropertiesConstants; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ui.PDELabelProvider; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.PDEPluginImages; @@ -597,13 +598,9 @@ private void refreshOutputKeys() { } private boolean isJavaProject() { - try { - IBuildModel buildModel = getBuildModel(); - IProject project = buildModel.getUnderlyingResource().getProject(); - return project.hasNature(JavaCore.NATURE_ID); - } catch (CoreException e) { - } - return false; + IBuildModel buildModel = getBuildModel(); + IProject project = buildModel.getUnderlyingResource().getProject(); + return PluginProject.isJavaProject(project); } private boolean isReadOnly() { diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExecutionEnvironmentSection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExecutionEnvironmentSection.java index 4341b6df8c..f8f2649e1b 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExecutionEnvironmentSection.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExecutionEnvironmentSection.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2017 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -46,6 +46,7 @@ import org.eclipse.pde.internal.core.ibundle.IBundle; import org.eclipse.pde.internal.core.ibundle.IBundleModel; import org.eclipse.pde.internal.core.ibundle.IManifestHeader; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.text.bundle.ExecutionEnvironment; import org.eclipse.pde.internal.core.text.bundle.PDEManifestElement; import org.eclipse.pde.internal.core.text.bundle.RequiredExecutionEnvironmentHeader; @@ -70,6 +71,7 @@ import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.ActionFactory; import org.eclipse.ui.dialogs.ElementListSelectionDialog; +import org.eclipse.ui.forms.events.HyperlinkAdapter; import org.eclipse.ui.forms.events.HyperlinkEvent; import org.eclipse.ui.forms.events.IHyperlinkListener; import org.eclipse.ui.forms.widgets.FormToolkit; @@ -173,38 +175,27 @@ public void linkActivated(HyperlinkEvent e) { link.setLayoutData(gd); final IProject project = getPage().getPDEEditor().getCommonProject(); - try { - if (project != null && project.hasNature(JavaCore.NATURE_ID)) { - link = toolkit.createHyperlink(container, PDEUIMessages.ExecutionEnvironmentSection_updateClasspath, SWT.NONE); - link.addHyperlinkListener(new IHyperlinkListener() { - @Override - public void linkEntered(HyperlinkEvent e) { - } - - @Override - public void linkExited(HyperlinkEvent e) { - } - - @Override - public void linkActivated(HyperlinkEvent e) { - try { - getPage().getEditor().doSave(null); - IPluginModelBase model = PluginRegistry.findModel(project); - if (model != null) { - ClasspathComputer.setClasspath(project, model); - if (PDEPlugin.getWorkspace().isAutoBuilding()) { - doFullBuild(project); - } + if (project != null && PluginProject.isJavaProject(project)) { + link = toolkit.createHyperlink(container, PDEUIMessages.ExecutionEnvironmentSection_updateClasspath, SWT.NONE); + link.addHyperlinkListener(new HyperlinkAdapter() { + @Override + public void linkActivated(HyperlinkEvent e) { + try { + getPage().getEditor().doSave(null); + IPluginModelBase model = PluginRegistry.findModel(project); + if (model != null) { + ClasspathComputer.setClasspath(project, model); + if (PDEPlugin.getWorkspace().isAutoBuilding()) { + doFullBuild(project); } - } catch (CoreException e1) { } + } catch (CoreException e1) { } - }); - gd = new GridData(); - gd.horizontalSpan = 2; - link.setLayoutData(gd); - } - } catch (CoreException e1) { + } + }); + gd = new GridData(); + gd.horizontalSpan = 2; + link.setLayoutData(gd); } makeActions(); diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageSection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageSection.java index 50c9fe330f..0f161405f1 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageSection.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/ExportPackageSection.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2017 IBM Corporation and others. + * Copyright (c) 2005, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -26,7 +26,6 @@ import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.JavaCore; @@ -55,6 +54,7 @@ import org.eclipse.pde.internal.core.ibundle.IBundle; import org.eclipse.pde.internal.core.ibundle.IBundleModel; import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.text.bundle.Bundle; import org.eclipse.pde.internal.core.text.bundle.ExportPackageHeader; import org.eclipse.pde.internal.core.text.bundle.ExportPackageObject; @@ -232,13 +232,8 @@ private boolean canAddExportedPackages() { private Optional getProjectWithJavaNature() { Optional model = Optional.ofNullable(getModel()); Optional project = model.map(IPluginModelBase::getUnderlyingResource).map(IResource::getProject); - return project.filter(p -> { - try { // Ensure the project is a Java project - return p.hasNature(JavaCore.NATURE_ID); - } catch (CoreException e) { - return false; - } - }); + // Ensure the project is a Java project + return project.filter(PluginProject::isJavaProject); } private Map createCurrentExportPackageMap() { @@ -406,53 +401,52 @@ private void handleRemove() { private void handleAdd() { IPluginModelBase model = (IPluginModelBase) getPage().getModel(); final IProject project = model.getUnderlyingResource().getProject(); - try { - if (project.hasNature(JavaCore.NATURE_ID)) { - ILabelProvider labelProvider = new JavaElementLabelProvider(); - final ConditionalListSelectionDialog dialog = new ConditionalListSelectionDialog(PDEPlugin.getActiveWorkbenchShell(), labelProvider, PDEUIMessages.ExportPackageSection_dialogButtonLabel); - final Collection pckgs = fHeader == null ? Collections.emptySet() : fHeader.getPackageNames(); - final boolean allowJava = "true".equals(getBundle().getHeader(ICoreConstants.ECLIPSE_JREBUNDLE)); //$NON-NLS-1$ - Runnable runnable = () -> { - ArrayList elements = new ArrayList<>(); - ArrayList conditional = new ArrayList<>(); - IPackageFragment[] fragments = PDEJavaHelper.getPackageFragments(JavaCore.create(project), pckgs, allowJava); - for (IPackageFragment fragment : fragments) { - try { - if (fragment.containsJavaResources()) { - elements.add(fragment); - } else { - conditional.add(fragment); - } - } catch (JavaModelException e) { + if (PluginProject.isJavaProject(project)) { + ILabelProvider labelProvider = new JavaElementLabelProvider(); + final ConditionalListSelectionDialog dialog = new ConditionalListSelectionDialog( + PDEPlugin.getActiveWorkbenchShell(), labelProvider, + PDEUIMessages.ExportPackageSection_dialogButtonLabel); + final Collection pckgs = fHeader == null ? Collections.emptySet() : fHeader.getPackageNames(); + final boolean allowJava = "true".equals(getBundle().getHeader(ICoreConstants.ECLIPSE_JREBUNDLE)); //$NON-NLS-1$ + Runnable runnable = () -> { + ArrayList elements = new ArrayList<>(); + ArrayList conditional = new ArrayList<>(); + IPackageFragment[] fragments = PDEJavaHelper.getPackageFragments(JavaCore.create(project), pckgs, allowJava); + for (IPackageFragment fragment : fragments) { + try { + if (fragment.containsJavaResources()) { + elements.add(fragment); + } else { + conditional.add(fragment); } + } catch (JavaModelException e) { } - dialog.setElements(elements.toArray()); - dialog.setConditionalElements(conditional.toArray()); - dialog.setMultipleSelection(true); - dialog.setMessage(PDEUIMessages.PackageSelectionDialog_label); - dialog.setTitle(PDEUIMessages.ExportPackageSection_title); - dialog.create(); - PlatformUI.getWorkbench().getHelpSystem().setHelp(dialog.getShell(), IHelpContextIds.EXPORT_PACKAGES); - SWTUtil.setDialogSize(dialog, 400, 500); - }; - BusyIndicator.showWhile(Display.getCurrent(), runnable); - if (dialog.open() == Window.OK) { - Object[] selected = dialog.getResult(); - if (fHeader != null) { - for (Object selectedObject : selected) { - IPackageFragment candidate = (IPackageFragment) selectedObject; - fHeader.addPackage(new ExportPackageObject(fHeader, candidate, getVersionAttribute())); - } - } else { - getBundle().setHeader(getExportedPackageHeader(), getValue(selected)); - // the way events get triggered, updateButtons isn't called - if (selected.length > 0) - getTablePart().setButtonEnabled(CALCULATE_USE_INDEX, true); + } + dialog.setElements(elements.toArray()); + dialog.setConditionalElements(conditional.toArray()); + dialog.setMultipleSelection(true); + dialog.setMessage(PDEUIMessages.PackageSelectionDialog_label); + dialog.setTitle(PDEUIMessages.ExportPackageSection_title); + dialog.create(); + PlatformUI.getWorkbench().getHelpSystem().setHelp(dialog.getShell(), IHelpContextIds.EXPORT_PACKAGES); + SWTUtil.setDialogSize(dialog, 400, 500); + }; + BusyIndicator.showWhile(Display.getCurrent(), runnable); + if (dialog.open() == Window.OK) { + Object[] selected = dialog.getResult(); + if (fHeader != null) { + for (Object selectedObject : selected) { + IPackageFragment candidate = (IPackageFragment) selectedObject; + fHeader.addPackage(new ExportPackageObject(fHeader, candidate, getVersionAttribute())); } + } else { + getBundle().setHeader(getExportedPackageHeader(), getValue(selected)); + // the way events get triggered, updateButtons isn't called + if (selected.length > 0) + getTablePart().setButtonEnabled(CALCULATE_USE_INDEX, true); } - labelProvider.dispose(); } - } catch (CoreException e) { + labelProvider.dispose(); } } diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/JavaAttributeWizardPage.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/JavaAttributeWizardPage.java index 87620aa328..2a36771e81 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/JavaAttributeWizardPage.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/plugin/JavaAttributeWizardPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2021 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -18,7 +18,6 @@ import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ProjectScope; -import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.jdt.core.ICompilationUnit; @@ -36,6 +35,7 @@ import org.eclipse.pde.internal.core.ICoreConstants; import org.eclipse.pde.internal.core.PDECore; import org.eclipse.pde.internal.core.ischema.ISchemaAttribute; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ui.PDEPlugin; public class JavaAttributeWizardPage extends NewClassWizardPage { @@ -77,14 +77,7 @@ public JavaAttributeWizardPage(IProject project, IPluginModelBase model, ISchema this.model = model; this.project = project; this.attInfo = attInfo; - try { - if (project.hasNature(JavaCore.NATURE_ID)) - this.javaProject = JavaCore.create(project); - else - this.javaProject = null; - } catch (CoreException e) { - PDEPlugin.logException(e); - } + this.javaProject = PluginProject.isJavaProject(project) ? JavaCore.create(project) : null; initialValues = new InitialClassProperties(); initialValues.initialClassName = className; } diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/schema/SchemaIncludesSection.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/schema/SchemaIncludesSection.java index adac16cdbc..17d7529379 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/schema/SchemaIncludesSection.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/schema/SchemaIncludesSection.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2017 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -17,7 +17,6 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ArrayContentProvider; @@ -32,7 +31,7 @@ import org.eclipse.pde.core.plugin.PluginRegistry; import org.eclipse.pde.internal.core.ischema.ISchema; import org.eclipse.pde.internal.core.ischema.ISchemaInclude; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.schema.Schema; import org.eclipse.pde.internal.core.schema.SchemaInclude; import org.eclipse.pde.internal.ui.PDEPlugin; @@ -60,13 +59,10 @@ public class SchemaIncludesSection extends TableSection { class PDEProjectFilter extends ViewerFilter { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { - if (element instanceof IProject) { - try { - return ((IProject) element).hasNature(PDE.PLUGIN_NATURE); - } catch (CoreException e) { - } - } else if (element instanceof IFile) { - return isUnlistedInclude((IFile) element); + if (element instanceof IProject project) { + return PluginProject.isPluginProject(project); + } else if (element instanceof IFile file) { + return isUnlistedInclude(file); } return true; } diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/validation/ControlValidationUtility.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/validation/ControlValidationUtility.java index 4980930860..74dbcc721b 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/validation/ControlValidationUtility.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/validation/ControlValidationUtility.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2011 IBM Corporation and others. + * Copyright (c) 2007, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -15,7 +15,6 @@ package org.eclipse.pde.internal.ui.editor.validation; import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; @@ -27,6 +26,7 @@ import org.eclipse.pde.internal.core.NLResourceHelper; import org.eclipse.pde.internal.core.PDECore; import org.eclipse.pde.internal.core.builders.CompilerFlags; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.util.PDEJavaHelper; import org.eclipse.pde.internal.core.util.VersionUtil; import org.eclipse.pde.internal.ui.PDEUIMessages; @@ -106,19 +106,14 @@ public static boolean validateActivatorField(String value, IValidatorMessageHand } // Check to see if the class is on the plug-in classpath - try { - if (project.hasNature(JavaCore.NATURE_ID)) { - IJavaProject javaProject = JavaCore.create(project); - // Look for this activator in the project's classpath - if (!PDEJavaHelper.isOnClasspath(value, javaProject)) { - validator.addMessage(PDEUIMessages.ControlValidationUtility_errorMsgNotOnClasspath, messageType); - return false; - } + if (PluginProject.isJavaProject(project)) { + IJavaProject javaProject = JavaCore.create(project); + // Look for this activator in the project's classpath + if (!PDEJavaHelper.isOnClasspath(value, javaProject)) { + validator.addMessage(PDEUIMessages.ControlValidationUtility_errorMsgNotOnClasspath, messageType); + return false; } - } catch (CoreException ce) { - // Ignore } - return true; } diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/CompilersPreferencePage.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/CompilersPreferencePage.java index 7b9e24f06c..e664fd0be7 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/CompilersPreferencePage.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/CompilersPreferencePage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2017 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -21,13 +21,12 @@ import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.preference.PreferencePage; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ui.IHelpContextIds; import org.eclipse.pde.internal.ui.PDEUIMessages; import org.eclipse.pde.internal.ui.SWTFactory; @@ -90,15 +89,10 @@ protected Control createContents(Composite parent) { HashSet set = new HashSet<>(); try { IJavaProject[] projects = JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()).getJavaProjects(); - IProject project = null; for (IJavaProject javaProject : projects) { - project = javaProject.getProject(); - try { - if (project.hasNature(PDE.PLUGIN_NATURE) && fBlock.hasProjectSpecificSettings(project)) { - set.add(javaProject); - } - } catch (CoreException ce) { - //do nothing ignore the project + IProject project = javaProject.getProject(); + if (PluginProject.isPluginProject(project) && fBlock.hasProjectSpecificSettings(project)) { + set.add(javaProject); } } } catch (JavaModelException jme) { diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/PDECompilersConfigurationBlock.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/PDECompilersConfigurationBlock.java index 295e584742..78ba11cf63 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/PDECompilersConfigurationBlock.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/PDECompilersConfigurationBlock.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2020 IBM Corporation and others. + * Copyright (c) 2008, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -50,7 +50,9 @@ import org.eclipse.jface.window.Window; import org.eclipse.pde.internal.core.PDECore; import org.eclipse.pde.internal.core.builders.CompilerFlags; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.FeatureProject; +import org.eclipse.pde.internal.core.natures.PDEProject; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.PDEUIMessages; import org.eclipse.pde.internal.ui.SWTFactory; @@ -210,7 +212,7 @@ public Object getQualifier() { * @return the new {@link Key} for the {@link PDEPlugin} preference store */ protected final static Key getPDEPrefKey(String key) { - return new Key(PDE.PLUGIN_ID, key); + return new Key(PDEProject.PLUGIN_ID, key); } //unresolved @@ -884,9 +886,9 @@ private void addBuilder(Control control) { } if (controls.contains(control)) { switch (key.intValue()) { - case CompilerFlags.PLUGIN_FLAGS -> fBuilders.add(PDE.MANIFEST_BUILDER_ID); - case CompilerFlags.SCHEMA_FLAGS -> fBuilders.add(PDE.SCHEMA_BUILDER_ID); - case CompilerFlags.FEATURE_FLAGS, CompilerFlags.SITE_FLAGS -> fBuilders.add(PDE.FEATURE_BUILDER_ID); + case CompilerFlags.PLUGIN_FLAGS -> fBuilders.add(PluginProject.MANIFEST_BUILDER_ID); + case CompilerFlags.SCHEMA_FLAGS -> fBuilders.add(PluginProject.SCHEMA_BUILDER_ID); + case CompilerFlags.FEATURE_FLAGS, CompilerFlags.SITE_FLAGS -> fBuilders.add(FeatureProject.BUILDER_ID); } } return; @@ -913,28 +915,32 @@ protected IStatus run(IProgressMonitor monitor) { projects = new IProject[] {fProject}; } SubMonitor subMonitor = SubMonitor.convert(monitor, projects.length * 2); - for (IProject project : projects) { + for (IProject projectToBuild : projects) { SubMonitor iterationMonitor = subMonitor.split(2).setWorkRemaining(2); - IProject projectToBuild = project; - if (!projectToBuild.isOpen()) + if (!projectToBuild.isOpen()) { continue; + } ICommand[] commands; - if (projectToBuild.isAccessible()) + if (projectToBuild.isAccessible()) { commands = ((Project) projectToBuild).internalGetDescription().getBuildSpec(false); - else + } else { commands = null; - if (projectToBuild.hasNature(PDE.PLUGIN_NATURE)) { - if (fBuilders.contains(PDE.MANIFEST_BUILDER_ID) && hasBuilder(commands, "org.eclipse.pde.ManifestBuilder")) { //$NON-NLS-1$ - projectToBuild.build(IncrementalProjectBuilder.FULL_BUILD, PDE.MANIFEST_BUILDER_ID, + } + if (PluginProject.isPluginProject(projectToBuild)) { + if (fBuilders.contains(PluginProject.MANIFEST_BUILDER_ID) + && hasBuilder(commands, PluginProject.MANIFEST_BUILDER_ID)) { + projectToBuild.build(IncrementalProjectBuilder.FULL_BUILD, PluginProject.MANIFEST_BUILDER_ID, null, iterationMonitor.split(1)); } - if (fBuilders.contains(PDE.SCHEMA_BUILDER_ID) && hasBuilder(commands,"org.eclipse.pde.SchemaBuilder")) { //$NON-NLS-1$ - projectToBuild.build(IncrementalProjectBuilder.FULL_BUILD, PDE.SCHEMA_BUILDER_ID, null, + if (fBuilders.contains(PluginProject.SCHEMA_BUILDER_ID) + && hasBuilder(commands, PluginProject.SCHEMA_BUILDER_ID)) { + projectToBuild.build(IncrementalProjectBuilder.FULL_BUILD, PluginProject.SCHEMA_BUILDER_ID, null, iterationMonitor.split(1)); } - } else if (projectToBuild.hasNature(PDE.FEATURE_NATURE) && hasBuilder(commands,"org.eclipse.pde.FeatureBuilder")) { //$NON-NLS-1$ - if (fBuilders.contains(PDE.FEATURE_BUILDER_ID)) { - projectToBuild.build(IncrementalProjectBuilder.FULL_BUILD, PDE.FEATURE_BUILDER_ID, null, + } else if (FeatureProject.isFeatureProject(projectToBuild) + && hasBuilder(commands, FeatureProject.BUILDER_ID)) { + if (fBuilders.contains(FeatureProject.BUILDER_ID)) { + projectToBuild.build(IncrementalProjectBuilder.FULL_BUILD, FeatureProject.BUILDER_ID, null, iterationMonitor.split(2)); } } diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/ProjectSelectionDialog.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/ProjectSelectionDialog.java index 4a53ffa5dd..0653c9f3b6 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/ProjectSelectionDialog.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/preferences/ProjectSelectionDialog.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2018 IBM Corporation and others. + * Copyright (c) 2008, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -30,7 +30,7 @@ import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ui.IHelpContextIds; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.PDEUIMessages; @@ -62,7 +62,7 @@ public Object[] getChildren(Object element) { try { IJavaProject[] projects = model.getJavaProjects(); for (IJavaProject project : projects) { - if (project.getProject().hasNature(PDE.PLUGIN_NATURE)) { + if (PluginProject.isPluginProject(project.getProject())) { set.add(project); } } diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/BundleProjectConfigurator.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/BundleProjectConfigurator.java index c2c1eabf2c..fe31d57d4a 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/BundleProjectConfigurator.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/BundleProjectConfigurator.java @@ -38,7 +38,7 @@ import org.eclipse.pde.core.build.IBuildEntry; import org.eclipse.pde.internal.core.ClasspathComputer; import org.eclipse.pde.internal.core.ICoreConstants; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.project.PDEProject; import org.eclipse.pde.internal.core.util.CoreUtility; import org.eclipse.pde.internal.ui.PDEPlugin; @@ -62,13 +62,13 @@ public boolean canConfigure(IProject project, Set ignoredDirectories, IPr @Override public void configure(IProject project, Set ignoredDirectories, IProgressMonitor monitor) { - if (PDE.hasPluginNature(project)) { + if (PluginProject.isPluginProject(project)) { // already configured, nothing else to do return; } try { - CoreUtility.addNatureToProject(project, PDE.PLUGIN_NATURE, monitor); - if (project.hasNature(JavaCore.NATURE_ID)) { + CoreUtility.addNatureToProject(project, PluginProject.NATURE, monitor); + if (PluginProject.isJavaProject(project)) { return; } } catch (CoreException ex) { diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/FeatureProjectConfigurator.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/FeatureProjectConfigurator.java index 8ae171a936..0ea7838aa8 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/FeatureProjectConfigurator.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/FeatureProjectConfigurator.java @@ -25,7 +25,7 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.pde.internal.core.ICoreConstants; import org.eclipse.pde.internal.core.feature.WorkspaceFeatureModel; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.FeatureProject; import org.eclipse.pde.internal.core.util.CoreUtility; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.ui.wizards.datatransfer.ProjectConfigurator; @@ -45,9 +45,9 @@ public boolean canConfigure(IProject project, Set ignoredDirectories, IPr @Override public void configure(IProject project, Set ignoredDirectories, IProgressMonitor monitor) { - if (!PDE.hasFeatureNature(project)) { + if (!FeatureProject.isFeatureProject(project)) { try { - CoreUtility.addNatureToProject(project, PDE.FEATURE_NATURE, monitor); + CoreUtility.addNatureToProject(project, FeatureProject.NATURE, monitor); } catch (CoreException ex) { PDEPlugin.log(ex); } diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/AbstractCreateFeatureOperation.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/AbstractCreateFeatureOperation.java index 81b651d17b..a3ce76d632 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/AbstractCreateFeatureOperation.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/feature/AbstractCreateFeatureOperation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2015 IBM Corporation and others. + * Copyright (c) 2005, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -37,7 +37,7 @@ import org.eclipse.pde.internal.core.ifeature.IFeature; import org.eclipse.pde.internal.core.ifeature.IFeatureInfo; import org.eclipse.pde.internal.core.ifeature.IFeatureInstallHandler; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.FeatureProject; import org.eclipse.pde.internal.core.project.PDEProject; import org.eclipse.pde.internal.core.util.CoreUtility; import org.eclipse.pde.internal.ui.IPDEUIConstants; @@ -105,8 +105,8 @@ private void createProject(IProgressMonitor monitor) throws CoreException { fProject.open(monitor); IProjectDescription desc = fProject.getWorkspace().newProjectDescription(fProject.getName()); desc.setLocation(fLocation); - if (!fProject.hasNature(PDE.FEATURE_NATURE)) - CoreUtility.addNatureToProject(fProject, PDE.FEATURE_NATURE, monitor); + if (!FeatureProject.isFeatureProject(fProject)) + CoreUtility.addNatureToProject(fProject, FeatureProject.NATURE, monitor); if (fFeatureData.hasCustomHandler()) { if (!fProject.hasNature(JavaCore.NATURE_ID)) diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/FeatureImportOperation.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/FeatureImportOperation.java index 4fd3cbe1a5..3efddc8eba 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/FeatureImportOperation.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/FeatureImportOperation.java @@ -44,7 +44,7 @@ import org.eclipse.pde.internal.core.ifeature.IFeatureInstallHandler; import org.eclipse.pde.internal.core.ifeature.IFeatureModel; import org.eclipse.pde.internal.core.ifeature.IFeaturePlugin; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.FeatureProject; import org.eclipse.pde.internal.core.project.PDEProject; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.PDEUIMessages; @@ -206,9 +206,9 @@ private boolean queryReplace(IProject project) throws OperationCanceledException private void setProjectNatures(IProject project, IFeatureModel model, SubMonitor subMonitor) throws CoreException { IProjectDescription desc = project.getDescription(); if (needsJavaNature(model)) { - desc.setNatureIds(new String[] {JavaCore.NATURE_ID, PDE.FEATURE_NATURE}); + desc.setNatureIds(new String[] {JavaCore.NATURE_ID, FeatureProject.NATURE}); } else { - desc.setNatureIds(new String[] {PDE.FEATURE_NATURE}); + desc.setNatureIds(new String[] {FeatureProject.NATURE}); } subMonitor.setWorkRemaining(1); project.setDescription(desc, subMonitor.split(1)); diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/PluginImportOperation.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/PluginImportOperation.java index 38dac850c8..0da803e66e 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/PluginImportOperation.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/imports/PluginImportOperation.java @@ -70,7 +70,7 @@ import org.eclipse.pde.internal.core.build.WorkspaceBuildModel; import org.eclipse.pde.internal.core.bundle.WorkspaceBundleModel; import org.eclipse.pde.internal.core.ibundle.IBundle; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.project.PDEProject; import org.eclipse.pde.internal.core.util.CoreUtility; import org.eclipse.pde.internal.ui.PDEPlugin; @@ -1261,8 +1261,8 @@ private boolean needsJavaNature(IProject project, IPluginModelBase model) { private void setProjectNatures(IProject project, IPluginModelBase model) throws CoreException { IProjectDescription desc = project.getDescription(); - if (!desc.hasNature(PDE.PLUGIN_NATURE)) { - CoreUtility.addNatureToProject(project, PDE.PLUGIN_NATURE, null); + if (!desc.hasNature(PluginProject.NATURE)) { + CoreUtility.addNatureToProject(project, PluginProject.NATURE, null); } if (!desc.hasNature(JavaCore.NATURE_ID) && needsJavaNature(project, model)) { CoreUtility.addNatureToProject(project, JavaCore.NATURE_ID, null); diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/NewLibraryPluginCreationOperation.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/NewLibraryPluginCreationOperation.java index 9dd946f985..cb410c79e9 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/NewLibraryPluginCreationOperation.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/NewLibraryPluginCreationOperation.java @@ -75,7 +75,7 @@ import org.eclipse.pde.internal.core.bundle.BundlePluginBase; import org.eclipse.pde.internal.core.ibundle.IBundle; import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.plugin.WorkspacePluginModelBase; import org.eclipse.pde.internal.core.project.PDEProject; import org.eclipse.pde.internal.ui.PDEPlugin; @@ -220,7 +220,7 @@ private static boolean isPluginProjectEntry(IClasspathEntry entry) { return false; IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); IProject other = workspaceRoot.getProject(entry.getPath().segment(0)); - if (!PDE.hasPluginNature(other)) + if (!PluginProject.isPluginProject(other)) return false; if (PDEProject.getFragmentXml(other).exists()) return false; diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/NewLibraryPluginCreationUpdateRefPage.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/NewLibraryPluginCreationUpdateRefPage.java index b839f159aa..225cc9d739 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/NewLibraryPluginCreationUpdateRefPage.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/NewLibraryPluginCreationUpdateRefPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2018 IBM Corporation and others. + * Copyright (c) 2008, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -22,8 +22,6 @@ import java.util.Set; import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jdt.core.JavaCore; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.viewers.CheckboxTableViewer; import org.eclipse.jface.viewers.IStructuredContentProvider; @@ -31,6 +29,7 @@ import org.eclipse.jface.wizard.WizardPage; import org.eclipse.pde.core.plugin.IPluginModelBase; import org.eclipse.pde.core.plugin.PluginRegistry; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ui.IHelpContextIds; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.PDEUIMessages; @@ -133,13 +132,10 @@ public void createControl(Composite parent) { private void computeUnmigrated() { IPluginModelBase[] models = PluginRegistry.getWorkspaceModels(); ArrayList modelArray = new ArrayList<>(); - try { - for (IPluginModelBase model : models) { - if (model.getUnderlyingResource().getProject().hasNature(JavaCore.NATURE_ID)) - modelArray.add(model); + for (IPluginModelBase model : models) { + if (PluginProject.isJavaProject(model.getUnderlyingResource().getProject())) { + modelArray.add(model); } - } catch (CoreException e) { - PDEPlugin.logException(e); } fUnmigrated = modelArray.toArray(new IPluginModelBase[modelArray.size()]); } diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/NewProjectCreationOperation.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/NewProjectCreationOperation.java index f1a8fbb0b9..57faee4b1a 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/NewProjectCreationOperation.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/plugin/NewProjectCreationOperation.java @@ -69,7 +69,7 @@ import org.eclipse.pde.internal.core.ibundle.IBundlePluginBase; import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase; import org.eclipse.pde.internal.core.natures.BndProject; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.plugin.WorkspaceFragmentModel; import org.eclipse.pde.internal.core.plugin.WorkspacePluginModel; import org.eclipse.pde.internal.core.plugin.WorkspacePluginModelBase; @@ -371,7 +371,7 @@ private IProject createProject() throws CoreException { if (isAutomaticMetadata()) { CoreUtility.addNatureToProject(project, BndProject.NATURE_ID, null); } else { - CoreUtility.addNatureToProject(project, PDE.PLUGIN_NATURE, null); + CoreUtility.addNatureToProject(project, PluginProject.NATURE, null); } if (!fData.isSimple() && !project.hasNature(JavaCore.NATURE_ID)) CoreUtility.addNatureToProject(project, JavaCore.NATURE_ID, null); diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/site/NewSiteProjectCreationOperation.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/site/NewSiteProjectCreationOperation.java index 1f226e8162..e4d6cb921a 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/site/NewSiteProjectCreationOperation.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/site/NewSiteProjectCreationOperation.java @@ -26,7 +26,7 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.SiteProject; import org.eclipse.pde.internal.core.site.WorkspaceSiteModel; import org.eclipse.pde.internal.core.util.CoreUtility; import org.eclipse.pde.internal.ui.IPDEUIConstants; @@ -63,7 +63,7 @@ protected void execute(IProgressMonitor monitor) throws CoreException, Invocatio CoreUtility.createProject(fProject, fPath, monitor); fProject.open(monitor); - CoreUtility.addNatureToProject(fProject, PDE.SITE_NATURE, monitor); + CoreUtility.addNatureToProject(fProject, SiteProject.NATURE, monitor); monitor.worked(1); if (fWebLocation != null) { diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertAutomaticManifestAction.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertAutomaticManifestAction.java index 7090c9bec5..e659bc33b8 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertAutomaticManifestAction.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertAutomaticManifestAction.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Christoph Läubrich and others. + * Copyright (c) 2023, 2024 Christoph Läubrich and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -26,7 +26,7 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation; import org.eclipse.pde.internal.core.natures.BndProject; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.PDEUIMessages; import org.eclipse.ui.PlatformUI; @@ -45,7 +45,7 @@ public Object execute(ExecutionEvent event) throws ExecutionException { if (HandlerUtil.getCurrentSelection(event) instanceof IStructuredSelection selection) { List projects = selection.stream().map(ConvertAutomaticManifestAction::toProject) .filter(Objects::nonNull) - .filter(proj -> PDE.hasPluginNature(proj)) + .filter(PluginProject::isJavaProject) .filter(proj -> !BndProject.isBndProject(proj)).toList(); if (projects.isEmpty()) { MessageDialog.openInformation(PDEPlugin.getActiveWorkbenchShell(), diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertJarsAction.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertJarsAction.java index 4b7ea6f442..cca3069d77 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertJarsAction.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertJarsAction.java @@ -35,7 +35,7 @@ import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.wizards.plugin.NewLibraryPluginProjectWizard; import org.eclipse.swt.widgets.Display; @@ -108,7 +108,7 @@ public void selectionChanged(IAction action, ISelection s) { try { IPackageFragmentRoot packageFragment = (IPackageFragmentRoot) obj; if (packageFragment.getKind() == IPackageFragmentRoot.K_BINARY) { - if (PDE.hasPluginNature(packageFragment.getJavaProject().getProject())) { + if (PluginProject.isPluginProject(packageFragment.getJavaProject().getProject())) { if (packageFragment.getRawClasspathEntry().getEntryKind() == IClasspathEntry.CPE_LIBRARY) continue; } diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertProjectToPluginOperation.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertProjectToPluginOperation.java index 6a86d92f86..c5c1f5e58a 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertProjectToPluginOperation.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertProjectToPluginOperation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2020 IBM Corporation and others. + * Copyright (c) 2007, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -45,7 +45,7 @@ import org.eclipse.pde.internal.core.bundle.WorkspaceBundlePluginModel; import org.eclipse.pde.internal.core.ibundle.IBundle; import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.core.project.PDEProject; import org.eclipse.pde.internal.core.util.CoreUtility; import org.eclipse.pde.internal.core.util.IdUtil; @@ -118,11 +118,11 @@ private void convertProject(IProject projectToConvert, IProgressMonitor monitor) } // Nature check - do we need to do anything at all? - if (projectToConvert.hasNature(PDE.PLUGIN_NATURE)) { + if (PluginProject.isPluginProject(projectToConvert)) { return; } - CoreUtility.addNatureToProject(projectToConvert, PDE.PLUGIN_NATURE, monitor); + CoreUtility.addNatureToProject(projectToConvert, PluginProject.NATURE, monitor); // Setup API Tooling, which requires the java nature if (enableApiAnalysis) { if (!projectToConvert.hasNature(JavaCore.NATURE_ID)) { diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertProjectsAction.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertProjectsAction.java index 10f57cf4c8..440a3b6834 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertProjectsAction.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/ConvertProjectsAction.java @@ -24,7 +24,9 @@ import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.FeatureProject; +import org.eclipse.pde.internal.core.natures.PluginProject; +import org.eclipse.pde.internal.core.natures.SiteProject; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.PDEUIMessages; import org.eclipse.swt.custom.BusyIndicator; @@ -89,9 +91,11 @@ public Display getDisplay() { private IProject[] getUnconvertedProjects() { ArrayList unconverted = new ArrayList<>(); IProject[] projects = PDEPlugin.getWorkspace().getRoot().getProjects(); - for (int i = 0; i < projects.length; i++) { - if (projects[i].isOpen() && !PDE.hasPluginNature(projects[i]) && !PDE.hasFeatureNature(projects[i]) && !PDE.hasUpdateSiteNature(projects[i]) && projects[i].getName().indexOf('%') == -1 && projects[i].getLocation().toString().indexOf('%') == -1) - unconverted.add(projects[i]); + for (IProject project : projects) { + if (project.isOpen() && !PluginProject.isPluginProject(project) && !FeatureProject.isFeatureProject(project) + && !SiteProject.isSiteProject(project) && project.getName().indexOf('%') == -1 + && project.getLocation().toString().indexOf('%') == -1) + unconverted.add(project); } return unconverted.toArray(new IProject[unconverted.size()]); } diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/OrganizeManifestsWizard.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/OrganizeManifestsWizard.java index 27f3763efb..aa139ecfff 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/OrganizeManifestsWizard.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/OrganizeManifestsWizard.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2015 IBM Corporation and others. + * Copyright (c) 2005, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -25,9 +25,9 @@ import org.eclipse.pde.core.build.IBuildModel; import org.eclipse.pde.core.plugin.IPluginModelBase; import org.eclipse.pde.core.plugin.PluginRegistry; -import org.eclipse.pde.core.project.IBundleProjectDescription; import org.eclipse.pde.internal.build.IBuildPropertiesConstants; import org.eclipse.pde.internal.core.PDECore; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.PDEPluginImages; import org.eclipse.pde.internal.ui.PDEUIMessages; @@ -75,7 +75,7 @@ protected void addUserInputPages() { if (element instanceof IResource) { IProject project = ((IResource) element).getProject(); if (project != null) { - if (project.hasNature(IBundleProjectDescription.PLUGIN_NATURE)) { + if (PluginProject.isPluginProject(project)) { IPluginModelBase pluginModel = PDECore.getDefault().getModelManager().findModel(project); if (pluginModel != null) { IBuildModel buildModel = PluginRegistry.createBuildModel(pluginModel); diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/UpdateClasspathAction.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/UpdateClasspathAction.java index 23a8e84487..5a7b169a6f 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/UpdateClasspathAction.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/UpdateClasspathAction.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2015 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -20,9 +20,7 @@ import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.JavaCore; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; @@ -30,6 +28,7 @@ import org.eclipse.pde.core.plugin.IPluginModelBase; import org.eclipse.pde.core.plugin.PluginRegistry; import org.eclipse.pde.internal.core.WorkspaceModelManager; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.PDEUIMessages; import org.eclipse.swt.custom.BusyIndicator; @@ -61,15 +60,11 @@ public Object execute(ExecutionEvent event) throws ExecutionException { } else if (elem instanceof IJavaProject) { project = ((IJavaProject) elem).getProject(); } - try { - if (project != null && WorkspaceModelManager.isPluginProject(project) && project.hasNature(JavaCore.NATURE_ID)) { - IPluginModelBase model = PluginRegistry.findModel(project); - if (model != null) { - models.add(model); - } + if (project != null && WorkspaceModelManager.isPluginProject(project) && PluginProject.isJavaProject(project)) { + IPluginModelBase model = PluginRegistry.findModel(project); + if (model != null) { + models.add(model); } - } catch (CoreException e) { - PDEPlugin.log(e); } } @@ -85,13 +80,10 @@ public Object execute(ExecutionEvent event) throws ExecutionException { private IPluginModelBase[] getModelsToUpdate() { IPluginModelBase[] models = PluginRegistry.getWorkspaceModels(); ArrayList modelArray = new ArrayList<>(); - try { - for (IPluginModelBase model : models) { - if (model.getUnderlyingResource().getProject().hasNature(JavaCore.NATURE_ID)) - modelArray.add(model); + for (IPluginModelBase model : models) { + if (PluginProject.isJavaProject(model.getUnderlyingResource().getProject())) { + modelArray.add(model); } - } catch (CoreException e) { - PDEPlugin.logException(e); } return modelArray.toArray(new IPluginModelBase[modelArray.size()]); } diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/change/BndProjectUpdateChange.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/change/BndProjectUpdateChange.java index 1ba8c0b22d..febc3959f7 100644 --- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/change/BndProjectUpdateChange.java +++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/tools/change/BndProjectUpdateChange.java @@ -27,7 +27,7 @@ import org.eclipse.ltk.core.refactoring.RefactoringStatus; import org.eclipse.pde.core.project.IBundleProjectDescription; import org.eclipse.pde.internal.core.natures.BndProject; -import org.eclipse.pde.internal.core.natures.PDE; +import org.eclipse.pde.internal.core.natures.PluginProject; import org.eclipse.pde.internal.ui.PDEUIMessages; public final class BndProjectUpdateChange extends Change { @@ -73,7 +73,7 @@ public Change perform(IProgressMonitor pm) throws CoreException { }).toArray(String[]::new); } ICommand[] commands = Stream.concat(Arrays.stream(description.getBuildSpec()).filter(command -> { - if (PDE.MANIFEST_BUILDER_ID.equals(command.getBuilderName()) + if (PluginProject.MANIFEST_BUILDER_ID.equals(command.getBuilderName()) || "org.eclipse.pde.SchemaBuilder".equals(command.getBuilderName())) { //$NON-NLS-1$ return false; }