mirror of
https://github.com/MinimalBible/MinimalBible
synced 2024-11-24 17:08:18 -05:00
Rename FinalDelegate to SafeValDelegate
This commit is contained in:
parent
0c74d99a06
commit
b778748ee0
@ -1,19 +1,19 @@
|
|||||||
package org.bspeice.minimalbible.test;
|
package org.bspeice.minimalbible.test;
|
||||||
|
|
||||||
import org.bspeice.minimalbible.FinalDelegate;
|
|
||||||
import org.bspeice.minimalbible.MBTestCase;
|
import org.bspeice.minimalbible.MBTestCase;
|
||||||
|
import org.bspeice.minimalbible.SafeValDelegate;
|
||||||
|
|
||||||
import kotlin.PropertyMetadataImpl;
|
import kotlin.PropertyMetadataImpl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test that the FinalDelegate actually obeys its contract
|
* Test that the FinalDelegate actually obeys its contract
|
||||||
*/
|
*/
|
||||||
public class FinalDelegateTest extends MBTestCase {
|
public class SafeValDelegateTest extends MBTestCase {
|
||||||
|
|
||||||
FinalDelegate<String> delegate;
|
SafeValDelegate<String> delegate;
|
||||||
|
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
delegate = new FinalDelegate<String>();
|
delegate = new SafeValDelegate<String>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testDelegateNullSafety() {
|
public void testDelegateNullSafety() {
|
@ -1,20 +1,22 @@
|
|||||||
package org.bspeice.minimalbible
|
package org.bspeice.minimalbible
|
||||||
|
|
||||||
|
import kotlin.properties.ReadWriteProperty
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The purpose of this delegate is to guarantee null-safety, while
|
* The purpose of this delegate is to guarantee null-safety, while
|
||||||
* also ensuring a pseudo-val type. If you try to read before use, error.
|
* also ensuring a pseudo-val type. If you try to read before use, error.
|
||||||
* If you try to set multiple times, error.
|
* If you try to set multiple times, error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class FinalDelegate<T : Any>() {
|
public class SafeValDelegate<T : Any>() : ReadWriteProperty<Any?, T> {
|
||||||
private var value: T? = null
|
private var value: T? = null
|
||||||
private var didAssign: Boolean = false
|
private var didAssign: Boolean = false
|
||||||
|
|
||||||
public fun get(thisRef: Any?, desc: PropertyMetadata): T {
|
public override fun get(thisRef: Any?, desc: PropertyMetadata): T {
|
||||||
return value ?: throw IllegalStateException("Property ${desc.name} should be initialized before get")
|
return value ?: throw IllegalStateException("Property ${desc.name} should be initialized before get")
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun set(thisRef: Any?, desc: PropertyMetadata, value: T) {
|
public override fun set(thisRef: Any?, desc: PropertyMetadata, value: T) {
|
||||||
if (!didAssign) {
|
if (!didAssign) {
|
||||||
this.value = value
|
this.value = value
|
||||||
this.didAssign = true
|
this.didAssign = true
|
@ -5,7 +5,7 @@ import org.crosswire.jsword.passage.Verse
|
|||||||
import java.util.ArrayDeque
|
import java.util.ArrayDeque
|
||||||
import org.xml.sax.Attributes
|
import org.xml.sax.Attributes
|
||||||
import org.crosswire.jsword.book.OSISUtil
|
import org.crosswire.jsword.book.OSISUtil
|
||||||
import org.bspeice.minimalbible.FinalDelegate
|
import org.bspeice.minimalbible.SafeValDelegate
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by bspeice on 9/10/14.
|
* Created by bspeice on 9/10/14.
|
||||||
@ -15,7 +15,7 @@ class OsisParser() : DefaultHandler() {
|
|||||||
|
|
||||||
// Don't pass a verse as part of the constructor, but still guarantee
|
// Don't pass a verse as part of the constructor, but still guarantee
|
||||||
// that it will exist
|
// that it will exist
|
||||||
public var verse: Verse by FinalDelegate()
|
public var verse: Verse by SafeValDelegate()
|
||||||
val verseContent: VerseContent
|
val verseContent: VerseContent
|
||||||
get() = VerseContent(verse)
|
get() = VerseContent(verse)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user