Former-commit-id: af95d282bb768c9e090988921a0b20ad91619791
master
王兵 4 years ago
parent e748ca9390
commit c3f2c07f22

@ -93,8 +93,6 @@ public class RequestReader {
Matcher matcher = p4.matcher(line.trim());
if (matcher.find()) {
deptReqList.add(matcher.group(1));
} else if (matcher.find()) {
deptEntList.add(matcher.group(2));
}
if (line.contains("@ColumnName") ||
@ -206,7 +204,7 @@ public class RequestReader {
}
public static void main(String[] args) throws IOException {
RequestReader requestReader = new RequestReader(new File("D:\\wangbing\\Project\\dbtool\\target\\project\\example-web\\src\\main\\java\\com\\example\\module\\system\\rsp\\DictFindResponse.java"));
RequestReader requestReader = new RequestReader(new File("E:\\wangbing\\source\\dbtool\\target\\project\\wadmin\\src\\main\\java\\xyz\\wbsite\\module\\system\\req\\DictFindRequest.java"));
System.out.println();
}

@ -1,8 +1,22 @@
package xyz.wbsite.dbtool.web.frame.utils;
import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.SimpleJavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Arrays;
import java.util.Collection;
import java.util.Stack;
/**
* ClassUtil
@ -47,7 +61,7 @@ public class ClassUtil {
* @param pojoClass POJO
* @return
*/
public static Method getMethod(String name, Class<?> pojoClass) throws RuntimeException {
public static Method getMethod(String name, Class<?> pojoClass) {
String getMethodName = "get" + StringUtil.upperFirstWord(name);
try {
return pojoClass.getMethod(getMethodName);
@ -73,7 +87,7 @@ public class ClassUtil {
try {
return pojoClass.getMethod(setMethodName, type);
} catch (Exception e) {
return null;
throw new RuntimeException("can not find[" + name + "]method");
}
}
@ -111,4 +125,124 @@ public class ClassUtil {
System.arraycopy(f2, 0, fields, f1.length, f2.length);
return fields;
}
/**
* @param javaFile java
* @param classPath
* @return
* @throws IOException
*/
public static boolean compile(File javaFile, String classPath) throws IOException {
return compile(FileUtil.readFileToString(javaFile), javaFile.getName().replaceAll("\\.java$", ""), classPath);
}
/**
* @param source
* @param className
* @param classPath
* @return
*/
public static boolean compile(String source, String className, String classPath) {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
try {
Iterable<String> options = Arrays.asList("-d", classPath);
SimpleJavaFileObject sourceObject = new StringSourceJavaObject(className, source);
Iterable<? extends JavaFileObject> fileObjects = Arrays.asList(sourceObject);
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, options, null, fileObjects);
return task.call();
} catch (URISyntaxException e) {
e.printStackTrace();
}
return false;
}
private static class StringSourceJavaObject extends SimpleJavaFileObject {
private String content = null;
public StringSourceJavaObject(String name, String content) throws URISyntaxException {
super(URI.create("string:///" + name.replace('.', '/') + Kind.SOURCE.extension), Kind.SOURCE);
this.content = content;
}
public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
return content;
}
}
/**
* clazzPath
* <p>
* clazzPath = /classes class/classes/text/test.class
*
* @param classPath
* @throws Exception
*/
public static void loadClass(File classPath) throws Exception {
// 记录加载.class文件的数量
int clazzCount = 0;
//only handle the folder
if (classPath.isFile()) {
classPath = classPath.getParentFile();
}
if (classPath.exists() && classPath.isDirectory()) {
// 获取路径长度
int classPathLen = classPath.getAbsolutePath().length() + 1;
Stack<File> stack = new Stack<>();
stack.push(classPath);
// 遍历类路径
while (stack.isEmpty() == false) {
File path = stack.pop();
File[] classFiles = path.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.isDirectory() || pathname.getName().endsWith(".class");
}
});
for (File subFile : classFiles) {
if (subFile.isDirectory()) {
stack.push(subFile);
} else {
if (clazzCount++ == 0) {
Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
boolean accessible = method.isAccessible();
try {
if (accessible == false) {
method.setAccessible(true);
}
// 设置类加载器
URLClassLoader classLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
// 将当前类路径加入到类加载器中
method.invoke(classLoader, classPath.toURI().toURL());
} finally {
method.setAccessible(accessible);
}
}
// 文件名称
String className = subFile.getAbsolutePath();
className = className.substring(classPathLen, className.length() - 6);
className = className.replace(File.separatorChar, '.');
// 加载Class类
Class.forName(className);
System.out.println(String.format("读取应用程序类文件[class=%s]", className));
}
}
}
}
}
/**
*
* {@link #loadClass(File)}
*
* @param className (package,)
* @return
* @throws Exception
*/
public static Class<?> getClass(String className) throws Exception {
ClassLoader loader = ClassUtil.class.getClassLoader();
return loader.loadClass(className);
}
}

@ -7,7 +7,7 @@ package ${domain}.frame.base;
* @version 0.0.1
* @since 2017-01-01
*/
public class BaseUpdateRequest<T> extends BaseRequest{
public class BaseUpdateRequest<T extends BaseResponse> extends BaseRequest<T> {
/**
*

@ -10,6 +10,8 @@ import ${domain}.module.${module}.ent.${entName};
import ${domain}.frame.base.BaseRequest;
<#elseif fatherName == 'BaseFindRequest'>
import ${domain}.frame.base.BaseFindRequest;
<#elseif fatherName == 'BaseUpdateRequest'>
import ${domain}.frame.base.BaseUpdateRequest;
<#elseif fatherName == 'BaseSearchRequest'>
import ${domain}.frame.base.BaseSearchRequest;
</#if>

@ -1,8 +1,22 @@
package ${basePackage}.frame.utils;
import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.SimpleJavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.*;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Arrays;
import java.util.Collection;
import java.util.Stack;
/**
* ClassUtil
@ -111,4 +125,124 @@ public class ClassUtil {
System.arraycopy(f2, 0, fields, f1.length, f2.length);
return fields;
}
/**
* @param javaFile java
* @param classPath
* @return
* @throws IOException
*/
public static boolean compile(File javaFile, String classPath) throws IOException {
return compile(FileUtil.readFileToString(javaFile), javaFile.getName().replaceAll("\\.java$", ""), classPath);
}
/**
* @param source
* @param className
* @param classPath
* @return
*/
public static boolean compile(String source, String className, String classPath) {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
try {
Iterable<String> options = Arrays.asList("-d", classPath);
SimpleJavaFileObject sourceObject = new StringSourceJavaObject(className, source);
Iterable<? extends JavaFileObject> fileObjects = Arrays.asList(sourceObject);
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, options, null, fileObjects);
return task.call();
} catch (URISyntaxException e) {
e.printStackTrace();
}
return false;
}
private static class StringSourceJavaObject extends SimpleJavaFileObject {
private String content = null;
public StringSourceJavaObject(String name, String content) throws URISyntaxException {
super(URI.create("string:///" + name.replace('.', '/') + Kind.SOURCE.extension), Kind.SOURCE);
this.content = content;
}
public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
return content;
}
}
/**
* clazzPath
* <p>
* clazzPath = /classes class/classes/text/test.class
*
* @param classPath
* @throws Exception
*/
public static void loadClass(File classPath) throws Exception {
// 记录加载.class文件的数量
int clazzCount = 0;
//only handle the folder
if (classPath.isFile()) {
classPath = classPath.getParentFile();
}
if (classPath.exists() && classPath.isDirectory()) {
// 获取路径长度
int classPathLen = classPath.getAbsolutePath().length() + 1;
Stack<File> stack = new Stack<>();
stack.push(classPath);
// 遍历类路径
while (stack.isEmpty() == false) {
File path = stack.pop();
File[] classFiles = path.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.isDirectory() || pathname.getName().endsWith(".class");
}
});
for (File subFile : classFiles) {
if (subFile.isDirectory()) {
stack.push(subFile);
} else {
if (clazzCount++ == 0) {
Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
boolean accessible = method.isAccessible();
try {
if (accessible == false) {
method.setAccessible(true);
}
// 设置类加载器
URLClassLoader classLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
// 将当前类路径加入到类加载器中
method.invoke(classLoader, classPath.toURI().toURL());
} finally {
method.setAccessible(accessible);
}
}
// 文件名称
String className = subFile.getAbsolutePath();
className = className.substring(classPathLen, className.length() - 6);
className = className.replace(File.separatorChar, '.');
// 加载Class类
Class.forName(className);
System.out.println(String.format("读取应用程序类文件[class=%s]", className));
}
}
}
}
}
/**
*
* {@link #loadClass(File)}
*
* @param className (package,)
* @return
* @throws Exception
*/
public static Class<?> getClass(String className) throws Exception {
ClassLoader loader = xyz.wbsite.frame.utils.ClassUtil.class.getClassLoader();
return loader.loadClass(className);
}
}

@ -1,6 +1,6 @@
package ${basePackage}.module.${moduleName}.req;
import ${basePackage}.frame.base.BaseUpdateRequest;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
/**
@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1
* @since ${date?string("yyyy-MM-dd")}
*/
public class ${table.getCName()}DeleteRequest extends BaseUpdateRequest {
public class ${table.getCName()}DeleteRequest extends BaseRequest {
<#if table.sys>
/**

@ -1,6 +1,7 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
/**
@ -10,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1
* @since 2017-01-01
*/
public class DeptDeleteRequest extends BaseUpdateRequest {
public class DeptDeleteRequest extends BaseRequest {
/**
*

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1
* @since 2017-01-01
*/
public class DictDeleteRequest extends BaseUpdateRequest {
public class DictDeleteRequest extends BaseRequest {
/**
*

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1
* @since 2017-01-01
*/
public class DictItemDeleteRequest extends BaseUpdateRequest {
public class DictItemDeleteRequest extends BaseRequest {
/**
*

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
/**
@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1
* @since 2017-01-01
*/
public class FileDeleteRequest extends BaseUpdateRequest {
public class FileDeleteRequest extends BaseRequest {
/**
*

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1
* @since 2017-01-01
*/
public class LogErrDeleteRequest extends BaseUpdateRequest {
public class LogErrDeleteRequest extends BaseRequest {
/**
*

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1
* @since 2020-05-24
*/
public class ProfilesDeleteRequest extends BaseUpdateRequest {
public class ProfilesDeleteRequest extends BaseRequest {
/**
*

@ -1,6 +1,7 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
/**
@ -10,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1
* @since 2017-01-01
*/
public class ResDeleteRequest extends BaseUpdateRequest {
public class ResDeleteRequest extends BaseRequest {
/**
*

@ -1,6 +1,7 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
/**
@ -10,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1
* @since 2017-01-01
*/
public class RoleDeleteRequest extends BaseUpdateRequest {
public class RoleDeleteRequest extends BaseRequest {
/**
*

@ -1,6 +1,7 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
/**
@ -10,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1
* @since 2017-01-01
*/
public class RoleResDeleteRequest extends BaseUpdateRequest {
public class RoleResDeleteRequest extends BaseRequest {
/**
*

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1
* @since 2020-05-24
*/
public class TaskSqlDeleteRequest extends BaseUpdateRequest {
public class TaskSqlDeleteRequest extends BaseRequest {
/**
*

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotBlank;
@ -11,7 +11,7 @@ import javax.validation.constraints.NotBlank;
* @version 0.0.1
* @since 2017-01-01
*/
public class TokensDeleteRequest extends BaseUpdateRequest {
public class TokensDeleteRequest extends BaseRequest {
/**
*

@ -1,6 +1,7 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
/**
@ -10,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1
* @since 2017-01-01
*/
public class UserDeleteRequest extends BaseUpdateRequest {
public class UserDeleteRequest extends BaseRequest {
/**
*

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1
* @since 2017-01-01
*/
public class UserRoleDeleteRequest extends BaseUpdateRequest {
public class UserRoleDeleteRequest extends BaseRequest {
/**
*

Loading…
Cancel
Save

Powered by TurnKey Linux.