Compare commits

...

4 Commits

Author SHA1 Message Date
Frank.R.Wu
97ddefab68 build: config spotless plugin and reformat code 2023-06-15 11:08:07 +08:00
CaiHQ
7447d5a079 add duplicaStrategy 2023-04-20 10:05:54 +08:00
CaiHQ
867cdd2e43 prune: update modules for mvn repository 2022-05-13 23:51:26 +08:00
CaiHQ
0722b05788 remove useless classes
optimize dependency
2022-01-09 00:03:38 +08:00
7 changed files with 119 additions and 95 deletions

View File

@ -1,8 +1,12 @@
plugins { plugins {
id 'java' id 'java'
id 'java-library' id 'java-library'
id 'maven-publish'
id 'signing'
} }
apply from: '../spotless.gradle'
group 'org.bdware.mockjava' group 'org.bdware.mockjava'
version '0.5.0' version '0.5.0'
@ -30,6 +34,7 @@ sourceCompatibility = 1.8
//----------------------- //-----------------------
tasks.processResources.setDuplicatesStrategy(DuplicatesStrategy.INCLUDE) tasks.processResources.setDuplicatesStrategy(DuplicatesStrategy.INCLUDE)
tasks.jar.setDuplicatesStrategy(DuplicatesStrategy.INCLUDE)
repositories { repositories {
mavenCentral() mavenCentral()
@ -39,9 +44,86 @@ repositories {
dependencies { dependencies {
api 'com.google.code.gson:gson:2.8.8' api 'com.google.code.gson:gson:2.8.8'
api 'log4j:log4j:1.2.17' api 'org.apache.logging.log4j:log4j-core:2.17.2'
// api 'net.dona.doip:doip-sdk:2.1.0' api 'org.apache.logging.log4j:log4j-api:2.17.2'
api 'org.apache.logging.log4j:log4j-core:2.17.0'
api 'org.apache.logging.log4j:log4j-api:2.17.0'
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
} }
task classJar(type: Jar, dependsOn: classes) {
classifier = "jar"
}
task sourceJar(type: Jar, dependsOn: classes) {
archiveClassifier = "sources"
classifier = "sources"
from sourceSets.main.allSource
}
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
}
task javadocJar(type: Jar, dependsOn: javadoc) {
archiveClassifier = 'javadoc'
classifier = "javadoc"
exclude {
details -> details.file.getAbsolutePath().contains("/gm/")
}
from javadoc.destinationDir
}
publishing {
publications {
mavenJava(MavenPublication) {
groupId project.group
artifactId "mockjava"
version "${version}"
from components.java
artifact sourceJar
artifact javadocJar
artifact classJar
pom {
name = "bdware-mockjava"
description = "mockjava"
url = "https://gitee.com/BDWare/MockJava"
licenses {
license {
name = "Mulan PSL v2"
url = "http://license.coscl.org.cn/MulanPSL2"
}
}
developers {
developer {
id = "dataware"
email = "caihq@pku.edu.cn"
}
}
scm {
connection = "scm:git:https://gitee.com/BDWare/MockJava.git"
developerConnection = "scm:git:https://gitee.com/BDWare/MockJava.git"
url = "https://gitee.com/BDWare/MockJava"
}
}
}
}
repositories {
maven {
name 'bdwareSnapshotRepository'
url 'https://oss.sonatype.org/content/repositories/snapshots'
credentials {
username = "${NEXUS_USERNAME}"
password = "${NEXUS_PASSWORD}"
}
}
maven {
name 'bdwareRepository'
url 'https://oss.sonatype.org/service/local/staging/deploy/maven2'
credentials {
username = "${NEXUS_USERNAME}"
password = "${NEXUS_PASSWORD}"
}
}
}
}
signing {
sign publishing.publications.mavenJava
}

View File

@ -1,65 +0,0 @@
package org.bdware.mockjava;
import com.google.gson.*;
import jdk.nashorn.api.scripting.ScriptObjectMirror;
import java.util.HashSet;
import java.util.Set;
public class JsonUtil {
private static Set<Object> recorded = null;
public static JsonElement toJson(jdk.nashorn.api.scripting.ScriptObjectMirror res) {
recorded = new HashSet<>();
JsonElement jsonElement = copyInternal(res);
recorded.clear();
return jsonElement;
}
private static JsonElement copyInternal(Object obj) {
if (recorded.contains(obj)) return JsonNull.INSTANCE;
if (obj == null) return JsonNull.INSTANCE;
if (obj.getClass() == jdk.nashorn.internal.runtime.Undefined.class)
return JsonNull.INSTANCE;
if (obj.getClass() == ScriptObjectMirror.class) {
recorded.add(obj);
ScriptObjectMirror som = (ScriptObjectMirror) obj;
if (som.isFunction()) {
return JsonNull.INSTANCE;
}
if (som.isArray()) {
JsonArray jarray = new JsonArray();
for (String str : som.getOwnKeys(true)) {
try {
if (Integer.parseInt(str) >= 0)
jarray.add(copyInternal(som.getMember(str)));
} catch (Exception e) {
// System.out.println("[JSONTool] ignore key:"+str);
}
}
return jarray;
} else {
JsonObject jo = new JsonObject();
for (String str : som.getOwnKeys(true)) {
jo.add(str, copyInternal(som.getMember(str)));
}
return jo;
}
} else if (obj.getClass() == jdk.internal.dynalink.beans.StaticClass.class) {
return JsonNull.INSTANCE;
} else if (obj instanceof Number) {
return new JsonPrimitive((Number) obj);
} else if (obj instanceof String) {
return new JsonPrimitive((String) obj);
} else if (obj instanceof Character) {
return new JsonPrimitive((Character) obj);
}
if (obj instanceof Boolean) {
return new JsonPrimitive((Boolean) obj);
}
return JsonNull.INSTANCE;
}
}

View File

@ -14,22 +14,26 @@ public class MockGenerator extends JsonVisitor {
public static MockGenerator instance = new MockGenerator(); public static MockGenerator instance = new MockGenerator();
Map<String, ValueGenerator> prefixToGenerator; Map<String, ValueGenerator> prefixToGenerator;
JsonElement result; JsonElement result;
public JsonElement get() { public JsonElement get() {
return result; return result;
} }
public MockGenerator(Class... clzs) { public MockGenerator(Class... clzs) {
prefixToGenerator = new HashMap<>(); prefixToGenerator = new HashMap<>();
for (Class clz : clzs) { for (Class clz : clzs) {
Generator generator = (Generator) clz.getAnnotation(Generator.class); Generator generator = (Generator) clz.getAnnotation(Generator.class);
if (generator != null) { if (generator != null) {
try { try {
prefixToGenerator.put(generator.tag(),(ValueGenerator)clz.getConstructor().newInstance()); prefixToGenerator.put(generator.tag(),
(ValueGenerator) clz.getConstructor().newInstance());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
} }
} }
@Override @Override
public JsonVisitor visitObject(JsonObject jsonObject) { public JsonVisitor visitObject(JsonObject jsonObject) {
JsonObject jo = new JsonObject(); JsonObject jo = new JsonObject();
@ -59,7 +63,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(primitive); result = generator.generate(primitive);
return this; return this;

View File

@ -18,8 +18,7 @@ public class MockUtil {
static { static {
MOCK_JS_ENGINE = new ScriptEngineManager().getEngineByName("JavaScript"); MOCK_JS_ENGINE = new ScriptEngineManager().getEngineByName("JavaScript");
// System.out.println(MOCK_JS_ENGINE); // System.out.println(MOCK_JS_ENGINE);
try (InputStream mockJs = try (InputStream mockJs = MockUtil.class.getClassLoader().getResourceAsStream(MOCK_JS_PATH);
MockUtil.class.getClassLoader().getResourceAsStream(MOCK_JS_PATH);
InputStreamReader reader = new InputStreamReader(mockJs)) { InputStreamReader reader = new InputStreamReader(mockJs)) {
MOCK_JS_ENGINE.eval(reader); MOCK_JS_ENGINE.eval(reader);
} catch (ScriptException | IOException e) { } catch (ScriptException | IOException e) {
@ -58,7 +57,8 @@ public class MockUtil {
} }
public static JsonElement parseJsonSchema(JsonElement ele) { public static JsonElement parseJsonSchema(JsonElement ele) {
if (ele == null) return null; if (ele == null)
return null;
if (ele.isJsonPrimitive()) { if (ele.isJsonPrimitive()) {
JsonPrimitive primitive = ele.getAsJsonPrimitive(); JsonPrimitive primitive = ele.getAsJsonPrimitive();
if (primitive.isBoolean()) { if (primitive.isBoolean()) {

View File

@ -10,7 +10,9 @@ import java.util.Random;
@Generator(tag = "@integer") @Generator(tag = "@integer")
public class IntegerGenerator extends ValueGenerator { public class IntegerGenerator extends ValueGenerator {
public IntegerGenerator() {} public IntegerGenerator() {}
static Random secureRandom = new SecureRandom(); static Random secureRandom = new SecureRandom();
@Override @Override
public JsonElement generate(JsonElement previous) { public JsonElement generate(JsonElement previous) {
// TODO parse value here // TODO parse value here