Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Web Tools Project (WTP) » Programmatic use of XMLCorePlugin and ICatalog APIs
Programmatic use of XMLCorePlugin and ICatalog APIs [message #224338] Tue, 25 November 2008 22:07 Go to next message
Ray Chapman is currently offline Ray Chapman
Messages: 1
Registered: July 2009
Junior Member
We provide a set of plugins that allow our users to set up a Java EE
project, via a New Project wizard, to model domain specific objects. A
user can then hit a button to generate an XSD from their model. The
project automatically builds following XSD generation. However, errors
are reported by org.eclipse.wst.validation.validationbuilder when
validating the XSD due to a failure to resolve an imported namespace in
the generated XSD.

We understand if we add an entry into Eclipse XML Catalog for the location
of XSD for referenced namespace, validation will succeed. Assuming we
have knowledge of the imported namespace and its XSD location prior to XSD
generation, it seems we could programmatically add an entry to the Eclipse
XML User catalog using something like the following (obtained from
org.eclipse.wst.xsd.validation.tests project in class
org.eclipse.wst.xsd.validation.tests.internal.BugFixesTest):

ICatalog catalog = XMLCorePlugin.getDefault().getDefaultXMLCatalog();
INextCatalog[] nextCatalogs = catalog.getNextCatalogs();
for (int i = 0; i < nextCatalogs.length; i++)
{
INextCatalog nextCatalog = nextCatalogs[i];
if(XMLCorePlugin.USER_CATALOG_ID.equals(nextCatalog.getId()) )
{
ICatalog userCatalog = nextCatalog.getReferencedCatalog();
if(userCatalog != null)
{
ICatalogEntry catalogEntry =
(ICatalogEntry)userCatalog.createCatalogElement

(ICatalogEntry.ENTRY_TYPE_PUBLIC);
catalogEntry.setKey("testKey");
catalogEntry.setURI("http://testuri");
userCatalog.addCatalogElement(catalogEntry);
}
}
}

The package name for ICatalog is
org.eclipse.wst.xml.core.internal.catalog.provisional.ICatal og. We feel
reluctant to use a provisional package. Can someone from the web tools
team provide some guidance about programmatically modifying the XML
Catalog.

Thanks!
Re: Programmatic use of XMLCorePlugin and ICatalog APIs [message #224355 is a reply to message #224338] Tue, 25 November 2008 22:40 Go to previous messageGo to next message
Eclipse User
Originally posted by: dcarver.starstandard.org

Ray Chapman wrote:
> We provide a set of plugins that allow our users to set up a Java EE
> project, via a New Project wizard, to model domain specific objects. A
> user can then hit a button to generate an XSD from their model. The
> project automatically builds following XSD generation. However, errors
> are reported by org.eclipse.wst.validation.validationbuilder when
> validating the XSD due to a failure to resolve an imported namespace in
> the generated XSD.
>
> We understand if we add an entry into Eclipse XML Catalog for the
> location of XSD for referenced namespace, validation will succeed.
> Assuming we have knowledge of the imported namespace and its XSD
> location prior to XSD generation, it seems we could programmatically add
> an entry to the Eclipse XML User catalog using something like the
> following (obtained from org.eclipse.wst.xsd.validation.tests project in
> class org.eclipse.wst.xsd.validation.tests.internal.BugFixesTest):
>
> ICatalog catalog = XMLCorePlugin.getDefault().getDefaultXMLCatalog();
> INextCatalog[] nextCatalogs = catalog.getNextCatalogs();
> for (int i = 0; i < nextCatalogs.length; i++)
> {
> INextCatalog nextCatalog = nextCatalogs[i];
> if(XMLCorePlugin.USER_CATALOG_ID.equals(nextCatalog.getId()) )
> {
> ICatalog userCatalog = nextCatalog.getReferencedCatalog();
> if(userCatalog != null)
> {
> ICatalogEntry catalogEntry =
> (ICatalogEntry)userCatalog.createCatalogElement
>
> (ICatalogEntry.ENTRY_TYPE_PUBLIC);
> catalogEntry.setKey("testKey");
> catalogEntry.setURI("http://testuri");
> userCatalog.addCatalogElement(catalogEntry);
> }
> }
> }
>
> The package name for ICatalog is
> org.eclipse.wst.xml.core.internal.catalog.provisional.ICatal og. We feel
> reluctant to use a provisional package. Can someone from the web tools
> team provide some guidance about programmatically modifying the XML
> Catalog.

You can open a bug request to move it from provisional to API. It's
been provisional for several releases and is pretty stable.

Dave
Re: Programmatic use of XMLCorePlugin and ICatalog APIs [message #224447 is a reply to message #224355] Wed, 26 November 2008 15:24 Go to previous message
Eclipse User
Originally posted by: valentinbaciu.hotmail.com

There are already enhancement requests opened asking for this:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=135079
https://bugs.eclipse.org/bugs/show_bug.cgi?id=88015

We may have to investigate the impact of supporting newer versions of the
XML Catalog specification before making the API public:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=112284

Moving from provisional to API is not in the plan for WTP 3.1 but as Dave
said the API is fairly stable and we don't break things lightly, even if
internal.

Regards, Valentin

"David Carver" <dcarver@starstandard.org> wrote in message
news:492C7EE8.50409@starstandard.org...
> Ray Chapman wrote:
>> We provide a set of plugins that allow our users to set up a Java EE
>> project, via a New Project wizard, to model domain specific objects. A
>> user can then hit a button to generate an XSD from their model. The
>> project automatically builds following XSD generation. However, errors
>> are reported by org.eclipse.wst.validation.validationbuilder when
>> validating the XSD due to a failure to resolve an imported namespace in
>> the generated XSD.
>>
>> We understand if we add an entry into Eclipse XML Catalog for the
>> location of XSD for referenced namespace, validation will succeed.
>> Assuming we have knowledge of the imported namespace and its XSD location
>> prior to XSD generation, it seems we could programmatically add an entry
>> to the Eclipse XML User catalog using something like the following
>> (obtained from org.eclipse.wst.xsd.validation.tests project in class
>> org.eclipse.wst.xsd.validation.tests.internal.BugFixesTest):
>>
>> ICatalog catalog = XMLCorePlugin.getDefault().getDefaultXMLCatalog();
>> INextCatalog[] nextCatalogs = catalog.getNextCatalogs();
>> for (int i = 0; i < nextCatalogs.length; i++)
>> {
>> INextCatalog nextCatalog = nextCatalogs[i];
>> if(XMLCorePlugin.USER_CATALOG_ID.equals(nextCatalog.getId()) )
>> {
>> ICatalog userCatalog = nextCatalog.getReferencedCatalog();
>> if(userCatalog != null)
>> {
>> ICatalogEntry catalogEntry =
>> (ICatalogEntry)userCatalog.createCatalogElement
>>
>> (ICatalogEntry.ENTRY_TYPE_PUBLIC);
>> catalogEntry.setKey("testKey");
>> catalogEntry.setURI("http://testuri");
>> userCatalog.addCatalogElement(catalogEntry);
>> } } }
>>
>> The package name for ICatalog is
>> org.eclipse.wst.xml.core.internal.catalog.provisional.ICatal og. We feel
>> reluctant to use a provisional package. Can someone from the web tools
>> team provide some guidance about programmatically modifying the XML
>> Catalog.
>
> You can open a bug request to move it from provisional to API. It's been
> provisional for several releases and is pretty stable.
>
> Dave
Previous Topic:how to set default server and runtime for web service in config.ini
Next Topic:Breakpoints in JSP pages
Goto Forum:
  


Current Time: Tue Sep 16 03:05:34 GMT 2014

Powered by FUDForum. Page generated in 0.07605 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software