private int readObjectVersion(Document doc) { IndexableField objver = doc.getField(QueryBuilder.OBJVER); return objver == null ? 1 : objver.numericValue().intValue(); } }
@Test public void shouldParseRegionValueFieldForString() { String[] fields = new String[] {"name", "contacts.name", "contacts.email", "contacts.revenue", "contacts.address", "contacts.homepage.id", "contacts.homepage.title", "contacts.homepage.content", LuceneService.REGION_VALUE_FIELD}; FlatFormatSerializer serializer = new FlatFormatSerializer(); String str = new String("Hello world"); Document doc1 = SerializerTestHelper.invokeSerializer(serializer, str, fields); assertEquals(1, doc1.getFields().size()); assertEquals("Hello world", doc1.getField(LuceneService.REGION_VALUE_FIELD).stringValue()); }
@Test public void testNullField() { String[] fields = new String[] {"s", "i"}; PdxLuceneSerializer mapper = new PdxLuceneSerializer(); PdxInstance pdxInstance = mock(PdxInstance.class); when(pdxInstance.hasField("s")).thenReturn(true); when(pdxInstance.hasField("i")).thenReturn(true); when(pdxInstance.getField("s")).thenReturn("a"); when(pdxInstance.getField("i")).thenReturn(null); Document doc = invokeSerializer(mapper, pdxInstance, fields); assertEquals(1, doc.getFields().size()); assertEquals("a", doc.getField("s").stringValue()); assertNull(doc.getField("i")); } }
private long getByteOffset(final Document d, final RecordReader reader) { final IndexableField blockField = d.getField(FieldNames.BLOCK_INDEX); if ( blockField != null ) { final int blockIndex = blockField.numericValue().intValue(); final TocReader tocReader = reader.getTocReader(); return tocReader.getBlockOffset(blockIndex); } return d.getField(FieldNames.STORAGE_FILE_OFFSET).numericValue().longValue(); }
@Test public void testWriteFields() { String[] fields = new String[] {"s", "i"}; PdxLuceneSerializer mapper = new PdxLuceneSerializer(); PdxInstance pdxInstance = mock(PdxInstance.class); when(pdxInstance.hasField("s")).thenReturn(true); when(pdxInstance.hasField("i")).thenReturn(true); when(pdxInstance.getField("s")).thenReturn("a"); when(pdxInstance.getField("i")).thenReturn(5); Document doc = invokeSerializer(mapper, pdxInstance, fields); assertEquals(2, doc.getFields().size()); assertEquals("a", doc.getField("s").stringValue()); assertEquals(5, doc.getField("i").numericValue()); }
/** * Extract the Apache Geode key term from a lucene document */ public static Term getKeyTerm(Document doc) { IndexableField field = doc.getField(KEY_FIELD); if (field.stringValue() != null) { return new Term(KEY_FIELD, field.stringValue()); } else { return new Term(KEY_FIELD, field.binaryValue()); } }
@Test public void testNullField() { String[] fields = new String[] {"s", "o", "s2"}; ReflectionLuceneSerializer mapper = new ReflectionLuceneSerializer(Type2.class, fields); Type2 type2 = new Type2("a", 1, 2L, 3.0, 4.0f, null); Document doc = invokeSerializer(mapper, type2, fields); assertEquals(1, doc.getFields().size()); assertEquals("a", doc.getField("s").stringValue()); assertNull(doc.getField("s2")); } }
private ProvenanceEventRecord getRecord(final Document d, final RecordReader reader) throws IOException { final IndexableField blockField = d.getField(FieldNames.BLOCK_INDEX); if ( blockField == null ) { reader.skipTo(getByteOffset(d, reader)); } else { reader.skipToBlock(blockField.numericValue().intValue()); } StandardProvenanceEventRecord record; while ( (record = reader.nextRecord()) != null) { final IndexableField idField = d.getField(SearchableFields.Identifier.getSearchableFieldName()); if ( idField == null || idField.numericValue().longValue() == record.getEventId() ) { break; } } if (record == null) { logger.warn("Failed to read Provenance Event for '" + d + "'. The event file may be missing or corrupted"); } return record; }
@Test public void shouldParseRegionValueFieldForInteger() { String[] fields = new String[] {"name", "contacts.name", "contacts.email", "contacts.revenue", "contacts.address", "contacts.homepage.id", "contacts.homepage.title", "contacts.homepage.content", LuceneService.REGION_VALUE_FIELD}; FlatFormatSerializer serializer = new FlatFormatSerializer(); Integer integer = 15; Document doc1 = SerializerTestHelper.invokeSerializer(serializer, integer, fields); assertEquals(1, doc1.getFields().size()); assertEquals(15, doc1.getField(LuceneService.REGION_VALUE_FIELD).numericValue()); }
/** * Extract the Apache Geode key from a lucene document */ public static Object getKey(Document doc) { IndexableField field = doc.getField(KEY_FIELD); if (field.stringValue() != null) { return field.stringValue(); } else { return keyFromBytes(field.binaryValue()); } }
@Test public void shouldIndexPrimitiveStringIfRequested() { HeterogeneousLuceneSerializer mapper = new HeterogeneousLuceneSerializer(); Document doc = SerializerTestHelper.invokeSerializer(mapper, "sample value", new String[] {LuceneService.REGION_VALUE_FIELD}); assertEquals(1, doc.getFields().size()); assertEquals("sample value", doc.getField(LuceneService.REGION_VALUE_FIELD).stringValue()); }
@Test void readAllDocuments() { LuceneAllDocumentsReader allDocumentsReader = createAllDocumentsReader(); List<Document> documents = Iterators.asList( allDocumentsReader.iterator() ); assertEquals( 3, documents.size(), "Should have 1 document from first partition and 2 from second one." ); assertEquals( "1", documents.get( 0 ).getField( "value" ).stringValue() ); assertEquals( "3", documents.get( 1 ).getField( "value" ).stringValue() ); assertEquals( "4", documents.get( 2 ).getField( "value" ).stringValue() ); }
@Test public void shouldIndexPrimitiveNumberIfRequested() { HeterogeneousLuceneSerializer mapper = new HeterogeneousLuceneSerializer(); Document doc = SerializerTestHelper.invokeSerializer(mapper, 53, new String[] {LuceneService.REGION_VALUE_FIELD}); assertEquals(1, doc.getFields().size()); assertEquals(53, doc.getField(LuceneService.REGION_VALUE_FIELD).numericValue()); }
@Override protected boolean fetchNext() { while ( source.hasNext() ) { Document doc = source.next(); long id = idFromDoc( doc ); boolean documentIsFromStore = doc.getField( FullTxData.TX_STATE_KEY ) == null; boolean idWillBeReturnedByTransactionStateInstead = documentIsFromStore && idsModifiedInTransactionState.contains( id ); if ( removedInTransactionState.contains( idCostume.setId( id ) ) || idWillBeReturnedByTransactionStateInstead ) { // Skip this one, continue to the next continue; } return next( id ); } return endReached(); }
@Test public void testIgnoreMissing() { String[] fields = new String[] {"s", "i", "s2", "o"}; PdxLuceneSerializer mapper = new PdxLuceneSerializer(); PdxInstance pdxInstance = mock(PdxInstance.class); when(pdxInstance.hasField("s")).thenReturn(true); when(pdxInstance.hasField("i")).thenReturn(true); when(pdxInstance.hasField("o")).thenReturn(true); when(pdxInstance.hasField("o2")).thenReturn(true); when(pdxInstance.getField("s")).thenReturn("a"); when(pdxInstance.getField("i")).thenReturn(5); when(pdxInstance.getField("o")).thenReturn(new Object()); when(pdxInstance.getField("o2")).thenReturn(new Object()); Document doc = invokeSerializer(mapper, pdxInstance, fields); assertEquals(2, doc.getFields().size()); assertEquals("a", doc.getField("s").stringValue()); assertEquals(5, doc.getField("i").numericValue()); }
@Test void shouldBuildDocumentRepresentingNumberProperty() { // given Document document = documentRepresentingProperties( (long) 123, 12 ); // then assertEquals( "123", document.get( NODE_ID_KEY ) ); assertEquals( 12.0, document.getField( Number.key( 0 ) ).numericValue().doubleValue(), 0.001 ); }
@Test public void testIgnoreInvalid() { String[] fields = new String[] {"s", "o", "s2"}; ReflectionLuceneSerializer mapper = new ReflectionLuceneSerializer(Type2.class, fields); Type2 type2 = new Type2("a", 1, 2L, 3.0, 4.0f, "b"); Document doc = invokeSerializer(mapper, type2, fields); assertEquals(2, doc.getFields().size()); assertEquals("a", doc.getField("s").stringValue()); assertEquals("b", doc.getField("s2").stringValue()); }
@Test void stringWithMaximumLengthShouldBeAllowed() { String longestString = RandomStringUtils.randomAscii( IndexWriter.MAX_TERM_LENGTH ); Document document = documentRepresentingProperties( (long) 123, longestString ); assertEquals( longestString, document.getField( String.key( 0 ) ).stringValue() ); }
@Test public void shouldNotParseNestedObjectWithoutFields() { String[] fields = new String[] {"name", "contacts", "contacts.homepage", "contacts.missing", "missing2"}; FlatFormatSerializer serializer = new FlatFormatSerializer(); HashSet<Person> contacts1 = new HashSet(); Person contact1 = new Person("Tommi Jackson", new String[] {"5036330001", "5036330002"}, 1); Person contact2 = new Person("Tommi2 Skywalker", new String[] {"5036330003", "5036330004"}, 2); contacts1.add(contact1); contacts1.add(contact2); ArrayList<String> phoneNumbers = new ArrayList(); phoneNumbers.add("5035330001"); phoneNumbers.add("5035330002"); Page[] myHomePages1 = new Page[] {new Page(131), new Page(132)}; Customer customer = new Customer("Tommy Jackson", phoneNumbers, contacts1, myHomePages1); Document doc1 = SerializerTestHelper.invokeSerializer(serializer, customer, fields); assertEquals(1, doc1.getFields().size()); assertEquals("Tommy Jackson", doc1.getField("name").stringValue()); }
/** * This is a test of {@code populateDocument} so it should be rather in {@code AnalyzerGuruTest} * however it lacks the pre-requisite indexing phase. */ @Test public void testIndexPath() throws IOException { SearchEngine instance = new SearchEngine(); // Use as broad search as possible. instance.setFile("c"); instance.search(); ScoreDoc[] scoredocs = instance.scoreDocs(); assertTrue("need some search hits to perform the check",scoredocs.length > 0); for (ScoreDoc sd : scoredocs) { Document doc = instance.doc(sd.doc); assertFalse("PATH field should not contain backslash characters", doc.getField(QueryBuilder.PATH).stringValue().contains("\\")); } } }