Break the circular dependency between SAAJ and JAXB

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: P2
    • 9
    • Affects Version/s: 9
    • Component/s: xml
    • b12
    • Verified

      JDK-8036030 added new classes in com.sun.xml.internal.org.jvnet.staxex and com.sun.xml.internal.org.jvnet.staxex.util that introduces a circular dependency between SAAJ and JAXB.

      These classes depend on javax.xml.soap and it looks like they are only used by SAAJ:
      > com/sun/xml/internal/org/jvnet/staxex/BinaryText.class
      > com/sun/xml/internal/org/jvnet/staxex/MtomEnabled.class
      > com/sun/xml/internal/org/jvnet/staxex/StAxSOAPBody.class
      > com/sun/xml/internal/org/jvnet/staxex/StAxSOAPBody$Payload.class
      > com/sun/xml/internal/org/jvnet/staxex/util/MtomStreamWriter.class
      > com/sun/xml/internal/org/jvnet/staxex/util/SaajStaxReaderEx.class
      > com/sun/xml/internal/org/jvnet/staxex/util/SaajStaxReaderEx$1.class
      > com/sun/xml/internal/org/jvnet/staxex/util/SaajStaxWriter.class
      > com/sun/xml/internal/org/jvnet/staxex/util/SaajStaxWriter$1.class
      > com/sun/xml/internal/org/jvnet/staxex/util/SaajStaxWriter$1$1.class
      > com/sun/xml/internal/org/jvnet/staxex/util/SaajStaxWriterEx.class
      > com/sun/xml/internal/org/jvnet/staxex/util/SaajStaxWriterEx$1.class
      > com/sun/xml/internal/org/jvnet/staxex/util/SaajStaxWriterEx$1$1.class
      > com/sun/xml/internal/org/jvnet/staxex/util/SaajStaxWriterEx$1$2.class
      > com/sun/xml/internal/org/jvnet/staxex/util/SaajStaxWriterEx$2.class
      > com/sun/xml/internal/org/jvnet/staxex/util/SaajStaxWriterEx$State.class

      Before this change, the dependences are clean:
         JAXB depends on JAF
         SAAJ depends on JAXB and JAF
         JAX-WS depends on SAAJ, JAXB, and JAF

      com.sun.xml.internal.org.jvnet.** packages are part of JAXB. With the above new classes included in JAXB packages, it causes JAXB to depend on javax.xml.soap API in SAAJ and hence the circular dependency.

      This new dependency prevents JAX-WS, SAAJ, JAXB from separating into separate modules.

      One way to eliminate such dependency is to move:
      src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/staxex/BinaryText.java
      src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/staxex/MtomEnabled.java
      src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/staxex/util/SaajStaxReaderEx.java
      src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/staxex/util/SaajStaxWriter.java
      src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/staxex/util/SaajStaxWriterEx.java
      src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/staxex/StAxSOAPBody.java

      into a separate package that is only used by SAAJ (assuming these classes are intended only for SAAJ to use).

            Assignee:
            Miroslav Kos (Inactive)
            Reporter:
            Mandy Chung (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: