Skip to content

Commit

Permalink
Merge pull request #381 from permissions-dispatcher/fix_string_type
Browse files Browse the repository at this point in the history
Add temporal extension method which converts java.lang.String to kotlin.String
  • Loading branch information
shiraji committed Sep 17, 2017
2 parents 3228b7c + b8ff519 commit f94f8f1
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 19 deletions.
Expand Up @@ -5,18 +5,7 @@ import permissions.dispatcher.NeedsPermission
import permissions.dispatcher.processor.KtProcessorUnit
import permissions.dispatcher.processor.RequestCodeProvider
import permissions.dispatcher.processor.RuntimePermissionsElement
import permissions.dispatcher.processor.util.FILE_COMMENT
import permissions.dispatcher.processor.util.addFunctions
import permissions.dispatcher.processor.util.addProperties
import permissions.dispatcher.processor.util.addTypes
import permissions.dispatcher.processor.util.pendingRequestFieldName
import permissions.dispatcher.processor.util.permissionFieldName
import permissions.dispatcher.processor.util.permissionRequestTypeName
import permissions.dispatcher.processor.util.permissionValue
import permissions.dispatcher.processor.util.requestCodeFieldName
import permissions.dispatcher.processor.util.simpleString
import permissions.dispatcher.processor.util.varargsKtParametersCodeBlock
import permissions.dispatcher.processor.util.WithPermissionCheckMethodName
import permissions.dispatcher.processor.util.*
import java.util.*
import javax.lang.model.element.ExecutableElement

Expand Down Expand Up @@ -110,7 +99,7 @@ abstract class KotlinBaseProcessorUnit : KtProcessorUnit {

// If the method has parameters, add those as well
method.parameters.forEach {
builder.addParameter(it.simpleString(), it.asType().asTypeName())
builder.addParameter(it.simpleString(), it.asType().asTypeName().checkStringType())
}

// Delegate method body generation to implementing classes
Expand Down Expand Up @@ -367,7 +356,7 @@ abstract class KotlinBaseProcessorUnit : KtProcessorUnit {

needsMethod.parameters.forEach {
builder.addProperty(
PropertySpec.builder(it.simpleString(), it.asType().asTypeName(), KModifier.PRIVATE)
PropertySpec.builder(it.simpleString(), it.asType().asTypeName().checkStringType(), KModifier.PRIVATE)
.initializer(CodeBlock.of(it.simpleString()))
.build()
)
Expand All @@ -377,7 +366,7 @@ abstract class KotlinBaseProcessorUnit : KtProcessorUnit {
val targetParam = "target"
val constructorSpec = FunSpec.constructorBuilder().addParameter(targetParam, rpe.ktTypeName)
needsMethod.parameters.forEach {
constructorSpec.addParameter(it.simpleString(), it.asType().asTypeName(), KModifier.PRIVATE)
constructorSpec.addParameter(it.simpleString(), it.asType().asTypeName().checkStringType(), KModifier.PRIVATE)
}
builder.primaryConstructor(constructorSpec.build())

Expand Down
@@ -1,9 +1,6 @@
package permissions.dispatcher.processor.util

import com.squareup.kotlinpoet.FunSpec
import com.squareup.kotlinpoet.KotlinFile
import com.squareup.kotlinpoet.PropertySpec
import com.squareup.kotlinpoet.TypeSpec
import com.squareup.kotlinpoet.*
import permissions.dispatcher.NeedsPermission
import permissions.dispatcher.OnNeverAskAgain
import permissions.dispatcher.OnPermissionDenied
Expand Down Expand Up @@ -97,3 +94,10 @@ fun KotlinFile.Builder.addTypes(types: List<TypeSpec>): KotlinFile.Builder {
types.forEach { addType(it) }
return this
}

/**
* To avoid KotlinPoet bug that returns java.lang.String when type name is kotlin.String.
* This method should be removed after addressing on KotlinPoet side.
*/
fun TypeName.checkStringType() =
if (this.toString() == "java.lang.String") ClassName("kotlin", "String") else this

0 comments on commit f94f8f1

Please sign in to comment.