[hibernate-issues] [Hibernate-JIRA] Updated: (HSEARCH-954) BackendQueueProcessor should specify behaviour for the case of null passed to applyWork and applyStream work

Hardy Ferentschik (JIRA) noreply at atlassian.com
Thu Oct 20 10:29:19 EDT 2011


     [ http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-954?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Hardy Ferentschik updated HSEARCH-954:
--------------------------------------

    Description: 
I think IllegalArgumentException would make sense. A testcase could look like this:

{code}
package org.hibernate.search.test.backend;

import javax.persistence.Entity;
import javax.persistence.Id;

import org.junit.Test;

import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.backend.impl.lucene.LuceneBackendQueueProcessor;
import org.hibernate.search.engine.spi.EntityIndexBinder;
import org.hibernate.search.impl.MutableSearchFactory;
import org.hibernate.search.indexes.impl.DirectoryBasedIndexManager;
import org.hibernate.search.indexes.spi.IndexManager;
import org.hibernate.search.test.SearchTestCase;

public class BackQueueProcessorTest extends SearchTestCase {

	@Test
	public void testNullWorkThrowsIllegalArgumentException() {
		LuceneBackendQueueProcessor backend = getBackendQueueProcessor();

		try {
			backend.applyStreamWork( null );
			fail( "Should throw IllegalArgumentException" );
		}
		catch ( IllegalArgumentException i ) {
			// pass
		}

		try {
			backend.applyWork( null );
			fail( "Should throw IllegalArgumentException" );
		}
		catch ( IllegalArgumentException i ) {
			// pass
		}
	}

	private LuceneBackendQueueProcessor getBackendQueueProcessor() {
		MutableSearchFactory searchFactory = (MutableSearchFactory) getSearchFactory();
		EntityIndexBinder indexBindingForEntity = searchFactory.getIndexBindingForEntity( Foo.class );
		IndexManager[] indexManagers = indexBindingForEntity.getIndexManagers();
		assertEquals( 1, indexManagers.length );
		DirectoryBasedIndexManager indexManager = (DirectoryBasedIndexManager) indexManagers[0];
		return (LuceneBackendQueueProcessor) indexManager.getBackendQueueProcessor();
	}

	@Override
	protected void configure(org.hibernate.cfg.Configuration cfg) {
		super.configure( cfg );
	}

	@Override
	protected Class<?>[] getAnnotatedClasses() {
		return new Class[] { Foo.class };
	}

	@Entity
	@Indexed
	public class Foo {
		@Id
		int id;
	}
}

{code}

  was:
I think IllegalArgumentException would make sense. A testcase could look like this:

{code}
/*
 * JBoss, Home of Professional Open Source
 * Copyright 2011 Red Hat Inc. and/or its affiliates and other contributors
 * as indicated by the @authors tag. All rights reserved.
 * See the copyright.txt in the distribution for a
 * full listing of individual contributors.
 *
 * This copyrighted material is made available to anyone wishing to use,
 * modify, copy, or redistribute it subject to the terms and conditions
 * of the GNU Lesser General Public License, v. 2.1.
 * This program is distributed in the hope that it will be useful, but WITHOUT A
 * 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,
 * v.2.1 along with this distribution; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA  02110-1301, USA.
 */

package org.hibernate.search.test.backend;

import javax.persistence.Entity;
import javax.persistence.Id;

import org.junit.Test;

import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.backend.impl.lucene.LuceneBackendQueueProcessor;
import org.hibernate.search.engine.spi.EntityIndexBinder;
import org.hibernate.search.impl.MutableSearchFactory;
import org.hibernate.search.indexes.impl.DirectoryBasedIndexManager;
import org.hibernate.search.indexes.spi.IndexManager;
import org.hibernate.search.test.SearchTestCase;

public class BackQueueProcessorTest extends SearchTestCase {

	@Test
	public void testNullWorkThrowsIllegalArgumentException() {
		LuceneBackendQueueProcessor backend = getBackendQueueProcessor();

		try {
			backend.applyStreamWork( null );
			fail( "Should throw IllegalArgumentException" );
		}
		catch ( IllegalArgumentException i ) {
			// pass
		}

		try {
			backend.applyWork( null );
			fail( "Should throw IllegalArgumentException" );
		}
		catch ( IllegalArgumentException i ) {
			// pass
		}
	}

	private LuceneBackendQueueProcessor getBackendQueueProcessor() {
		MutableSearchFactory searchFactory = (MutableSearchFactory) getSearchFactory();
		EntityIndexBinder indexBindingForEntity = searchFactory.getIndexBindingForEntity( Foo.class );
		IndexManager[] indexManagers = indexBindingForEntity.getIndexManagers();
		assertEquals( 1, indexManagers.length );
		DirectoryBasedIndexManager indexManager = (DirectoryBasedIndexManager) indexManagers[0];
		return (LuceneBackendQueueProcessor) indexManager.getBackendQueueProcessor();
	}

	@Override
	protected void configure(org.hibernate.cfg.Configuration cfg) {
		super.configure( cfg );
	}

	@Override
	protected Class<?>[] getAnnotatedClasses() {
		return new Class[] { Foo.class };
	}

	@Entity
	@Indexed
	public class Foo {
		@Id
		int id;
	}
}

{code}


> BackendQueueProcessor should specify behaviour for the case of null passed to applyWork and applyStream work
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: HSEARCH-954
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-954
>             Project: Hibernate Search
>          Issue Type: Bug
>          Components: engine
>    Affects Versions: 4.0.0.CR1
>            Reporter: Hardy Ferentschik
>             Fix For: 4.0
>
>
> I think IllegalArgumentException would make sense. A testcase could look like this:
> {code}
> package org.hibernate.search.test.backend;
> import javax.persistence.Entity;
> import javax.persistence.Id;
> import org.junit.Test;
> import org.hibernate.search.annotations.Indexed;
> import org.hibernate.search.backend.impl.lucene.LuceneBackendQueueProcessor;
> import org.hibernate.search.engine.spi.EntityIndexBinder;
> import org.hibernate.search.impl.MutableSearchFactory;
> import org.hibernate.search.indexes.impl.DirectoryBasedIndexManager;
> import org.hibernate.search.indexes.spi.IndexManager;
> import org.hibernate.search.test.SearchTestCase;
> public class BackQueueProcessorTest extends SearchTestCase {
> 	@Test
> 	public void testNullWorkThrowsIllegalArgumentException() {
> 		LuceneBackendQueueProcessor backend = getBackendQueueProcessor();
> 		try {
> 			backend.applyStreamWork( null );
> 			fail( "Should throw IllegalArgumentException" );
> 		}
> 		catch ( IllegalArgumentException i ) {
> 			// pass
> 		}
> 		try {
> 			backend.applyWork( null );
> 			fail( "Should throw IllegalArgumentException" );
> 		}
> 		catch ( IllegalArgumentException i ) {
> 			// pass
> 		}
> 	}
> 	private LuceneBackendQueueProcessor getBackendQueueProcessor() {
> 		MutableSearchFactory searchFactory = (MutableSearchFactory) getSearchFactory();
> 		EntityIndexBinder indexBindingForEntity = searchFactory.getIndexBindingForEntity( Foo.class );
> 		IndexManager[] indexManagers = indexBindingForEntity.getIndexManagers();
> 		assertEquals( 1, indexManagers.length );
> 		DirectoryBasedIndexManager indexManager = (DirectoryBasedIndexManager) indexManagers[0];
> 		return (LuceneBackendQueueProcessor) indexManager.getBackendQueueProcessor();
> 	}
> 	@Override
> 	protected void configure(org.hibernate.cfg.Configuration cfg) {
> 		super.configure( cfg );
> 	}
> 	@Override
> 	protected Class<?>[] getAnnotatedClasses() {
> 		return new Class[] { Foo.class };
> 	}
> 	@Entity
> 	@Indexed
> 	public class Foo {
> 		@Id
> 		int id;
> 	}
> }
> {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list