« Return to Thread: How to get MOXy to trim the text values?

Re: How to get MOXy to trim the text values?

by polly.c.chang :: Rate this Message:

Reply to Author | View in Thread

Hi Matt,

I was going to wait for the enhancement request to be implemented, but that has moved to version 2.0.  So now I need to implement a fix for our project.  :)

Can you give me some advice as to whether the Converter or the AttributeAccessor is better?  It seems to me that if I go the Converter route, it might interfere with enums.  So if I go the AttributeAccessor route, I need to create two accessors--one to extend InstanceVariableAttributeAccessor and one to extend MethodAttributeAccessor.  Then I would override the setAttributeValueInObject() method.  Does that sound right?

Just as an example, when I *don't* trim the string, I get this error with enums.  Which approach do you recommend for fixing this?

Thanks!!
--Polly

Caused by: Exception [EclipseLink-116] (Eclipse Persistence Services - 1.0.2 (Build 20081024)): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: No conversion value provided for the value [
            ] in field [text()].
Mapping: org.eclipse.persistence.oxm.mappings.XMLDirectMapping[code-->text()]
Descriptor: XMLDescriptor(com.infor.common.model.fields.ResponseCode --> [])
        at org.eclipse.persistence.exceptions.DescriptorException.noFieldValueConversionToAttributeValueProvided(DescriptorException.java:1021)
        at org.eclipse.persistence.mappings.converters.ObjectTypeConverter.convertDataValueToObjectValue(ObjectTypeConverter.java:140)
        at org.eclipse.persistence.mappings.converters.EnumTypeConverter.convertDataValueToObjectValue(EnumTypeConverter.java:101)
        at org.eclipse.persistence.oxm.mappings.XMLDirectMapping.getAttributeValue(XMLDirectMapping.java:267)

...


Matt MacIvor wrote:
Hi Polly,

Currently EclipseLink MOXy considers everything inside an element to be
significant, and therefore doesn't trim the value. You can work around
this in a couple of ways.

One would be to implement a Converter (see
org.eclipse.persistence.mappings.converters.Converter interface) and add
this to your mapping with a session customization. This would allow you
to manually trim the value before it's set in your object. You could
also do this with a custom attribute accessor. (see
org.eclipse.persistence.mappings.AttributeAccessor).

I agree there should be an easier way to do this. We should be able to
just add a flag on XMLDirectMapping to indicate that string values
should be trimmed.

Could you enter an enhancement request to this effect?

Thanks,

-Matt

amphoras wrote:

>Hi,
>
>I mapped a field in my Java class to an XPath like "ns1:CountryCode/text()".
>
>I find that when the XML looks like this:
>                            <CountryCode listID='' listAgencyID=''
>listAgencyName='' listName='' listVersionID='' name='' languageID=''
>listURI='http://www.foo.com' listSchemeURI='http://www.foo.com'>
>                            USA
>                            </CountryCode>
>
>The value that gets unmarshalled is "                            USA".  All
>those spaces that were used for formatting are preserved.  Is there a way to
>configure EclipseLink to trim the spaces on either end of the string and
>just give me "USA"?
>
>Thanks!
>--Polly
>  
>
_______________________________________________
eclipselink-users mailing list
eclipselink-users@eclipse.org
https://dev.eclipse.org/mailman/listinfo/eclipselink-users

 « Return to Thread: How to get MOXy to trim the text values?