Skip to content

Commit 6bc4c72

Browse files
committed
kick static codegen out of spi package
1 parent d216a81 commit 6bc4c72

File tree

8 files changed

+40
-26
lines changed

8 files changed

+40
-26
lines changed

demo/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@
137137
<arguments>
138138
<argument>-classpath</argument>
139139
<classpath/>
140-
<argument>com.jsoniter.StaticCodeGenerator</argument>
140+
<argument>com.jsoniter.static_codegen.StaticCodegen</argument>
141141
<argument>com.jsoniter.demo.DemoCodegenConfig</argument>
142142
</arguments>
143143
</configuration>

src/main/java/com/jsoniter/Codegen.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class Codegen {
1414

1515
// only read/write when generating code with synchronized protection
1616
private final static Set<String> generatedClassNames = new HashSet<String>();
17-
static StaticCodegenTarget isDoingStaticCodegen = null;
17+
static CodegenAccess.StaticCodegenTarget isDoingStaticCodegen = null;
1818
static DecodingMode mode = DecodingMode.REFLECTION_MODE;
1919
static {
2020
String envMode = System.getenv("JSONITER_DECODING_MODE");
@@ -270,7 +270,7 @@ private static boolean shouldUseStrictMode(ClassDescriptor desc) {
270270
return false;
271271
}
272272

273-
public static void staticGenDecoders(TypeLiteral[] typeLiterals, StaticCodegenTarget staticCodegenTarget) {
273+
public static void staticGenDecoders(TypeLiteral[] typeLiterals, CodegenAccess.StaticCodegenTarget staticCodegenTarget) {
274274
isDoingStaticCodegen = staticCodegenTarget;
275275
for (TypeLiteral typeLiteral : typeLiterals) {
276276
gen(typeLiteral.getDecoderCacheKey(), typeLiteral.getType());

src/main/java/com/jsoniter/CodegenAccess.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,4 +186,12 @@ public static int calcHash(String str) {
186186
public static void skipFixedBytes(JsonIterator iter, int n) throws IOException {
187187
IterImpl.skipFixedBytes(iter, n);
188188
}
189+
190+
public static class StaticCodegenTarget {
191+
public String outputDir;
192+
193+
public StaticCodegenTarget(String outputDir) {
194+
this.outputDir = outputDir;
195+
}
196+
}
189197
}

src/main/java/com/jsoniter/output/Codegen.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
class Codegen {
1616

1717
static EncodingMode mode = EncodingMode.REFLECTION_MODE;
18-
static StaticCodegenTarget isDoingStaticCodegen;
18+
static CodegenAccess.StaticCodegenTarget isDoingStaticCodegen;
1919
// only read/write when generating code with synchronized protection
2020
private final static Map<String, CodegenResult> generatedSources = new HashMap<String, CodegenResult>();
2121
private volatile static Map<String, Encoder> reflectionEncoders = new HashMap<String, Encoder>();
@@ -211,7 +211,7 @@ private static CodegenResult genSource(String cacheKey, Class clazz, Type[] type
211211
return CodegenImplObject.genObject(clazz);
212212
}
213213

214-
public static void staticGenEncoders(TypeLiteral[] typeLiterals, StaticCodegenTarget staticCodegenTarget) {
214+
public static void staticGenEncoders(TypeLiteral[] typeLiterals, CodegenAccess.StaticCodegenTarget staticCodegenTarget) {
215215
isDoingStaticCodegen = staticCodegenTarget;
216216
for (TypeLiteral typeLiteral : typeLiterals) {
217217
gen(typeLiteral.getEncoderCacheKey(), typeLiteral.getType());

src/main/java/com/jsoniter/output/CodegenAccess.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package com.jsoniter.output;
22

3-
import com.jsoniter.*;
43
import com.jsoniter.any.Any;
54
import com.jsoniter.spi.Encoder;
65
import com.jsoniter.spi.JsoniterSpi;
7-
import com.jsoniter.spi.StaticCodegenTarget;
86
import com.jsoniter.spi.TypeLiteral;
97

108
import java.io.IOException;
@@ -70,4 +68,13 @@ public static Any wrap(Object val) {
7068
String cacheKey = TypeLiteral.create(clazz).getEncoderCacheKey();
7169
return Codegen.getReflectionEncoder(cacheKey, clazz).wrap(val);
7270
}
71+
72+
public static class StaticCodegenTarget {
73+
74+
public final String outputDir;
75+
76+
public StaticCodegenTarget(String outputDir) {
77+
this.outputDir = outputDir;
78+
}
79+
}
7380
}

src/main/java/com/jsoniter/spi/StaticCodegenTarget.java

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/main/java/com/jsoniter/StaticCodeGenerator.java renamed to src/main/java/com/jsoniter/static_codegen/StaticCodegen.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,41 @@
1-
package com.jsoniter;
1+
package com.jsoniter.static_codegen;
22

3+
import com.jsoniter.CodegenAccess;
4+
import com.jsoniter.DecodingMode;
5+
import com.jsoniter.JsonIterator;
36
import com.jsoniter.output.EncodingMode;
47
import com.jsoniter.output.JsonStream;
5-
import com.jsoniter.spi.CodegenConfig;
68
import com.jsoniter.spi.JsonException;
7-
import com.jsoniter.spi.StaticCodegenTarget;
89

910
import java.io.File;
10-
import java.nio.file.Path;
1111

12-
public class StaticCodeGenerator {
12+
public class StaticCodegen {
1313
public static void main(String[] args) throws Exception {
1414
if (args.length == 0) {
15-
System.out.println("StaticCodeGenerator configClassName [outputDir]");
15+
System.out.println("StaticCodegen configClassName [outputDir]");
1616
System.out.println("configClassName: like a.b.Config, a class defining what to codegen");
1717
System.out.println("outputDir: if not specified, will write to source directory of configClass");
1818
return;
1919
}
2020
String configClassName = args[0];
2121
String configJavaFile = configClassName.replace('.', '/') + ".java";
22-
StaticCodegenTarget staticCodegenTarget = new StaticCodegenTarget();
22+
String outputDir;
2323
if (args.length > 1) {
24-
staticCodegenTarget.outputDir = args[1];
24+
outputDir = args[1];
2525
} else {
2626
if (!new File(configJavaFile).exists()) {
2727
throw new JsonException("must execute static code generator in the java source code directory which contains: " + configJavaFile);
2828
}
29-
staticCodegenTarget.outputDir = new File(".").getAbsolutePath();
29+
outputDir = new File(".").getAbsolutePath();
3030
}
3131
Class<?> clazz = Class.forName(configClassName);
32-
CodegenConfig config = (CodegenConfig) clazz.newInstance();
32+
StaticCodegenConfig config = (StaticCodegenConfig) clazz.newInstance();
3333
JsonIterator.setMode(DecodingMode.DYNAMIC_MODE_AND_MATCH_FIELD_WITH_HASH);
3434
JsonStream.setMode(EncodingMode.DYNAMIC_MODE);
3535
config.setup();
36-
CodegenAccess.staticGenDecoders(config.whatToCodegen(), staticCodegenTarget);
37-
com.jsoniter.output.CodegenAccess.staticGenEncoders(config.whatToCodegen(), staticCodegenTarget);
36+
CodegenAccess.staticGenDecoders(
37+
config.whatToCodegen(), new CodegenAccess.StaticCodegenTarget(outputDir));
38+
com.jsoniter.output.CodegenAccess.staticGenEncoders(
39+
config.whatToCodegen(), new com.jsoniter.output.CodegenAccess.StaticCodegenTarget(outputDir));
3840
}
3941
}

src/main/java/com/jsoniter/spi/CodegenConfig.java renamed to src/main/java/com/jsoniter/static_codegen/StaticCodegenConfig.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
package com.jsoniter.spi;
1+
package com.jsoniter.static_codegen;
22

3-
public interface CodegenConfig {
3+
import com.jsoniter.spi.TypeLiteral;
4+
5+
public interface StaticCodegenConfig {
46
/**
57
* register decoder/encoder before codegen
68
* register extension before codegen

0 commit comments

Comments
 (0)