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

View File

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

View File

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