Skip to content
This repository was archived by the owner on Jun 18, 2018. It is now read-only.
This repository was archived by the owner on Jun 18, 2018. It is now read-only.

Java exception on "wrap with abbreviation" comand without text selection #22

@lorenzos

Description

@lorenzos

As reported via email

Netbeans Version: NetBeans IDE 8.0.2 (Build 201411181905)
Java: 1.8.0_11; Java HotSpot(TM) 64-Bit Server VM 25.11-b03
Runtime: Java(TM) SE Runtime Environment 1.8.0_11-b12

Plugin version:1.1
Source: Plugin Portal

step by step to reproduce:

  1. open an html file with netbeans.
  2. put the cursor anywhere in the editor without selecting any text.
  3. run the command "wrap with abbreviation"
  4. write any tag in the text box. for exemple strong.
  5. clic OK button.

expected result (i dont know the specification but I guess there are two options):

<tag></tag> is displayed
---- or ----
nothing happens

seen result:
Java exception (see attached or traces below).

Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 12
at java.lang.String.charAt(String.java:646)
at org.lorenzos.zencoding.zeneditor.ZenEditor.getIndentation(ZenEditor.java:263)
at org.lorenzos.zencoding.zeneditor.ZenEditor.replaceContent(ZenEditor.java:107)

=> in functions getIndentation, there is :

String line = this.getLine();

the string "line" may contain null or may be empty according to how getLine function works.

proposed solution :
I think make null &/or empty string tests before using "line" variable or surround the "while (Character.isWhitespace(line.charAt(i))) ws += line.charAt(i++);" by try-catch at least to prevent displaying the exeption in netbeans output to the end user.

org.mozilla.javascript.WrappedException: Wrapped java.lang.StringIndexOutOfBoundsException: String index out of range: 12 (zencoding-java.js#3346)
at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1773)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:183)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:247)
at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:86)
at org.mozilla.javascript.gen.c1._c138(zencoding-java.js:3346)
at org.mozilla.javascript.gen.c1.call(zencoding-java.js)
at org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2408)
at org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:282)
at org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:129)
at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76)
at org.mozilla.javascript.gen.c1._c104(zencoding-java.js:2632)
at org.mozilla.javascript.gen.c1.call(zencoding-java.js)
at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76)
at org.mozilla.javascript.gen.c1._c379(zencoding-java.js:7561)
at org.mozilla.javascript.gen.c1.call(zencoding-java.js)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:398)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3065)
at org.mozilla.javascript.gen.c1.call(zencoding-java.js)
at ru.zencoding.JSExecutor.runAction(JSExecutor.java:75)
at org.lorenzos.zencoding.actions.ZenCodingAbstractAction$1.run(ZenCodingAbstractAction.java:44)
at org.netbeans.editor.GuardedDocument.runAtomic(GuardedDocument.java:323)
at org.openide.text.NbDocument.runAtomic(NbDocument.java:436)
at org.lorenzos.zencoding.actions.ZenCodingAbstractAction.actionPerformed(ZenCodingAbstractAction.java:49)
at org.openide.awt.InjectorAny.actionPerformed(InjectorAny.java:73)
at org.openide.awt.ContextAction$Performer.actionPerformed(ContextAction.java:226)
at org.openide.awt.ContextManager.actionPerformed(ContextManager.java:260)
at org.openide.awt.ContextAction.actionPerformed(ContextAction.java:109)
at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:93)
at org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:116)
at org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:99)
at org.openide.awt.GeneralAction$BaseDelAction.actionPerformed(GeneralAction.java:234)
at org.openide.windows.TopComponent.processKeyBinding(TopComponent.java:1176)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2940)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2842)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4883)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)
at java.awt.Component.dispatchEventImpl(Component.java:4754)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:719)
at java.awt.EventQueue$4.run(EventQueue.java:717)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 12
at java.lang.String.charAt(String.java:646)
at org.lorenzos.zencoding.zeneditor.ZenEditor.getIndentation(ZenEditor.java:263)
at org.lorenzos.zencoding.zeneditor.ZenEditor.replaceContent(ZenEditor.java:107)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:161)
... 65 more

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions