From 6542548043f027e27ef8d24ec0f720d3c7e05f29 Mon Sep 17 00:00:00 2001 From: Greg Huber Date: Sun, 27 Sep 2020 10:30:24 +0100 Subject: [PATCH 1/2] NPE on multiple ignore filters --- CHANGELOG.txt | 1 + META-INF/MANIFEST.MF | 2 +- .../logwatcher/watchers/TextFileWatcher.java | 13 +++++++++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index db26814..ef979f1 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -5,6 +5,7 @@ Changes since 1.4: ---------------------------------- +- NPE on multiple ignore filters - Upgrade to eclipse 4.6 Neon - Upgrade to eclipse 4.4 Luna diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF index ca99289..31d3f01 100644 --- a/META-INF/MANIFEST.MF +++ b/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Logwatcher Bundle-SymbolicName: org.graysky.eclipse.logwatcher;singleton:=true -Bundle-Version: 1.4.0.3 +Bundle-Version: 1.4.0.4 Bundle-Activator: org.graysky.eclipse.logwatcher.LogwatcherPlugin Require-Bundle: org.eclipse.core.runtime, org.eclipse.ui.ide, diff --git a/src/org/graysky/eclipse/logwatcher/watchers/TextFileWatcher.java b/src/org/graysky/eclipse/logwatcher/watchers/TextFileWatcher.java index 86d628c..432fce9 100644 --- a/src/org/graysky/eclipse/logwatcher/watchers/TextFileWatcher.java +++ b/src/org/graysky/eclipse/logwatcher/watchers/TextFileWatcher.java @@ -124,8 +124,17 @@ else if (!m_file.exists()) { // Apply each filter for (Iterator iter = m_filters.iterator(); iter.hasNext();) { Filter f = (Filter) iter.next(); - if (f.matches(line)) { - line = f.handleWatcherMatch(line, firstUpdate); + try { + if (f.matches(line)) { + line = f.handleWatcherMatch(line, firstUpdate); + } + // Skip rest of filters as for an ignore will be null + if (line == null) { + break; + } + } catch (Exception e) { + // just log + LogwatcherPlugin.getDefault().logError("Error applying filter", e); } } } From 62dd86a16f5dc96e9f4492113d190f5ba1bc9998 Mon Sep 17 00:00:00 2001 From: Greg Huber Date: Wed, 30 Sep 2020 08:04:00 +0100 Subject: [PATCH 2/2] Replace oro with regex. Minor fixes. --- .classpath | 3 +-- .settings/org.eclipse.jdt.core.prefs | 5 ----- CHANGELOG.txt | 3 +++ META-INF/MANIFEST.MF | 9 ++++---- build.properties | 13 +++++------ lib/jakarta-oro-2.0.6.jar | Bin 65368 -> 0 bytes .../logwatcher/dialogs/FindDialog.java | 14 +++++++++++- .../logwatcher/dialogs/NewWatcherDialog.java | 4 +++- .../eclipse/logwatcher/filters/Filter.java | 21 ++++++++---------- .../logwatcher/filters/FilterLoader.java | 4 ++-- .../wizards/NewFilterWizardStart.java | 13 ++++++----- 11 files changed, 48 insertions(+), 41 deletions(-) delete mode 100644 lib/jakarta-oro-2.0.6.jar diff --git a/.classpath b/.classpath index 769b801..1fa3e68 100644 --- a/.classpath +++ b/.classpath @@ -1,7 +1,6 @@ - - + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index f42de36..8e3baab 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,7 +1,2 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/CHANGELOG.txt b/CHANGELOG.txt index ef979f1..13e9121 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -5,6 +5,9 @@ Changes since 1.4: ---------------------------------- +- Fix enabled state for Remove All button on Edit this watcher +- Find dialog set initial text as selected from log window +- Replace jakata oro with java.util.regex - NPE on multiple ignore filters - Upgrade to eclipse 4.6 Neon - Upgrade to eclipse 4.4 Luna diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF index 31d3f01..2f3ee0e 100644 --- a/META-INF/MANIFEST.MF +++ b/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Logwatcher Bundle-SymbolicName: org.graysky.eclipse.logwatcher;singleton:=true -Bundle-Version: 1.4.0.4 +Bundle-Version: 1.4.0.5 Bundle-Activator: org.graysky.eclipse.logwatcher.LogwatcherPlugin Require-Bundle: org.eclipse.core.runtime, org.eclipse.ui.ide, @@ -14,8 +14,9 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.help, org.eclipse.jface.text Bundle-ActivationPolicy: lazy -Bundle-ClassPath: lib/jakarta-oro-2.0.6.jar, - plugins/org.graysky.eclipse.logwatcher_1.4.0.3.jar +Bundle-Vendor: Graysky.org +Plugin-Class: org.graysky.eclipse.logwatcher.LogwatcherPlugin +Bundle-ClassPath: plugins/org.graysky.eclipse.logwatcher_1.4.0.5.jar Export-Package: org.graysky.eclipse.logwatcher, org.graysky.eclipse.logwatcher.actions, org.graysky.eclipse.logwatcher.dialogs, @@ -25,5 +26,3 @@ Export-Package: org.graysky.eclipse.logwatcher, org.graysky.eclipse.logwatcher.watchers, org.graysky.eclipse.logwatcher.wizards, org.graysky.eclipse.util -Bundle-Vendor: Graysky.org -Plugin-Class: org.graysky.eclipse.logwatcher.LogwatcherPlugin diff --git a/build.properties b/build.properties index 9053fe7..a88bc03 100644 --- a/build.properties +++ b/build.properties @@ -7,8 +7,9 @@ bin.includes = toc_LogWatcher.xml,\ book.xml,\ about.html,\ CHANGELOG.txt,\ - lib/jakarta-oro-2.0.6.jar,\ - META-INF/ + META-INF/,\ + OSGI-INF/l10n/bundle.properties,\ + plugins/org.graysky.eclipse.logwatcher_1.4.0.5.jar src.includes = toc_LogWatcher.xml,\ src/,\ plugin.xml,\ @@ -19,8 +20,6 @@ src.includes = toc_LogWatcher.xml,\ book.xml,\ about.html,\ CHANGELOG.txt -jars.compile.order = plugins/org.graysky.eclipse.logwatcher_1.4.0.3.jar -output.plugins/org.graysky.eclipse.logwatcher_1.4.0.3.jar = bin/ -source.plugins/org.graysky.eclipse.logwatcher_1.4.0.3.jar = src/ - - +jars.compile.order = plugins/org.graysky.eclipse.logwatcher_1.4.0.5.jar +output.plugins/org.graysky.eclipse.logwatcher_1.4.0.5.jar = bin/ +source.plugins/org.graysky.eclipse.logwatcher_1.4.0.5.jar = src/ diff --git a/lib/jakarta-oro-2.0.6.jar b/lib/jakarta-oro-2.0.6.jar deleted file mode 100644 index 346504c6d4bd7232f0776a4a0f8a32333cedd93e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65368 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 o;4F{rLBwiC&; 0) { removeButton.setEnabled(true); + removeAllButton.setEnabled(true); } else { removeButton.setEnabled(false); + removeAllButton.setEnabled(false); } } }); diff --git a/src/org/graysky/eclipse/logwatcher/filters/Filter.java b/src/org/graysky/eclipse/logwatcher/filters/Filter.java index 9ee9b6b..4be6ee2 100644 --- a/src/org/graysky/eclipse/logwatcher/filters/Filter.java +++ b/src/org/graysky/eclipse/logwatcher/filters/Filter.java @@ -2,11 +2,10 @@ import java.util.Iterator; import java.util.Vector; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; -import org.apache.oro.text.regex.MalformedPatternException; -import org.apache.oro.text.regex.Pattern; -import org.apache.oro.text.regex.Perl5Compiler; -import org.apache.oro.text.regex.Perl5Matcher; import org.eclipse.swt.custom.LineStyleEvent; import org.graysky.eclipse.util.XmlUtils; import org.w3c.dom.Document; @@ -23,7 +22,6 @@ public class Filter private Vector m_actions = new Vector(); private boolean m_contains = true; private Pattern m_regexp = null; - private Perl5Matcher m_matcher = new Perl5Matcher(); private String m_description; /** @@ -31,12 +29,12 @@ public class Filter */ public boolean matches(String str) { - boolean match = m_matcher.contains(str, m_regexp); + Matcher matcher = m_regexp.matcher(str); if (m_contains) { - return match; + return matcher.find(); } else { - return !match; + return !matcher.find(); } } @@ -89,16 +87,15 @@ public String getPattern() return m_pattern; } - public void setPattern(String pattern, boolean caseSensitive) throws MalformedPatternException + public void setPattern(String pattern, boolean caseSensitive) throws PatternSyntaxException { m_pattern = pattern; m_caseSensitive = caseSensitive; - Perl5Compiler compiler = new Perl5Compiler(); if (!m_caseSensitive) { - m_regexp = compiler.compile(m_pattern, Perl5Compiler.CASE_INSENSITIVE_MASK); + m_regexp = Pattern.compile(m_pattern, Pattern.CASE_INSENSITIVE); } else { - m_regexp = compiler.compile(m_pattern); + m_regexp = Pattern.compile(m_pattern); } } diff --git a/src/org/graysky/eclipse/logwatcher/filters/FilterLoader.java b/src/org/graysky/eclipse/logwatcher/filters/FilterLoader.java index f3a16e0..0a7fb0c 100644 --- a/src/org/graysky/eclipse/logwatcher/filters/FilterLoader.java +++ b/src/org/graysky/eclipse/logwatcher/filters/FilterLoader.java @@ -2,11 +2,11 @@ import java.io.Reader; import java.util.Vector; +import java.util.regex.PatternSyntaxException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; -import org.apache.oro.text.regex.MalformedPatternException; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Display; import org.graysky.eclipse.logwatcher.LogwatcherPlugin; @@ -67,7 +67,7 @@ else if (name.equals("action")) { try { f.setPattern(pattern, caseSensitive); } - catch (MalformedPatternException ignore) { + catch (PatternSyntaxException ignore) { } return f; } diff --git a/src/org/graysky/eclipse/logwatcher/wizards/NewFilterWizardStart.java b/src/org/graysky/eclipse/logwatcher/wizards/NewFilterWizardStart.java index 252ce55..a2db32f 100644 --- a/src/org/graysky/eclipse/logwatcher/wizards/NewFilterWizardStart.java +++ b/src/org/graysky/eclipse/logwatcher/wizards/NewFilterWizardStart.java @@ -1,7 +1,8 @@ package org.graysky.eclipse.logwatcher.wizards; -import org.apache.oro.text.regex.MalformedPatternException; -import org.apache.oro.text.regex.Perl5Compiler; +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; + import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.jface.wizard.WizardPage; @@ -28,7 +29,7 @@ public class NewFilterWizardStart extends WizardPage private Combo m_actionsCombo; private Combo m_containsCombo; private Button m_caseSensitiveBox; - private Perl5Compiler m_regExpCompiler = new Perl5Compiler(); + //private Perl5Compiler m_regExpCompiler = new Perl5Compiler(); /** * Constructor for FilterWizardStartPage. @@ -145,7 +146,7 @@ public Filter getFilter() f.setContains(m_containsCombo.getSelectionIndex() == 0 ? true : false); return f; } - catch (MalformedPatternException e) { + catch (PatternSyntaxException e) { // Shouldn't happen - we have already compiled the pattern. return null; } @@ -174,11 +175,11 @@ protected boolean validatePage() if (m_filterText.getText().length() > 0) { try { - m_regExpCompiler.compile(m_filterText.getText()); + Pattern.compile(m_filterText.getText()); setErrorMessage(null); return true; } - catch (MalformedPatternException e) { + catch (PatternSyntaxException e) { setErrorMessage("Invalid regular expression: " + e.getMessage()); return false; }