mirror of
				https://github.com/MinimalBible/MinimalBible
				synced 2025-11-03 18:10:27 -05:00 
			
		
		
		
	Rename FinalDelegate to SafeValDelegate
This commit is contained in:
		@ -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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user