/* * Copyright 2002-2007 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springmodules.lucene.index.support; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import junit.framework.TestCase; import org.apache.lucene.analysis.SimpleAnalyzer; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; public class FSDirectoryFactoryBeanTests extends TestCase { protected void setUp() throws Exception { } protected void tearDown() throws Exception { //Index deleting Resource resource = new ClassPathResource("/org/springmodules/lucene/index/support/segments"); try { if( resource.exists() ) { File indexFile = resource.getFile(); indexFile.delete(); } } catch(FileNotFoundException ex) { ex.printStackTrace(); } } private void closeIndexReader(IndexReader indexReader) { if( indexReader!=null ) { try { indexReader.close(); } catch (IOException ex) { fail(); } } } private void closeIndexWriter(IndexWriter indexWriter) { if( indexWriter!=null ) { try { indexWriter.close(); } catch (IOException ex) { fail(); } } } private void unlockIndexIfNecessary(Directory directory) throws Exception { boolean locked = IndexReader.isLocked(directory); if( locked ) { IndexReader.unlock(directory); } } public void testGetObject() throws Exception { FSDirectoryFactoryBean fsDirectoryFactoryBean = new FSDirectoryFactoryBean(); fsDirectoryFactoryBean.setLocation(new ClassPathResource("/org/springmodules/lucene/index/support")); try { fsDirectoryFactoryBean.afterPropertiesSet(); unlockIndexIfNecessary((Directory)fsDirectoryFactoryBean.getObject()); Directory fsDirectory = (Directory)fsDirectoryFactoryBean.getObject(); assertNotNull(fsDirectory); assertEquals(fsDirectory.getClass(), FSDirectory.class); } finally { fsDirectoryFactoryBean.destroy(); } } public void testGetObjectWithoutCreationWriter() throws Exception { FSDirectoryFactoryBean fsDirectoryFactoryBean = new FSDirectoryFactoryBean(); fsDirectoryFactoryBean.setLocation(new ClassPathResource("/org/springmodules/lucene/index/support/")); fsDirectoryFactoryBean.setCreate(false); IndexWriter writer = null; try { fsDirectoryFactoryBean.afterPropertiesSet(); Directory fsDirectory = (Directory)fsDirectoryFactoryBean.getObject(); assertNotNull(fsDirectory); assertEquals(fsDirectory.getClass(), FSDirectory.class); unlockIndexIfNecessary(fsDirectory); writer = new IndexWriter(fsDirectory, new SimpleAnalyzer(), false); fail(); } catch(Exception ex) { } finally { closeIndexWriter(writer); fsDirectoryFactoryBean.destroy(); } } public void testGetObjectWithCreationWriter() throws Exception { FSDirectoryFactoryBean fsDirectoryFactoryBean = new FSDirectoryFactoryBean(); fsDirectoryFactoryBean.setLocation(new ClassPathResource("/org/springmodules/lucene/index/support/")); fsDirectoryFactoryBean.setCreate(true); IndexWriter writer = null; try { fsDirectoryFactoryBean.afterPropertiesSet(); Directory fsDirectory = (Directory)fsDirectoryFactoryBean.getObject(); assertNotNull(fsDirectory); assertEquals(fsDirectory.getClass(), FSDirectory.class); unlockIndexIfNecessary(fsDirectory); writer = new IndexWriter(fsDirectory, new SimpleAnalyzer(), true); } finally { closeIndexWriter(writer); fsDirectoryFactoryBean.destroy(); } } public void testGetObjectWithoutCreationReader() throws Exception { FSDirectoryFactoryBean fsDirectoryFactoryBean = new FSDirectoryFactoryBean(); fsDirectoryFactoryBean.setLocation(new ClassPathResource("/org/springmodules/lucene/index/support/")); fsDirectoryFactoryBean.setCreate(false); IndexReader reader = null; try { fsDirectoryFactoryBean.afterPropertiesSet(); Directory fsDirectory = (Directory)fsDirectoryFactoryBean.getObject(); assertNotNull(fsDirectory); assertEquals(fsDirectory.getClass(), FSDirectory.class); unlockIndexIfNecessary(fsDirectory); reader = IndexReader.open(fsDirectory); fail(); } catch(Exception ex) { } finally { closeIndexReader(reader); fsDirectoryFactoryBean.destroy(); } } public void testGetObjectWithCreationReader() throws Exception { FSDirectoryFactoryBean fsDirectoryFactoryBean = new FSDirectoryFactoryBean(); fsDirectoryFactoryBean.setLocation(new ClassPathResource("/org/springmodules/lucene/index/support/")); fsDirectoryFactoryBean.setCreate(true); IndexReader reader = null; try { fsDirectoryFactoryBean.afterPropertiesSet(); Directory fsDirectory = (Directory)fsDirectoryFactoryBean.getObject(); assertNotNull(fsDirectory); assertEquals(fsDirectory.getClass(), FSDirectory.class); unlockIndexIfNecessary(fsDirectory); reader = IndexReader.open(fsDirectory); fail(); } catch(Exception ex) { } finally { closeIndexReader(reader); fsDirectoryFactoryBean.destroy(); } } }