From 0e31d503d009883b119d2508324cbd08ec8c298e Mon Sep 17 00:00:00 2001 From: Jeremy Long Date: Sun, 17 Nov 2013 22:44:33 -0500 Subject: [PATCH] removed unused code Former-commit-id: 1f6158daa812a15baf0d88ee689b49681e67aeed --- .../dependencycheck/data/cpe/BaseIndex.java | 117 ---------- .../data/cpe/CpeIndexReader.java | 209 ------------------ .../data/cpe/CpeIndexWriter.java | 150 ------------- .../data/cpe/IndexIntegrationTest.java | 75 ------- 4 files changed, 551 deletions(-) delete mode 100644 dependency-check-core/src/main/java/org/owasp/dependencycheck/data/cpe/BaseIndex.java delete mode 100644 dependency-check-core/src/main/java/org/owasp/dependencycheck/data/cpe/CpeIndexReader.java delete mode 100644 dependency-check-core/src/main/java/org/owasp/dependencycheck/data/cpe/CpeIndexWriter.java delete mode 100644 dependency-check-core/src/test/java/org/owasp/dependencycheck/data/cpe/IndexIntegrationTest.java diff --git a/dependency-check-core/src/main/java/org/owasp/dependencycheck/data/cpe/BaseIndex.java b/dependency-check-core/src/main/java/org/owasp/dependencycheck/data/cpe/BaseIndex.java deleted file mode 100644 index f895a99e8..000000000 --- a/dependency-check-core/src/main/java/org/owasp/dependencycheck/data/cpe/BaseIndex.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * This file is part of dependency-check-core. - * - * Dependency-check-core is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation, either version 3 of the License, or (at your option) any - * later version. - * - * Dependency-check-core 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 General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License along with - * dependency-check-core. If not, see http://www.gnu.org/licenses/. - * - * Copyright (c) 2013 Jeremy Long. All Rights Reserved. - */ -package org.owasp.dependencycheck.data.cpe; - -import java.io.File; -import java.io.IOException; -import java.util.logging.Level; -import java.util.logging.Logger; -import org.apache.lucene.store.Directory; -import org.apache.lucene.store.FSDirectory; -import org.owasp.dependencycheck.utils.Settings; - -/** - * The Base Index class used to access the CPE Index. - * - * @author Jeremy Long (jeremy.long@owasp.org) - */ -public abstract class BaseIndex { - - /** - * The Lucene directory containing the index. - */ - private Directory directory; - /** - * Indicates whether or not the Lucene Index is open. - */ - private boolean indexOpen = false; - - /** - * Gets the directory. - * - * @return the directory - */ - public Directory getDirectory() { - return directory; - } - - /** - * Opens the CPE Index. - * - * @throws IOException is thrown if an IOException occurs opening the index. - */ - public void open() throws IOException { - directory = this.openDirectory(); - indexOpen = true; - } - - /** - * Closes the CPE Index. - */ - public void close() { - try { - directory.close(); - } catch (IOException ex) { - final String msg = "Unable to update database due to an IO error."; - Logger.getLogger(BaseIndex.class.getName()).log(Level.SEVERE, msg); - Logger.getLogger(BaseIndex.class.getName()).log(Level.FINE, null, ex); - } finally { - directory = null; - } - indexOpen = false; - - } - - /** - * Returns the status of the data source - is the index open. - * - * @return true or false. - */ - public boolean isOpen() { - return indexOpen; - } - - /** - * Returns the Lucene directory object for the CPE Index. - * - * @return the Lucene Directory object for the CPE Index. - * @throws IOException is thrown if an IOException occurs. - */ - protected Directory openDirectory() throws IOException { - final File path = getDataDirectory(); - return FSDirectory.open(path); - } - - /** - * Retrieves the directory that the JAR file exists in so that we can ensure - * we always use a common data directory. - * - * @return the data directory for this index. - * @throws IOException is thrown if an IOException occurs of course... - */ - public static File getDataDirectory() throws IOException { - final File path = Settings.getFile(Settings.KEYS.CPE_DATA_DIRECTORY); - if (!path.exists()) { - if (!path.mkdirs()) { - throw new IOException("Unable to create CPE Data directory"); - } - } - return path; - } -} diff --git a/dependency-check-core/src/main/java/org/owasp/dependencycheck/data/cpe/CpeIndexReader.java b/dependency-check-core/src/main/java/org/owasp/dependencycheck/data/cpe/CpeIndexReader.java deleted file mode 100644 index 0010448cc..000000000 --- a/dependency-check-core/src/main/java/org/owasp/dependencycheck/data/cpe/CpeIndexReader.java +++ /dev/null @@ -1,209 +0,0 @@ -/* - * This file is part of dependency-check-core. - * - * Dependency-check-core is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation, either version 3 of the License, or (at your option) any - * later version. - * - * Dependency-check-core 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 General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License along with - * dependency-check-core. If not, see http://www.gnu.org/licenses/. - * - * Copyright (c) 2013 Jeremy Long. All Rights Reserved. - */ -package org.owasp.dependencycheck.data.cpe; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; -import org.apache.lucene.analysis.Analyzer; -import org.apache.lucene.analysis.core.KeywordAnalyzer; -import org.apache.lucene.analysis.miscellaneous.PerFieldAnalyzerWrapper; -import org.apache.lucene.document.Document; -import org.apache.lucene.index.CorruptIndexException; -import org.apache.lucene.index.DirectoryReader; -import org.apache.lucene.index.IndexReader; -import org.apache.lucene.queryparser.classic.ParseException; -import org.apache.lucene.queryparser.classic.QueryParser; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.TopDocs; -import org.apache.lucene.util.Version; -import org.owasp.dependencycheck.data.lucene.FieldAnalyzer; -import org.owasp.dependencycheck.data.lucene.LuceneUtils; -import org.owasp.dependencycheck.data.lucene.SearchFieldAnalyzer; - -/** - * - * @author Jeremy Long (jeremy.long@owasp.org) - */ -public class CpeIndexReader extends BaseIndex { - - /** - * The Lucene IndexReader. - */ - private IndexReader indexReader; - /** - * The Lucene IndexSearcher. - */ - private IndexSearcher indexSearcher; - /** - * The Lucene Analyzer used for Searching. - */ - private Analyzer searchingAnalyzer; - /** - * The Lucene QueryParser used for Searching. - */ - private QueryParser queryParser; - /** - * The search field analyzer for the product field. - */ - private SearchFieldAnalyzer productSearchFieldAnalyzer; - /** - * The search field analyzer for the vendor field. - */ - private SearchFieldAnalyzer vendorSearchFieldAnalyzer; - - /** - * Opens the CPE Index. - * - * @throws IOException is thrown if an IOException occurs opening the index. - */ - @Override - public void open() throws IOException { - super.open(); - indexReader = DirectoryReader.open(getDirectory()); - indexSearcher = new IndexSearcher(indexReader); - searchingAnalyzer = createSearchingAnalyzer(); - queryParser = new QueryParser(LuceneUtils.CURRENT_VERSION, Fields.DOCUMENT_KEY, searchingAnalyzer); - } - - /** - * Closes the CPE Index. - */ - @Override - public void close() { - //TODO remove spinlock (shared) - if (searchingAnalyzer != null) { - searchingAnalyzer.close(); - searchingAnalyzer = null; - } - if (indexReader != null) { - try { - indexReader.close(); - } catch (IOException ex) { - Logger.getLogger(CpeIndexReader.class.getName()).log(Level.FINEST, null, ex); - } - indexReader = null; - } - queryParser = null; - indexSearcher = null; - super.close(); - } - - /** - * Searches the index using the given search string. - * - * @param searchString the query text - * @param maxQueryResults the maximum number of documents to return - * @return the TopDocs found by the search - * @throws ParseException thrown when the searchString is invalid - * @throws IOException is thrown if there is an issue with the underlying - * Index - */ - public TopDocs search(String searchString, int maxQueryResults) throws ParseException, IOException { - if (searchString == null || searchString.trim().isEmpty()) { - throw new ParseException("Query is null or empty"); - } - if (queryParser == null) { - if (isOpen()) { - final String msg = String.format("QueryParser is null for query: '%s'. Attempting to reopen index.", - searchString); - Logger.getLogger(CpeIndexReader.class.getName()).log(Level.WARNING, msg); - close(); - open(); - } else { - final String msg = String.format("QueryParser is null, but data source is open, for query: '%s'. Attempting to reopen index.", - searchString); - Logger.getLogger(CpeIndexReader.class.getName()).log(Level.WARNING, msg); - close(); - open(); - } - } - final Query query = queryParser.parse(searchString); - return indexSearcher.search(query, maxQueryResults); - } - - /** - * Searches the index using the given query. - * - * @param query the query used to search the index - * @param maxQueryResults the max number of results to return - * @return the TopDocs found be the query - * @throws CorruptIndexException thrown if the Index is corrupt - * @throws IOException thrown if there is an IOException - */ - public TopDocs search(Query query, int maxQueryResults) throws CorruptIndexException, IOException { - resetSearchingAnalyzer(); - return indexSearcher.search(query, maxQueryResults); - } - - /** - * Retrieves a document from the Index. - * - * @param documentId the id of the document to retrieve - * @return the Document - * @throws IOException thrown if there is an IOException - */ - public Document getDocument(int documentId) throws IOException { - return indexSearcher.doc(documentId); - } - - /** - * Creates an Analyzer for searching the CPE Index. - * - * @return the CPE Analyzer. - */ - @SuppressWarnings("unchecked") - private Analyzer createSearchingAnalyzer() { - final Map fieldAnalyzers = new HashMap(); - fieldAnalyzers.put(Fields.DOCUMENT_KEY, new KeywordAnalyzer()); - productSearchFieldAnalyzer = new SearchFieldAnalyzer(LuceneUtils.CURRENT_VERSION); - vendorSearchFieldAnalyzer = new SearchFieldAnalyzer(LuceneUtils.CURRENT_VERSION); - fieldAnalyzers.put(Fields.PRODUCT, productSearchFieldAnalyzer); - fieldAnalyzers.put(Fields.VENDOR, vendorSearchFieldAnalyzer); - - return new PerFieldAnalyzerWrapper(new FieldAnalyzer(LuceneUtils.CURRENT_VERSION), fieldAnalyzers); - } - - /** - * Resets the searching analyzers - */ - private void resetSearchingAnalyzer() { - if (productSearchFieldAnalyzer != null) { - productSearchFieldAnalyzer.clear(); - } - if (vendorSearchFieldAnalyzer != null) { - vendorSearchFieldAnalyzer.clear(); - } - } - - /** - * Returns the number of CPE entries stored in the index. - * - * @return the number of CPE entries stored in the index - */ - public int numDocs() { - if (indexReader == null) { - return -1; - } - return indexReader.numDocs(); - } -} diff --git a/dependency-check-core/src/main/java/org/owasp/dependencycheck/data/cpe/CpeIndexWriter.java b/dependency-check-core/src/main/java/org/owasp/dependencycheck/data/cpe/CpeIndexWriter.java deleted file mode 100644 index c986fa4ff..000000000 --- a/dependency-check-core/src/main/java/org/owasp/dependencycheck/data/cpe/CpeIndexWriter.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * This file is part of dependency-check-core. - * - * Dependency-check-core is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation, either version 3 of the License, or (at your option) any - * later version. - * - * Dependency-check-core 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 General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License along with - * dependency-check-core. If not, see http://www.gnu.org/licenses/. - * - * Copyright (c) 2013 Jeremy Long. All Rights Reserved. - */ -package org.owasp.dependencycheck.data.cpe; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; -import org.apache.lucene.analysis.Analyzer; -import org.apache.lucene.analysis.core.KeywordAnalyzer; -import org.apache.lucene.analysis.miscellaneous.PerFieldAnalyzerWrapper; -import org.apache.lucene.document.Document; -import org.apache.lucene.document.Field; -import org.apache.lucene.document.StringField; -import org.apache.lucene.document.TextField; -import org.apache.lucene.index.CorruptIndexException; -import org.apache.lucene.index.IndexWriter; -import org.apache.lucene.index.IndexWriterConfig; -import org.apache.lucene.index.Term; -import org.apache.lucene.util.Version; -import org.owasp.dependencycheck.data.lucene.FieldAnalyzer; -import org.owasp.dependencycheck.data.lucene.LuceneUtils; - -/** - * - * @author Jeremy Long (jeremy.long@owasp.org) - */ -public class CpeIndexWriter extends BaseIndex { - - /** - * The IndexWriter for the Lucene index. - */ - private IndexWriter indexWriter; - /** - * The Lucene Analyzer used for Indexing. - */ - private Analyzer indexingAnalyzer; - - /** - * Opens the CPE Index. - * - * @throws IOException is thrown if an IOException occurs opening the index. - */ - @Override - public void open() throws IOException { - //TODO add spinlock - super.open(); - indexingAnalyzer = createIndexingAnalyzer(); - final IndexWriterConfig conf = new IndexWriterConfig(LuceneUtils.CURRENT_VERSION, indexingAnalyzer); - indexWriter = new IndexWriter(getDirectory(), conf); - } - - /** - * Closes the CPE Index. - */ - @Override - public void close() { - //TODO remove spinlock - if (indexWriter != null) { - commit(); - try { - indexWriter.close(true); - } catch (CorruptIndexException ex) { - final String msg = "Unable to update database, there is a corrupt index."; - Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg); - Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex); - } catch (IOException ex) { - final String msg = "Unable to update database due to an IO error."; - Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg); - Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex); - } finally { - indexWriter = null; - } - } - if (indexingAnalyzer != null) { - indexingAnalyzer.close(); - indexingAnalyzer = null; - } - super.close(); - } - - /** - * Commits any pending changes. - */ - public void commit() { - if (indexWriter != null) { - try { - indexWriter.forceMerge(1); - indexWriter.commit(); - } catch (CorruptIndexException ex) { - final String msg = "Unable to update database, there is a corrupt index."; - Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg); - Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex); - } catch (IOException ex) { - final String msg = "Unable to update database due to an IO error."; - Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.SEVERE, msg); - Logger.getLogger(CpeIndexWriter.class.getName()).log(Level.FINE, null, ex); - } - } - } - - /** - * Creates the indexing analyzer for the CPE Index. - * - * @return the CPE Analyzer. - */ - @SuppressWarnings("unchecked") - private Analyzer createIndexingAnalyzer() { - final Map fieldAnalyzers = new HashMap(); - fieldAnalyzers.put(Fields.DOCUMENT_KEY, new KeywordAnalyzer()); - return new PerFieldAnalyzerWrapper(new FieldAnalyzer(LuceneUtils.CURRENT_VERSION), fieldAnalyzers); - } - - /** - * Saves a CPE IndexEntry into the Lucene index. - * - * @param entry a CPE entry. - * @throws CorruptIndexException is thrown if the index is corrupt. - * @throws IOException is thrown if an IOException occurs. - */ - public void saveEntry(IndexEntry entry) throws CorruptIndexException, IOException { - final Document doc = new Document(); - final Field documentKey = new StringField(Fields.DOCUMENT_KEY, entry.getDocumentId(), Field.Store.NO); - final Field vendor = new TextField(Fields.VENDOR, entry.getVendor(), Field.Store.YES); - final Field product = new TextField(Fields.PRODUCT, entry.getProduct(), Field.Store.YES); - doc.add(documentKey); - doc.add(vendor); - doc.add(product); - - final Term term = new Term(Fields.DOCUMENT_KEY, entry.getDocumentId()); - indexWriter.updateDocument(term, doc); - } -} diff --git a/dependency-check-core/src/test/java/org/owasp/dependencycheck/data/cpe/IndexIntegrationTest.java b/dependency-check-core/src/test/java/org/owasp/dependencycheck/data/cpe/IndexIntegrationTest.java deleted file mode 100644 index 2e7396dfe..000000000 --- a/dependency-check-core/src/test/java/org/owasp/dependencycheck/data/cpe/IndexIntegrationTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * This file is part of dependency-check-core. - * - * Dependency-check-core is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation, either version 3 of the License, or (at your option) any - * later version. - * - * Dependency-check-core 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 General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License along with - * dependency-check-core. If not, see http://www.gnu.org/licenses/. - * - * Copyright (c) 2012 Jeremy Long. All Rights Reserved. - */ -package org.owasp.dependencycheck.data.cpe; - -import java.io.File; -import java.io.IOException; -import org.apache.lucene.store.Directory; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import static org.junit.Assert.*; - -/** - * - * @author Jeremy Long (jeremy.long@owasp.org) - */ -public class IndexIntegrationTest { - - @BeforeClass - public static void setUpClass() throws Exception { - } - - @AfterClass - public static void tearDownClass() throws Exception { - } - - @Before - public void setUp() { - } - - @After - public void tearDown() { - } - - /** - * Test of update method, of class Index. - */ - @Test - public void testUpdate() throws Exception { - //deprecated - //Index instance = new Index(); - //instance.update(); - } - - /** - * Test of updateNeeded method, of class Index. - */ - @Test - public void testUpdateNeeded() throws Exception { - //deprecated - //Index instance = new Index(); - //instance.updateNeeded(); - //if an exception is thrown this test fails. However, because it depends on the - // order of the tests what this will return I am just testing for the exception. - //assertTrue(expResult < result); - } -}