Skip to content

Commit a54675e

Browse files
use wrapper only for reflectWith
1 parent 5aeb607 commit a54675e

File tree

1 file changed

+20
-33
lines changed

1 file changed

+20
-33
lines changed

src/main/java/com/worksap/nlp/lucene/sudachi/ja/attributes/MorphemeAttributeImpl.kt

Lines changed: 20 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -25,51 +25,38 @@ import org.apache.lucene.util.AttributeImpl
2525
import org.apache.lucene.util.AttributeReflector
2626

2727
class MorphemeAttributeImpl : AttributeImpl(), MorphemeAttribute {
28-
private val inner: ToXContentWrapper = ToXContentWrapper(null, listOf())
28+
private var morpheme: Morpheme? = null
29+
// mapping from the character offset to the original reader offset
30+
private var offsetMap: List<Int> = listOf()
2931

30-
private class ToXContentWrapper(morpheme: Morpheme?, offsetMap: List<Int>) : ToXContent {
31-
private var morpheme = morpheme
32-
// mapping from the character to the original reader
33-
private var offsetMap = offsetMap
32+
// wrapper class to convert data ToXContent-able
33+
private class ToXContentWrapper(morpheme: Morpheme, offsetMap: List<Int>) : ToXContent {
34+
private val morpheme = morpheme
35+
private val offsetMap = offsetMap
3436

3537
override fun toXContent(builder: XContentBuilder, params: ToXContentParams): XContentBuilder {
3638
builder.value(
3739
mapOf(
38-
"surface" to morpheme?.surface(),
39-
"dictionaryForm" to morpheme?.dictionaryForm(),
40-
"normalizedForm" to morpheme?.normalizedForm(),
41-
"readingForm" to morpheme?.readingForm(),
42-
"partOfSpeech" to morpheme?.partOfSpeech(),
40+
"surface" to morpheme.surface(),
41+
"dictionaryForm" to morpheme.dictionaryForm(),
42+
"normalizedForm" to morpheme.normalizedForm(),
43+
"readingForm" to morpheme.readingForm(),
44+
"partOfSpeech" to morpheme.partOfSpeech(),
4345
"offsetMap" to offsetMap,
4446
))
4547
return builder
4648
}
47-
48-
fun getMorpheme(): Morpheme? {
49-
return morpheme
50-
}
51-
52-
fun setMorpheme(morpheme: Morpheme?) {
53-
this.morpheme = morpheme
54-
}
55-
56-
fun getOffsets(): List<Int> {
57-
return offsetMap
58-
}
59-
60-
fun setOffsets(offsets: List<Int>) {
61-
this.offsetMap = offsets
62-
}
6349
}
6450

6551
override fun clear() {
66-
inner.setMorpheme(null)
67-
inner.setOffsets(listOf())
52+
morpheme = null
53+
offsetMap = listOf()
6854
}
6955

7056
override fun reflectWith(reflector: AttributeReflector) {
57+
// show only when a morpheme is set
7158
reflector.reflect<MorphemeAttribute>(
72-
"morpheme", if (inner.getMorpheme() != null) inner else null)
59+
"morpheme", morpheme?.let { m -> ToXContentWrapper(m, offsetMap) })
7360
}
7461

7562
override fun copyTo(target: AttributeImpl?) {
@@ -80,18 +67,18 @@ class MorphemeAttributeImpl : AttributeImpl(), MorphemeAttribute {
8067
}
8168

8269
override fun getMorpheme(): Morpheme? {
83-
return inner.getMorpheme()
70+
return morpheme
8471
}
8572

8673
override fun setMorpheme(morpheme: Morpheme?) {
87-
inner.setMorpheme(morpheme)
74+
this.morpheme = morpheme
8875
}
8976

9077
override fun getOffsets(): List<Int> {
91-
return inner.getOffsets()
78+
return offsetMap
9279
}
9380

9481
override fun setOffsets(offsets: List<Int>) {
95-
inner.setOffsets(offsets)
82+
this.offsetMap = offsets
9683
}
9784
}

0 commit comments

Comments
 (0)