From 3f022de86205fefc5d79cc978390b5535ef54879 Mon Sep 17 00:00:00 2001 From: "kirill.labutin" Date: Wed, 14 Jan 2026 18:11:42 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20=D0=BB?= =?UTF-8?q?=D0=B8=D1=88=D0=BD=D0=B5=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JavascriptClientGenerator.java | 198 ------------------ .../XCP/Serialization/SerializationUtils.java | 17 -- 2 files changed, 215 deletions(-) delete mode 100644 api-generator/src/main/java/ru/kirillius/XCP/ApiGenerator/JavascriptClientGenerator.java delete mode 100644 database/src/main/java/ru/kirillius/XCP/Serialization/SerializationUtils.java diff --git a/api-generator/src/main/java/ru/kirillius/XCP/ApiGenerator/JavascriptClientGenerator.java b/api-generator/src/main/java/ru/kirillius/XCP/ApiGenerator/JavascriptClientGenerator.java deleted file mode 100644 index f06292a..0000000 --- a/api-generator/src/main/java/ru/kirillius/XCP/ApiGenerator/JavascriptClientGenerator.java +++ /dev/null @@ -1,198 +0,0 @@ -package ru.kirillius.XCP.ApiGenerator; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.lang.annotation.Annotation; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; - -public class JavascriptClientGenerator { - - private static final String SERVICES_PACKAGE = "ru.kirillius.XCP.RPC.Services"; - private static final String OUTPUT_DIR = "target/generated-sources/api.js"; - - public static void main(String[] args) { - try { - generateJavascriptClient(); - System.out.println("JavaScript API client generated successfully at: " + OUTPUT_DIR); - } catch (Exception e) { - System.err.println("Failed to generate JavaScript client: " + e.getMessage()); - e.printStackTrace(); - } - } - - public static void generateJavascriptClient() throws IOException, ClassNotFoundException { - StringBuilder jsBuilder = new StringBuilder(); - jsBuilder.append("API = {\n"); - - List> serviceClasses = findServiceClasses(); - boolean first = true; - - for (Class serviceClass : serviceClasses) { - if (!first) { - jsBuilder.append(",\n"); - } - first = false; - - String className = serviceClass.getSimpleName(); - jsBuilder.append(" ").append(className).append(" : {\n"); - - Method[] methods = serviceClass.getDeclaredMethods(); - List rpcMethods = new ArrayList<>(); - - for (Method method : methods) { - Annotation[] annotations = method.getAnnotations(); - for (Annotation annotation : annotations) { - if (annotation.annotationType().getSimpleName().equals("JsonRpcMethod")) { - rpcMethods.add(method); - break; - } - } - } - - for (int i = 0; i < rpcMethods.size(); i++) { - Method method = rpcMethods.get(i); - Annotation jsonRpcMethod = null; - - for (Annotation annotation : method.getAnnotations()) { - if (annotation.annotationType().getSimpleName().equals("JsonRpcMethod")) { - jsonRpcMethod = annotation; - break; - } - } - - generateMethod(jsBuilder, method, jsonRpcMethod, className); - - if (i < rpcMethods.size() - 1) { - jsBuilder.append(",\n"); - } else { - jsBuilder.append("\n"); - } - } - - jsBuilder.append(" }"); - } - - jsBuilder.append("\n}\n"); - - File outputFile = new File(OUTPUT_DIR); - outputFile.getParentFile().mkdirs(); - - try (FileWriter writer = new FileWriter(outputFile)) { - writer.write(jsBuilder.toString()); - } - } - - private static List> findServiceClasses() throws ClassNotFoundException { - List> serviceClasses = new ArrayList<>(); - - serviceClasses.add(Class.forName(SERVICES_PACKAGE + ".Auth")); - serviceClasses.add(Class.forName(SERVICES_PACKAGE + ".Profile")); - serviceClasses.add(Class.forName(SERVICES_PACKAGE + ".UserManagement")); - - return serviceClasses; - } - - private static void generateMethod(StringBuilder builder, Method method, Annotation jsonRpcMethod, String className) { - String methodName = method.getName(); - - builder.append(" /**\n"); - - try { - Object description = jsonRpcMethod.annotationType().getMethod("description").invoke(jsonRpcMethod); - builder.append(" * ").append(description).append("\n"); - - Object parameters = jsonRpcMethod.annotationType().getMethod("parameters").invoke(jsonRpcMethod); - if (parameters instanceof Object[]) { - Object[] params = (Object[]) parameters; - for (Object param : params) { - Class paramClass = param.getClass(); - Object name = paramClass.getMethod("name").invoke(param); - Object optional = paramClass.getMethod("optional").invoke(param); - - builder.append(" * @param ").append(name); - if (!(Boolean) optional) { - builder.append(" (required)"); - } else { - builder.append(" (optional)"); - } - builder.append("\n"); - } - } - - Object returnType = jsonRpcMethod.annotationType().getMethod("returnType").invoke(jsonRpcMethod); - String returnTypeName = getSimpleTypeName((Class) returnType); - builder.append(" * @returns ").append(returnTypeName).append("\n"); - } catch (Exception e) { - builder.append(" * Method: ").append(methodName).append("\n"); - builder.append(" * @returns unknown\n"); - } - - builder.append(" */\n"); - - builder.append(" ").append(methodName).append(" : async function("); - - List paramNames = new ArrayList<>(); - try { - Object parameters = jsonRpcMethod.annotationType().getMethod("parameters").invoke(jsonRpcMethod); - if (parameters instanceof Object[]) { - Object[] params = (Object[]) parameters; - for (Object param : params) { - Object name = param.getClass().getMethod("name").invoke(param); - Object optional = param.getClass().getMethod("optional").invoke(param); - if (!(Boolean) optional) { - paramNames.add(name.toString()); - } - } - } - } catch (Exception e) { - // No parameters available - } - - builder.append(String.join(", ", paramNames)); - builder.append(") {\n"); - builder.append(" return await JSONRPC.invoke(\"").append(className).append(".").append(methodName).append("\", {"); - - List paramPairs = new ArrayList<>(); - try { - Object parameters = jsonRpcMethod.annotationType().getMethod("parameters").invoke(jsonRpcMethod); - if (parameters instanceof Object[]) { - Object[] params = (Object[]) parameters; - for (Object param : params) { - Object name = param.getClass().getMethod("name").invoke(param); - Object optional = param.getClass().getMethod("optional").invoke(param); - if (!(Boolean) optional) { - paramPairs.add(name.toString() + ":" + name.toString()); - } - } - } - } catch (Exception e) { - // No parameters available - } - - builder.append(String.join(", ", paramPairs)); - builder.append("});\n"); - builder.append(" }"); - } - - private static String getSimpleTypeName(Class type) { - if (type == null) return "unknown"; - if (type == boolean.class) return "boolean"; - if (type == int.class || type == long.class) return "number"; - if (type == String.class) return "string"; - if (type == void.class || type == Void.class) return "void"; - - String typeName = type.getSimpleName(); - if (type.isArray()) { - return "Array"; - } - - if (typeName.contains("Node") || typeName.contains("Object")) { - return "Object"; - } - - return typeName; - } -} \ No newline at end of file diff --git a/database/src/main/java/ru/kirillius/XCP/Serialization/SerializationUtils.java b/database/src/main/java/ru/kirillius/XCP/Serialization/SerializationUtils.java deleted file mode 100644 index d3c67e3..0000000 --- a/database/src/main/java/ru/kirillius/XCP/Serialization/SerializationUtils.java +++ /dev/null @@ -1,17 +0,0 @@ -package ru.kirillius.XCP.Serialization; - -import tools.jackson.databind.ObjectMapper; -import tools.jackson.databind.node.ArrayNode; -import tools.jackson.databind.node.ObjectNode; - -public final class SerializationUtils { - public final static ObjectMapper mapper = new ObjectMapper(); - - public static ObjectNode EmptyObject() { - return mapper.createObjectNode(); - } - - public static ArrayNode EmptyArray() { - return mapper.createArrayNode(); - } -}