sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Desruisseaux (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (SIS-74) Remove reference to NamespacePrefixMapper from MarshallerPool
Date Wed, 26 Dec 2012 09:46:12 GMT

     [ https://issues.apache.org/jira/browse/SIS-74?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Martin Desruisseaux updated SIS-74:
-----------------------------------

    Description: 
The SIS {{MarshallerPool}} class uses the {{NamespacePrefixMapper}} class from the {{com.sun.xml.internal.bind}}
package. We are obviously not supposed to use this internal class, but research on Internet
3 years ago suggested that they were no way (at least at that time) to specify the root namespace
(the namespace that do not need prefix) and to customize the prefixes. Worst, this internal
feature was [advertised|http://java.sun.com/webservices/docs/1.5/jaxb/vendorProperties.html]
as customizable by the following properties:

* {{com.sun.xml.internal.bind.namespacePrefixMapper}} (bundled JAXB)
* {{com.sun.xml.bind.namespacePrefixMapper}} (endorsed JAXB)

Furthermore the {{NamespacePrefixMapper}} javadoc said: "_Implemented by the user application
to determine URI -> prefix mapping_".

As an alternative, research on Internet suggests that the {{javax.xml.bind.annotation.XmlSchema}}
annotation works as expected in JDK7, but JDK6 users have to use the endorsed JAXB version
2.2.4 or above. We still have to check if the annotation really works for us.

If the annotations do not work, then we may have to keep the {{NamespacePrefixMapper}} hack.
Problem is that the {{javac}} compiler normally blocks attempts to use this {{com.sun.xml.internal}}
class. A workaround found on Internet (not yet tested) is to use the following compiler option:

{noformat}
-XDignore.symbol.file
{noformat}

If the above does not work, an alternative is to put {{rt.jar}} on the classpath as a Maven
dependency using {{<scope>system</scope>}}.


  was:
The SIS {{MarshallerPool}} class uses the {{NamespacePrefixMapper}} class from the {{com.sun.xml.internal.bind}}
package. We are obviously not supposed to use this internal class, but research on Internet
3 years ago suggested that they were no way (at least at that time) to specify the root namespace
(the namespace that do not need prefix) and to customize the prefixes. Worst, this internal
feature was [advertised|http://java.sun.com/webservices/docs/1.5/jaxb/vendorProperties.html]
as customizable by the "{{com.sun.xml.internal.bind.namespacePrefixMapper}}" (bundled JAXB)
or "{{com.sun.xml.bind.namespacePrefixMapper}}" (endorsed JAXB) property, and the {{NamespacePrefixMapper}
javadoc said: "_Implemented by the user application to determine URI -> prefix mapping_".

As an alternative, research on Internet suggests that the {{javax.xml.bind.annotation.XmlSchema}}
annotation works as expected in JDK7, but JDK6 users have to use the endorsed JAXB version
2.2.4 or above. We still have to check if the annotation really works for us.

If the annotations do not work, then we may have to keep the {{NamespacePrefixMapper}} hack.
Problem is that the {{javac}} compiler normally blocks attempts to use this {{com.sun.xml.internal}}
class. A workaround found on Internet (not yet tested) is to use the following compiler option:

{noformat}
-XDignore.symbol.file
{noformat}

If the above does not work, an alternative is to put {{rt.jar}} on the classpath as a Maven
dependency using {{<scope>system</scope>}}.


    
> Remove reference to NamespacePrefixMapper from MarshallerPool
> -------------------------------------------------------------
>
>                 Key: SIS-74
>                 URL: https://issues.apache.org/jira/browse/SIS-74
>             Project: Spatial Information Systems
>          Issue Type: Task
>          Components: Utilities
>         Environment: JDK6 and JDK7 (both may need a different approach)
>            Reporter: Martin Desruisseaux
>            Assignee: Martin Desruisseaux
>             Fix For: 0.3
>
>
> The SIS {{MarshallerPool}} class uses the {{NamespacePrefixMapper}} class from the {{com.sun.xml.internal.bind}}
package. We are obviously not supposed to use this internal class, but research on Internet
3 years ago suggested that they were no way (at least at that time) to specify the root namespace
(the namespace that do not need prefix) and to customize the prefixes. Worst, this internal
feature was [advertised|http://java.sun.com/webservices/docs/1.5/jaxb/vendorProperties.html]
as customizable by the following properties:
> * {{com.sun.xml.internal.bind.namespacePrefixMapper}} (bundled JAXB)
> * {{com.sun.xml.bind.namespacePrefixMapper}} (endorsed JAXB)
> Furthermore the {{NamespacePrefixMapper}} javadoc said: "_Implemented by the user application
to determine URI -> prefix mapping_".
> As an alternative, research on Internet suggests that the {{javax.xml.bind.annotation.XmlSchema}}
annotation works as expected in JDK7, but JDK6 users have to use the endorsed JAXB version
2.2.4 or above. We still have to check if the annotation really works for us.
> If the annotations do not work, then we may have to keep the {{NamespacePrefixMapper}}
hack. Problem is that the {{javac}} compiler normally blocks attempts to use this {{com.sun.xml.internal}}
class. A workaround found on Internet (not yet tested) is to use the following compiler option:
> {noformat}
> -XDignore.symbol.file
> {noformat}
> If the above does not work, an alternative is to put {{rt.jar}} on the classpath as a
Maven dependency using {{<scope>system</scope>}}.

--
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