Uploaded image for project: 'Tools (JBoss Tools)'
  1. Tools (JBoss Tools)
  2. JBIDE-12806

Annotations location in the JAX-RS Metamodel are not updated after code changes

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 4.0.0.Beta1
    • 4.0.0.Alpha1
    • webservices
    • None

    Description

      Step to reproduce:

      1. Create a new annotation as below (package declaration is omited):

      import javax.ws.rs.HttpMethod;
      
      @HttpMethod("PATCH")
      public @interface PATCH {
      
      }
      

      Assert: The JAX-RS validator should report 2 problems: missing @Target annotation and missing @Retention annotation.

      2- Use the available QuickFix to add the @Retention annotation
      Assert: code is now as below:

      import javax.ws.rs.HttpMethod;
      import java.lang.annotation.Retention;
      import java.lang.annotation.RetentionPolicy;
      
      @Retention(RetentionPolicy.RUNTIME)
      @HttpMethod("PATCH")
      public @interface PATCH {
      
      }
      

      Assert: the missing @Target annotation problem should be reported under the 'PATCH' type name as before
      FAIL : the marker location in the document was not updated, the problem is now somewhere under the 'import java.lang.annotation.Retention' declaration.

      Also, the lack of location update can also cause this kind of error:
      !ENTRY org.jboss.tools.common 4 0 2012-10-05 10:34:09.357
      !MESSAGE Wrong offset [195] of the problem marker [The HTTP Method should have a @Target(ElementType.METHOD) annotation on its type.] for resource: /poh5/src/main/java/org/jboss/tools/example/html5/rest/PATCH.java
      !STACK 0
      org.eclipse.jface.text.BadLocationException
      at org.eclipse.jface.text.TreeLineTracker.fail(TreeLineTracker.java:1055)
      at org.eclipse.jface.text.TreeLineTracker.lineByOffset(TreeLineTracker.java:267)
      at org.eclipse.jface.text.TreeLineTracker.getLineNumberOfOffset(TreeLineTracker.java:1137)
      at org.eclipse.jface.text.AbstractLineTracker.getLineNumberOfOffset(AbstractLineTracker.java:161)
      at org.eclipse.jface.text.AbstractDocument.getLineOfOffset(AbstractDocument.java:915)
      at org.eclipse.core.internal.filebuffers.SynchronizableDocument.getLineOfOffset(SynchronizableDocument.java:397)
      at org.jboss.tools.common.validation.ValidationErrorManager.addError(ValidationErrorManager.java:428)
      at org.jboss.tools.common.validation.ValidationErrorManager.addError(ValidationErrorManager.java:495)
      at org.jboss.tools.common.validation.ValidationErrorManager.addError(ValidationErrorManager.java:349)
      at org.jboss.tools.common.validation.ValidationErrorManager.addError(ValidationErrorManager.java:369)
      at org.jboss.tools.common.validation.ValidationErrorManager.addError(ValidationErrorManager.java:387)
      at org.jboss.tools.common.validation.ValidationErrorManager.addError(ValidationErrorManager.java:374)
      at org.jboss.tools.common.validation.TempMarkerManager.addProblem(TempMarkerManager.java:116)
      at org.jboss.tools.ws.jaxrs.core.internal.metamodel.validation.AbstractJaxrsElementValidatorDelegate.addProblem(AbstractJaxrsElementValidatorDelegate.java:54)
      at org.jboss.tools.ws.jaxrs.core.internal.metamodel.validation.JaxrsHttpMethodValidatorDelegate.validateTargetAnnotation(JaxrsHttpMethodValidatorDelegate.java:78)
      at org.jboss.tools.ws.jaxrs.core.internal.metamodel.validation.JaxrsHttpMethodValidatorDelegate.validate(JaxrsHttpMethodValidatorDelegate.java:45)
      at org.jboss.tools.ws.jaxrs.core.internal.metamodel.validation.JaxrsMetamodelValidator.validate(JaxrsMetamodelValidator.java:255)
      at org.jboss.tools.ws.jaxrs.core.internal.metamodel.validation.JaxrsMetamodelValidator.validate(JaxrsMetamodelValidator.java:170)
      at org.jboss.tools.ws.jaxrs.core.internal.metamodel.validation.JaxrsMetamodelValidator.validate(JaxrsMetamodelValidator.java:120)
      at org.jboss.tools.common.validation.ValidatorManager.validate(ValidatorManager.java:117)
      at org.jboss.tools.common.validation.ValidatorManager.validateInJob(ValidatorManager.java:81)
      at org.eclipse.wst.validation.internal.core.ValidatorLauncher.start(ValidatorLauncher.java:77)
      at org.eclipse.wst.validation.Validator$V1.validate(Validator.java:768)
      at org.eclipse.wst.validation.Validator.validate(Validator.java:405)
      at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:704)
      at org.eclipse.wst.validation.internal.ValManager$1.visit(ValManager.java:665)
      at org.eclipse.wst.validation.internal.ValManager.accept(ValManager.java:810)
      at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:669)
      at org.eclipse.wst.validation.internal.ValidationRunner.execute(ValidationRunner.java:134)
      at org.eclipse.wst.validation.internal.ValidationRunner.validate(ValidationRunner.java:68)
      at org.eclipse.wst.validation.ui.internal.ManualValidationRunner.runInWorkspace(ManualValidationRunner.java:83)
      at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
      at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
      10:

      Attachments

        Activity

          People

            xcoulon@redhat.com Xavier Coulon
            xcoulon@redhat.com Xavier Coulon
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: