Skip to content

Commit 22c9039

Browse files
author
seal
committed
Release 1.5.1
Fix a bug about number only property name
1 parent 77557fc commit 22c9039

File tree

9 files changed

+171
-46
lines changed

9 files changed

+171
-46
lines changed

resources/META-INF/plugin.xml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<idea-plugin>
22
<id>wu.seal.tool.jsontokotlin</id>
33
<name>JsonToKotlinClass</name>
4-
<version>1.5</version>
4+
<version>1.5.1</version>
55
<vendor email="[email protected]" url="https://www.github.com/wuseal">Seal</vendor>
66

77
<description><![CDATA[
@@ -11,9 +11,7 @@
1111
]]></description>
1212

1313
<change-notes><![CDATA[
14-
1.support for LoganSquare and Moshi.<br>
15-
2.support for cutomize annotation.<br>
16-
3.simply usage steps.
14+
1.Fix a bug about only number json property.<br>
1715
]]>
1816
</change-notes>
1917

src/wu/seal/jsontokotlin/JsonToKotlinApplication.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import wu.seal.jsontokotlin.statistics.sendHistoryActionInfo
1010
* Created by Seal.wu on 2017/8/21.
1111
*/
1212

13-
const val PLUGIN_VERSION = "1.5"
13+
const val PLUGIN_VERSION = "1.5.1"
1414

1515
class JsonToKotlinApplication : ApplicationComponent {
1616

@@ -27,6 +27,6 @@ class JsonToKotlinApplication : ApplicationComponent {
2727
override fun disposeComponent() {}
2828

2929
override fun getComponentName(): String {
30-
return "wu.seal.wu.seal.jsontokotlin.JsonToKotlinApplication"
30+
return "wu.seal.jsontokotlin.JsonToKotlinApplication"
3131
}
3232
}

src/wu/seal/jsontokotlin/MakeKotlinClassAction.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,15 @@ class MakeKotlinClassAction : AnAction("MakeKotlinClass") {
7777
Thread {
7878
sendActionInfo(gson.toJson(SuccessCompleteAction()))
7979
}.start()
80+
8081
} catch(e: Exception) {
82+
83+
val yes = Messages.showYesNoDialog("Some thing execute wrong.\nAgree with publishing your JSON text to help us to solve the problem?", "Excuse me", Messages.getQuestionIcon())
84+
if (yes != Messages.YES) {
85+
jsonString = "User keep private about JSON text"
86+
}
8187
getUncaughtExceptionHandler(jsonString) {
82-
Messages.showErrorDialog("I am sorry,JsonToKotlinClass may occur a RuntimeException,\nYou could try again later or recover to the old version,\nOr you could post an issue here:\nhttps://github.com/wuseal/JsonToKotlinClass", "Occur a fatal error")
88+
Messages.showErrorDialog("I am sorry,JsonToKotlinClass may occur a RuntimeException,\nYou could try again later or recover to the old version,\nOr you could post an issue here:\nhttps://github.com/wuseal/JsonToKotlinClass\nWe will fixed it soon!", "Occur a fatal error")
8389
}.uncaughtException(Thread.currentThread(), e)
8490

8591
throw e

src/wu/seal/jsontokotlin/codeelements/KClassName.kt

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package wu.seal.jsontokotlin.codeelements
22

3+
34
/**
45
* Transform to legal Class name
56
* Created by Seal on 2017/9/18.
@@ -10,44 +11,42 @@ interface IKClassName {
1011

1112
}
1213

13-
fun main(args: Array<String>) {
14-
val name1 = """
15-
!@3214 12#$%n^&*(-a)_+-=m12335_e43{}|[]\\;':1",./<>?/*-+`
16-
"""
17-
println("orginal name is |$name1|")
18-
println("Name1 is : |${wu.seal.jsontokotlin.codeelements.KClassName.getName(name1)}|")
19-
}
20-
21-
object KClassName : KName(), wu.seal.jsontokotlin.codeelements.IKClassName {
14+
object KClassName : KName(), IKClassName {
2215

2316
override fun getLegalClassName(rawClassName: String): String {
2417

25-
return wu.seal.jsontokotlin.codeelements.KClassName.getUpperCamelCaseLegalName(rawClassName)
18+
val upperCamelCaseLegalName = getUpperCamelCaseLegalName(rawClassName)
19+
if (upperCamelCaseLegalName.isNotEmpty()) {
20+
21+
return upperCamelCaseLegalName
22+
} else {
23+
return getUpperCamelCaseLegalName("X-"+rawClassName)
24+
}
2625
}
2726

2827
private fun getUpperCamelCaseLegalName(rawClassName: String): String {
2928
/**
3029
* keep " " character
3130
*/
32-
val pattern = "${wu.seal.jsontokotlin.codeelements.KClassName.illegalCharacter}".replace(Regex(wu.seal.jsontokotlin.codeelements.KClassName.nameSeparator.toString()), "")
31+
val pattern = "$illegalCharacter".replace(Regex(nameSeparator.toString()), "")
3332

3433
val temp = rawClassName.replace(Regex(pattern), "").let {
3534

36-
return@let wu.seal.jsontokotlin.codeelements.KClassName.removeStartNumberAndIllegalCharacter(it)
35+
return@let removeStartNumberAndIllegalCharacter(it)
3736

3837
}
3938

40-
val upperCamelCase = wu.seal.jsontokotlin.codeelements.KClassName.toUpperCamelCase(temp)
39+
val upperCamelCase =toUpperCamelCase(temp)
4140

42-
val legalName = wu.seal.jsontokotlin.codeelements.KClassName.toBeLegalName(upperCamelCase)
41+
val legalName = toBeLegalName(upperCamelCase)
4342

4443
return legalName
4544
}
4645

4746

4847
override fun getName(rawName: String): String {
4948

50-
return wu.seal.jsontokotlin.codeelements.KClassName.getLegalClassName(rawName)
49+
return getLegalClassName(rawName)
5150
}
5251

5352

@@ -58,7 +57,7 @@ object KClassName : KName(), wu.seal.jsontokotlin.codeelements.IKClassName {
5857

5958
val stringBuilder = StringBuilder()
6059

61-
temp.split(Regex(wu.seal.jsontokotlin.codeelements.KClassName.nameSeparator.toString())).forEach {
60+
temp.split(Regex(nameSeparator.toString())).forEach {
6261
if (it.isNotBlank()) {
6362
stringBuilder.append(it.substring(0, 1).toUpperCase().plus(it.substring(1)))
6463
}

src/wu/seal/jsontokotlin/codeelements/KName.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ interface IKName {
1212

1313
}
1414

15-
abstract class KName : wu.seal.jsontokotlin.codeelements.IKName {
15+
abstract class KName : IKName {
1616

1717
private val suffix = "X"
1818

src/wu/seal/jsontokotlin/codeelements/KPropertyName.kt

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,12 @@ interface IPropertyNameMaker {
2121

2222
}
2323

24-
fun main(args: Array<String>) {
25-
val name1 = """
26-
!@#$ -_32322 3 32%N^&*(-a)_+-=m123-35 e43{}|[]\\;':1",./<>?/*-+`
27-
"""
28-
29-
println("orginal name is |$name1|")
30-
println("Name1 is : |${wu.seal.jsontokotlin.codeelements.KPropertyName.getName(name1)}|")
31-
32-
}
33-
34-
object KPropertyName : KName(), wu.seal.jsontokotlin.codeelements.IPropertyNameMaker {
24+
object KPropertyName : KName(), IPropertyNameMaker {
3525

3626

3727
override fun getName(rawName: String): String {
3828

39-
return wu.seal.jsontokotlin.codeelements.KPropertyName.makePropertyName(rawName, true)
29+
return makePropertyName(rawName, true)
4030
}
4131

4232
override fun makePropertyName(rawString: String): String {
@@ -48,29 +38,33 @@ object KPropertyName : KName(), wu.seal.jsontokotlin.codeelements.IPropertyNameM
4838

4939
if (needTransformToLegalName) {
5040

51-
return wu.seal.jsontokotlin.codeelements.KPropertyName.makeCamelCaseLegalName(rawString)
41+
val camelCaseLegalName = makeCamelCaseLegalName(rawString)
42+
return if (camelCaseLegalName.isEmpty()) KPropertyName.makeCamelCaseLegalName("x-" + rawString) else camelCaseLegalName
5243

5344
} else {
5445
return rawString
5546
}
5647

5748
}
5849

50+
/**
51+
* this function may return empty string when the raw string is only make of number and illegal character
52+
*/
5953
private fun makeCamelCaseLegalName(rawString: String): String {
6054
/**
6155
* keep nameSeparator character
6256
*/
63-
val pattern = "${wu.seal.jsontokotlin.codeelements.KPropertyName.illegalCharacter}".replace(Regex(wu.seal.jsontokotlin.codeelements.KPropertyName.nameSeparator.toString()), "")
57+
val pattern = "${illegalCharacter}".replace(Regex(nameSeparator.toString()), "")
6458

6559
val temp = rawString.replace(Regex(pattern), "").let {
6660

67-
return@let wu.seal.jsontokotlin.codeelements.KPropertyName.removeStartNumberAndIllegalCharacter(it)
61+
return@let removeStartNumberAndIllegalCharacter(it)
6862

6963
}
7064

71-
val lowerCamelCaseName = wu.seal.jsontokotlin.codeelements.KPropertyName.toLowerCamelCase(temp)
65+
val lowerCamelCaseName = toLowerCamelCase(temp)
7266

73-
val legalName = wu.seal.jsontokotlin.codeelements.KPropertyName.toBeLegalName(lowerCamelCaseName)
67+
val legalName = toBeLegalName(lowerCamelCaseName)
7468

7569
return legalName
7670
}
@@ -83,20 +77,26 @@ object KPropertyName : KName(), wu.seal.jsontokotlin.codeelements.IPropertyNameM
8377

8478
val stringBuilder = StringBuilder()
8579

86-
temp.split(Regex(wu.seal.jsontokotlin.codeelements.KPropertyName.nameSeparator.toString())).forEach {
80+
temp.split(Regex(nameSeparator.toString())).forEach {
8781
if (it.isNotBlank()) {
8882
stringBuilder.append(it.substring(0, 1).toUpperCase().plus(it.substring(1)))
8983
}
9084
}
9185

9286
val camelCaseName = stringBuilder.toString()
9387

94-
val lowerCamelCaseName = camelCaseName.substring(0, 1).toLowerCase().plus(camelCaseName.substring(1))
88+
if (camelCaseName.isNotEmpty()) {
9589

96-
return lowerCamelCaseName
90+
val lowerCamelCaseName = camelCaseName.substring(0, 1).toLowerCase().plus(camelCaseName.substring(1))
91+
92+
return lowerCamelCaseName
93+
} else {
94+
95+
return camelCaseName
96+
}
9797

98-
}
9998

99+
}
100100

101101

102102
}

src/wu/seal/jsontokotlin/statistics/ExceptionHandler.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,12 @@ fun getUncaughtExceptionHandler(jsonString: String, callBack: () -> Unit): Threa
3232
}
3333
printWriter.close()
3434
logBuilder.append(stringWriter.toString())
35+
3536
logBuilder.append("Error Json String:\n")
3637
logBuilder.append(jsonString)
37-
sendExceptionLog(logBuilder.toString())
38+
Thread {
39+
sendExceptionLog(logBuilder.toString())
40+
}.start()
3841

3942
callBack.invoke()
4043
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package wu.seal.jsontokotlin.codeelements
2+
3+
import org.junit.*
4+
import org.junit.Test
5+
6+
import org.junit.Assert.*
7+
8+
/**
9+
* Created by Seal.Wu on 2017/12/18.
10+
*/
11+
class KClassNameTest {
12+
13+
@org.junit.Test
14+
fun getLegalClassName() {
15+
16+
val rawClassName = """
17+
!@3214 12#$%n^&*(-a)_+-=m12335_e43{}|[]\\;':1",./<>?/*-+`
18+
"""
19+
20+
val legalClassName = KClassName.getLegalClassName(rawClassName)
21+
22+
assertTrue(legalClassName.startsWith("N"))
23+
assertTrue(legalClassName == "NAM12335E431")
24+
25+
val rawClassName1 = "341@!$#43214%$#@%34"
26+
val legalClassName1 = KClassName.getLegalClassName(rawClassName1)
27+
assertTrue(legalClassName1.isNotEmpty())
28+
assertTrue(legalClassName1 == "X3414321434")
29+
30+
}
31+
32+
@Test
33+
fun getName() {
34+
val rawClassName = """
35+
!@3214 12#$%n^&*(-a)_+-=m12335_e43{}|[]\\;':1",./<>?/*-+`
36+
"""
37+
38+
val legalClassName = KClassName.getName(rawClassName)
39+
40+
assertTrue(legalClassName.startsWith("N"))
41+
assertTrue(legalClassName == "NAM12335E431")
42+
43+
val rawClassName1 = "341@!$#43214%$#@%34"
44+
val legalClassName1 = KClassName.getName(rawClassName1)
45+
assertTrue(legalClassName1.isNotEmpty())
46+
assertTrue(legalClassName1 == "X3414321434")
47+
48+
}
49+
50+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package wu.seal.jsontokotlin.codeelements
2+
3+
import org.junit.*
4+
import org.junit.Test
5+
6+
import org.junit.Assert.*
7+
8+
/**
9+
* Created by Seal.Wu on 2017/12/18.
10+
*/
11+
class KPropertyNameTest {
12+
@org.junit.Test
13+
fun getName() {
14+
val originNmae = """
15+
!@#$ -_32322 3 32%N^&*(-a)_+-=m123-35 e43{}|[]\\;':1",./<>?/*-+`
16+
"""
17+
val resultName = KPropertyName.getName(originNmae)
18+
19+
assertTrue(resultName.startsWith("n"))
20+
assertTrue(resultName.endsWith("1"))
21+
assertTrue(resultName.contains("A"))
22+
assertTrue(resultName.contains("M"))
23+
assertTrue(resultName.contains("E"))
24+
25+
26+
val rawName = "#$@#4324324$$#@324"
27+
val legalName = KPropertyName.getName(rawName)
28+
assertTrue(legalName.isNotEmpty())
29+
assertTrue(legalName.startsWith("x"))
30+
31+
}
32+
33+
@Test
34+
fun makePropertyName() {
35+
val originNmae = """
36+
!@#$ -_32322 3 32%N^&*(-a)_+-=m123-35 e43{}|[]\\;':1",./<>?/*-+`
37+
"""
38+
val resultName = KPropertyName.makePropertyName(originNmae)
39+
40+
assertTrue(originNmae == resultName)
41+
42+
43+
}
44+
45+
@Test
46+
fun makePropertyName1() {
47+
val originNmae = """
48+
!@#$ -_32322 3 32%N^&*(-a)_+-=m123-35 e43{}|[]\\;':1",./<>?/*-+`
49+
"""
50+
val resultNameNotToBeLegal = KPropertyName.makePropertyName(originNmae, false)
51+
52+
assertTrue(originNmae == resultNameNotToBeLegal)
53+
54+
val resultNameToBeLegal = KPropertyName.makePropertyName(originNmae, true)
55+
56+
assertTrue(originNmae != resultNameToBeLegal)
57+
assertTrue(resultNameToBeLegal.startsWith("n"))
58+
assertTrue(resultNameToBeLegal.endsWith("1"))
59+
assertTrue(resultNameToBeLegal.contains("A"))
60+
assertTrue(resultNameToBeLegal.contains("M"))
61+
assertTrue(resultNameToBeLegal.contains("E"))
62+
63+
val rawName = "#$@#4324324$$#@324"
64+
val legalName = KPropertyName.getName(rawName)
65+
assertTrue(legalName.isNotEmpty())
66+
assertTrue(legalName.startsWith("x"))
67+
}
68+
69+
}

0 commit comments

Comments
 (0)