iterator() {
- return new AncestrorIterator(clazz);
- }
-}
diff --git a/unknow-server-maven/src/main/java/unknow/server/maven/model/util/AncestrorIterator.java b/unknow-server-maven/src/main/java/unknow/server/maven/model/util/AncestrorIterator.java
deleted file mode 100644
index 22af62ff..00000000
--- a/unknow-server-maven/src/main/java/unknow/server/maven/model/util/AncestrorIterator.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- *
- */
-package unknow.server.maven.model.util;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-import java.util.Queue;
-import java.util.Set;
-import java.util.concurrent.LinkedBlockingQueue;
-
-import unknow.server.maven.model.ClassModel;
-
-/**
- * iterate over the ancestror of a class.
- * (iterate over interface first, then super class)
- *
- *
- *
- * class A extends B implements I1, I2
- * interface I1 extends I3
- *
- *
- * iteration over A will give : [A, I1, I3, I2, B]
- *
- * @author unknow
- */
-public class AncestrorIterator implements Iterator {
- private final Queue queue;
- private final Set saw;
-
- /**
- * create new AncestrorIterator
- *
- * @param clazz the root class
- */
- public AncestrorIterator(ClassModel clazz) {
- this.queue = new LinkedBlockingQueue<>();
- this.queue.add(clazz);
- this.saw = new HashSet<>();
- this.saw.add(clazz.toString());
- }
-
- @Override
- public boolean hasNext() {
- return !queue.isEmpty();
- }
-
- @Override
- public ClassModel next() {
- if (queue.isEmpty())
- throw new NoSuchElementException();
- ClassModel poll = queue.poll();
- ClassModel s = poll.superType();
- if (s != null && !"java.lang.Object".equals(s.name()) && saw.add(s.toString()))
- queue.add(s);
-
- for (ClassModel i : poll.interfaces()) {
- if (saw.add(i.toString()))
- queue.add(i);
- }
- return poll;
- }
-}
\ No newline at end of file
diff --git a/unknow-server-maven/src/main/java/unknow/server/maven/model/util/WithAnnotation.java b/unknow-server-maven/src/main/java/unknow/server/maven/model/util/WithAnnotation.java
deleted file mode 100644
index a7c09fbd..00000000
--- a/unknow-server-maven/src/main/java/unknow/server/maven/model/util/WithAnnotation.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- *
- */
-package unknow.server.maven.model.util;
-
-import java.util.Collection;
-import java.util.Optional;
-
-import unknow.server.maven.model.AnnotationModel;
-
-/**
- * @author unknow
- */
-public interface WithAnnotation {
- /**
- * @return the annotations
- */
- Collection annotations();
-
- /**
- * @param cl annotation to get
- * @return the annotation or null if missing
- */
- default Optional annotation(Class> cl) {
- return annotation(cl.getName());
- }
-
- /**
- * @param name fqn of the annotation
- * @return the annotation or null if missing
- */
- default Optional annotation(String name) {
- return annotations().stream().filter(a -> name.equals(a.name())).findFirst();
- }
-}
diff --git a/unknow-server-maven/src/main/java/unknow/server/maven/model/util/WithMod.java b/unknow-server-maven/src/main/java/unknow/server/maven/model/util/WithMod.java
deleted file mode 100644
index 6d0a6c07..00000000
--- a/unknow-server-maven/src/main/java/unknow/server/maven/model/util/WithMod.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- *
- */
-package unknow.server.maven.model.util;
-
-/**
- * @author unknow
- */
-public interface WithMod {
-
- /** @return true is it's transient */
- boolean isTransient();
-
- /** @return true is it's static */
- boolean isStatic();
-
- /** @return true is it's public */
- boolean isPublic();
-
- /** @return true is it's protected */
- boolean isProtected();
-
- /** @return true is it's private */
- boolean isPrivate();
-
- /** @return true is it's abstract */
- boolean isAbstract();
-}
diff --git a/unknow-server-maven/src/main/java/unknow/server/maven/model/util/WithName.java b/unknow-server-maven/src/main/java/unknow/server/maven/model/util/WithName.java
deleted file mode 100644
index 5b9f5abc..00000000
--- a/unknow-server-maven/src/main/java/unknow/server/maven/model/util/WithName.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- *
- */
-package unknow.server.maven.model.util;
-
-/**
- * @author unknow
- */
-public interface WithName {
-
- /**
- * @return object name
- */
- String name();
-}
diff --git a/unknow-server-maven/src/main/java/unknow/server/maven/model/util/WithParent.java b/unknow-server-maven/src/main/java/unknow/server/maven/model/util/WithParent.java
deleted file mode 100644
index 6f2939e5..00000000
--- a/unknow-server-maven/src/main/java/unknow/server/maven/model/util/WithParent.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- *
- */
-package unknow.server.maven.model.util;
-
-/**
- * @author unknow
- * @param the parent type
- */
-public interface WithParent {
-
- /**
- * @return owning model
- */
- T parent();
-}
diff --git a/unknow-server-maven/src/main/java/unknow/server/maven/model/util/WithType.java b/unknow-server-maven/src/main/java/unknow/server/maven/model/util/WithType.java
deleted file mode 100644
index 4e21556e..00000000
--- a/unknow-server-maven/src/main/java/unknow/server/maven/model/util/WithType.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- *
- */
-package unknow.server.maven.model.util;
-
-import unknow.server.maven.model.TypeModel;
-
-/**
- * @author unknow
- */
-public interface WithType {
-
- /**
- * @return object type
- */
- TypeModel type();
-}
diff --git a/unknow-server-maven/src/main/java/unknow/server/maven/servlet/Builder.java b/unknow-server-maven/src/main/java/unknow/server/maven/servlet/Builder.java
index 21b89ca1..3c383b32 100644
--- a/unknow-server-maven/src/main/java/unknow/server/maven/servlet/Builder.java
+++ b/unknow-server-maven/src/main/java/unknow/server/maven/servlet/Builder.java
@@ -5,8 +5,8 @@
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
+import unknow.model.api.ModelLoader;
import unknow.server.maven.TypeCache;
-import unknow.server.maven.model.ModelLoader;
import unknow.server.maven.servlet.descriptor.Descriptor;
/**
diff --git a/unknow-server-maven/src/main/java/unknow/server/maven/servlet/ServletGenMojo.java b/unknow-server-maven/src/main/java/unknow/server/maven/servlet/ServletGenMojo.java
index 8f5261bb..eba5bc9b 100644
--- a/unknow-server-maven/src/main/java/unknow/server/maven/servlet/ServletGenMojo.java
+++ b/unknow-server-maven/src/main/java/unknow/server/maven/servlet/ServletGenMojo.java
@@ -32,9 +32,9 @@
import jakarta.servlet.DispatcherType;
import jakarta.servlet.ServletContainerInitializer;
+import unknow.model.api.ModelLoader;
import unknow.server.maven.AbstractGeneratorMojo;
import unknow.server.maven.TypeCache;
-import unknow.server.maven.model.ModelLoader;
import unknow.server.maven.servlet.Builder.BuilderContext;
import unknow.server.maven.servlet.builder.CreateContext;
import unknow.server.maven.servlet.builder.CreateEventManager;
diff --git a/unknow-server-maven/src/main/java/unknow/server/maven/servlet/WebXml.java b/unknow-server-maven/src/main/java/unknow/server/maven/servlet/WebXml.java
index dadef88f..5ba1f825 100644
--- a/unknow-server-maven/src/main/java/unknow/server/maven/servlet/WebXml.java
+++ b/unknow-server-maven/src/main/java/unknow/server/maven/servlet/WebXml.java
@@ -10,8 +10,8 @@
import javax.xml.stream.XMLStreamReader;
import jakarta.servlet.DispatcherType;
-import unknow.server.maven.model.ClassModel;
-import unknow.server.maven.model.ModelLoader;
+import unknow.model.api.ClassModel;
+import unknow.model.api.ModelLoader;
import unknow.server.maven.servlet.descriptor.Descriptor;
import unknow.server.maven.servlet.descriptor.LD;
import unknow.server.maven.servlet.descriptor.SD;
diff --git a/unknow-server-maven/src/main/java/unknow/server/maven/servlet/descriptor/Descriptor.java b/unknow-server-maven/src/main/java/unknow/server/maven/servlet/descriptor/Descriptor.java
index b4bce96e..960e6dff 100644
--- a/unknow-server-maven/src/main/java/unknow/server/maven/servlet/descriptor/Descriptor.java
+++ b/unknow-server-maven/src/main/java/unknow/server/maven/servlet/descriptor/Descriptor.java
@@ -23,9 +23,9 @@
import jakarta.servlet.http.HttpSessionAttributeListener;
import jakarta.servlet.http.HttpSessionIdListener;
import jakarta.servlet.http.HttpSessionListener;
+import unknow.model.api.AnnotationModel;
+import unknow.model.api.TypeModel;
import unknow.server.maven.AbstractGeneratorMojo.TypeConsumer;
-import unknow.server.maven.model.AnnotationModel;
-import unknow.server.maven.model.TypeModel;
import unknow.server.servlet.impl.ServletCookieConfigImpl;
import unknow.server.servlet.utils.Resource;
diff --git a/unknow-server-maven/src/main/java/unknow/server/maven/servlet/descriptor/SD.java b/unknow-server-maven/src/main/java/unknow/server/maven/servlet/descriptor/SD.java
index c288a3d7..e08509a5 100644
--- a/unknow-server-maven/src/main/java/unknow/server/maven/servlet/descriptor/SD.java
+++ b/unknow-server-maven/src/main/java/unknow/server/maven/servlet/descriptor/SD.java
@@ -8,8 +8,8 @@
import java.util.List;
import jakarta.servlet.DispatcherType;
-import unknow.server.maven.model.AnnotationModel;
-import unknow.server.maven.model.TypeModel;
+import unknow.model.api.AnnotationModel;
+import unknow.model.api.TypeModel;
/**
* servlet of filter descriptor
diff --git a/unknow-server-maven/src/test/java/unknow/server/maven/jaxb/model/XmlLoaderTest.java b/unknow-server-maven/src/test/java/unknow/server/maven/jaxb/model/XmlLoaderTest.java
index 52b52d8b..468d30b6 100644
--- a/unknow-server-maven/src/test/java/unknow/server/maven/jaxb/model/XmlLoaderTest.java
+++ b/unknow-server-maven/src/test/java/unknow/server/maven/jaxb/model/XmlLoaderTest.java
@@ -13,11 +13,11 @@
import org.junit.jupiter.api.Test;
+import unknow.model.api.PrimitiveModel;
+import unknow.model.jvm.JvmModelLoader;
+import unknow.model.simple.SimpleAnnotationArray;
+import unknow.model.simple.SimpleClass;
import unknow.server.maven.jaxb.model.XmlElements.XmlGroup;
-import unknow.server.maven.model.PrimitiveModel;
-import unknow.server.maven.model.jvm.JvmModelLoader;
-import unknow.server.maven.model.simple.SimpleAnnotationArray;
-import unknow.server.maven.model.simple.SimpleClass;
public class XmlLoaderTest {
diff --git a/unknow-server-maven/src/test/java/unknow/server/maven/model/ModelLoaderTest.java b/unknow-server-maven/src/test/java/unknow/server/maven/model/ModelLoaderTest.java
deleted file mode 100644
index 3a118d27..00000000
--- a/unknow-server-maven/src/test/java/unknow/server/maven/model/ModelLoaderTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- *
- */
-package unknow.server.maven.model;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.Arguments;
-import org.junit.jupiter.params.provider.MethodSource;
-
-import com.github.javaparser.JavaParser;
-import com.github.javaparser.ParserConfiguration;
-import com.github.javaparser.ast.CompilationUnit;
-import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
-import com.github.javaparser.resolution.TypeSolver;
-import com.github.javaparser.symbolsolver.JavaSymbolSolver;
-import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver;
-
-import unknow.server.maven.model.ast.AstClass;
-import unknow.server.maven.model.jvm.JvmClass;
-import unknow.server.maven.model.jvm.JvmModelLoader;
-
-/**
- * @author unknow
- */
-public class ModelLoaderTest {
-
- public static final Stream input() {
- return Stream.of(Arguments.of("String", Arrays.asList("String")), Arguments.of("Collection", Arrays.asList("Collection", "String")),
- Arguments.of("Map", Arrays.asList("Map", "String", "String")),
- Arguments.of("Collection>", Arrays.asList("Collection", "List")),
- Arguments.of("Map,String>", Arrays.asList("Map", "List", "String")),
- Arguments.of("Map>", Arrays.asList("Map", "String", "List")), Arguments.of("A>", Arrays.asList("A", "B", "C", "D")),
- Arguments.of("L<>", Arrays.asList("L", "")));
- }
-
- @ParameterizedTest(name = "{0}")
- @MethodSource("input")
- void testParse(String clazz, List result) {
- assertEquals(result, ModelLoader.parse(clazz));
- }
-
- @Test
- void testCollection() {
- ModelLoader loader = JvmModelLoader.GLOBAL;
-
- TypeModel col = loader.get(G.class.getName());
- ClassModel slist = loader.get(StringList.class.getName()).asClass();
- assertTrue(col.isAssignableFrom(slist));
- assertEquals("java.lang.String", slist.superType().parameter(0).type().name());
- assertEquals("java.lang.String", slist.superType().field("a").type().name());
-
- ClassModel ilist = loader.get(IntList.class.getName()).asClass();
- assertTrue(col.isAssignableFrom(ilist));
- assertEquals("java.lang.Integer", ilist.superType().parameter(0).type().name());
- MethodModel m = ilist.superType().method("m", loader.get("java.lang.Integer")).orElse(null);
- assertEquals("java.lang.Integer", m.type().name());
- assertEquals("java.lang.Integer", m.parameter(0).type().name());
- }
-
- public static final Stream testClassName() {
- Class> cl = ModelLoaderTest.class;
-
- TypeSolver resolver = new ReflectionTypeSolver(false);
- JavaSymbolSolver javaSymbolSolver = new JavaSymbolSolver(resolver);
- JavaParser parser = new JavaParser(new ParserConfiguration().setStoreTokens(true).setSymbolResolver(javaSymbolSolver));
- CompilationUnit cu = parser.parse("package " + cl.getPackageName() + ";" + " public class " + cl.getSimpleName() + "{" + " public static class G {}"
- + " public static class StringList extends G {}" + "}").getResult().orElse(null);
-
- ClassOrInterfaceDeclaration ast = cu.findFirst(ClassOrInterfaceDeclaration.class, c -> "StringList".equals(c.getNameAsString())).orElse(null);
- AstClass astList = new AstClass(JvmModelLoader.GLOBAL, null, ast, new TypeModel[0]);
-
- JvmClass jvmList = new JvmClass(JvmModelLoader.GLOBAL, StringList.class, new TypeModel[0]);
- return Stream.of(Arguments.of(jvmList), Arguments.of(astList));
-
- }
-
- @ParameterizedTest()
- @MethodSource()
- void testClassName(ClassModel list) {
-
- assertEquals(this.getClass().getName() + "$StringList", list.name());
- assertEquals(this.getClass().getName() + "$StringList", list.genericName());
-
- assertEquals(this.getClass().getName() + "$G", list.superType().name());
- assertEquals(this.getClass().getName() + "$G", list.superType().genericName());
-
- }
-
- public static class G {
- A a;
-
- A m(A a) {
- return a;
- }
- }
-
- public static class StringList extends G { // ok
- }
-
- public static class IntList extends G { // ok
- }
-}