Mercurial Hosting > luan
comparison src/luan/modules/lucene/SupplementingConfig.java @ 1578:c922446f53aa
immutable threading
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 08 Feb 2021 14:16:19 -0700 |
parents | 8fbcc4747091 |
children | 46cf5137cb6b |
comparison
equal
deleted
inserted
replaced
1577:60e5c324adf9 | 1578:c922446f53aa |
---|---|
11 import goodjava.lucene.api.MultiFieldParserConfig; | 11 import goodjava.lucene.api.MultiFieldParserConfig; |
12 import goodjava.lucene.api.MoreFieldInfo; | 12 import goodjava.lucene.api.MoreFieldInfo; |
13 import luan.Luan; | 13 import luan.Luan; |
14 import luan.LuanFunction; | 14 import luan.LuanFunction; |
15 import luan.LuanTable; | 15 import luan.LuanTable; |
16 import luan.LuanCloner; | 16 import luan.LuanMutable; |
17 import luan.LuanException; | 17 import luan.LuanException; |
18 import luan.LuanRuntimeException; | 18 import luan.LuanRuntimeException; |
19 | 19 |
20 | 20 |
21 final class SupplementingConfig extends MultiFieldParserConfig { | 21 final class SupplementingConfig extends MultiFieldParserConfig { |
22 private final Luan luan; | 22 private final Luan luan; |
23 private final LuanFunction supplementer; | 23 private final LuanFunction supplementer; |
24 | 24 |
25 SupplementingConfig(Version luceneVersion,MultiFieldParser mfp,Luan luan,LuanFunction supplementer) { | 25 SupplementingConfig(Version luceneVersion,MultiFieldParser mfp,Luan luan,LuanFunction supplementer) throws LuanException { |
26 super(luceneVersion,mfp); | 26 super(luceneVersion,mfp); |
27 LuanCloner cloner = new LuanCloner(LuanCloner.Type.COMPLETE); | 27 this.luan = new Luan(luan); |
28 this.luan = (Luan)cloner.get(luan); | 28 LuanMutable.makeImmutable(supplementer); |
29 this.supplementer = (LuanFunction)cloner.get(supplementer); | 29 this.supplementer = supplementer; |
30 } | 30 } |
31 | 31 |
32 @Override public IndexWriterConfig newLuceneConfig() { | 32 @Override public IndexWriterConfig newLuceneConfig() { |
33 IndexWriterConfig luceneConfig = super.newLuceneConfig(); | 33 IndexWriterConfig luceneConfig = super.newLuceneConfig(); |
34 SnapshotDeletionPolicy snapshotDeletionPolicy = new SnapshotDeletionPolicy(luceneConfig.getIndexDeletionPolicy()); | 34 SnapshotDeletionPolicy snapshotDeletionPolicy = new SnapshotDeletionPolicy(luceneConfig.getIndexDeletionPolicy()); |
39 @Override public MoreFieldInfo getMoreFieldInfo(Map<String,Object> storedFields) { | 39 @Override public MoreFieldInfo getMoreFieldInfo(Map<String,Object> storedFields) { |
40 if( supplementer == null ) | 40 if( supplementer == null ) |
41 return super.getMoreFieldInfo(storedFields); | 41 return super.getMoreFieldInfo(storedFields); |
42 try { | 42 try { |
43 LuanTable tbl = toTable(storedFields); | 43 LuanTable tbl = toTable(storedFields); |
44 tbl = (LuanTable)supplementer.call(luan,tbl); | 44 synchronized(luan) { |
45 tbl = (LuanTable)supplementer.call(luan,tbl); | |
46 } | |
45 if( tbl == null ) { | 47 if( tbl == null ) { |
46 return super.getMoreFieldInfo(storedFields); | 48 return super.getMoreFieldInfo(storedFields); |
47 } else { | 49 } else { |
48 return new MoreFieldInfo(toLucene(tbl),Collections.emptyMap()); | 50 return new MoreFieldInfo(toLucene(tbl),Collections.emptyMap()); |
49 } | 51 } |