Поправил генерацию spec для связывания дочерних сущностей
This commit is contained in:
parent
b5d021d03c
commit
46e48f0984
|
|
@ -46,3 +46,7 @@ api-sandbox/app/api.spec.json
|
||||||
/xcpdata.trace.db
|
/xcpdata.trace.db
|
||||||
web-ui/vue-app/TODO.md
|
web-ui/vue-app/TODO.md
|
||||||
web-ui/vue-app/src/generated/*
|
web-ui/vue-app/src/generated/*
|
||||||
|
/api-sandbox/src/main/resources/htdocs/api-sandbox/
|
||||||
|
api-sandbox/app/dist/api.spec.json
|
||||||
|
api-sandbox/app/node/
|
||||||
|
api.spec.json
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import $ from 'jquery'
|
||||||
|
|
||||||
let apiSpec = null
|
let apiSpec = null
|
||||||
let currentUser = null
|
let currentUser = null
|
||||||
|
const apiEndpoint = "/api";
|
||||||
|
|
||||||
async function loadUserProfile() {
|
async function loadUserProfile() {
|
||||||
try {
|
try {
|
||||||
|
|
@ -12,7 +13,7 @@ async function loadUserProfile() {
|
||||||
id: Date.now()
|
id: Date.now()
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await fetch('http://localhost:8080/api', {
|
const response = await fetch(apiEndpoint, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json'
|
||||||
|
|
@ -215,7 +216,7 @@ async function sendRequest() {
|
||||||
$('#request').text('')
|
$('#request').text('')
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch('http://localhost:8080/api', {
|
const response = await fetch(apiEndpoint, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json'
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import copy from 'rollup-plugin-copy'
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
root: '.',
|
root: '.',
|
||||||
build: {
|
build: {
|
||||||
outDir: 'dist',
|
outDir: '../src/main/resources/htdocs/api-sandbox',
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
plugins: [
|
plugins: [
|
||||||
copy({
|
copy({
|
||||||
|
|
|
||||||
|
|
@ -17,4 +17,48 @@
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>com.github.eirslett</groupId>
|
||||||
|
<artifactId>frontend-maven-plugin</artifactId>
|
||||||
|
<version>1.15.0</version>
|
||||||
|
<configuration>
|
||||||
|
<workingDirectory>app</workingDirectory>
|
||||||
|
<installDirectory>app</installDirectory>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>install node and npm</id>
|
||||||
|
<goals>
|
||||||
|
<goal>install-node-and-npm</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<nodeVersion>v22.12.0</nodeVersion>
|
||||||
|
<npmVersion>10.8.2</npmVersion>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>npm install</id>
|
||||||
|
<goals>
|
||||||
|
<goal>npm</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<arguments>install</arguments>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>npm build</id>
|
||||||
|
<goals>
|
||||||
|
<goal>npm</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<arguments>run build</arguments>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
@ -122,9 +122,28 @@ public class SpecGenerator {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (var aClass : classAnnotation.directInheritors()) {
|
||||||
|
if (!types.contains(aClass)) {
|
||||||
|
types.add(aClass);
|
||||||
|
typesQueue.add(aClass);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var typeDescriptor = typesArray.addObject();
|
var typeDescriptor = typesArray.addObject();
|
||||||
typeDescriptor.put("name", classAnnotation.alias().isEmpty() ? type.getSimpleName() : classAnnotation.alias());
|
typeDescriptor.put("name", classAnnotation.alias().isEmpty() ? type.getSimpleName() : classAnnotation.alias());
|
||||||
typeDescriptor.put("type", "class");
|
typeDescriptor.put("type", "class");
|
||||||
|
var parents = typeDescriptor.putArray("parents");
|
||||||
|
for (var aClass : type.getInterfaces()) {
|
||||||
|
if (!types.contains(aClass)) {
|
||||||
|
types.add(aClass);
|
||||||
|
typesQueue.add(aClass);
|
||||||
|
}
|
||||||
|
if (!aClass.isAnnotationPresent(GenerateApiSpec.class)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
parents.add(aClass.getSimpleName());
|
||||||
|
}
|
||||||
|
|
||||||
var fields = typeDescriptor.putArray("fields");
|
var fields = typeDescriptor.putArray("fields");
|
||||||
for (var method : type.getMethods()) {
|
for (var method : type.getMethods()) {
|
||||||
var methodAnnotation = method.getAnnotation(GenerateApiSpec.class);
|
var methodAnnotation = method.getAnnotation(GenerateApiSpec.class);
|
||||||
|
|
|
||||||
|
|
@ -11,4 +11,6 @@ public @interface GenerateApiSpec {
|
||||||
String alias() default "";
|
String alias() default "";
|
||||||
|
|
||||||
Class<?> type() default void.class;
|
Class<?> type() default void.class;
|
||||||
|
|
||||||
|
Class<?>[] directInheritors() default {};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue