Uploaded image for project: 'Spring Tool Suite'
  1. Spring Tool Suite
  2. STS-3760

StringIndexOutOfBounds in spring AnnotationProposalComputer

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 3.5.0.RELEASE
    • Fix Version/s: 3.5.1.RELEASE
    • Component/s: EDITING
    • Labels:
      None

      Description

      To reproduce use the code below in a editor and then try to perform content assist just after the word 'RequestMapping' (i.e. just before the '(' of the annotation.

      @RestController
      public class MyRestService {
      	
      	@RequestMapping("/hello")
      	String hello() {
      		return "ACK";
      	}
      
      }
      

      Error:

      eclipse.buildId=3.5.0.201404011654-RELEASE-e43
      java.version=1.7.0_51
      java.vendor=Oracle Corporation
      BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
      Framework arguments:  -product org.springsource.sts.ide
      Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.springsource.sts.ide
      
      Warning
      Tue Apr 01 14:32:31 PDT 2014
      The 'Spring Annotation Proposal' proposal computer from the 'org.springframework.ide.eclipse.quickfix' plug-in did not complete normally. The extension has thrown a runtime exception.
      
      java.lang.StringIndexOutOfBoundsException: String index out of range: -1
      	at java.lang.String.substring(String.java:1911)
      	at org.springframework.ide.eclipse.quickfix.jdt.computers.AnnotationProposalComputer.getLocationInformation(AnnotationProposalComputer.java:88)
      	at org.springframework.ide.eclipse.quickfix.jdt.computers.RequestMappingVariableProposalComputer.computeCompletionProposalsHelper(RequestMappingVariableProposalComputer.java:131)
      	at org.springframework.ide.eclipse.quickfix.jdt.computers.RequestMappingVariableProposalComputer.computeCompletionProposals(RequestMappingVariableProposalComputer.java:69)
      	at org.springframework.ide.eclipse.quickfix.jdt.computers.AnnotationArgumentProposalComputer.computeCompletionProposalsHelper(AnnotationArgumentProposalComputer.java:304)
      	at org.springframework.ide.eclipse.quickfix.jdt.computers.AnnotationArgumentProposalComputer.computeCompletionProposals(AnnotationArgumentProposalComputer.java:224)
      	at org.springframework.ide.eclipse.quickfix.jdt.computers.AnnotationArgumentProposalComputer.computeCompletionProposals(AnnotationArgumentProposalComputer.java:85)
      	at org.eclipse.jdt.internal.ui.text.java.CompletionProposalComputerDescriptor.computeCompletionProposals(CompletionProposalComputerDescriptor.java:333)
      	at org.eclipse.jdt.internal.ui.text.java.CompletionProposalCategory.computeCompletionProposals(CompletionProposalCategory.java:337)
      	at org.eclipse.jdt.internal.ui.text.java.ContentAssistProcessor.collectProposals(ContentAssistProcessor.java:325)
      	at org.eclipse.jdt.internal.ui.text.java.ContentAssistProcessor.computeCompletionProposals(ContentAssistProcessor.java:282)
      	at org.eclipse.jface.text.contentassist.ContentAssistant.computeCompletionProposals(ContentAssistant.java:1839)
      	at org.eclipse.jface.text.contentassist.CompletionProposalPopup.computeProposals(CompletionProposalPopup.java:566)
      	at org.eclipse.jface.text.contentassist.CompletionProposalPopup.access$16(CompletionProposalPopup.java:563)
      	at org.eclipse.jface.text.contentassist.CompletionProposalPopup$2.run(CompletionProposalPopup.java:498)
      	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
      	at org.eclipse.jface.text.contentassist.CompletionProposalPopup.showProposals(CompletionProposalPopup.java:492)
      	at org.eclipse.jface.text.contentassist.ContentAssistant.showPossibleCompletions(ContentAssistant.java:1665)
      	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor$AdaptedSourceViewer.doOperation(CompilationUnitEditor.java:183)
      	at org.eclipse.ui.texteditor.ContentAssistAction$1.run(ContentAssistAction.java:82)
      	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
      	at org.eclipse.ui.texteditor.ContentAssistAction.run(ContentAssistAction.java:80)
      	at org.eclipse.jface.action.Action.runWithEvent(Action.java:499)
      	at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:119)
      	at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:90)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
      	at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:243)
      	at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:224)
      	at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
      	at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:167)
      	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:499)
      	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
      	at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
      	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:285)
      	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:504)
      	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:555)
      	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:376)
      	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$0(KeyBindingDispatcher.java:322)
      	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:84)
      	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
      	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1262)
      	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1056)
      	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1081)
      	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066)
      	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1108)
      	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1104)
      	at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1525)
      	at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4723)
      	at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:344)
      	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4611)
      	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340)
      	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4977)
      	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
      	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2549)
      	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
      	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)
      	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
      	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)
      	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:140)
      	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:611)
      	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
      	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)
      	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
      	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
      	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
      	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
      	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
      	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
      	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
      	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
      	at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
      	at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
      

        Attachments

          Activity

            People

            Assignee:
            aboyko Alex Boyko
            Reporter:
            kdvolder Kris De Volder
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: