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:
root 2021-08-04 10:00:05 +08:00
parent 14d5a35d25
commit 8762dfa08a
3 changed files with 37 additions and 22 deletions

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -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();
}
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());
}
}