[shrinkwrap-issues] [JBoss JIRA] (SHRINKDESC-164) BeansDescriptor.exportAsString() yields empty xmlns attributes in child elements when Saxon is present on classpath
Falko M. (JIRA)
issues at jboss.org
Fri Mar 11 10:41:00 EST 2016
[ https://issues.jboss.org/browse/SHRINKDESC-164?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13175458#comment-13175458 ]
Falko M. edited comment on SHRINKDESC-164 at 3/11/16 10:40 AM:
---------------------------------------------------------------
What's the status of this ticket? Is there anything I can do to help speed things up?
This problem somehow got worse after I upgraded to {{shrinkwrap-resolver}} 2.2.2.
Now not only the {{alternatives}}-element needs to be corrected by the workaround but also child elements like {{stereotype}}:
{code:xml|title=Problem in sub-element with "old" workaround}
<alternatives>
<stereotype xmlns="">some.project.SomeStereotype</stereotype>
</alternatives>
{code}
The workaround needs to be extended to:
{code:java|title="New" extended workaround}
/**
* Workaround for https://issues.jboss.org/browse/SHRINKDESC-164.
*
* @param modifiedAlternatives the modified Alternatives
*/
private static void workAroundSHRINKDESC164(final Alternatives<BeansDescriptor> modifiedAlternatives) {
final org.jboss.shrinkwrap.descriptor.spi.node.Node altNode;
try {
altNode = (org.jboss.shrinkwrap.descriptor.spi.node.Node) FieldUtils.readDeclaredField(modifiedAlternatives, "childNode", true);
} catch (IllegalAccessException e) {
LOG.warn("Error applying workaround for SHRINKDESC-164", e);
return;
}
final List<org.jboss.shrinkwrap.descriptor.spi.node.Node> nodesToFix = new ArrayList<>(altNode.getChildren());
nodesToFix.add(altNode);
for (final org.jboss.shrinkwrap.descriptor.spi.node.Node node : nodesToFix) {
node.attribute("xmlns", "http://java.sun.com/xml/ns/javaee");
}
}
{code}
FYI, dependency-setup before was:
{code:xml}
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>1.1.8.Final</version>
<type>pom</type>
<scope>import</scope>
</dependency>
{code}
Now it is:
{code:xml}
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-bom</artifactId>
<version>2.2.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>1.1.8.Final</version>
<type>pom</type>
<scope>import</scope>
</dependency>
{code}
This did *not* result in an update of {{shrinkwrap-descriptors-*}}, everything stayed at {{2.0.0-alpha-7}}. Weird!
was (Author: famod):
What's the status of this ticket? Is there anything I can do to help speed things up?
This problem somehow got worse after I upgraded to {{shrinkwrap-resolver}} 2.2.2.
Now not only the {{alternatives}}-element needs to be corrected by the workaround but also child elements like {{stereotype}}:
{code:xml|title=Problem in sub-element with "old" workaround}
<alternatives>
<stereotype xmlns="">com.t_systems_mms.module.test.arquillian.mock.MockedAlternative</stereotype>
</alternatives>
{code}
The workaround needs to be extended to:
{code:java|title="New" extended workaround}
/**
* Workaround for https://issues.jboss.org/browse/SHRINKDESC-164.
*
* @param modifiedAlternatives the modified Alternatives
*/
private static void workAroundSHRINKDESC164(final Alternatives<BeansDescriptor> modifiedAlternatives) {
final org.jboss.shrinkwrap.descriptor.spi.node.Node altNode;
try {
altNode = (org.jboss.shrinkwrap.descriptor.spi.node.Node) FieldUtils.readDeclaredField(modifiedAlternatives, "childNode", true);
} catch (IllegalAccessException e) {
LOG.warn("Error applying workaround for SHRINKDESC-164", e);
return;
}
final List<org.jboss.shrinkwrap.descriptor.spi.node.Node> nodesToFix = new ArrayList<>(altNode.getChildren());
nodesToFix.add(altNode);
for (final org.jboss.shrinkwrap.descriptor.spi.node.Node node : nodesToFix) {
node.attribute("xmlns", "http://java.sun.com/xml/ns/javaee");
}
}
{code}
FYI, dependency-setup before was:
{code:xml}
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>1.1.8.Final</version>
<type>pom</type>
<scope>import</scope>
</dependency>
{code}
Now it is:
{code:xml}
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-bom</artifactId>
<version>2.2.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>1.1.8.Final</version>
<type>pom</type>
<scope>import</scope>
</dependency>
{code}
This did *not* result in an update of {{shrinkwrap-descriptors-*}}, everything stayed at {{2.0.0-alpha-7}}. Weird!
> BeansDescriptor.exportAsString() yields empty xmlns attributes in child elements when Saxon is present on classpath
> -------------------------------------------------------------------------------------------------------------------
>
> Key: SHRINKDESC-164
> URL: https://issues.jboss.org/browse/SHRINKDESC-164
> Project: ShrinkWrap Descriptors
> Issue Type: Bug
> Affects Versions: 2.0.0-alpha-7, 2.0.0-alpha-8
> Environment: Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T18:29:23+01:00)
> Maven home: C:\Program Files\apache-maven-3.2.5
> Java version: 1.7.0_80, vendor: Oracle Corporation
> Java home: C:\Develop\CCS\jdk1.7.0_80\jre
> Default locale: de_DE, platform encoding: Cp1252
> OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
> Reporter: Falko M.
> Attachments: SHRINKDESC-164-screenshot1.PNG, SHRINKDESC-164-screenshot2.PNG, SHRINKDESC-164-testproject.zip
>
>
> When an existing {{beans.xml}} with child elements like {{alternatives}} is loaded via {{Descriptors.importAs(BeansDescriptor.class).fromStream(...)}} *and [SAXON|http://saxon.sourceforge.net/] is on the classpath*, {{.exportAsString()}} yields child elements like the following :
> {noformat}<alternatives xmlns="">{noformat}
> This causes deployment warning in JBoss7 like (truncated):
> {noformat}
> WARN [org.jboss.weld.deployer] JBAS016011: .../META-INF/beans.xml:5 cvc-complex-type.2.4.a: Invalid content was found starting with element 'alternatives'. One of '{"http://java.sun.com/xml/ns/javaee":interceptors, "http://java.sun.com/xml/ns/javaee":decorators, "http://java.sun.com/xml/ns/javaee":alternatives, WC[##other:"http://java.sun.com/xml/ns/javaee"]}' is expected.
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
More information about the shrinkwrap-issues
mailing list