Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] How to marshall objects using default namespace?

Hi Polly,

The support for the default namespace has been added into the runtime, but hasn't been implemented in the Mapping Workbench yet. Please see https://bugs.eclipse.org/bugs/show_bug.cgi?id=236491 to track the support in the workbench.

In order to make use of this before the mapping workbench feature is completed, you would have to either manually modify your mappings xml file, or modify your mappings in code during an afterloads.

In the mapping .xml file, you'd want to add your default namespace to any namespace resolvers in the document:
<namespace-resolver>
  <namespaces>
    ...
  </namespaces>
  <default-namespace-uri>http://www.foo.com/bar/baz</default-namespace-uri>
</namespace-resolver>

Then you'd want to modify the xpath of any mapping or default-root-element that was currently prefix-qualified, to remove the prefix:

<default-root-element>ns1:Description</default-root-element>

becomes:

<default-root-element>Description</default-root-element>


<attribute-mapping xsi:type="xml-direct-mapping">
  ...
  <field name="ns1:CityName/text()" xsi:type="node"/>
</attribute-mapping>

becomes:

<attribute-mapping xsi:type="xml-direct-mapping">
  ...
  <field name="CityName/text()" xsi:type="node"/>
</attribute-mapping>

Hope that helps,

-Matt
amphoras wrote:
Hi,

I see that the bug "ADD SUPPORT FOR THE DEFAULT NAMESPACE"
(https://bugs.eclipse.org/bugs/show_bug.cgi?id=236051) has been implemented.

How do I make use of this new feature?

Currently I have the schemas defined like this in the workbench:
Target Namespace:  http://www.foo.com/bar/baz
Prefix:  ns1
Declare:  true

This will output the "ns1" namespace prefix in front of my elements.  But
when I change Declare to "false", I get the usual error message about not
finding the root element:

[Exception [EclipseLink-25008] (Eclipse Persistence Services - 1.0 (Build
SNAPSHOT - 20080618)):
org.eclipse.persistence.exceptions.XMLMarshalException
Exception Description: A descriptor with default root element
{http://www.foo.com/bar/baz}Address was not found in the project]

I am also unable to set the namespace prefix to "" in the workbench.  How
does one use this default namespace?

Thanks!

--Polly
  

Back to the top