mirror of
https://gitee.com/BDWare/MockJava
synced 2025-04-27 06:22:25 +00:00
Merge branch 'master' of 162.105.175.137:root/BDContract
# Conflicts: # cp/build.gradle # cp/src/main/java/org/bdware/sc/engine/hook/MaskVisitor.java # front-cluster/src/main/java/org/bdware/server/nodecenter/NCHttpHandler.java # mockjava/src/main/java/org/bdware/mockjava/MockUtil.java
This commit is contained in:
parent
14d5a35d25
commit
8762dfa08a
@ -4,16 +4,32 @@ import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonPrimitive;
|
||||
import org.bdware.mockjava.generator.IntegerGenerator;
|
||||
import org.bdware.mockjava.generator.Generator;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class MockGenerator extends JsonVisitor {
|
||||
public static MockGenerator instance = new MockGenerator();
|
||||
JsonElement result;
|
||||
|
||||
public static MockGenerator instance = new MockGenerator();
|
||||
Map<String,ValueGenerator> prefixToGenerator;
|
||||
JsonElement result;
|
||||
public JsonElement get() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public MockGenerator(Class ...clzs){
|
||||
prefixToGenerator = new HashMap<>();
|
||||
for (Class clz:clzs){
|
||||
Generator generator =(Generator) clz.getAnnotation(Generator.class);
|
||||
if (generator!=null){
|
||||
try {
|
||||
prefixToGenerator.put(generator.tag(),(ValueGenerator)clz.getConstructor().newInstance());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public JsonVisitor visitObject(JsonObject jsonObject) {
|
||||
JsonObject jo = new JsonObject();
|
||||
@ -44,9 +60,8 @@ public class MockGenerator extends JsonVisitor {
|
||||
@Override
|
||||
public JsonVisitor visitPrimitive(JsonPrimitive primitive) {
|
||||
if (!primitive.isString()) result = primitive.deepCopy();
|
||||
|
||||
ValueGenerator generator = lookupGenerator(primitive.getAsString());
|
||||
result = generator.generate(null, primitive);
|
||||
result = generator.generate( primitive);
|
||||
return this;
|
||||
}
|
||||
|
||||
@ -54,18 +69,22 @@ public class MockGenerator extends JsonVisitor {
|
||||
if (!str.startsWith("@")) {
|
||||
return new ValueGenerator() {
|
||||
@Override
|
||||
public JsonElement generate(String preField, JsonElement previous) {
|
||||
public JsonElement generate( JsonElement previous) {
|
||||
return new JsonPrimitive(str);
|
||||
}
|
||||
};
|
||||
}
|
||||
String[] args = null;
|
||||
int from = str.indexOf("(");
|
||||
if (from != -1) {
|
||||
int to = str.indexOf(")");
|
||||
String subStr = str.substring(from + 1, to);
|
||||
args = subStr.split(",");
|
||||
String prefix = from>=0?str.substring(0,from):str;
|
||||
ValueGenerator generator = prefixToGenerator.get(prefix);
|
||||
if (generator==null){
|
||||
return new ValueGenerator() {
|
||||
@Override
|
||||
public JsonElement generate(JsonElement previous) {
|
||||
return new JsonPrimitive("unknown type, prefix:"+prefix+" all:"+str);
|
||||
}
|
||||
};
|
||||
}
|
||||
return IntegerGenerator.create(args);
|
||||
return generator;
|
||||
}
|
||||
}
|
||||
|
@ -3,5 +3,5 @@ package org.bdware.mockjava;
|
||||
import com.google.gson.JsonElement;
|
||||
|
||||
public abstract class ValueGenerator {
|
||||
public abstract JsonElement generate(String preField,JsonElement previous);
|
||||
public abstract JsonElement generate(JsonElement previous);
|
||||
}
|
||||
|
@ -9,15 +9,11 @@ import java.util.Random;
|
||||
|
||||
@Generator(tag = "@integer")
|
||||
public class IntegerGenerator extends ValueGenerator {
|
||||
// TODO
|
||||
public static IntegerGenerator create(String[] args) {
|
||||
return new IntegerGenerator();
|
||||
}
|
||||
|
||||
static Random secureRandom = new SecureRandom();
|
||||
|
||||
public IntegerGenerator(){}
|
||||
static Random secureRandom = new SecureRandom();
|
||||
@Override
|
||||
public JsonElement generate(String preField, JsonElement previous) {
|
||||
public JsonElement generate(JsonElement previous) {
|
||||
// TODO parse value here
|
||||
return new JsonPrimitive(secureRandom.nextInt());
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user