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 192131 Details for
Bug 341279
[API] Allow for external schemaLocation definitions
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
patch
341279.patch (text/plain), 57.38 KB, created by
Nick Sandonato
on 2011-03-29 16:24:11 EDT
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
Nick Sandonato
Created:
2011-03-29 16:24:11 EDT
Size:
57.38 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.wst.xml.core >Index: .options >=================================================================== >RCS file: /cvsroot/webtools/sourceediting/plugins/org.eclipse.wst.xml.core/.options,v >retrieving revision 1.4 >diff -u -r1.4 .options >--- .options 15 Feb 2007 03:36:35 -0000 1.4 >+++ .options 29 Mar 2011 20:24:06 -0000 >@@ -1,4 +1,5 @@ > org.eclipse.wst.xml.core/debug=true > org.eclipse.wst.xml.core/debug/tracefilter= > org.eclipse.wst.xml.core/debug/cmdocumentmanager=false >-org.eclipse.wst.xml.core/debug/cmdocumentcache=false >\ No newline at end of file >+org.eclipse.wst.xml.core/debug/cmdocumentcache=false >+org.eclipse.wst.xml.core/externalSchemaLocation=false >\ No newline at end of file >Index: plugin.properties >=================================================================== >RCS file: /cvsroot/webtools/sourceediting/plugins/org.eclipse.wst.xml.core/plugin.properties,v >retrieving revision 1.18 >diff -u -r1.18 plugin.properties >--- plugin.properties 29 Apr 2010 01:32:45 -0000 1.18 >+++ plugin.properties 29 Mar 2011 20:24:06 -0000 >@@ -23,5 +23,6 @@ > XMI_Content_Type=XMI > XML_Validator.name=XML Validator > XML_Validation_Error_Customizer.name=XML Validator Error Customizer Extension Point >+External_Schema_Location.name=XML External Schema Location Extension Point > _validationMarker.name=XML Problem > _taskMarker.name=XML Task >Index: plugin.xml >=================================================================== >RCS file: /cvsroot/webtools/sourceediting/plugins/org.eclipse.wst.xml.core/plugin.xml,v >retrieving revision 1.58 >diff -u -r1.58 plugin.xml >--- plugin.xml 31 Jul 2010 06:01:13 -0000 1.58 >+++ plugin.xml 29 Mar 2011 20:24:06 -0000 >@@ -4,6 +4,7 @@ > > <!-- An extension for contributing a XML validation error customizer. --> > <extension-point id="errorCustomizer" name="%XML_Validation_Error_Customizer.name" schema="schema/errorCustomizer.exsd"/> >+ <extension-point id="externalSchemaLocations" name="%External_Schema_Location.name" schema="schema/externalSchemaLocations.exsd"/> > > <extension point="org.eclipse.wst.sse.core.modelHandler"> > <modelHandler >Index: META-INF/MANIFEST.MF >=================================================================== >RCS file: /cvsroot/webtools/sourceediting/plugins/org.eclipse.wst.xml.core/META-INF/MANIFEST.MF,v >retrieving revision 1.55 >diff -u -r1.55 MANIFEST.MF >--- META-INF/MANIFEST.MF 28 Jun 2010 14:42:09 -0000 1.55 >+++ META-INF/MANIFEST.MF 29 Mar 2011 20:24:06 -0000 >@@ -6,56 +6,307 @@ > Bundle-Activator: org.eclipse.wst.xml.core.internal.XMLCorePlugin > Bundle-Vendor: %providerName > Bundle-Localization: plugin >-Export-Package: org.eclipse.wst.xml.core.internal;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.catalog;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.catalog.provisional;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.cleanup;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.commentelement;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.commentelement.impl;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.commentelement.util;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.contentmodel;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.contentmodel.annotation;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.contentmodel.basic;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.contentmodel.factory;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.contentmodel.internal.annotation;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.contentmodel.internal.modelqueryimpl;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.contentmodel.internal.util;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.contentmodel.modelquery;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.contentmodel.modelquery.extension;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.contentmodel.util;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.contenttype;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.document;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.emf2xml;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.encoding;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.formatter;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.modelhandler;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.modelquery;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.parser;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.parser.regions;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.preferences;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.propagate;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.provisional;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.provisional.contentmodel;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.provisional.contenttype;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.provisional.document;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.provisional.format;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.provisional.text;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.regions;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.search;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.search.impl;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.search.matching;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.search.quickscan;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.ssemodelquery;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.tasks;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.text;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.text.rules;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.validate;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.validation;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.validation.core;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.validation.core.logging;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.validation.eclipse;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >- org.eclipse.wst.xml.core.internal.validation.errorcustomization;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui", >+Export-Package: org.eclipse.wst.xml.core.contentmodel.modelquery, >+ org.eclipse.wst.xml.core.internal; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.catalog; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.catalog.provisional; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.cleanup; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.commentelement; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.commentelement.impl; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.commentelement.util; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.contentmodel; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.contentmodel.annotation; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.contentmodel.basic; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.contentmodel.factory; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.contentmodel.internal.annotation; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.contentmodel.internal.modelqueryimpl; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.contentmodel.internal.util; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.contentmodel.modelquery; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.contentmodel.modelquery.extension; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.contentmodel.util; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.contenttype; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.document; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.emf2xml; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.encoding; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.formatter; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.modelhandler; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.modelquery; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.parser; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.parser.regions; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.preferences; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.propagate; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.provisional; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.provisional.contentmodel; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.provisional.contenttype; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.provisional.document; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.provisional.format; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.provisional.text; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.regions; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.search; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.search.impl; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.search.matching; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.search.quickscan; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.ssemodelquery; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.tasks; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.text; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.text.rules; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.validate; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.validation; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.validation.core; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.validation.core.logging; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.validation.eclipse; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", >+ org.eclipse.wst.xml.core.internal.validation.errorcustomization; >+ x-friends:="org.eclipse.wst.dtd.core, >+ org.eclipse.wst.dtd.ui, >+ org.eclipse.wst.xml.ui, >+ org.eclipse.wst.xsd.core, >+ org.eclipse.wst.xsd.ui", > org.eclipse.wst.xml.core.text > Import-Package: com.ibm.icu.util; version="3.8", > com.ibm.icu.text; version="3.8" >Index: schema/externalSchemaLocations.exsd >=================================================================== >RCS file: schema/externalSchemaLocations.exsd >diff -N schema/externalSchemaLocations.exsd >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ schema/externalSchemaLocations.exsd 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,102 @@ >+<?xml version='1.0' encoding='UTF-8'?> >+<!-- Schema file written by PDE --> >+<schema targetNamespace="org.eclipse.wst.xml.core" xmlns="http://www.w3.org/2001/XMLSchema"> >+<annotation> >+ <appInfo> >+ <meta.schema plugin="org.eclipse.wst.xml.core" id="externalSchemaLocations" name="External Schema Locations"/> >+ </appInfo> >+ <documentation> >+ [Enter description of this extension point.] >+ </documentation> >+ </annotation> >+ >+ <element name="extension"> >+ <annotation> >+ <appInfo> >+ <meta.element /> >+ </appInfo> >+ </annotation> >+ <complexType> >+ <sequence minOccurs="1" maxOccurs="unbounded"> >+ <element ref="provider"/> >+ </sequence> >+ <attribute name="point" type="string" use="required"> >+ <annotation> >+ <documentation> >+ >+ </documentation> >+ </annotation> >+ </attribute> >+ <attribute name="id" type="string"> >+ <annotation> >+ <documentation> >+ >+ </documentation> >+ </annotation> >+ </attribute> >+ <attribute name="name" type="string"> >+ <annotation> >+ <documentation> >+ >+ </documentation> >+ <appInfo> >+ <meta.attribute translatable="true"/> >+ </appInfo> >+ </annotation> >+ </attribute> >+ </complexType> >+ </element> >+ >+ <element name="provider"> >+ <complexType> >+ <attribute name="class" type="string"> >+ <annotation> >+ <documentation> >+ >+ </documentation> >+ <appInfo> >+ <meta.attribute kind="java" basedOn=":org.eclipse.wst.xml.core.internal.contentmodel.modelquery.IExternalSchemaLocationProvider"/> >+ </appInfo> >+ </annotation> >+ </attribute> >+ </complexType> >+ </element> >+ >+ <annotation> >+ <appInfo> >+ <meta.section type="since"/> >+ </appInfo> >+ <documentation> >+ [Enter the first release in which this extension point appears.] >+ </documentation> >+ </annotation> >+ >+ <annotation> >+ <appInfo> >+ <meta.section type="examples"/> >+ </appInfo> >+ <documentation> >+ [Enter extension point usage example here.] >+ </documentation> >+ </annotation> >+ >+ <annotation> >+ <appInfo> >+ <meta.section type="apiinfo"/> >+ </appInfo> >+ <documentation> >+ [Enter API information here.] >+ </documentation> >+ </annotation> >+ >+ <annotation> >+ <appInfo> >+ <meta.section type="implementation"/> >+ </appInfo> >+ <documentation> >+ [Enter information about supplied implementation of this extension point.] >+ </documentation> >+ </annotation> >+ >+ >+</schema> >Index: src-contentmodel/org/eclipse/wst/xml/core/contentmodel/modelquery/IExternalSchemaLocationProvider.java >=================================================================== >RCS file: src-contentmodel/org/eclipse/wst/xml/core/contentmodel/modelquery/IExternalSchemaLocationProvider.java >diff -N src-contentmodel/org/eclipse/wst/xml/core/contentmodel/modelquery/IExternalSchemaLocationProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src-contentmodel/org/eclipse/wst/xml/core/contentmodel/modelquery/IExternalSchemaLocationProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,34 @@ >+/****************************************************************************** >+ * Copyright (c) 2011 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+package org.eclipse.wst.xml.core.contentmodel.modelquery; >+ >+import java.net.URI; >+import java.util.Map; >+ >+public interface IExternalSchemaLocationProvider extends org.eclipse.wst.xml.core.internal.contentmodel.modelquery.IExternalSchemaLocationProvider { >+ String SCHEMA_LOCATION = "http://apache.org/xml/properties/schema/external-schemaLocation"; //$NON-NLS-1$ >+ String NO_NAMESPACE_SCHEMA_LOCATION = "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation"; //$NON-NLS-1$ >+ >+ /** >+ * Provided the file path URI, this will return the external schema location. The schema location is associated to a specific property, >+ * which serves as the key in the map. The supported properties are: >+ * >+ * <p><b>http://apache.org/xml/properties/schema/external-schemaLocation</b> - The value for this property follows the same rules >+ * as the schemaLocation attribute for an XML document (i.e., multiple schemas are acceptable and must be white-space separated).</p> >+ * >+ * <p><b>http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation</b> - The value for this property follows the same >+ * rules as the noNamespaceSchemaLocation attribute for an XML document (i.e., only one schema is allowed). >+ * >+ * @param filePath the path for the XML file >+ * @return a {@link Map} associating the external-schemaLocation and/or external-noNamespaceSchemaLocation to the schema location >+ */ >+ Map getExternalSchemaLocation(URI fileURI); >+} >Index: src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelquery/IExternalSchemaLocationProvider.java >=================================================================== >RCS file: src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelquery/IExternalSchemaLocationProvider.java >diff -N src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelquery/IExternalSchemaLocationProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelquery/IExternalSchemaLocationProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,34 @@ >+/******************************************************************************* >+ * Copyright (c) 2011 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.wst.xml.core.internal.contentmodel.modelquery; >+ >+import java.net.URI; >+import java.util.Map; >+ >+public interface IExternalSchemaLocationProvider { >+ String SCHEMA_LOCATION = "http://apache.org/xml/properties/schema/external-schemaLocation"; //$NON-NLS-1$ >+ String NO_NAMESPACE_SCHEMA_LOCATION = "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation"; //$NON-NLS-1$ >+ >+ /** >+ * Provided the file path URI, this will return the external schema location. The schema location is associated to a specific property, >+ * which serves as the key in the map. The supported properties are: >+ * >+ * <p><b>http://apache.org/xml/properties/schema/external-schemaLocation</b> - The value for this property follows the same rules >+ * as the schemaLocation attribute for an XML document (i.e., multiple schemas are acceptable and must be white-space separated).</p> >+ * >+ * <p><b>http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation</b> - The value for this property follows the same >+ * rules as the noNamespaceSchemaLocation attribute for an XML document (i.e., only one schema is allowed). >+ * >+ * @param filePath the path for the XML file >+ * @return a {@link Map} associating the external-schemaLocation and/or external-noNamespaceSchemaLocation to the schema location >+ */ >+ Map getExternalSchemaLocation(URI fileURI); >+} >Index: src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/CMDocumentLoader.java >=================================================================== >RCS file: /cvsroot/webtools/sourceediting/plugins/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/CMDocumentLoader.java,v >retrieving revision 1.4 >diff -u -r1.4 CMDocumentLoader.java >--- src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/CMDocumentLoader.java 10 Apr 2007 20:05:39 -0000 1.4 >+++ src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/CMDocumentLoader.java 29 Mar 2011 20:24:06 -0000 >@@ -12,15 +12,27 @@ > *******************************************************************************/ > package org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl; > >+import java.io.File; >+import java.net.URI; > import java.util.ArrayList; > import java.util.Iterator; > import java.util.List; >+import java.util.Map; > >+import org.eclipse.core.resources.IFile; >+import org.eclipse.core.resources.ResourcesPlugin; >+import org.eclipse.core.runtime.IPath; >+import org.eclipse.core.runtime.Path; >+import org.eclipse.core.runtime.Platform; >+import org.eclipse.wst.sse.core.utils.StringUtils; >+import org.eclipse.wst.xml.core.internal.Logger; > import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.CMDocumentManager; >+import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.IExternalSchemaLocationProvider; > import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery; > import org.eclipse.wst.xml.core.internal.contentmodel.util.CMDocumentCache; > import org.eclipse.wst.xml.core.internal.contentmodel.util.NamespaceInfo; > import org.eclipse.wst.xml.core.internal.contentmodel.util.NamespaceTable; >+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument; > import org.w3c.dom.Document; > import org.w3c.dom.Element; > import org.w3c.dom.Node; >@@ -32,6 +44,7 @@ > */ > public class CMDocumentLoader > { >+ private final static boolean _trace = Boolean.valueOf(Platform.getDebugOption("org.eclipse.wst.xml.core/externalSchemaLocation")).booleanValue(); //$NON-NLS-1$ > protected Document document; > protected ModelQuery modelQuery; > protected CMDocumentManager cmDocumentManager; >@@ -83,17 +96,66 @@ > walkDocument = isInferredGrammarEnabled; > //System.out.println("is NOT namespaceAware"); > } >- } >+ } > } > > if (walkDocument) > { >- visitNode(document); >+ if (!checkExternalSchema()) >+ visitNode(document); > } > > //System.out.println("--- elapsed time (" + count + ") = " + (System.currentTimeMillis() - time)); > } > >+ protected boolean checkExternalSchema() { >+ boolean externalSchemaLoaded = false; >+ if (document instanceof IDOMDocument) { >+ final String baseLocation = ((IDOMDocument) document).getModel().getBaseLocation(); >+ final IPath basePath = new Path(baseLocation); >+ IFile file = null; >+ if (basePath.segmentCount() > 1) { >+ file = ResourcesPlugin.getWorkspace().getRoot().getFile(basePath); >+ } >+ final URI uri = (file == null || !file.isAccessible()) ? new File(baseLocation).toURI() : file.getLocationURI(); >+ if (uri != null) { >+ IExternalSchemaLocationProvider[] providers = ExternalSchemaLocationProviderRegistry.getInstance().getProviders(); >+ for (int i = 0; i < providers.length; i++) { >+ long time = _trace ? System.currentTimeMillis(): 0; >+ final Map locations = providers[i].getExternalSchemaLocation(uri); >+ if (_trace) { >+ long diff = System.currentTimeMillis() - time; >+ if (diff > 250) >+ Logger.log(Logger.INFO, "Schema location provider took [" + diff + "ms] for URI [" + uri + "]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ >+ } >+ if (locations != null && !locations.isEmpty()) { >+ // Use the externalSchemaLocation >+ if (namespaceTable != null && namespaceTable.isNamespaceEncountered()) { >+ final String location = locations.get(IExternalSchemaLocationProvider.SCHEMA_LOCATION).toString(); >+ if (location != null) { >+ final String[] ids = StringUtils.asArray(location); >+ // namespace : location pairs >+ if (ids.length >= 2 && ids.length % 2 == 0) { >+ if (!externalSchemaLoaded) >+ cmDocumentManager.removeAllReferences(); >+ for (int j = 0; j < ids.length; j+=2) { >+ handleGrammar(ids[j], ids[j + 1], "XSD"); //$NON-NLS-1$ >+ externalSchemaLoaded = true; >+ } >+ } >+ } >+ } >+ else { // noNamespace >+ handleGrammar(uri.toString(), locations.get(IExternalSchemaLocationProvider.NO_NAMESPACE_SCHEMA_LOCATION).toString(), "XSD"); //$NON-NLS-1$ >+ externalSchemaLoaded = true; >+ break; >+ } >+ } >+ } >+ } >+ } >+ return externalSchemaLoaded; >+ } > > public boolean handleGrammar(String publicId, String systemId, String type) > { >Index: src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/ExternalSchemaLocationProviderRegistry.java >=================================================================== >RCS file: src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/ExternalSchemaLocationProviderRegistry.java >diff -N src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/ExternalSchemaLocationProviderRegistry.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/ExternalSchemaLocationProviderRegistry.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,56 @@ >+/******************************************************************************* >+ * Copyright (c) 2011 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.IConfigurationElement; >+import org.eclipse.core.runtime.Platform; >+import org.eclipse.wst.xml.core.internal.Logger; >+import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.IExternalSchemaLocationProvider; >+ >+/** >+ * A registry for all external schema location providers. >+ * >+ */ >+public class ExternalSchemaLocationProviderRegistry { >+ >+ private static ExternalSchemaLocationProviderRegistry fRegistry; >+ private IExternalSchemaLocationProvider[] fProviders; >+ >+ private ExternalSchemaLocationProviderRegistry() { >+ fProviders = new IExternalSchemaLocationProvider[0]; >+ IConfigurationElement[] elements = Platform.getExtensionRegistry().getConfigurationElementsFor("org.eclipse.wst.xml.core", "externalSchemaLocations"); //$NON-NLS-1$ //$NON-NLS-2$ >+ List providers = new ArrayList(elements.length); >+ try { >+ for (int i = 0; i < elements.length; i++) { >+ providers.add(elements[i].createExecutableExtension("class")); >+ } >+ } >+ catch (CoreException e) { >+ Logger.logException(e); >+ } >+ fProviders = new IExternalSchemaLocationProvider[elements.length]; >+ providers.toArray(fProviders); >+ } >+ >+ public IExternalSchemaLocationProvider[] getProviders() { >+ return fProviders; >+ } >+ >+ public static synchronized ExternalSchemaLocationProviderRegistry getInstance() { >+ if (fRegistry == null) >+ fRegistry = new ExternalSchemaLocationProviderRegistry(); >+ return fRegistry; >+ } >+} >Index: src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/XMLAssociationProvider.java >=================================================================== >RCS file: /cvsroot/webtools/sourceediting/plugins/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/XMLAssociationProvider.java,v >retrieving revision 1.9 >diff -u -r1.9 XMLAssociationProvider.java >--- src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/XMLAssociationProvider.java 23 Feb 2011 20:59:56 -0000 1.9 >+++ src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/XMLAssociationProvider.java 29 Mar 2011 20:24:06 -0000 >@@ -12,10 +12,18 @@ > *******************************************************************************/ > package org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl; > >+import java.io.File; >+import java.net.URI; > import java.util.ArrayList; > import java.util.Iterator; > import java.util.List; >+import java.util.Map; > >+import org.eclipse.core.resources.IFile; >+import org.eclipse.core.resources.ResourcesPlugin; >+import org.eclipse.core.runtime.IPath; >+import org.eclipse.core.runtime.Path; >+import org.eclipse.core.runtime.Platform; > import org.eclipse.wst.xml.core.internal.Logger; > import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration; > import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument; >@@ -23,10 +31,12 @@ > import org.eclipse.wst.xml.core.internal.contentmodel.CMNode; > import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.CMDocumentManager; > import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.CMDocumentReferenceProvider; >+import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.IExternalSchemaLocationProvider; > import org.eclipse.wst.xml.core.internal.contentmodel.util.CMDocumentCache; > import org.eclipse.wst.xml.core.internal.contentmodel.util.DOMNamespaceHelper; > import org.eclipse.wst.xml.core.internal.contentmodel.util.NamespaceInfo; > import org.eclipse.wst.xml.core.internal.contentmodel.util.NamespaceTable; >+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument; > import org.w3c.dom.Attr; > import org.w3c.dom.Document; > import org.w3c.dom.DocumentType; >@@ -39,6 +49,8 @@ > protected CMDocumentCache cmDocumentCache; > protected CMDocumentManagerImpl documentManager; > >+ private final static boolean _trace = Boolean.valueOf(Platform.getDebugOption("org.eclipse.wst.xml.core/externalSchemaLocation")).booleanValue(); //$NON-NLS-1$ >+ > public XMLAssociationProvider(CMDocumentCache cmDocumentCache) > { > this.cmDocumentCache = cmDocumentCache; >@@ -212,17 +224,89 @@ > } > else > { >- // we assume that this is an inferred CMDocument for a DTD style 'namespaceless' document >- CMDocument cmDocument = getCMDocument("", "", "DTD"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ >- if (cmDocument != null) >- { >- result = (CMElementDeclaration)cmDocument.getElements().getNamedItem(element.getNodeName()); >- } >+ result = checkExternalSchema(element); >+ if (result == null) { >+ // we assume that this is an inferred CMDocument for a DTD style 'namespaceless' document >+ CMDocument cmDocument = getCMDocument("", "", "DTD"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ >+ if (cmDocument != null) { >+ result = (CMElementDeclaration)cmDocument.getElements().getNamedItem(element.getNodeName()); >+ } >+ } > } > } > return result; > } > >+ protected CMElementDeclaration checkExternalSchema(Element element) { >+ final Document document = element.getOwnerDocument(); >+ if (document instanceof IDOMDocument) { >+ final String baseLocation = ((IDOMDocument) document).getModel().getBaseLocation(); >+ final IPath basePath = new Path(baseLocation); >+ IFile file = null; >+ if (basePath.segmentCount() > 1) { >+ file = ResourcesPlugin.getWorkspace().getRoot().getFile(basePath); >+ } >+ final URI uri = (file == null || !file.isAccessible()) ? new File(baseLocation).toURI() : file.getLocationURI(); >+ if (uri != null) { >+ IExternalSchemaLocationProvider[] providers = ExternalSchemaLocationProviderRegistry.getInstance().getProviders(); >+ for (int i = 0; i < providers.length; i++) { >+ long time = _trace ? System.currentTimeMillis(): 0; >+ final Map locations = providers[i].getExternalSchemaLocation(uri); >+ if (_trace) { >+ long diff = System.currentTimeMillis() - time; >+ if (diff > 250) >+ Logger.log(Logger.INFO, "Schema location provider took [" + diff + "ms] for URI [" + uri + "]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ >+ } >+ if (locations != null && !locations.isEmpty()) { >+ Object location = locations.get(IExternalSchemaLocationProvider.NO_NAMESPACE_SCHEMA_LOCATION); >+ if (location != null) >+ return getCMElementDeclaration(element, NamespaceTable.getElementLineage(element), uri.toString(), location.toString()); >+ } >+ } >+ } >+ } >+ return null; >+ } >+ >+ protected CMElementDeclaration getCMElementDeclaration(Element targetElement, List list, String publicId, String systemId) >+ { >+ CMElementDeclaration currentED = null; >+ try >+ { >+ int listSize = list.size(); >+ for (int i = 0; i < listSize; i++) >+ { >+ Element element = (Element)list.get(i); >+ >+ final String nodeName = element.getNodeName(); >+ >+ CMElementDeclaration ed = null; >+ >+ // see if the element is a local of the currentED >+ // >+ if (currentED != null) >+ { >+ ed = (CMElementDeclaration)currentED.getLocalElements().getNamedItem(nodeName); >+ } >+ >+ if (ed == null) >+ { >+ CMDocument cmDocument = getCMDocument(publicId, systemId, "XSD"); //$NON-NLS-1$ >+ if (cmDocument != null) >+ { >+ ed = (CMElementDeclaration)cmDocument.getElements().getNamedItem(nodeName); >+ } >+ } >+ currentED = ed; >+ } >+ } >+ catch (Exception e) >+ { >+ Logger.logException("exception locating element declaration for " + targetElement, e); //$NON-NLS-1$ >+ } >+ >+ return currentED; >+ } > > protected CMElementDeclaration getCMElementDeclaration(Element targetElement, List list, NamespaceTable namespaceTable) > { >Index: src-validation/org/eclipse/wst/xml/core/internal/validation/XMLValidator.java >=================================================================== >RCS file: /cvsroot/webtools/sourceediting/plugins/org.eclipse.wst.xml.core/src-validation/org/eclipse/wst/xml/core/internal/validation/XMLValidator.java,v >retrieving revision 1.28 >diff -u -r1.28 XMLValidator.java >--- src-validation/org/eclipse/wst/xml/core/internal/validation/XMLValidator.java 9 Mar 2011 21:48:08 -0000 1.28 >+++ src-validation/org/eclipse/wst/xml/core/internal/validation/XMLValidator.java 29 Mar 2011 20:24:06 -0000 >@@ -20,11 +20,14 @@ > import java.io.Reader; > import java.io.StringReader; > import java.net.ConnectException; >+import java.net.URI; >+import java.net.URISyntaxException; > import java.net.URL; > import java.net.UnknownHostException; > import java.util.ArrayList; > import java.util.Hashtable; > import java.util.List; >+import java.util.Map; > import java.util.Set; > import java.util.TreeSet; > >@@ -46,6 +49,8 @@ > import org.eclipse.core.resources.ResourcesPlugin; > import org.eclipse.core.runtime.IPath; > import org.eclipse.core.runtime.Path; >+import org.eclipse.core.runtime.Platform; >+import org.eclipse.core.runtime.URIUtil; > import org.eclipse.osgi.util.NLS; > import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolver; > import org.eclipse.wst.common.uriresolver.internal.util.URIHelper; >@@ -55,6 +60,8 @@ > import org.eclipse.wst.validation.internal.provisional.core.IReporter; > import org.eclipse.wst.xml.core.internal.Logger; > import org.eclipse.wst.xml.core.internal.XMLCorePlugin; >+import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.IExternalSchemaLocationProvider; >+import org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.ExternalSchemaLocationProviderRegistry; > import org.eclipse.wst.xml.core.internal.preferences.XMLCorePreferenceNames; > import org.eclipse.wst.xml.core.internal.validation.core.LazyURLInputStream; > import org.eclipse.wst.xml.core.internal.validation.core.NestedValidatorContext; >@@ -93,7 +100,8 @@ > private MarkupValidator val = new MarkupValidator(); > > private final String ANNOTATIONMSG = AnnotationMsg.class.getName(); >- >+ >+ private final static boolean _trace = Boolean.valueOf(Platform.getDebugOption("org.eclipse.wst.xml.core/externalSchemaLocation")).booleanValue(); //$NON-NLS-1$ > /** > * Constructor. > */ >@@ -176,8 +184,7 @@ > reader.setFeature("http://apache.org/xml/features/continue-after-fatal-error", false); //$NON-NLS-1$ > reader.setFeature("http://xml.org/sax/features/namespace-prefixes", valinfo.isNamespaceEncountered()); //$NON-NLS-1$ > reader.setFeature("http://xml.org/sax/features/namespaces", valinfo.isNamespaceEncountered()); //$NON-NLS-1$ >- reader.setFeature("http://xml.org/sax/features/validation", valinfo.isGrammarEncountered()); //$NON-NLS-1$ >- reader.setFeature("http://apache.org/xml/features/validation/schema", valinfo.isGrammarEncountered()); //$NON-NLS-1$ >+ > reader.setContentHandler(new DefaultHandler() > { > public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { >@@ -338,6 +345,15 @@ > { > reader.setFeature("http://apache.org/xml/features/xinclude", true); //$NON-NLS-1$ > } >+ >+ // Support external schema locations >+ boolean isGrammarEncountered = helper.isGrammarEncountered; >+ if (!isGrammarEncountered) { >+ isGrammarEncountered = checkExternalSchemas(reader, valinfo.getFileURI()); >+ } >+ reader.setFeature("http://xml.org/sax/features/validation", isGrammarEncountered); //$NON-NLS-1$ >+ reader.setFeature("http://apache.org/xml/features/validation/schema", isGrammarEncountered); //$NON-NLS-1$ >+ > XMLErrorHandler errorhandler = new XMLErrorHandler(valinfo); > reader.setErrorHandler(errorhandler); > >@@ -345,7 +361,7 @@ > inputSource.setCharacterStream(reader2); > reader.parse(inputSource); > if(configuration.getIntFeature(XMLValidationConfiguration.INDICATE_NO_GRAMMAR) > 0 && >- valinfo.isValid() && !helper.isGrammarEncountered) >+ valinfo.isValid() && !isGrammarEncountered) > { > if(configuration.getIntFeature(XMLValidationConfiguration.INDICATE_NO_GRAMMAR) == 1) > valinfo.addWarning(XMLValidationMessages._WARN_NO_GRAMMAR, 1, 0, uri, NO_GRAMMAR_FOUND, null); >@@ -414,6 +430,55 @@ > > } > >+ private boolean checkExternalSchemas(XMLReader reader, String fileURI) throws Exception { >+ boolean isGrammarEncountered = false; >+ final StringBuffer schemaLocation = new StringBuffer(); >+ String noNamespaceSchemaLocation = null; >+ // Check the schema provider extension point >+ IExternalSchemaLocationProvider[] providers = ExternalSchemaLocationProviderRegistry.getInstance().getProviders(); >+ for (int i = 0; i < providers.length; i++) { >+ URI uri = null; >+ try { >+ uri = URIUtil.fromString(fileURI); >+ } >+ catch (URISyntaxException e) { >+ Logger.logException(e.getLocalizedMessage(), e); >+ } >+ if (uri != null) { >+ long time = _trace ? System.currentTimeMillis(): 0; >+ final Map locations = providers[i].getExternalSchemaLocation(uri); >+ if (_trace) { >+ long diff = System.currentTimeMillis() - time; >+ if (diff > 250) >+ Logger.log(Logger.INFO, "Schema location provider took [" + diff + "ms] for URI [" + fileURI + "]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ >+ } >+ if (locations != null && !locations.isEmpty()) { >+ Object path = locations.get(IExternalSchemaLocationProvider.SCHEMA_LOCATION); >+ if (path instanceof String) { >+ if (schemaLocation.length() > 0) { >+ schemaLocation.append(' '); >+ } >+ schemaLocation.append(path); >+ } >+ path = locations.get(IExternalSchemaLocationProvider.NO_NAMESPACE_SCHEMA_LOCATION); >+ if (path instanceof String) { >+ noNamespaceSchemaLocation = (String)path; >+ } >+ } >+ } >+ } >+ >+ if (schemaLocation.length() > 0) { >+ reader.setProperty(IExternalSchemaLocationProvider.SCHEMA_LOCATION, schemaLocation.toString()); >+ isGrammarEncountered = true; >+ } >+ if (noNamespaceSchemaLocation != null) { >+ reader.setProperty(IExternalSchemaLocationProvider.NO_NAMESPACE_SCHEMA_LOCATION, noNamespaceSchemaLocation); >+ isGrammarEncountered = true; >+ } >+ return isGrammarEncountered; >+ } >+ > private Object[] getMsgArguments(LocalizedMessage msg){ > Object obj = msg.getAttribute(ANNOTATIONMSG); > return new Object[]{obj}; >#P org.eclipse.wst.xml.core.tests >Index: plugin.xml >=================================================================== >RCS file: /cvsroot/webtools/sourceediting/tests/org.eclipse.wst.xml.core.tests/plugin.xml,v >retrieving revision 1.12 >diff -u -r1.12 plugin.xml >--- plugin.xml 25 May 2010 14:44:15 -0000 1.12 >+++ plugin.xml 29 Mar 2011 20:24:07 -0000 >@@ -24,6 +24,10 @@ > uri="projecttestfiles/testfiles/GlobalCMDocumentCacheTestSchema.xsd" /> > </catalogContribution> > </extension> >- > >+ <extension >+ point="org.eclipse.wst.xml.core.externalSchemaLocations"> >+ <provider class="org.eclipse.wst.xml.core.tests.contentmodel.ExternalSchemaTest$ExternalSchemaLocationProvider"> >+ </provider> >+ </extension> > </plugin> >Index: src/org/eclipse/wst/xml/core/tests/SSEModelXMLTestSuite.java >=================================================================== >RCS file: /cvsroot/webtools/sourceediting/tests/org.eclipse.wst.xml.core.tests/src/org/eclipse/wst/xml/core/tests/SSEModelXMLTestSuite.java,v >retrieving revision 1.27 >diff -u -r1.27 SSEModelXMLTestSuite.java >--- src/org/eclipse/wst/xml/core/tests/SSEModelXMLTestSuite.java 31 Jan 2011 18:55:20 -0000 1.27 >+++ src/org/eclipse/wst/xml/core/tests/SSEModelXMLTestSuite.java 29 Mar 2011 20:24:07 -0000 >@@ -17,6 +17,7 @@ > import org.eclipse.wst.xml.core.tests.cache.GlobalCMDocumentCacheTest; > import org.eclipse.wst.xml.core.tests.cleanup.TestCleanupProcessorXML; > import org.eclipse.wst.xml.core.tests.contentmodel.CMValidatorValidationTest; >+import org.eclipse.wst.xml.core.tests.contentmodel.ExternalSchemaTest; > import org.eclipse.wst.xml.core.tests.contentmodel.TestAttributesOrder; > import org.eclipse.wst.xml.core.tests.contentmodel.TestCatalogRetrivalAndModelCreation; > import org.eclipse.wst.xml.core.tests.document.FileBufferDocumentTester; >@@ -79,5 +80,6 @@ > > addTest(new TestSuite(RegionChangedAdapterNotificationTests.class)); > addTest(new TestSuite(GlobalCMDocumentCacheTest.class)); >+ addTest(new TestSuite(ExternalSchemaTest.class)); > } > } >Index: src/org/eclipse/wst/xml/core/tests/contentmodel/ExternalSchemaTest.java >=================================================================== >RCS file: src/org/eclipse/wst/xml/core/tests/contentmodel/ExternalSchemaTest.java >diff -N src/org/eclipse/wst/xml/core/tests/contentmodel/ExternalSchemaTest.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/wst/xml/core/tests/contentmodel/ExternalSchemaTest.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+/******************************************************************************* >+ * Copyright (c) 2011 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.wst.xml.core.tests.contentmodel; >+ >+import java.net.URI; >+import java.util.HashMap; >+import java.util.Map; >+ >+import junit.framework.TestCase; >+ >+import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.IExternalSchemaLocationProvider; >+import org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.ExternalSchemaLocationProviderRegistry; >+ >+public class ExternalSchemaTest extends TestCase { >+ >+ private static final String EXTERNAL_SCHEMA_LOCATION = "file://external/schema/foo.xsd"; >+ >+ public static class ExternalSchemaLocationProvider implements org.eclipse.wst.xml.core.contentmodel.modelquery.IExternalSchemaLocationProvider { >+ private static URI INTERESTED_RESOURCE = null; >+ public ExternalSchemaLocationProvider() { >+ >+ try { >+ INTERESTED_RESOURCE = new URI("file://interested/path/file.xml"); >+ } catch (Exception e) {} >+ } >+ >+ public Map getExternalSchemaLocation(URI fileURI) { >+ Map map = new HashMap(1); >+ if (fileURI != null && fileURI.equals(INTERESTED_RESOURCE)) { >+ map.put(NO_NAMESPACE_SCHEMA_LOCATION, EXTERNAL_SCHEMA_LOCATION); >+ } >+ return map; >+ } >+ } >+ >+ public void testExternalLocations() throws Exception { >+ final IExternalSchemaLocationProvider[] providers = ExternalSchemaLocationProviderRegistry.getInstance().getProviders(); >+ assertTrue(providers.length > 0); >+ URI resource = new URI("file://uninterested/path/file.xml"); >+ for (int i = 0; i < providers.length; i++) { >+ Map locations = providers[i].getExternalSchemaLocation(resource); >+ assertTrue("[" + resource + "] should have no external schemas.", locations == null || locations.isEmpty()); >+ } >+ >+ resource = new URI("file://interested/path/file.xml"); >+ boolean foundCorrectSchema = false; >+ for (int i = 0; i < providers.length; i++) { >+ Map locations = providers[i].getExternalSchemaLocation(resource); >+ if (locations != null) { >+ String location = (String) locations.get(IExternalSchemaLocationProvider.NO_NAMESPACE_SCHEMA_LOCATION); >+ if (EXTERNAL_SCHEMA_LOCATION.equals(location)) { >+ foundCorrectSchema = true; >+ } >+ } >+ assertTrue("[" + resource + "] should have an external schema.", foundCorrectSchema); >+ } >+ } >+ >+}
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 341279
:
192131
|
192189