Skip to content

Commit

Permalink
NTA-89: Add a keyword filter
Browse files Browse the repository at this point in the history
  • Loading branch information
Yuan-Hu committed May 4, 2016
1 parent 04e2849 commit 843ee74
Show file tree
Hide file tree
Showing 6 changed files with 119 additions and 0 deletions.
2 changes: 2 additions & 0 deletions core/src/main/java/io/narayana/nta/Configuration.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
package io.narayana.nta;

import io.narayana.nta.logparsing.as8.filters.PackageFilter;
import io.narayana.nta.logparsing.as8.filters.KeywordFilter;
import io.narayana.nta.logparsing.as8.handlers.*;

import java.io.File;
Expand Down Expand Up @@ -80,6 +81,7 @@ public final class Configuration {

public static final Class[] LOG_FILTERS = new Class[]{
PackageFilter.class,
KeywordFilter.class,
};

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package io.narayana.nta.logparsing.as8.filters;

import org.apache.log4j.Logger;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

public class GetFilterKeywords {
private List<String> filterKeywords;
private static final Logger logger = Logger.getLogger(GetFilterKeywords.class.getName());

private static class GetFilterKeywordsHolder {
private static final GetFilterKeywords INSTANCE = new GetFilterKeywords();
}

public static final GetFilterKeywords getInstance() {
return GetFilterKeywordsHolder.INSTANCE;
}

private GetFilterKeywords() {
InputStream inputStream = null;
try {
Properties prop = new Properties();
filterKeywords = new ArrayList<>();

String propFileName = "filter.properties";
logger.warn(getClass().getClassLoader().getResource());
inputStream = getClass().getClassLoader().getResourceAsStream(propFileName);
if (inputStream != null) {
prop.load(inputStream);
} else {
throw new FileNotFoundException("property file '" + propFileName + "' not found in the classpath");
}

for (String name : prop.stringPropertyNames()) {
if (name.contains("keywords"))
filterKeywords.add(prop.getProperty(name));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
inputStream.close();
} catch (IOException ignored) {
}
}
}

public List<String> getFilterKeywords() {
return filterKeywords;
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
* JBoss, Home of Professional Open Source.
* Copyright 2016, Red Hat, Inc., and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/

package io.narayana.nta.logparsing.as8.filters;

import io.narayana.nta.logparsing.common.Filter;

import java.util.List;

/**
* @author huyuan
*/
public class KeywordFilter implements Filter {


@Override
public boolean matches(String line) throws IndexOutOfBoundsException {

List<String> keywordList = GetFilterKeywords.getInstance().getFilterKeywords();

try {
for (String s : keywordList) {
if (line.contains(s)) { // if black list use !line.contains(s)
return true;
}
}
return false;
} catch (IndexOutOfBoundsException e) {
return false;
}
}
}
4 changes: 4 additions & 0 deletions core/src/main/resources/filter.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
keywords.1=TransactionImple
keywords.2=Periodic Recovery
keywords.3=TransactionSynchronizationRegistryImple

Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ public static WebArchive createDeployment() {
.addAsWebInfResource(new FileAsset(new File("src/test/resources/persistence.xml")),
"classes/META-INF/persistence.xml")
.addAsManifestResource(new FileAsset(new File("src/test/resources/nta-test-ds.xml")), "nta-test-ds.xml")
.addAsManifestResource(new FileAsset(new File("src/test/resources/filter.properties")), "filter.properties")
.addAsLibraries(libs)
.setManifest(new StringAsset(ManifestMF));
}
Expand Down
4 changes: 4 additions & 0 deletions core/src/test/resources/filter.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
keywords.1=TransactionImple
keywords.2=Periodic Recovery
keywords.3=TransactionSynchronizationRegistryImple

0 comments on commit 843ee74

Please sign in to comment.