Advertisement
Guest User

Untitled

a guest
Nov 1st, 2012
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 35.50 KB | None | 0 0
  1. Index: solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
  2. ===================================================================
  3. --- solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java (revision 1403781)
  4. +++ solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java (working copy)
  5. @@ -2209,7 +2209,7 @@
  6. }
  7. }
  8.  
  9. - private static class FilterIterator extends DocIdSetIterator {
  10. + private static class FilterIterator implements DocIdSetIterator {
  11. final DocIdSetIterator[] iterators;
  12. final DocIdSetIterator first;
  13.  
  14. @@ -2254,7 +2254,7 @@
  15. }
  16. }
  17.  
  18. - private static class DualFilterIterator extends DocIdSetIterator {
  19. + private static class DualFilterIterator implements DocIdSetIterator {
  20. final DocIdSetIterator a;
  21. final DocIdSetIterator b;
  22.  
  23. Index: lucene/test-framework/src/java/org/apache/lucene/codecs/ramonly/RAMOnlyPostingsFormat.java
  24. ===================================================================
  25. --- lucene/test-framework/src/java/org/apache/lucene/codecs/ramonly/RAMOnlyPostingsFormat.java (revision 1403781)
  26. +++ lucene/test-framework/src/java/org/apache/lucene/codecs/ramonly/RAMOnlyPostingsFormat.java (working copy)
  27. @@ -38,6 +38,7 @@
  28. import org.apache.lucene.codecs.TermsConsumer;
  29. import org.apache.lucene.index.DocsAndPositionsEnum;
  30. import org.apache.lucene.index.DocsEnum;
  31. +import org.apache.lucene.index.DocsEnumBase;
  32. import org.apache.lucene.index.FieldInfo.IndexOptions;
  33. import org.apache.lucene.index.FieldInfo;
  34. import org.apache.lucene.index.IndexFileNames;
  35. @@ -386,7 +387,7 @@
  36. }
  37. }
  38.  
  39. - private static class RAMDocsEnum extends DocsEnum {
  40. + private static class RAMDocsEnum extends DocsEnumBase {
  41. private final RAMTerm ramTerm;
  42. private final Bits liveDocs;
  43. private RAMDoc current;
  44. @@ -434,7 +435,7 @@
  45. }
  46. }
  47.  
  48. - private static class RAMDocsAndPositionsEnum extends DocsAndPositionsEnum {
  49. + private static class RAMDocsAndPositionsEnum extends DocsEnumBase implements DocsAndPositionsEnum {
  50. private final RAMTerm ramTerm;
  51. private final Bits liveDocs;
  52. private RAMDoc current;
  53. Index: lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java
  54. ===================================================================
  55. --- lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java (revision 1403781)
  56. +++ lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java (working copy)
  57. @@ -113,7 +113,7 @@
  58.  
  59. /** Given the same random seed this always enumerates the
  60. * same random postings */
  61. - private static class SeedPostings extends DocsAndPositionsEnum {
  62. + private static class SeedPostings extends DocsEnumBase implements DocsAndPositionsEnum {
  63. // Used only to generate docIDs; this way if you pull w/
  64. // or w/o positions you get the same docID sequence:
  65. private final Random docRandom;
  66. Index: lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TFValueSource.java
  67. ===================================================================
  68. --- lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TFValueSource.java (revision 1403781)
  69. +++ lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TFValueSource.java (working copy)
  70. @@ -23,6 +23,7 @@
  71. import org.apache.lucene.search.DocIdSetIterator;
  72. import org.apache.lucene.search.IndexSearcher;
  73. import org.apache.lucene.search.similarities.TFIDFSimilarity;
  74. +import org.apache.lucene.util.AttributeSource;
  75. import org.apache.lucene.util.BytesRef;
  76.  
  77. import java.io.IOException;
  78. @@ -97,6 +98,11 @@
  79. public int advance(int target) {
  80. return DocIdSetIterator.NO_MORE_DOCS;
  81. }
  82. +
  83. + @Override
  84. + public AttributeSource attributes() {
  85. + throw new UnsupportedOperationException();
  86. + }
  87. };
  88. }
  89. atDoc = -1;
  90. Index: lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TermFreqValueSource.java
  91. ===================================================================
  92. --- lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TermFreqValueSource.java (revision 1403781)
  93. +++ lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TermFreqValueSource.java (working copy)
  94. @@ -21,6 +21,7 @@
  95. import org.apache.lucene.queries.function.FunctionValues;
  96. import org.apache.lucene.queries.function.docvalues.IntDocValues;
  97. import org.apache.lucene.search.DocIdSetIterator;
  98. +import org.apache.lucene.util.AttributeSource;
  99. import org.apache.lucene.util.BytesRef;
  100.  
  101. import java.io.IOException;
  102. @@ -90,6 +91,11 @@
  103. public int advance(int target) {
  104. return DocIdSetIterator.NO_MORE_DOCS;
  105. }
  106. +
  107. + @Override
  108. + public AttributeSource attributes() {
  109. + throw new UnsupportedOperationException();
  110. + }
  111. };
  112. }
  113. atDoc = -1;
  114. Index: lucene/core/src/test/org/apache/lucene/search/JustCompileSearch.java
  115. ===================================================================
  116. --- lucene/core/src/test/org/apache/lucene/search/JustCompileSearch.java (revision 1403781)
  117. +++ lucene/core/src/test/org/apache/lucene/search/JustCompileSearch.java (working copy)
  118. @@ -71,7 +71,7 @@
  119.  
  120. }
  121.  
  122. - static final class JustCompileDocIdSetIterator extends DocIdSetIterator {
  123. + static final class JustCompileDocIdSetIterator implements DocIdSetIterator {
  124.  
  125. @Override
  126. public int docID() {
  127. Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40PostingsReader.java
  128. ===================================================================
  129. --- lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40PostingsReader.java (revision 1403781)
  130. +++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40PostingsReader.java (working copy)
  131. @@ -25,6 +25,7 @@
  132. import org.apache.lucene.codecs.PostingsReaderBase;
  133. import org.apache.lucene.index.DocsAndPositionsEnum;
  134. import org.apache.lucene.index.DocsEnum;
  135. +import org.apache.lucene.index.DocsEnumBase;
  136. import org.apache.lucene.index.FieldInfo.IndexOptions;
  137. import org.apache.lucene.index.FieldInfo;
  138. import org.apache.lucene.index.FieldInfos;
  139. @@ -304,7 +305,7 @@
  140.  
  141. static final int BUFFERSIZE = 64;
  142.  
  143. - private abstract class SegmentDocsEnumBase extends DocsEnum {
  144. + private abstract class SegmentDocsEnumBase extends DocsEnumBase {
  145.  
  146. protected final int[] docs = new int[BUFFERSIZE];
  147. protected final int[] freqs = new int[BUFFERSIZE];
  148. @@ -691,7 +692,7 @@
  149. // TODO specialize DocsAndPosEnum too
  150.  
  151. // Decodes docs & positions. payloads nor offsets are present.
  152. - private final class SegmentDocsAndPositionsEnum extends DocsAndPositionsEnum {
  153. + private final class SegmentDocsAndPositionsEnum extends DocsEnumBase implements DocsAndPositionsEnum {
  154. final IndexInput startFreqIn;
  155. private final IndexInput freqIn;
  156. private final IndexInput proxIn;
  157. @@ -889,7 +890,7 @@
  158. }
  159.  
  160. // Decodes docs & positions & (payloads and/or offsets)
  161. - private class SegmentFullPositionsEnum extends DocsAndPositionsEnum {
  162. + private class SegmentFullPositionsEnum extends DocsEnumBase implements DocsAndPositionsEnum {
  163. final IndexInput startFreqIn;
  164. private final IndexInput freqIn;
  165. private final IndexInput proxIn;
  166. Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsReader.java
  167. ===================================================================
  168. --- lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsReader.java (revision 1403781)
  169. +++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsReader.java (working copy)
  170. @@ -30,6 +30,7 @@
  171. import org.apache.lucene.codecs.TermVectorsReader;
  172. import org.apache.lucene.index.DocsAndPositionsEnum;
  173. import org.apache.lucene.index.DocsEnum;
  174. +import org.apache.lucene.index.DocsEnumBase;
  175. import org.apache.lucene.index.FieldInfo;
  176. import org.apache.lucene.index.FieldInfos;
  177. import org.apache.lucene.index.Fields;
  178. @@ -578,7 +579,7 @@
  179.  
  180. // NOTE: sort of a silly class, since you can get the
  181. // freq() already by TermsEnum.totalTermFreq
  182. - private static class TVDocsEnum extends DocsEnum {
  183. + private static class TVDocsEnum extends DocsEnumBase {
  184. private boolean didNext;
  185. private int doc = -1;
  186. private int freq;
  187. @@ -621,7 +622,7 @@
  188. }
  189. }
  190.  
  191. - private static class TVDocsAndPositionsEnum extends DocsAndPositionsEnum {
  192. + private static class TVDocsAndPositionsEnum extends DocsEnumBase implements DocsAndPositionsEnum {
  193. private boolean didNext;
  194. private int doc = -1;
  195. private int nextPos;
  196. Index: lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsAndPositionsEnum.java
  197. ===================================================================
  198. --- lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsAndPositionsEnum.java (revision 1403781)
  199. +++ lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsAndPositionsEnum.java (working copy)
  200. @@ -17,6 +17,7 @@
  201. * limitations under the License.
  202. */
  203.  
  204. +import org.apache.lucene.util.AttributeSource;
  205. import org.apache.lucene.util.BytesRef;
  206. import org.apache.lucene.index.DocsAndPositionsEnum;
  207. import org.apache.lucene.index.MergeState;
  208. @@ -32,7 +33,7 @@
  209. * @lucene.experimental
  210. */
  211.  
  212. -public final class MappingMultiDocsAndPositionsEnum extends DocsAndPositionsEnum {
  213. +public final class MappingMultiDocsAndPositionsEnum implements DocsAndPositionsEnum {
  214. private MultiDocsAndPositionsEnum.EnumWithSlice[] subs;
  215. int numSubs;
  216. int upto;
  217. @@ -134,5 +135,10 @@
  218. public BytesRef getPayload() throws IOException {
  219. return current.getPayload();
  220. }
  221. +
  222. + @Override
  223. + public AttributeSource attributes() {
  224. + throw new UnsupportedOperationException("nobody knows how to concatenate attributes");
  225. + }
  226. }
  227.  
  228. Index: lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41PostingsReader.java
  229. ===================================================================
  230. --- lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41PostingsReader.java (revision 1403781)
  231. +++ lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41PostingsReader.java (working copy)
  232. @@ -29,6 +29,7 @@
  233. import org.apache.lucene.codecs.PostingsReaderBase;
  234. import org.apache.lucene.index.DocsAndPositionsEnum;
  235. import org.apache.lucene.index.DocsEnum;
  236. +import org.apache.lucene.index.DocsEnumBase;
  237. import org.apache.lucene.index.FieldInfo;
  238. import org.apache.lucene.index.FieldInfo.IndexOptions;
  239. import org.apache.lucene.index.FieldInfos;
  240. @@ -329,7 +330,7 @@
  241. }
  242. }
  243.  
  244. - final class BlockDocsEnum extends DocsEnum {
  245. + final class BlockDocsEnum extends DocsEnumBase {
  246. private final byte[] encoded;
  247.  
  248. private final int[] docDeltaBuffer = new int[MAX_DATA_SIZE];
  249. @@ -602,7 +603,7 @@
  250. }
  251.  
  252.  
  253. - final class BlockDocsAndPositionsEnum extends DocsAndPositionsEnum {
  254. + final class BlockDocsAndPositionsEnum extends DocsEnumBase implements DocsAndPositionsEnum {
  255.  
  256. private final byte[] encoded;
  257.  
  258. @@ -1013,7 +1014,7 @@
  259. }
  260.  
  261. // Also handles payloads + offsets
  262. - final class EverythingEnum extends DocsAndPositionsEnum {
  263. + final class EverythingEnum extends DocsEnumBase implements DocsAndPositionsEnum {
  264.  
  265. private final byte[] encoded;
  266.  
  267. Index: lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsEnum.java
  268. ===================================================================
  269. --- lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsEnum.java (revision 1403781)
  270. +++ lucene/core/src/java/org/apache/lucene/codecs/MappingMultiDocsEnum.java (working copy)
  271. @@ -21,6 +21,7 @@
  272. import org.apache.lucene.index.MergeState;
  273. import org.apache.lucene.index.MultiDocsEnum;
  274. import org.apache.lucene.index.MultiDocsEnum.EnumWithSlice;
  275. +import org.apache.lucene.util.AttributeSource;
  276.  
  277. import java.io.IOException;
  278.  
  279. @@ -31,7 +32,7 @@
  280. * @lucene.experimental
  281. */
  282.  
  283. -public final class MappingMultiDocsEnum extends DocsEnum {
  284. +public final class MappingMultiDocsEnum implements DocsEnum {
  285. private MultiDocsEnum.EnumWithSlice[] subs;
  286. int numSubs;
  287. int upto;
  288. @@ -114,5 +115,10 @@
  289. }
  290. }
  291. }
  292. +
  293. + @Override
  294. + public AttributeSource attributes() {
  295. + throw new UnsupportedOperationException("nobody knows how to concatenate attributes");
  296. + }
  297. }
  298.  
  299. Index: lucene/core/src/java/org/apache/lucene/search/Scorer.java
  300. ===================================================================
  301. --- lucene/core/src/java/org/apache/lucene/search/Scorer.java (revision 1403781)
  302. +++ lucene/core/src/java/org/apache/lucene/search/Scorer.java (working copy)
  303. @@ -21,7 +21,7 @@
  304. import java.util.Collection;
  305. import java.util.Collections;
  306.  
  307. -import org.apache.lucene.index.DocsEnum;
  308. +import org.apache.lucene.index.DocsEnumBase;
  309.  
  310. /**
  311. * Expert: Common scoring functionality for different types of queries.
  312. @@ -41,7 +41,7 @@
  313. * TopScoreDocCollector}) will not properly collect hits
  314. * with these scores.
  315. */
  316. -public abstract class Scorer extends DocsEnum {
  317. +public abstract class Scorer extends DocsEnumBase {
  318. /** the Scorer's parent Weight. in some cases this may be null */
  319. // TODO can we clean this up?
  320. protected final Weight weight;
  321. Index: lucene/core/src/java/org/apache/lucene/search/DocIdSetIterator.java
  322. ===================================================================
  323. --- lucene/core/src/java/org/apache/lucene/search/DocIdSetIterator.java (revision 1403781)
  324. +++ lucene/core/src/java/org/apache/lucene/search/DocIdSetIterator.java (working copy)
  325. @@ -20,13 +20,13 @@
  326. import java.io.IOException;
  327.  
  328. /**
  329. - * This abstract class defines methods to iterate over a set of non-decreasing
  330. + * This interface defines methods to iterate over a set of non-decreasing
  331. * doc ids. Note that this class assumes it iterates on doc Ids, and therefore
  332. * {@link #NO_MORE_DOCS} is set to {@value #NO_MORE_DOCS} in order to be used as
  333. * a sentinel object. Implementations of this class are expected to consider
  334. * {@link Integer#MAX_VALUE} as an invalid value.
  335. */
  336. -public abstract class DocIdSetIterator {
  337. +public interface DocIdSetIterator {
  338.  
  339. /**
  340. * When returned by {@link #nextDoc()}, {@link #advance(int)} and
  341. Index: lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java
  342. ===================================================================
  343. --- lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java (revision 1403781)
  344. +++ lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java (working copy)
  345. @@ -33,6 +33,7 @@
  346. import org.apache.lucene.search.similarities.Similarity.SloppySimScorer;
  347. import org.apache.lucene.search.similarities.Similarity;
  348. import org.apache.lucene.util.ArrayUtil;
  349. +import org.apache.lucene.util.AttributeSource;
  350. import org.apache.lucene.util.Bits;
  351. import org.apache.lucene.util.BytesRef;
  352. import org.apache.lucene.util.PriorityQueue;
  353. @@ -408,7 +409,7 @@
  354. */
  355.  
  356. // TODO: if ever we allow subclassing of the *PhraseScorer
  357. -class UnionDocsAndPositionsEnum extends DocsAndPositionsEnum {
  358. +class UnionDocsAndPositionsEnum implements DocsAndPositionsEnum {
  359.  
  360. private static final class DocsQueue extends PriorityQueue<DocsAndPositionsEnum> {
  361. DocsQueue(List<DocsAndPositionsEnum> docsEnums) throws IOException {
  362. @@ -569,4 +570,9 @@
  363. public final int docID() {
  364. return _doc;
  365. }
  366. +
  367. + @Override
  368. + public AttributeSource attributes() {
  369. + throw new UnsupportedOperationException("nobody knows how to union attributes");
  370. + }
  371. }
  372. Index: lucene/core/src/java/org/apache/lucene/search/FilteredDocIdSetIterator.java
  373. ===================================================================
  374. --- lucene/core/src/java/org/apache/lucene/search/FilteredDocIdSetIterator.java (revision 1403781)
  375. +++ lucene/core/src/java/org/apache/lucene/search/FilteredDocIdSetIterator.java (working copy)
  376. @@ -25,7 +25,7 @@
  377. * mechanism on an underlying DocIdSetIterator. See {@link
  378. * FilteredDocIdSet}.
  379. */
  380. -public abstract class FilteredDocIdSetIterator extends DocIdSetIterator {
  381. +public abstract class FilteredDocIdSetIterator implements DocIdSetIterator {
  382. protected DocIdSetIterator _innerIter;
  383. private int doc;
  384.  
  385. Index: lucene/core/src/java/org/apache/lucene/index/FilterAtomicReader.java
  386. ===================================================================
  387. --- lucene/core/src/java/org/apache/lucene/index/FilterAtomicReader.java (revision 1403781)
  388. +++ lucene/core/src/java/org/apache/lucene/index/FilterAtomicReader.java (working copy)
  389. @@ -215,7 +215,7 @@
  390. }
  391.  
  392. /** Base class for filtering {@link DocsEnum} implementations. */
  393. - public static class FilterDocsEnum extends DocsEnum {
  394. + public static class FilterDocsEnum implements DocsEnum {
  395. /** The underlying DocsEnum instance. */
  396. protected final DocsEnum in;
  397.  
  398. @@ -254,7 +254,7 @@
  399. }
  400.  
  401. /** Base class for filtering {@link DocsAndPositionsEnum} implementations. */
  402. - public static class FilterDocsAndPositionsEnum extends DocsAndPositionsEnum {
  403. + public static class FilterDocsAndPositionsEnum implements DocsAndPositionsEnum {
  404. /** The underlying DocsAndPositionsEnum instance. */
  405. protected final DocsAndPositionsEnum in;
  406.  
  407. Index: lucene/core/src/java/org/apache/lucene/index/DocsEnumBase.java
  408. ===================================================================
  409. --- lucene/core/src/java/org/apache/lucene/index/DocsEnumBase.java (revision 0)
  410. +++ lucene/core/src/java/org/apache/lucene/index/DocsEnumBase.java (working copy)
  411. @@ -0,0 +1,35 @@
  412. +package org.apache.lucene.index;
  413. +
  414. +/*
  415. + * Licensed to the Apache Software Foundation (ASF) under one or more
  416. + * contributor license agreements. See the NOTICE file distributed with
  417. + * this work for additional information regarding copyright ownership.
  418. + * The ASF licenses this file to You under the Apache License, Version 2.0
  419. + * (the "License"); you may not use this file except in compliance with
  420. + * the License. You may obtain a copy of the License at
  421. + *
  422. + * http://www.apache.org/licenses/LICENSE-2.0
  423. + *
  424. + * Unless required by applicable law or agreed to in writing, software
  425. + * distributed under the License is distributed on an "AS IS" BASIS,
  426. + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  427. + * See the License for the specific language governing permissions and
  428. + * limitations under the License.
  429. + */
  430. +
  431. +import org.apache.lucene.util.AttributeSource;
  432. +
  433. +/**
  434. + * Base DocsEnum with lazy-loaded attributes()
  435. + */
  436. +//TODO nuke this?
  437. +public abstract class DocsEnumBase implements DocsEnum {
  438. +
  439. + private AttributeSource atts;
  440. +
  441. + @Override
  442. + public AttributeSource attributes() {
  443. + if (atts == null) atts = new AttributeSource();
  444. + return atts;
  445. + }
  446. +}
  447.  
  448. Property changes on: lucene/core/src/java/org/apache/lucene/index/DocsEnumBase.java
  449. ___________________________________________________________________
  450. Added: svn:eol-style
  451. ## -0,0 +1 ##
  452. +native
  453. Index: lucene/core/src/java/org/apache/lucene/index/DocsAndPositionsEnum.java
  454. ===================================================================
  455. --- lucene/core/src/java/org/apache/lucene/index/DocsAndPositionsEnum.java (revision 1403781)
  456. +++ lucene/core/src/java/org/apache/lucene/index/DocsAndPositionsEnum.java (working copy)
  457. @@ -23,7 +23,7 @@
  458. import org.apache.lucene.util.BytesRef;
  459.  
  460. /** Also iterates through positions. */
  461. -public abstract class DocsAndPositionsEnum extends DocsEnum {
  462. +public interface DocsAndPositionsEnum extends DocsEnum {
  463. /** Flag to pass to {@link TermsEnum#docsAndPositions(Bits,DocsAndPositionsEnum,int)}
  464. * if you require offsets in the returned enum. */
  465. public static final int FLAG_OFFSETS = 0x1;
  466. @@ -32,11 +32,6 @@
  467. * if you require payloads in the returned enum. */
  468. public static final int FLAG_PAYLOADS = 0x2;
  469.  
  470. - /** Sole constructor. (For invocation by subclass
  471. - * constructors, typically implicit.) */
  472. - protected DocsAndPositionsEnum() {
  473. - }
  474. -
  475. /** Returns the next position. You should only call this
  476. * up to {@link DocsEnum#freq()} times else
  477. * the behavior is not defined. If positions were not
  478. Index: lucene/core/src/java/org/apache/lucene/index/MultiDocsAndPositionsEnum.java
  479. ===================================================================
  480. --- lucene/core/src/java/org/apache/lucene/index/MultiDocsAndPositionsEnum.java (revision 1403781)
  481. +++ lucene/core/src/java/org/apache/lucene/index/MultiDocsAndPositionsEnum.java (working copy)
  482. @@ -17,6 +17,7 @@
  483. * limitations under the License.
  484. */
  485.  
  486. +import org.apache.lucene.util.AttributeSource;
  487. import org.apache.lucene.util.BytesRef;
  488.  
  489. import java.io.IOException;
  490. @@ -28,7 +29,7 @@
  491. * @lucene.experimental
  492. */
  493.  
  494. -public final class MultiDocsAndPositionsEnum extends DocsAndPositionsEnum {
  495. +public final class MultiDocsAndPositionsEnum implements DocsAndPositionsEnum {
  496. private final MultiTermsEnum parent;
  497. final DocsAndPositionsEnum[] subDocsAndPositionsEnum;
  498. private EnumWithSlice[] subs;
  499. @@ -173,5 +174,10 @@
  500. public String toString() {
  501. return "MultiDocsAndPositionsEnum(" + Arrays.toString(getSubs()) + ")";
  502. }
  503. +
  504. + @Override
  505. + public AttributeSource attributes() {
  506. + throw new UnsupportedOperationException("nobody knows how to concatenate attributes");
  507. + }
  508. }
  509.  
  510. Index: lucene/core/src/java/org/apache/lucene/index/MultiDocsEnum.java
  511. ===================================================================
  512. --- lucene/core/src/java/org/apache/lucene/index/MultiDocsEnum.java (revision 1403781)
  513. +++ lucene/core/src/java/org/apache/lucene/index/MultiDocsEnum.java (working copy)
  514. @@ -21,6 +21,8 @@
  515. import java.io.IOException;
  516. import java.util.Arrays;
  517.  
  518. +import org.apache.lucene.util.AttributeSource;
  519. +
  520. /**
  521. * Exposes {@link DocsEnum}, merged from {@link DocsEnum}
  522. * API of sub-segments.
  523. @@ -28,7 +30,7 @@
  524. * @lucene.experimental
  525. */
  526.  
  527. -public final class MultiDocsEnum extends DocsEnum {
  528. +public final class MultiDocsEnum implements DocsEnum {
  529. private final MultiTermsEnum parent;
  530. final DocsEnum[] subDocsEnum;
  531. private EnumWithSlice[] subs;
  532. @@ -154,5 +156,10 @@
  533. public String toString() {
  534. return "MultiDocsEnum(" + Arrays.toString(getSubs()) + ")";
  535. }
  536. +
  537. + @Override
  538. + public AttributeSource attributes() {
  539. + throw new UnsupportedOperationException("nobody knows how to concatenate attributes");
  540. + }
  541. }
  542.  
  543. Index: lucene/core/src/java/org/apache/lucene/index/DocsEnum.java
  544. ===================================================================
  545. --- lucene/core/src/java/org/apache/lucene/index/DocsEnum.java (revision 1403781)
  546. +++ lucene/core/src/java/org/apache/lucene/index/DocsEnum.java (working copy)
  547. @@ -26,19 +26,12 @@
  548. /** Iterates through the documents and term freqs.
  549. * NOTE: you must first call {@link #nextDoc} before using
  550. * any of the per-doc methods. */
  551. -public abstract class DocsEnum extends DocIdSetIterator {
  552. +public interface DocsEnum extends DocIdSetIterator {
  553.  
  554. /** Flag to pass to {@link TermsEnum#docs(Bits,DocsEnum,int)}
  555. * if you require term frequencies in the returned enum. */
  556. public static final int FLAG_FREQS = 0x1;
  557.  
  558. - private AttributeSource atts = null;
  559. -
  560. - /** Sole constructor. (For invocation by subclass
  561. - * constructors, typically implicit.) */
  562. - protected DocsEnum() {
  563. - }
  564. -
  565. /** Returns term frequency in the current document. Do
  566. * not call this before {@link #nextDoc} is first called,
  567. * nor after {@link #nextDoc} returns NO_MORE_DOCS.
  568. @@ -46,8 +39,5 @@
  569. public abstract int freq() throws IOException;
  570.  
  571. /** Returns the related attributes. */
  572. - public AttributeSource attributes() {
  573. - if (atts == null) atts = new AttributeSource();
  574. - return atts;
  575. - }
  576. + public abstract AttributeSource attributes();
  577. }
  578. Index: lucene/core/src/java/org/apache/lucene/util/DocIdBitSet.java
  579. ===================================================================
  580. --- lucene/core/src/java/org/apache/lucene/util/DocIdBitSet.java (revision 1403781)
  581. +++ lucene/core/src/java/org/apache/lucene/util/DocIdBitSet.java (working copy)
  582. @@ -65,7 +65,7 @@
  583. return bitSet.size();
  584. }
  585.  
  586. - private static class DocIdBitSetIterator extends DocIdSetIterator {
  587. + private static class DocIdBitSetIterator implements DocIdSetIterator {
  588. private int docId;
  589. private BitSet bitSet;
  590.  
  591. Index: lucene/core/src/java/org/apache/lucene/util/OpenBitSetIterator.java
  592. ===================================================================
  593. --- lucene/core/src/java/org/apache/lucene/util/OpenBitSetIterator.java (revision 1403781)
  594. +++ lucene/core/src/java/org/apache/lucene/util/OpenBitSetIterator.java (working copy)
  595. @@ -23,7 +23,7 @@
  596. * This is faster than nextSetBit() for iterating over the complete set of bits,
  597. * especially when the density of the bits set is high.
  598. */
  599. -public class OpenBitSetIterator extends DocIdSetIterator {
  600. +public class OpenBitSetIterator implements DocIdSetIterator {
  601.  
  602. // The General Idea: instead of having an array per byte that has
  603. // the offsets of the next set bit, that array could be
  604. Index: lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java
  605. ===================================================================
  606. --- lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java (revision 1403781)
  607. +++ lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java (working copy)
  608. @@ -30,6 +30,7 @@
  609. import org.apache.lucene.codecs.lucene41.Lucene41PostingsFormat; // javadocs
  610. import org.apache.lucene.index.DocsAndPositionsEnum;
  611. import org.apache.lucene.index.DocsEnum;
  612. +import org.apache.lucene.index.DocsEnumBase;
  613. import org.apache.lucene.index.FieldInfo.IndexOptions;
  614. import org.apache.lucene.index.FieldInfo;
  615. import org.apache.lucene.index.Fields;
  616. @@ -1423,7 +1424,7 @@
  617. }
  618.  
  619. // Docs only:
  620. - private final static class LowFreqDocsEnumNoTF extends DocsEnum {
  621. + private final static class LowFreqDocsEnumNoTF extends DocsEnumBase implements DocsEnum {
  622. private int[] postings;
  623. private final Bits liveDocs;
  624. private int upto;
  625. @@ -1489,7 +1490,7 @@
  626. }
  627.  
  628. // Docs + freqs:
  629. - private final static class LowFreqDocsEnumNoPos extends DocsEnum {
  630. + private final static class LowFreqDocsEnumNoPos extends DocsEnumBase implements DocsEnum {
  631. private int[] postings;
  632. private final Bits liveDocs;
  633. private int upto;
  634. @@ -1554,7 +1555,7 @@
  635. }
  636.  
  637. // Docs + freqs + positions/offets:
  638. - private final static class LowFreqDocsEnum extends DocsEnum {
  639. + private final static class LowFreqDocsEnum extends DocsEnumBase {
  640. private int[] postings;
  641. private final Bits liveDocs;
  642. private final int posMult;
  643. @@ -1634,7 +1635,7 @@
  644. }
  645. }
  646.  
  647. - private final static class LowFreqDocsAndPositionsEnum extends DocsAndPositionsEnum {
  648. + private final static class LowFreqDocsAndPositionsEnum extends DocsEnumBase implements DocsAndPositionsEnum {
  649. private int[] postings;
  650. private final Bits liveDocs;
  651. private final int posMult;
  652. @@ -1787,7 +1788,7 @@
  653. }
  654.  
  655. // Docs + freqs:
  656. - private final static class HighFreqDocsEnum extends DocsEnum {
  657. + private final static class HighFreqDocsEnum extends DocsEnumBase {
  658. private int[] docIDs;
  659. private int[] freqs;
  660. private final Bits liveDocs;
  661. @@ -1960,7 +1961,7 @@
  662. }
  663.  
  664. // TODO: specialize offsets and not
  665. - private final static class HighFreqDocsAndPositionsEnum extends DocsAndPositionsEnum {
  666. + private final static class HighFreqDocsAndPositionsEnum extends DocsEnumBase implements DocsAndPositionsEnum {
  667. private int[] docIDs;
  668. private int[] freqs;
  669. private int[][] positions;
  670. Index: lucene/codecs/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java
  671. ===================================================================
  672. --- lucene/codecs/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java (revision 1403781)
  673. +++ lucene/codecs/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java (working copy)
  674. @@ -32,6 +32,7 @@
  675. import org.apache.lucene.codecs.TermsConsumer;
  676. import org.apache.lucene.index.DocsAndPositionsEnum;
  677. import org.apache.lucene.index.DocsEnum;
  678. +import org.apache.lucene.index.DocsEnumBase;
  679. import org.apache.lucene.index.FieldInfo.IndexOptions;
  680. import org.apache.lucene.index.FieldInfo;
  681. import org.apache.lucene.index.FieldInfos;
  682. @@ -310,7 +311,7 @@
  683. };
  684. }
  685.  
  686. - private final static class FSTDocsEnum extends DocsEnum {
  687. + private final static class FSTDocsEnum extends DocsEnumBase {
  688. private final IndexOptions indexOptions;
  689. private final boolean storePayloads;
  690. private byte[] buffer = new byte[16];
  691. @@ -433,7 +434,7 @@
  692. }
  693. }
  694.  
  695. - private final static class FSTDocsAndPositionsEnum extends DocsAndPositionsEnum {
  696. + private final static class FSTDocsAndPositionsEnum extends DocsEnumBase implements DocsAndPositionsEnum {
  697. private final boolean storePayloads;
  698. private byte[] buffer = new byte[16];
  699. private final ByteArrayDataInput in = new ByteArrayDataInput(buffer);
  700. Index: lucene/codecs/src/java/org/apache/lucene/codecs/pulsing/PulsingPostingsReader.java
  701. ===================================================================
  702. --- lucene/codecs/src/java/org/apache/lucene/codecs/pulsing/PulsingPostingsReader.java (revision 1403781)
  703. +++ lucene/codecs/src/java/org/apache/lucene/codecs/pulsing/PulsingPostingsReader.java (working copy)
  704. @@ -26,6 +26,7 @@
  705. import org.apache.lucene.codecs.PostingsReaderBase;
  706. import org.apache.lucene.index.DocsAndPositionsEnum;
  707. import org.apache.lucene.index.DocsEnum;
  708. +import org.apache.lucene.index.DocsEnumBase;
  709. import org.apache.lucene.index.FieldInfo;
  710. import org.apache.lucene.index.FieldInfo.IndexOptions;
  711. import org.apache.lucene.index.TermState;
  712. @@ -249,7 +250,7 @@
  713. }
  714. }
  715.  
  716. - private static class PulsingDocsEnum extends DocsEnum {
  717. + private static class PulsingDocsEnum extends DocsEnumBase {
  718. private byte[] postingsBytes;
  719. private final ByteArrayDataInput postings = new ByteArrayDataInput();
  720. private final IndexOptions indexOptions;
  721. @@ -369,7 +370,7 @@
  722. }
  723. }
  724.  
  725. - private static class PulsingDocsAndPositionsEnum extends DocsAndPositionsEnum {
  726. + private static class PulsingDocsAndPositionsEnum extends DocsEnumBase implements DocsAndPositionsEnum {
  727. private byte[] postingsBytes;
  728. private final ByteArrayDataInput postings = new ByteArrayDataInput();
  729. private final boolean storePayloads;
  730. Index: lucene/codecs/src/java/org/apache/lucene/codecs/sep/SepPostingsReader.java
  731. ===================================================================
  732. --- lucene/codecs/src/java/org/apache/lucene/codecs/sep/SepPostingsReader.java (revision 1403781)
  733. +++ lucene/codecs/src/java/org/apache/lucene/codecs/sep/SepPostingsReader.java (working copy)
  734. @@ -24,6 +24,7 @@
  735. import org.apache.lucene.codecs.PostingsReaderBase;
  736. import org.apache.lucene.index.DocsAndPositionsEnum;
  737. import org.apache.lucene.index.DocsEnum;
  738. +import org.apache.lucene.index.DocsEnumBase;
  739. import org.apache.lucene.index.FieldInfo.IndexOptions;
  740. import org.apache.lucene.index.FieldInfo;
  741. import org.apache.lucene.index.FieldInfos;
  742. @@ -277,7 +278,7 @@
  743. return postingsEnum.init(fieldInfo, termState, liveDocs);
  744. }
  745.  
  746. - class SepDocsEnum extends DocsEnum {
  747. + class SepDocsEnum extends DocsEnumBase {
  748. int docFreq;
  749. int doc = -1;
  750. int accum;
  751. @@ -443,7 +444,7 @@
  752. }
  753. }
  754.  
  755. - class SepDocsAndPositionsEnum extends DocsAndPositionsEnum {
  756. + class SepDocsAndPositionsEnum extends DocsEnumBase implements DocsAndPositionsEnum {
  757. int docFreq;
  758. int doc = -1;
  759. int accum;
  760. Index: lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java
  761. ===================================================================
  762. --- lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java (revision 1403781)
  763. +++ lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java (working copy)
  764. @@ -29,6 +29,7 @@
  765. import org.apache.lucene.codecs.FieldsProducer;
  766. import org.apache.lucene.index.DocsAndPositionsEnum;
  767. import org.apache.lucene.index.DocsEnum;
  768. +import org.apache.lucene.index.DocsEnumBase;
  769. import org.apache.lucene.index.FieldInfo;
  770. import org.apache.lucene.index.FieldInfo.IndexOptions;
  771. import org.apache.lucene.index.FieldInfos;
  772. @@ -218,7 +219,7 @@
  773. }
  774. }
  775.  
  776. - private class SimpleTextDocsEnum extends DocsEnum {
  777. + private class SimpleTextDocsEnum extends DocsEnumBase {
  778. private final IndexInput inStart;
  779. private final IndexInput in;
  780. private boolean omitTF;
  781. @@ -311,7 +312,7 @@
  782. }
  783. }
  784.  
  785. - private class SimpleTextDocsAndPositionsEnum extends DocsAndPositionsEnum {
  786. + private class SimpleTextDocsAndPositionsEnum extends DocsEnumBase implements DocsAndPositionsEnum {
  787. private final IndexInput inStart;
  788. private final IndexInput in;
  789. private int docID = -1;
  790. Index: lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java
  791. ===================================================================
  792. --- lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java (revision 1403781)
  793. +++ lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java (working copy)
  794. @@ -28,6 +28,7 @@
  795. import org.apache.lucene.codecs.TermVectorsReader;
  796. import org.apache.lucene.index.DocsAndPositionsEnum;
  797. import org.apache.lucene.index.DocsEnum;
  798. +import org.apache.lucene.index.DocsEnumBase;
  799. import org.apache.lucene.index.Fields;
  800. import org.apache.lucene.index.IndexFileNames;
  801. import org.apache.lucene.index.SegmentInfo;
  802. @@ -408,7 +409,7 @@
  803. }
  804.  
  805. // note: these two enum classes are exactly like the Default impl...
  806. - private static class SimpleTVDocsEnum extends DocsEnum {
  807. + private static class SimpleTVDocsEnum extends DocsEnumBase {
  808. private boolean didNext;
  809. private int doc = -1;
  810. private int freq;
  811. @@ -452,7 +453,7 @@
  812. }
  813. }
  814.  
  815. - private static class SimpleTVDocsAndPositionsEnum extends DocsAndPositionsEnum {
  816. + private static class SimpleTVDocsAndPositionsEnum extends DocsEnumBase implements DocsAndPositionsEnum {
  817. private boolean didNext;
  818. private int doc = -1;
  819. private int nextPos;
  820. Index: lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
  821. ===================================================================
  822. --- lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java (revision 1403781)
  823. +++ lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java (working copy)
  824. @@ -35,6 +35,7 @@
  825. import org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute;
  826. import org.apache.lucene.index.AtomicReader;
  827. import org.apache.lucene.index.AtomicReaderContext;
  828. +import org.apache.lucene.index.DocsEnumBase;
  829. import org.apache.lucene.index.FieldInfo;
  830. import org.apache.lucene.index.Norm;
  831. import org.apache.lucene.index.DocValues;
  832. @@ -923,7 +924,7 @@
  833. }
  834. }
  835.  
  836. - private class MemoryDocsEnum extends DocsEnum {
  837. + private class MemoryDocsEnum extends DocsEnumBase {
  838. private ArrayIntList positions;
  839. private boolean hasNext;
  840. private Bits liveDocs;
  841. @@ -963,7 +964,7 @@
  842. }
  843. }
  844.  
  845. - private class MemoryDocsAndPositionsEnum extends DocsAndPositionsEnum {
  846. + private class MemoryDocsAndPositionsEnum extends DocsEnumBase implements DocsAndPositionsEnum {
  847. private ArrayIntList positions;
  848. private int posUpto;
  849. private boolean hasNext;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement