#P Lucene_trunk_writeable Index: contrib/spatial/src/test/org/apache/lucene/spatial/tier/TestCartesianShapeFilter.java =================================================================== --- contrib/spatial/src/test/org/apache/lucene/spatial/tier/TestCartesianShapeFilter.java (revision 0) +++ contrib/spatial/src/test/org/apache/lucene/spatial/tier/TestCartesianShapeFilter.java (revision 0) @@ -0,0 +1,44 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.lucene.spatial.tier; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.NotSerializableException; +import java.io.ObjectOutputStream; + +import junit.framework.TestCase; +/** + * + * Test for {@link CartesianShapeFilter} + * + */ +public class TestCartesianShapeFilter extends TestCase { + + public void testSerializable() throws IOException { + CartesianShapeFilter filter = new CartesianShapeFilter(new Shape("1"), + "test"); + try { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(bos); + oos.writeObject(filter); + } catch (NotSerializableException e) { + fail("Filter should be serializable but raised a NotSerializableException ["+e.getMessage()+"]"); + } + } + +} Index: contrib/spatial/src/java/org/apache/lucene/spatial/tier/Shape.java =================================================================== --- contrib/spatial/src/java/org/apache/lucene/spatial/tier/Shape.java (revision 832895) +++ contrib/spatial/src/java/org/apache/lucene/spatial/tier/Shape.java (working copy) @@ -17,6 +17,7 @@ package org.apache.lucene.spatial.tier; +import java.io.Serializable; import java.util.ArrayList; import java.util.List; @@ -25,7 +26,7 @@ * flux and might change in incompatible ways in the next * release. */ -public class Shape { +public class Shape implements Serializable{ private List area = new ArrayList(); private String tierId; Index: contrib/spatial/src/java/org/apache/lucene/spatial/tier/CartesianShapeFilter.java =================================================================== --- contrib/spatial/src/java/org/apache/lucene/spatial/tier/CartesianShapeFilter.java (revision 832895) +++ contrib/spatial/src/java/org/apache/lucene/spatial/tier/CartesianShapeFilter.java (working copy) @@ -35,48 +35,33 @@ * release. */ public class CartesianShapeFilter extends Filter { - - /** - * - */ - private static final long serialVersionUID = 1L; - private Shape shape; - private Logger log = Logger.getLogger(getClass().getName()); - private String fieldName; + + private final Shape shape; + private final String fieldName; - CartesianShapeFilter(Shape shape, String fieldName){ + CartesianShapeFilter(final Shape shape, final String fieldName){ this.shape = shape; this.fieldName = fieldName; } @Override - public DocIdSet getDocIdSet(IndexReader reader) throws IOException { - long start = System.currentTimeMillis(); - - OpenBitSet bits = new OpenBitSet(reader.maxDoc()); - - TermDocs termDocs = reader.termDocs(); - List area = shape.getArea(); + public DocIdSet getDocIdSet(final IndexReader reader) throws IOException { + final OpenBitSet bits = new OpenBitSet(reader.maxDoc()); + final TermDocs termDocs = reader.termDocs(); + final List area = shape.getArea(); int sz = area.size(); - log.fine("Area size "+ sz); - + + final Term term = new Term(fieldName); // iterate through each boxid for (int i =0; i< sz; i++) { double boxId = area.get(i).doubleValue(); - termDocs.seek(new Term(fieldName, - NumericUtils.doubleToPrefixCoded(boxId))); - + termDocs.seek(term.createTerm(NumericUtils.doubleToPrefixCoded(boxId))); // iterate through all documents // which have this boxId while (termDocs.next()) { bits.fastSet(termDocs.doc()); } } - - long end = System.currentTimeMillis(); - if(log.isLoggable(Level.FINE)) { - log.fine("BoundaryBox Time Taken: "+ (end - start) + " found: "+bits.cardinality()+" candidates"); - } return bits; } }