Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 38557 Details for
Bug 135976
Enhance PDE support for extension points specifying a namespace
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
fix
bug135976.txt (text/plain), 18.11 KB, created by
Brian Bauman
on 2006-04-13 18:00:28 EDT
(
hide
)
Description:
fix
Filename:
MIME Type:
Creator:
Brian Bauman
Created:
2006-04-13 18:00:28 EDT
Size:
18.11 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.pde.ui >Index: src/org/eclipse/pde/internal/ui/wizards/extension/NewExtensionPointMainPage.java >=================================================================== >RCS file: /home/eclipse/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/extension/NewExtensionPointMainPage.java,v >retrieving revision 1.18 >diff -u -r1.18 NewExtensionPointMainPage.java >--- src/org/eclipse/pde/internal/ui/wizards/extension/NewExtensionPointMainPage.java 3 Apr 2006 19:47:20 -0000 1.18 >+++ src/org/eclipse/pde/internal/ui/wizards/extension/NewExtensionPointMainPage.java 13 Apr 2006 21:43:32 -0000 >@@ -18,6 +18,8 @@ > import org.eclipse.pde.core.plugin.IPluginBase; > import org.eclipse.pde.core.plugin.IPluginExtensionPoint; > import org.eclipse.pde.core.plugin.IPluginModelBase; >+import org.eclipse.pde.internal.core.PDECore; >+import org.eclipse.pde.internal.core.util.IdUtil; > import org.eclipse.pde.internal.ui.PDEPlugin; > import org.eclipse.pde.internal.ui.PDEUIMessages; > import org.eclipse.swt.widgets.Composite; >@@ -98,4 +100,27 @@ > if (fSchemaText!= null && point.getSchema()!=null) > fSchemaText.setText(point.getSchema()); > } >+ public String getInvalidIdMessage() { >+ String schemaVersion = model.getPluginBase().getSchemaVersion(); >+ String id = fIdText.getText(); >+ if (schemaVersion == null || Float.parseFloat(schemaVersion) >= 3.2) { >+ if (!IdUtil.isValidCompositeID(id)) >+ return PDEUIMessages.NewExtensionPointMainPage_malformedId; >+ else if (!isValidNamespace(id)) >+ return PDEUIMessages.NewExtensionPointMainPage_namespaceNotFound; >+ return null; >+ } >+ return IdUtil.isValidSimpleID(id) ? null : PDEUIMessages.BaseExtensionPoint_malformedId; >+ } >+ protected final boolean isValidNamespace(String id) { >+ int index = id.lastIndexOf('.'); >+ if (index > 0) { >+ String pluginId = id.substring(0, index); >+ return PDECore.getDefault().getModelManager().findEntry(pluginId) != null; >+ } >+ return true; >+ } >+ protected boolean isComplete() { >+ return IdUtil.isValidCompositeID(fIdText.getText()); >+ } > } >Index: src/org/eclipse/pde/internal/ui/wizards/extension/BaseExtensionPointMainPage.java >=================================================================== >RCS file: /home/eclipse/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/wizards/extension/BaseExtensionPointMainPage.java,v >retrieving revision 1.40 >diff -u -r1.40 BaseExtensionPointMainPage.java >--- src/org/eclipse/pde/internal/ui/wizards/extension/BaseExtensionPointMainPage.java 3 Apr 2006 19:47:20 -0000 1.40 >+++ src/org/eclipse/pde/internal/ui/wizards/extension/BaseExtensionPointMainPage.java 13 Apr 2006 21:43:32 -0000 >@@ -45,7 +45,6 @@ > import org.eclipse.pde.internal.core.schema.SchemaRootElement; > import org.eclipse.pde.internal.core.schema.SchemaSimpleType; > import org.eclipse.pde.internal.core.util.CoreUtility; >-import org.eclipse.pde.internal.core.util.IdUtil; > import org.eclipse.pde.internal.ui.IHelpContextIds; > import org.eclipse.pde.internal.ui.IPDEUIConstants; > import org.eclipse.pde.internal.ui.PDEPlugin; >@@ -380,9 +379,6 @@ > } > public boolean checkFieldsFilled() { > boolean empty = fIdText.getText().length() == 0 || fNameText.getText().length() == 0; >- if (!empty) { >- empty = !IdUtil.isValidSimpleID(fIdText.getText()); >- } > if (!empty && isPluginIdNeeded()) { > empty = getPluginId().length() == 0 || fSchemaText.getText().length() == 0 ; > } >@@ -391,24 +387,18 @@ > return !empty; > } > >- public boolean isInvalidValidId() { >- return fIdText.getText().length()>0 && !IdUtil.isValidSimpleID(fIdText.getText()); >- } >- > private void validatePage() { > if (!validateContainer()) > return; > boolean isFilled = checkFieldsFilled(); >- String message = null; >- if (isInvalidValidId()) >- message = PDEUIMessages.BaseExtensionPoint_malformedId; >- else if (!isFilled) { >+ String message = getInvalidIdMessage(); >+ if (message == null && !isFilled) { > if (isPluginIdNeeded()) > message = PDEUIMessages.BaseExtensionPoint_missingId; > else > message = PDEUIMessages.BaseExtensionPoint_noPlugin_missingId; > } >- setPageComplete(isFilled); >+ setPageComplete(isFilled && isComplete()); > setMessage(message, IMessageProvider.WARNING); > } > private boolean validateContainer() { >@@ -486,4 +476,11 @@ > path = path.replaceFirst(workspacePath, ""); //$NON-NLS-1$ > return path; > } >+ public String getInvalidIdMessage() { >+ // No validation done (other than making sure id is not blank) >+ return null; >+ } >+ protected boolean isComplete() { >+ return true; >+ } > } >Index: src/org/eclipse/pde/internal/ui/pderesources.properties >=================================================================== >RCS file: /home/eclipse/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/pderesources.properties,v >retrieving revision 1.694 >diff -u -r1.694 pderesources.properties >--- src/org/eclipse/pde/internal/ui/pderesources.properties 13 Apr 2006 18:15:44 -0000 1.694 >+++ src/org/eclipse/pde/internal/ui/pderesources.properties 13 Apr 2006 21:43:30 -0000 >@@ -1029,7 +1029,7 @@ > BaseExtensionPoint_name = Extension Point &Name: > BaseExtensionPoint_missingId = Plug-in ID and Extension Point properties must be set > BaseExtensionPoint_noPlugin_missingId = Extension Point ID and Name must be set. >-BaseExtensionPoint_malformedId = Extension Point ID contains invalid characters. Legal characters are "a-z", "A-Z", "0-9", and "_". >+BaseExtensionPoint_malformedId = Extension Point ID is invalid. Legal characters are "a-z", "A-Z", "0-9", and "_". > BaseWizardSelectionPage_noDesc=No Description available. > BaseExtensionPoint_schema = Extension Point &Schema: > BaseExtensionPoint_schemaLocation = C&ontainer: >@@ -1068,9 +1068,11 @@ > NewExtensionWizard_desc = Choose a wizard that will guide you through the new extension creation > NewExtensionWizard_statusMessage = Select a wizard to create new extension > NewExtensionWizard_PointSelectionPage_title = Extension Point Selection >+NewExtensionPointMainPage_namespaceNotFound=Extension Point namespace does not exist in the workspace. > NewExtensionWizard_PointSelectionPage_desc = Select an extension point from those available in the list. > NewExtensionRegistryReader_missingProperty=Cannot create category: id or name is missing > NewExtensionTemplateWizard_generating=Generating content... >+NewExtensionPointMainPage_malformedId=Extension Point ID is invalid. Legal characters are "a-z", "A-Z", "0-9", ".", and "_". > NewExtensionWizard_PointSelectionPage_filterCheck = &Show only extension points from the required plug-ins > NewExtensionWizard_PointSelectionPage_descButton = &Details > NewExtensionWizard_PointSelectionPage_dependencyTitle = New plug-in dependency >Index: src/org/eclipse/pde/internal/ui/PDEUIMessages.java >=================================================================== >RCS file: /home/eclipse/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDEUIMessages.java,v >retrieving revision 1.162 >diff -u -r1.162 PDEUIMessages.java >--- src/org/eclipse/pde/internal/ui/PDEUIMessages.java 13 Apr 2006 18:15:44 -0000 1.162 >+++ src/org/eclipse/pde/internal/ui/PDEUIMessages.java 13 Apr 2006 21:43:26 -0000 >@@ -23,6 +23,10 @@ > > public static String MainPreferencePage_updateStale; > >+ public static String NewExtensionPointMainPage_malformedId; >+ >+ public static String NewExtensionPointMainPage_namespaceNotFound; >+ > public static String RevertUnsupportSingletonResolution_desc; > > public static String AddLibraryDialog_emptyLibraries; >#P org.eclipse.pde.core >Index: src/org/eclipse/pde/internal/core/PDEManager.java >=================================================================== >RCS file: /home/eclipse/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDEManager.java,v >retrieving revision 1.3 >diff -u -r1.3 PDEManager.java >--- src/org/eclipse/pde/internal/core/PDEManager.java 8 Oct 2005 07:13:35 -0000 1.3 >+++ src/org/eclipse/pde/internal/core/PDEManager.java 13 Apr 2006 21:43:34 -0000 >@@ -16,7 +16,9 @@ > import org.eclipse.core.resources.IProject; > import org.eclipse.osgi.service.resolver.BundleDescription; > import org.eclipse.osgi.service.resolver.HostSpecification; >+import org.eclipse.pde.core.plugin.IExtensions; > import org.eclipse.pde.core.plugin.IFragmentModel; >+import org.eclipse.pde.core.plugin.IPluginExtensionPoint; > import org.eclipse.pde.core.plugin.IPluginModel; > import org.eclipse.pde.core.plugin.IPluginModelBase; > import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase; >@@ -100,5 +102,20 @@ > > return "plugin"; //$NON-NLS-1$ > } >+ >+ public static IPluginExtensionPoint findExtensionPoint(String fullID) { >+ IPluginModelBase[] bases = PDECore.getDefault().getModelManager().getAllPlugins(); >+ for (int i = 0; i < bases.length; i++) { >+ IExtensions extensions = bases[i].getExtensions(); >+ if (extensions == null) >+ continue; >+ IPluginExtensionPoint[] points = extensions.getExtensionPoints(); >+ for (int j = 0; j < points.length; j++) { >+ if (fullID.equals(points[j].getFullId())) >+ return points[j]; >+ } >+ } >+ return null; >+ } > > } >Index: src/org/eclipse/pde/internal/core/pderesources.properties >=================================================================== >RCS file: /home/eclipse/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/pderesources.properties,v >retrieving revision 1.46 >diff -u -r1.46 pderesources.properties >--- src/org/eclipse/pde/internal/core/pderesources.properties 12 Apr 2006 23:55:37 -0000 1.46 >+++ src/org/eclipse/pde/internal/core/pderesources.properties 13 Apr 2006 21:43:35 -0000 >@@ -78,6 +78,7 @@ > Builders_Manifest_compositeID = Illegal value ''{0}'' for attribute ''{1}''. Legal token characters are "a-z", "A-Z", "0-9", "_". Tokens must be separated by "." > Builders_Manifest_simpleID = Illegal value ''{0}'' for attribute "id". Legal characters are "a-z", "A-Z", "0-9", and "_" > Builders_Manifest_non_ext_attribute = The value for attribute ''{0}'' is not externalized. The value must begin with % >+Builders_Manifest_namespaceNotFound=The namespace for extension point ''{0}'' does not currently exist > BuildErrorReporter_dirsMustEndSlash={0}: directory entries must end with ''/'' ("{0}/") > Builders_Manifest_dont_translate_att = The value for attribute ''{0}'' should not be translated > Builders_Manifest_non_ext_element = The content for element ''{0}'' is not externalized. The content must begin with % >Index: src/org/eclipse/pde/internal/core/PDECore.java >=================================================================== >RCS file: /home/eclipse/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDECore.java,v >retrieving revision 1.93 >diff -u -r1.93 PDECore.java >--- src/org/eclipse/pde/internal/core/PDECore.java 3 Apr 2006 19:48:19 -0000 1.93 >+++ src/org/eclipse/pde/internal/core/PDECore.java 13 Apr 2006 21:43:33 -0000 >@@ -223,7 +223,7 @@ > String pluginID = fullID.substring(0, lastDot); > IPlugin plugin = findPlugin(pluginID); > if (plugin == null) >- return null; >+ return PDEManager.findExtensionPoint(fullID); > String pointID = fullID.substring(lastDot + 1); > IPluginExtensionPoint[] points = plugin.getExtensionPoints(); > for (int i = 0; i < points.length; i++) { >@@ -238,7 +238,7 @@ > if (points[j].getId().equals(pointID)) > return points[j]; > } >- return null; >+ return PDEManager.findExtensionPoint(fullID); > } > > private IFeature findFeature( >Index: src/org/eclipse/pde/internal/core/PDECoreMessages.java >=================================================================== >RCS file: /home/eclipse/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PDECoreMessages.java,v >retrieving revision 1.16 >diff -u -r1.16 PDECoreMessages.java >--- src/org/eclipse/pde/internal/core/PDECoreMessages.java 11 Apr 2006 05:21:12 -0000 1.16 >+++ src/org/eclipse/pde/internal/core/PDECoreMessages.java 13 Apr 2006 21:43:33 -0000 >@@ -17,6 +17,8 @@ > > public static String BaseExportTask_pdeExport; > >+ public static String Builders_Manifest_namespaceNotFound; >+ > public static String BundleErrorReporter_badFilter; > > public static String BundleErrorReporter_unresolvedExporter; >Index: src/org/eclipse/pde/internal/core/schema/Schema.java >=================================================================== >RCS file: /home/eclipse/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/schema/Schema.java,v >retrieving revision 1.50 >diff -u -r1.50 Schema.java >--- src/org/eclipse/pde/internal/core/schema/Schema.java 3 Apr 2006 19:48:17 -0000 1.50 >+++ src/org/eclipse/pde/internal/core/schema/Schema.java 13 Apr 2006 21:43:37 -0000 >@@ -960,22 +960,15 @@ > } > > public void write(String indent, PrintWriter writer) { >- String pointId = getQualifiedPointId(); >- int loc = pointId.lastIndexOf('.'); >- String pluginId = ""; //$NON-NLS-1$ >- if (loc != -1) { >- pluginId = pointId.substring(0, loc); >- pointId = pointId.substring(loc + 1); >- } > writer.println("<?xml version='1.0' encoding='UTF-8'?>"); //$NON-NLS-1$ > writer.println("<!-- Schema file written by PDE -->"); //$NON-NLS-1$ >- writer.println("<schema targetNamespace=\"" + pluginId + "\">"); //$NON-NLS-1$ //$NON-NLS-2$ >+ writer.println("<schema targetNamespace=\"" + fPluginID + "\">"); //$NON-NLS-1$ //$NON-NLS-2$ > String indent2 = INDENT + INDENT; > String indent3 = indent2 + INDENT; > writer.println(indent + "<annotation>"); //$NON-NLS-1$ > writer.println(indent2 + "<appInfo>"); //$NON-NLS-1$ >- writer.print(indent3 + "<meta.schema plugin=\"" + pluginId + "\""); //$NON-NLS-1$ //$NON-NLS-2$ >- writer.print(" id=\"" + pointId + "\""); //$NON-NLS-1$ //$NON-NLS-2$ >+ writer.print(indent3 + "<meta.schema plugin=\"" + fPluginID + "\""); //$NON-NLS-1$ //$NON-NLS-2$ >+ writer.print(" id=\"" + fPointID + "\""); //$NON-NLS-1$ //$NON-NLS-2$ > writer.println(" name=\"" + getName() + "\"/>"); //$NON-NLS-1$ //$NON-NLS-2$ > writer.println(indent2 + "</appInfo>"); //$NON-NLS-1$ > writer.println(indent2 + "<documentation>"); //$NON-NLS-1$ >Index: src/org/eclipse/pde/internal/core/builders/ExtensionsErrorReporter.java >=================================================================== >RCS file: /home/eclipse/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/builders/ExtensionsErrorReporter.java,v >retrieving revision 1.6 >diff -u -r1.6 ExtensionsErrorReporter.java >--- src/org/eclipse/pde/internal/core/builders/ExtensionsErrorReporter.java 3 Apr 2006 19:48:18 -0000 1.6 >+++ src/org/eclipse/pde/internal/core/builders/ExtensionsErrorReporter.java 13 Apr 2006 21:43:36 -0000 >@@ -301,8 +301,20 @@ > String message = null; > if (schemaVersion < 3.2 && !IdUtil.isValidSimpleID(idAttr.getValue())) > message = NLS.bind(PDECoreMessages.Builders_Manifest_simpleID, idAttr.getValue()); >- else if (schemaVersion >= 3.2 && !IdUtil.isValidCompositeID(idAttr.getValue())) >- message = NLS.bind(PDECoreMessages.Builders_Manifest_compositeID, idAttr.getValue()); >+ else if (schemaVersion >= 3.2) { >+ if (!IdUtil.isValidCompositeID(idAttr.getValue())) { >+ message = NLS.bind(PDECoreMessages.Builders_Manifest_compositeID, idAttr.getValue()); >+ } else { >+ String id = idAttr.getNodeValue(); >+ int index = id.lastIndexOf('.'); >+ if (index > 0) { >+ String pluginId = id.substring(0, index); >+ if (PDECore.getDefault().getModelManager().findEntry(pluginId) == null) { >+ message = NLS.bind(PDECoreMessages.Builders_Manifest_namespaceNotFound, id); >+ } >+ } >+ } >+ } > > if (message != null) > report(message, getLine(element, idAttr.getName()), CompilerFlags.WARNING); >Index: src/org/eclipse/pde/internal/core/plugin/PluginExtensionPoint.java >=================================================================== >RCS file: /home/eclipse/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/plugin/PluginExtensionPoint.java,v >retrieving revision 1.22 >diff -u -r1.22 PluginExtensionPoint.java >--- src/org/eclipse/pde/internal/core/plugin/PluginExtensionPoint.java 3 Apr 2006 19:48:18 -0000 1.22 >+++ src/org/eclipse/pde/internal/core/plugin/PluginExtensionPoint.java 13 Apr 2006 21:43:36 -0000 >@@ -13,9 +13,13 @@ > import java.io.PrintWriter; > > import org.eclipse.core.runtime.CoreException; >+import org.eclipse.pde.core.plugin.IExtensions; > import org.eclipse.pde.core.plugin.IFragment; > import org.eclipse.pde.core.plugin.IPluginBase; > import org.eclipse.pde.core.plugin.IPluginExtensionPoint; >+import org.eclipse.pde.core.plugin.IPluginModelBase; >+import org.eclipse.pde.core.plugin.ISharedExtensionsModel; >+import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase; > import org.w3c.dom.Node; > > public class PluginExtensionPoint extends IdentifiablePluginObject >@@ -30,7 +34,31 @@ > } > > public String getFullId() { >- IPluginBase pluginBase = getPluginModel().getPluginBase(); >+ IPluginModelBase modelBase = getPluginModel(); >+ IPluginBase pluginBase = modelBase.getPluginBase(); >+ String schema = null; >+ if (modelBase instanceof IBundlePluginModelBase) { >+ try { >+ ISharedExtensionsModel exModel = ((IBundlePluginModelBase)modelBase).getExtensionsModel(); >+ IExtensions extensions = exModel.getExtensions(); >+ if (extensions instanceof AbstractExtensions) { >+ schema = ((AbstractExtensions)extensions).getSchemaVersion(); >+ if (schema == null) { >+ exModel.load(); >+ schema = ((AbstractExtensions)exModel.getExtensions()).getSchemaVersion(); >+ } >+ } else { >+ schema = (extensions instanceof IPluginBase) ? ((IPluginBase)extensions).getSchemaVersion() : null; >+ } >+ } catch (CoreException e){ >+ } >+ } else >+ schema = pluginBase.getSchemaVersion(); >+ if ("3.2".equals(schema)) { //$NON-NLS-1$ >+ String pointId = getId(); >+ if (pointId.indexOf('.') > 0) >+ return pointId; >+ } > String id = pluginBase.getId(); > if (pluginBase instanceof IFragment) > id = ((IFragment) pluginBase).getPluginId();
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 135976
: 38557