diff --git a/README.md b/README.md index 3819255..045cde6 100644 --- a/README.md +++ b/README.md @@ -103,51 +103,31 @@ build project and we will get a Registry class. * this class is generated by https://github.com/lwj1994/ormkv for * [com.lwjlol.ormkv.demo.UserInfo], Please don't modify it! */ -public class UserRegistry { +public object UserRegistry { private val kvHandler: OrmKvHandler = com.lwjlol.ormkv.demo.KvStore.sharedPreferencesHandler - private var _name: String? = null public var name: String get() { - if (_name == null) { - _name = kvHandler.get("com.lwjlol.ormkv.demo.UserInfo_name", "david") as String - } - return _name!! + return kvHandler.get("com.lwjlol.ormkv.demo.UserInfo_name", "david") as String } set(`value`) { - if (_name == value) return - _name = value kvHandler.put("com.lwjlol.ormkv.demo.UserInfo_name", value) } - private var _id: Long? = null - public var id: Long get() { - if (_id == null) { - _id = kvHandler.get("com.lwjlol.ormkv.demo.UserInfo_id", 12312312) as Long - } - return _id!! + return kvHandler.get("com.lwjlol.ormkv.demo.UserInfo_id", 12312312) as Long } set(`value`) { - if (_id == value) return - _id = value kvHandler.put("com.lwjlol.ormkv.demo.UserInfo_id", value) } - private var _isMan: Boolean? = null - public var isMan: Boolean get() { - if (_isMan == null) { - _isMan = kvHandler.get("com.lwjlol.ormkv.demo.UserInfo_isMan", false) as Boolean - } - return _isMan!! + return kvHandler.get("com.lwjlol.ormkv.demo.UserInfo_isMan", false) as Boolean } set(`value`) { - if (_isMan == value) return - _isMan = value kvHandler.put("com.lwjlol.ormkv.demo.UserInfo_isMan", value) } @@ -189,11 +169,10 @@ public class UserRegistry { then we can use the Registry class set/get value directly. ```kotlin -val userRegistry = UserRegistry() -userRegistry.name = "Mike" +UserRegistry.name = "Mike" -Log.d(tag, userRegistry.toString()) -Log.d(tag, userRegistry.name) +Log.d(tag, UserRegistry.toString()) +Log.d(tag, UserRegistry.name) ``` ## KSP diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 2905983..5cfc1a8 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -72,8 +72,8 @@ dependencies { implementation(project(":sharedPreferences")) implementation(project(":mmkv")) implementation(kotlin("stdlib")) -// ksp(project(":compiler")) - kapt(project(":compiler")) + ksp(project(":compiler")) +// kapt(project(":compiler")) implementation(project(":compiler")) } diff --git a/app/src/main/java/com/lwjlol/ormkv/demo/MainActivity.kt b/app/src/main/java/com/lwjlol/ormkv/demo/MainActivity.kt index 160e130..f1a45cd 100644 --- a/app/src/main/java/com/lwjlol/ormkv/demo/MainActivity.kt +++ b/app/src/main/java/com/lwjlol/ormkv/demo/MainActivity.kt @@ -10,7 +10,7 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) updateText() - val user = User() + val user = User // UserSp.name diff --git a/compiler/src/main/java/com/lwjlol/ormkv/annotation/compiler/KspOrmkvProvider.kt b/compiler/src/main/java/com/lwjlol/ormkv/annotation/compiler/KspOrmkvProvider.kt index 2f3f005..90f663f 100644 --- a/compiler/src/main/java/com/lwjlol/ormkv/annotation/compiler/KspOrmkvProvider.kt +++ b/compiler/src/main/java/com/lwjlol/ormkv/annotation/compiler/KspOrmkvProvider.kt @@ -85,7 +85,7 @@ class KspOrmkvProcessor( name = className } val fileName = if (classNameArg.isNotEmpty()) name else "${name}${END_FIX}" - val typeSpec = TypeSpec.classBuilder(fileName) + val typeSpec = TypeSpec.objectBuilder(fileName) .addKdoc("this class is generated by https://github.com/lwj1994/ormkv for [${packageName}.${className}], Please don't modify it!") if (handlerCodeReferenceArg.isEmpty()) { @@ -131,7 +131,6 @@ class KspOrmkvProcessor( } } val memberTypeName = member.type.resolve().declaration.qualifiedName?.asString() ?: "" - val valueName = "_${member.name?.asString()}" val propertyName = member.name?.asString() ?: "" val keyUnitName = columnName.ifEmpty { member.name?.asString() ?: "" } var getName = "" @@ -186,13 +185,13 @@ class KspOrmkvProcessor( return@forEachIndexed } val typeName = ClassName.bestGuess(memberTypeName) - typeSpec.addProperty( - PropertySpec.builder(valueName, typeName.copy(nullable = true)) - .initializer("null") - .addModifiers(KModifier.PRIVATE) - .mutable(true) - .build() - ) +// typeSpec.addProperty( +// PropertySpec.builder(valueName, typeName.copy(nullable = true)) +// .initializer("null") +// .addModifiers(KModifier.PRIVATE) +// .mutable(true) +// .build() +// ) val setName = """put("$keyName", value)""" typeSpec.addProperty( @@ -202,10 +201,7 @@ class KspOrmkvProcessor( FunSpec.getterBuilder() .addCode( """ - |if ($valueName == null) { - | $valueName = ${HANDLER}.$getName - |} - |return $valueName!! + |return ${HANDLER}.$getName |""".trimMargin() ) .build() @@ -213,8 +209,6 @@ class KspOrmkvProcessor( .setter( FunSpec.setterBuilder().addParameter("value", typeName).addCode( """ - |if ($valueName == value) return - |$valueName = value |${HANDLER}.$setName |""".trimMargin() ).build() diff --git a/compiler/src/main/java/com/lwjlol/ormkv/annotation/compiler/OrmkvProcessor.kt b/compiler/src/main/java/com/lwjlol/ormkv/annotation/compiler/OrmkvProcessor.kt index 1d4f10e..8b8d113 100644 --- a/compiler/src/main/java/com/lwjlol/ormkv/annotation/compiler/OrmkvProcessor.kt +++ b/compiler/src/main/java/com/lwjlol/ormkv/annotation/compiler/OrmkvProcessor.kt @@ -71,7 +71,7 @@ class OrmkvProcessor : AbstractProcessor() { packageName } val fileName = if (entity.className.isNotEmpty()) name else "${name}_${END_FIX}" - val typeSpec = TypeSpec.classBuilder(fileName) + val typeSpec = TypeSpec.objectBuilder(fileName) .addKdoc("this class is generated by https://github.com/lwj1994/ormkv for [${packageName}.${className}], Please don't modify it!") typeSpec.addProperty( @@ -96,7 +96,6 @@ class OrmkvProcessor : AbstractProcessor() { val columnName = spColumnInfo?.name ?: "" val clear = spColumnInfo?.enableReset ?: true val memberTypeName = member.asType().asTypeName() - val valueName = "_${member.simpleName}" val propertyName = member.simpleName.toString() val typeName = when { @@ -167,14 +166,6 @@ class OrmkvProcessor : AbstractProcessor() { val setName = """put("$keyName", value)""" - typeSpec.addProperty( - PropertySpec.builder(valueName, typeName.copy(true)) - .initializer("null") - .addModifiers(KModifier.PRIVATE) - .mutable(true) - .build() - ) - typeSpec.addProperty( PropertySpec.builder(propertyName, typeName) .mutable(true) @@ -182,10 +173,7 @@ class OrmkvProcessor : AbstractProcessor() { FunSpec.getterBuilder() .addCode( """ - |if ($valueName == null) { - | $valueName = $HANDLER.$getName - |} - |return $valueName!! + |return $HANDLER.$getName |""".trimMargin() ) .build() @@ -193,8 +181,6 @@ class OrmkvProcessor : AbstractProcessor() { .setter( FunSpec.setterBuilder().addParameter("value", typeName).addCode( """ - |if ($valueName == value) return - |$valueName = value |$HANDLER.$setName |""".trimMargin() ).build()