@Override public FieldInfos getFieldInfos() { return new FieldInfos(fi); }
FieldInfos finish() { finished = true; return new FieldInfos(byName.values().toArray(new FieldInfo[byName.size()])); } }
assert !dvGens.contains(docValuesGen); final DocValuesProducer dvp = segDocValues.getDocValuesProducer(docValuesGen, si, dir, new FieldInfos(new FieldInfo[]{fi})); dvGens.add(docValuesGen); dvProducers.add(dvp);
assert fieldInfo != null; fieldInfo.setDocValuesGen(nextDocValuesGen); final FieldInfos fieldInfos = new FieldInfos(new FieldInfo[] { fieldInfo });
public FieldInfos getFieldInfos() { return new FieldInfos(new FieldInfo[0]); }
CodecUtil.checkFooter(input, priorE); return new FieldInfos(infos);
CodecUtil.checkFooter(input, priorE); return new FieldInfos(infos);
@Override public FieldInfos getFieldInfos() { return new FieldInfos(fi); }
@Override public FieldInfos getFieldInfos() { FieldInfo[] fieldInfos = new FieldInfo[fields.size()]; int i = 0; for (Info info : fields.values()) { fieldInfos[i++] = info.fieldInfo; } return new FieldInfos(fieldInfos); }
FieldInfos finish() { finished = true; return new FieldInfos(byName.values().toArray(new FieldInfo[byName.size()])); } }
FieldInfos finish() { return new FieldInfos(byName.values().toArray(new FieldInfo[byName.size()])); } }
FieldInfos finish() { return new FieldInfos(byName.values().toArray(new FieldInfo[byName.size()])); } }
private MemoryIndexReader() { super(); // avoid as much superclass baggage as possible FieldInfo[] fieldInfosArr = new FieldInfo[fields.size()]; int i = 0; for (Info info : fields.values()) { info.prepareDocValuesAndPointValues(); fieldInfosArr[i++] = info.fieldInfo; } fieldInfos = new FieldInfos(fieldInfosArr); }
/** * At the end there will be a single segment with all the fields. So it makes sense to cache the longest * list of infos every encountered. * * @param infos * @return */ public FieldInfos dedupFieldInfos(FieldInfo[] infos) { FieldInfosKey key = new FieldInfosKey(infos); return this.infosCache.computeIfAbsent(key, (FieldInfosKey k) -> new FieldInfos(k.infos)); }
/** * Returns a deep clone of this FieldInfos instance. */ synchronized public Object clone() { FieldInfos fis = new FieldInfos(); final int numField = byNumber.size(); for(int i=0;i<numField;i++) { FieldInfo fi = (FieldInfo) ((FieldInfo) byNumber.get(i)).clone(); fis.byNumber.add(fi); fis.byName.put(fi.name, fi); } return fis; }
/** * Returns a deep clone of this FieldInfos instance. */ synchronized public Object clone() { FieldInfos fis = new FieldInfos(); final int numField = byNumber.size(); for(int i=0;i<numField;i++) { FieldInfo fi = (FieldInfo) ((FieldInfo) byNumber.get(i)).clone(); fis.byNumber.add(fi); fis.byName.put(fi.name, fi); } return fis; }
@Test public void testDense() throws NoSuchFieldException, IllegalAccessException { FieldInfo[] infosArray = makeInfosArray(100); FieldInfos orig = new FieldInfos(infosArray); Collection<Object> values = extractValues(orig); assertSame(Collections.unmodifiableCollection(new TreeMap<String, Object>().values()).getClass(), values.getClass()); FieldInfoCache cache = new FieldInfoCache(); FieldInfos fixedFieldInfo = cache.dedupFieldInfos(infosArray); values = extractValues(fixedFieldInfo); assertSame(Collections.unmodifiableCollection(Collections.emptyList()).getClass(), values.getClass()); }
@Test public void testDense() throws NoSuchFieldException, IllegalAccessException { FieldInfo[] infosArray = makeInfosArray(100); FieldInfos orig = new FieldInfos(infosArray); Collection<Object> values = extractValues(orig); assertSame(Collections.unmodifiableCollection(new TreeMap<String, Object>().values()).getClass(), values.getClass()); FieldInfoCache cache = new FieldInfoCache(); FieldInfos fixedFieldInfo = cache.dedupFieldInfos(infosArray); values = extractValues(fixedFieldInfo); assertSame(Collections.unmodifiableList(new ArrayList<>()).getClass(), values.getClass()); }
@Test public void testSparse() throws NoSuchFieldException, IllegalAccessException { FieldInfo[] infosArray = new FieldInfo[3]; infosArray[0] = makeFieldInfo(1); infosArray[1] = makeFieldInfo(1000); infosArray[2] = makeFieldInfo(5000); FieldInfos orig = new FieldInfos(infosArray); Collection<Object> values = extractValues(orig); assertSame(Collections.unmodifiableCollection(new TreeMap<String, Object>().values()).getClass(), values.getClass()); FieldInfoCache cache = new FieldInfoCache(); FieldInfos fixedFieldInfo = cache.dedupFieldInfos(infosArray); values = extractValues(fixedFieldInfo); assertSame(Collections.unmodifiableCollection(new TreeMap<String, Object>().values()).getClass(), values.getClass()); }
@Test public void testSparse() throws NoSuchFieldException, IllegalAccessException { FieldInfo[] infosArray = new FieldInfo[3]; infosArray[0] = makeFieldInfo(1); infosArray[1] = makeFieldInfo(1000); infosArray[2] = makeFieldInfo(5000); FieldInfos orig = new FieldInfos(infosArray); Collection<Object> values = extractValues(orig); assertSame(Collections.unmodifiableCollection(new TreeMap<String, Object>().values()).getClass(), values.getClass()); FieldInfoCache cache = new FieldInfoCache(); FieldInfos fixedFieldInfo = cache.dedupFieldInfos(infosArray); values = extractValues(fixedFieldInfo); assertSame(Collections.unmodifiableCollection(new TreeMap<String, Object>().values()).getClass(), values.getClass()); }