@@ -57,6 +57,7 @@ import oracle.dbtools.raptor.controls.grid.DefaultDrillLink
5757import oracle.dbtools.raptor.utils.Connections
5858import oracle.ide.config.Preferences
5959import oracle.javatools.ui.table.ToolbarButton
60+ import org.springframework.web.util.HtmlUtils
6061import org.utplsql.sqldev.dal.UtplsqlDao
6162import org.utplsql.sqldev.model.LimitedLinkedHashMap
6263import org.utplsql.sqldev.model.preference.PreferenceModel
@@ -539,8 +540,8 @@ class RunnerPanel implements ActionListener, MouseListener, HyperlinkListener {
539540 // Patterns (primarily Asserts, Errors, ServerOutput):
540541 // at "OWNER.PACKAGE.PROCEDURE", line 42
541542 // at "OWNER.PROCEDURE", line 42
542- val p1 = Pattern . compile(' ' ' \s +("([^ \. ]+ )\. ([^ \. "]+ )(?:\. ([^ \" ]+ ))?" ,\s +line\s +([0-9]+))' ' ' )
543- var localText = text
543+ val p1 = Pattern . compile(' ' ' \s +("( \S +? )\. (\S +? )(?:\. (\S +? ))?" ,\s +line\s +([0-9]+))' ' ' )
544+ var localText = HtmlUtils . htmlEscape( text)
544545 var m = p1. matcher(localText)
545546 while (m. find) {
546547 val link = ' ' ' <a href="«m.group(2)»/«m.group(3)»/«m.group(5)»">«m.group(1)»</a>' ' '
@@ -549,7 +550,7 @@ class RunnerPanel implements ActionListener, MouseListener, HyperlinkListener {
549550 }
550551 // Patterns (primarily Warnings, without line reference, calculate when opening link):
551552 // owner.package.procedure
552- val p2 = Pattern . compile(' ' ' ^\s {2}(\S +)\. (\S +)\. (\S +)$' ' ' , Pattern . MULTILINE )
553+ val p2 = Pattern . compile(' ' ' ^\s {2}(( \S +? )\. (\S +? )\. (\S +?) )$' ' ' , Pattern . MULTILINE )
553554 m = p2. matcher(localText)
554555 while (m. find) {
555556 val link = ' ' ' <a href="«m.group(2).toUpperCase»/«m.group(3).toUpperCase»/1/«m.group(4).toUpperCase»">«m.group(1)»</a>' ' '
0 commit comments