Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8029815

Constants in seis not allowed, contrary to the jax-ws specification

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P2 P2
    • 9
    • 7u45
    • xml
    • Verified


      SHORT SUMMARY:


      Constants in SEIs not allowed, contrary to the JAX-WS specification


      DESCRIPTION:


      The reference implementation of JAX-WS does not allow constants in SEIs, but
      no such limitation exists in the specification. Appendix B.7 on page 161 of
      the JAX-WS 2.2 specification (entitled "Changes Since Early Draft 2")
      indicates that constants were disallowed in an early draft of the
      specification, but the restriction was subsequently removed:

              ? Removed requirement that SEIs MUST NOT have constants, see section
      3.4.

              
      http://download.oracle.com/otn-pub/jcp/jaxws-2_2a-mrel4-eval-spec/jaxws-2_2a-m
      rel4-eval-spec.pdf

      The same note can be seen in the JAX-WS 2.1 specification in section B.5 on
      page 1.4.8:

              
      http://download.oracle.com/otn-pub/jcp/jaxws-2.1-mrel2-eval-oth-JSpec/jaxws-2_
      1-mrel2-spec.pdf

      It appears that the implementation was never updated to reflect this change
      in the specification.

      The check for validity of the SEI is in this method:

              
      com/sun/tools/internal/ws/processor/modeler/annotation/WebServiceVisitor.isLeg

      alSEI()

      TESTCASE
      --------
      Attached.

      REPRODUCTION INSTRUCTIONS
      -------------------------
      1. Extract testcase package
      2. Run: javac sampleTestCase\*.java
      3. Run: wsgen -cp . sampleTestCase.HelloServiceImpl

      Wsgen will fail with the following output:

      warning: The apt tool and its associated API are planned to be
      removed in the next major JDK release. These features have been
      superseded by javac and the standardized annotation processing API,
      javax.annotation.processing and javax.lang.model. Users are
      recommended to migrate to the annotation processing features of
      javac; see the javac man page for more information.
      Problem encountered during annotation processing;
      see stacktrace below for more information.
      com.sun.tools.internal.ws.processor.modeler.ModelerException: [failed to
      localize] An service endpoint interface cannot contain constant declaration:
      Interface: sampleTestCase.HelloService field: defaultGreeting.()
              at
      com.sun.tools.internal.ws.processor.modeler.annotation.WebServiceAP.onError(We

      bServiceAP.java:219)
              at
      com.sun.tools.internal.ws.processor.modeler.annotation.WebServiceVisitor.isLeg

      alSEI(WebServiceVisitor.java:583)
              at
      com.sun.tools.internal.ws.processor.modeler.annotation.WebServiceVisitor.shoul

      dProcessWebService(WebServiceVisitor.java:308)
              at
      com.sun.tools.internal.ws.processor.modeler.annotation.WebServiceVisitor.visit

      InterfaceDeclaration(WebServiceVisitor.java:95)
              at
      com.sun.tools.apt.mirror.declaration.InterfaceDeclarationImpl.accept(Interface

      DeclarationImpl.java:50)
              at
      com.sun.tools.internal.ws.processor.modeler.annotation.WebServiceVisitor.inspe

      ctEndpointInterface(WebServiceVisitor.java:408)
              at
      com.sun.tools.internal.ws.processor.modeler.annotation.WebServiceVisitor.visit

      ClassDeclaration(WebServiceVisitor.java:129)
              at
      com.sun.tools.apt.mirror.declaration.ClassDeclarationImpl.accept(ClassDeclarat

      ionImpl.java:113)
              at
      com.sun.tools.internal.ws.processor.modeler.annotation.WebServiceAP.buildModel

      (WebServiceAP.java:319)
              at
      com.sun.tools.internal.ws.processor.modeler.annotation.WebServiceAP.process(We

      bServiceAP.java:260)
              at
      com.sun.mirror.apt.AnnotationProcessors$CompositeAnnotationProcessor.process(A

      nnotationProcessors.java:84)
              at com.sun.tools.apt.comp.Apt.main(Apt.java:480)
              at
      com.sun.tools.apt.main.AptJavaCompiler.compile(AptJavaCompiler.java:270)
              at com.sun.tools.apt.main.Main.compile(Main.java:1127)
              at com.sun.tools.apt.main.Main.compile(Main.java:989)
              at com.sun.tools.apt.Main.processing(Main.java:113)
              at com.sun.tools.apt.Main.process(Main.java:103)
              at com.sun.tools.apt.Main.process(Main.java:85)
              at
      com.sun.tools.internal.ws.wscompile.WsgenTool.buildModel(WsgenTool.java:207)
              at
      com.sun.tools.internal.ws.wscompile.WsgenTool.run(WsgenTool.java:111)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at
      sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
              at
      sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.j

      ava:43)
              at java.lang.reflect.Method.invoke(Method.java:606)
              at com.sun.tools.internal.ws.Invoker.invoke(Invoker.java:120)
              at com.sun.tools.internal.ws.WsGen.main(WsGen.java:42)
      error: compilation failed, errors should have been reported

            mgrebac Martin Grebáč (Inactive)
            asaha Abhijit Saha
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: