mirror of
https://gitee.com/BDWare/MockJava
synced 2025-04-27 14:32:22 +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.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.google.gson.JsonPrimitive;
|
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 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() {
|
public JsonElement get() {
|
||||||
return result;
|
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
|
@Override
|
||||||
public JsonVisitor visitObject(JsonObject jsonObject) {
|
public JsonVisitor visitObject(JsonObject jsonObject) {
|
||||||
JsonObject jo = new JsonObject();
|
JsonObject jo = new JsonObject();
|
||||||
@ -44,9 +60,8 @@ public class MockGenerator extends JsonVisitor {
|
|||||||
@Override
|
@Override
|
||||||
public JsonVisitor visitPrimitive(JsonPrimitive primitive) {
|
public JsonVisitor visitPrimitive(JsonPrimitive primitive) {
|
||||||
if (!primitive.isString()) result = primitive.deepCopy();
|
if (!primitive.isString()) result = primitive.deepCopy();
|
||||||
|
|
||||||
ValueGenerator generator = lookupGenerator(primitive.getAsString());
|
ValueGenerator generator = lookupGenerator(primitive.getAsString());
|
||||||
result = generator.generate(null, primitive);
|
result = generator.generate( primitive);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,18 +69,22 @@ public class MockGenerator extends JsonVisitor {
|
|||||||
if (!str.startsWith("@")) {
|
if (!str.startsWith("@")) {
|
||||||
return new ValueGenerator() {
|
return new ValueGenerator() {
|
||||||
@Override
|
@Override
|
||||||
public JsonElement generate(String preField, JsonElement previous) {
|
public JsonElement generate( JsonElement previous) {
|
||||||
return new JsonPrimitive(str);
|
return new JsonPrimitive(str);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
String[] args = null;
|
|
||||||
int from = str.indexOf("(");
|
int from = str.indexOf("(");
|
||||||
if (from != -1) {
|
String prefix = from>=0?str.substring(0,from):str;
|
||||||
int to = str.indexOf(")");
|
ValueGenerator generator = prefixToGenerator.get(prefix);
|
||||||
String subStr = str.substring(from + 1, to);
|
if (generator==null){
|
||||||
args = subStr.split(",");
|
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;
|
import com.google.gson.JsonElement;
|
||||||
|
|
||||||
public abstract class ValueGenerator {
|
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")
|
@Generator(tag = "@integer")
|
||||||
public class IntegerGenerator extends ValueGenerator {
|
public class IntegerGenerator extends ValueGenerator {
|
||||||
// TODO
|
public IntegerGenerator(){}
|
||||||
public static IntegerGenerator create(String[] args) {
|
static Random secureRandom = new SecureRandom();
|
||||||
return new IntegerGenerator();
|
|
||||||
}
|
|
||||||
|
|
||||||
static Random secureRandom = new SecureRandom();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JsonElement generate(String preField, JsonElement previous) {
|
public JsonElement generate(JsonElement previous) {
|
||||||
|
// TODO parse value here
|
||||||
return new JsonPrimitive(secureRandom.nextInt());
|
return new JsonPrimitive(secureRandom.nextInt());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user