/* * 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.document.handler; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import junit.framework.TestCase; import org.apache.lucene.document.Document; public class DocumentHandlerManagerFactoryBeanTests extends TestCase { public void testDefaultConfigurationDocumentHandlerManager() throws Exception { DocumentHandlerManagerFactoryBean documentHandlerManagerFactoryBean = new DocumentHandlerManagerFactoryBean(); Map documentHandlers = new HashMap(); DocumentHandler documentHandler = new DocumentHandler() { public boolean supports(Class clazz) { return false; } public Document getDocument(Map description, Object object) throws Exception { return null; } }; documentHandlers.put("test", documentHandler); documentHandlerManagerFactoryBean.setDocumentHandlers(documentHandlers); documentHandlerManagerFactoryBean.afterPropertiesSet(); DocumentHandlerManager documentHandlerManager = (DocumentHandlerManager)documentHandlerManagerFactoryBean.getObject(); assertEquals(documentHandlerManager.getClass(), DefaultDocumentHandlerManager.class); //An handler must match with test assertEquals(documentHandlerManager.getDocumentHandler("test"), documentHandler); //An handler must not match with test1 try { documentHandlerManager.getDocumentHandler("test1"); fail(); } catch(Exception ex) {} } public void testSpecificConfigurationDocumentHandlerManager1() throws Exception { DocumentHandlerManagerFactoryBean documentHandlerManagerFactoryBean = new DocumentHandlerManagerFactoryBean(); documentHandlerManagerFactoryBean.setDocumentHandlerManagerClass(TestDocumentHandlerManager.class); documentHandlerManagerFactoryBean.setDocumentMatchingClass(TestDocumentMatching.class); Map documentHandlers = new HashMap(); DocumentHandler documentHandler = new DocumentHandler() { public boolean supports(Class clazz) { return false; } public Document getDocument(Map description, Object object) throws Exception { return null; } }; documentHandlers.put("test", documentHandler); documentHandlerManagerFactoryBean.setDocumentHandlers(documentHandlers); documentHandlerManagerFactoryBean.afterPropertiesSet(); DocumentHandlerManager documentHandlerManager = (DocumentHandlerManager)documentHandlerManagerFactoryBean.getObject(); assertEquals(documentHandlerManager.getClass(), TestDocumentHandlerManager.class); //An handler must not match with test assertEquals(documentHandlerManager.getDocumentHandler("test"), null); } public void testSpecificConfigurationDocumentHandlerManager2() throws Exception { DocumentHandlerManagerFactoryBean documentHandlerManagerFactoryBean = new DocumentHandlerManagerFactoryBean(); documentHandlerManagerFactoryBean.setDocumentHandlerManagerClass(TestDocumentHandlerManager.class); documentHandlerManagerFactoryBean.setDocumentMatchingClass(TestMatchAllDocumentMatching.class); Map documentHandlers = new HashMap(); DocumentHandler documentHandler = new DocumentHandler() { public boolean supports(Class clazz) { return false; } public Document getDocument(Map description, Object object) throws Exception { return null; } }; documentHandlers.put("test", documentHandler); documentHandlerManagerFactoryBean.setDocumentHandlers(documentHandlers); documentHandlerManagerFactoryBean.afterPropertiesSet(); DocumentHandlerManager documentHandlerManager=(DocumentHandlerManager)documentHandlerManagerFactoryBean.getObject(); assertEquals(documentHandlerManager.getClass(), TestDocumentHandlerManager.class); //An handler must not match with test assertEquals(documentHandlerManager.getDocumentHandler("test"), documentHandler); } private static class TestDocumentHandlerManager implements DocumentHandlerManager { private Map documentHandlers; public TestDocumentHandlerManager() { this.documentHandlers=new HashMap(); } public DocumentHandler getDocumentHandler(String name) { Set keys = documentHandlers.keySet(); for(Iterator i=keys.iterator(); i.hasNext();) { DocumentMatching matching = (DocumentMatching)i.next(); if( matching.match(name) ) { return (DocumentHandler)documentHandlers.get(matching); } } return null; } public void registerDefaultHandlers() { } public void registerDocumentHandler(DocumentMatching matching, DocumentHandler handler) { if( matching!=null && handler!=null ) { documentHandlers.put(matching,handler); } } public void unregisterDocumentHandler(DocumentMatching matching) { } } private static class TestDocumentMatching implements DocumentMatching { public TestDocumentMatching(String pattern) {} public boolean match(String name) { return false; } } private static class TestMatchAllDocumentMatching implements DocumentMatching { public TestMatchAllDocumentMatching(String pattern) {} public boolean match(String name) { return true; } } }