cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Beryozkin (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-5072) Add capability in Jettison to default the namespace
Date Sun, 09 Jun 2013 18:13:20 GMT

    [ https://issues.apache.org/jira/browse/CXF-5072?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13679123#comment-13679123
] 

Sergey Beryozkin commented on CXF-5072:
---------------------------------------

I'm afraid not and I apologize I did not get what exactly you were after. Neither JSONProvider
nor Jettison understand how a given object representation is qualified, it can not optimize
smartly the way you suggest. 


I can only recommend you try and register a custom XMLStreamWriter, this is easy to do, for
example look at a custom writer in 
http://svn.apache.org/repos/asf/cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/utils/JSONUtils.java

You can register it by extending JSONProvider

In this provider, you can use the domain knowledge and block namespaces on certain elements
only.
XMLStreamReader can similarly be added 
                
> Add capability in Jettison to default the namespace
> ---------------------------------------------------
>
>                 Key: CXF-5072
>                 URL: https://issues.apache.org/jira/browse/CXF-5072
>             Project: CXF
>          Issue Type: Improvement
>          Components: JAX-RS, JAXB Databinding
>    Affects Versions: 2.5.2
>            Reporter: Tom Stark
>         Attachments: apache-cxf-issue.zip
>
>
> When using Jettison, it would be preferable to configure Jettison to allow for the namespace
to be the same as what was last used.  For example, attached is a simple user object that
has a long namespace name.  I can use Jettison to alias the namespace to something shorter
but I still need to fully-qualify all members of the user object in JSON for Jettison to properly
marshal all of the fields to the java object.
> For example:
> {"user.user":{"user-role.user-role":{"user-role.name":"admin"},"user.username":"fred","user.first-name":"Fred",
"user.last-name":"Person"}}
> What is preferable is:
> {"user.user":{"user-role.user-role":{"name":"admin"},"username":"fred","first-name":"Fred",
"last-name":"Person"}}
> In this case, the beginning of a new namespace is used for objects that need it.  After
the object is defined, the namespace reverts to the previous namespace.
> Output is fine since the "ignoreNamespace" strips all namespaces and the resulting JSON
is:
> {"user":{"user-role":{"name":"admin"},"username":"fred","first-name":"Fred","last-name":"Person"}}
> Note that the attachments have been edited to remove proprietary information and probably
will not compile by themselves.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message