Skip to content

Commit 67e59ea

Browse files
author
magiclu550
committed
[JSMOD@2_494_COMMIT] web api
1 parent 2337c84 commit 67e59ea

12 files changed

Lines changed: 193 additions & 44 deletions

.idea/encodings.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_2.xml

Lines changed: 0 additions & 13 deletions
This file was deleted.

.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_2.xml

Lines changed: 0 additions & 13 deletions
This file was deleted.

.idea/libraries/Maven__org_apache_commons_commons_lang3_3_7.xml

Lines changed: 0 additions & 13 deletions
This file was deleted.

JSMod2Core/JSMod2Core.iml

Lines changed: 63 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,66 @@
1212
<orderEntry type="inheritedJdk" />
1313
<orderEntry type="sourceFolder" forTests="false" />
1414
<orderEntry type="library" name="scala-sdk-2.13.0" level="application" />
15+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-rest:2.1.6.RELEASE" level="project" />
16+
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-rest-webmvc:3.1.9.RELEASE" level="project" />
17+
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-rest-core:3.1.9.RELEASE" level="project" />
18+
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.1.8.RELEASE" level="project" />
19+
<orderEntry type="library" name="Maven: org.springframework.hateoas:spring-hateoas:0.25.1.RELEASE" level="project" />
20+
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.1.9.RELEASE" level="project" />
21+
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
22+
<orderEntry type="library" name="Maven: org.atteo:evo-inflector:1.2.2" level="project" />
23+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
24+
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
25+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.1.6.RELEASE" level="project" />
26+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.1.6.RELEASE" level="project" />
27+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.1.6.RELEASE" level="project" />
28+
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
29+
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
30+
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.11.2" level="project" />
31+
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.26" level="project" />
32+
<orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
33+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.1.6.RELEASE" level="project" />
34+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.9" level="project" />
35+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.9" level="project" />
36+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.9" level="project" />
37+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.1.6.RELEASE" level="project" />
38+
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.21" level="project" />
39+
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.21" level="project" />
40+
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.21" level="project" />
41+
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.17.Final" level="project" />
42+
<orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
43+
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" />
44+
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.4.0" level="project" />
45+
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.1.8.RELEASE" level="project" />
46+
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.1.8.RELEASE" level="project" />
47+
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.1.8.RELEASE" level="project" />
48+
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.1.8.RELEASE" level="project" />
49+
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.1.8.RELEASE" level="project" />
50+
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.8.RELEASE" level="project" />
51+
<orderEntry type="library" name="Maven: org.springframework.session:spring-session-core:2.1.7.RELEASE" level="project" />
52+
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.8.RELEASE" level="project" />
53+
<orderEntry type="library" scope="RUNTIME" name="Maven: org.springframework.boot:spring-boot-devtools:2.1.6.RELEASE" level="project" />
54+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.6.RELEASE" level="project" />
55+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.1.6.RELEASE" level="project" />
56+
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.1.6.RELEASE" level="project" />
57+
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.1.6.RELEASE" level="project" />
58+
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.1.6.RELEASE" level="project" />
59+
<orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" />
60+
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.3" level="project" />
61+
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" />
62+
<orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
63+
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.11.1" level="project" />
64+
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:2.23.4" level="project" />
65+
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy:1.9.13" level="project" />
66+
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.9.13" level="project" />
67+
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
68+
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
69+
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
70+
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
71+
<orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
72+
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.1.8.RELEASE" level="project" />
73+
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.1.8.RELEASE" level="project" />
74+
<orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" />
1575
<orderEntry type="library" name="Maven: org.scala-lang:scala-compiler:2.13.0" level="project" />
1676
<orderEntry type="library" name="Maven: org.scala-lang:scala-reflect:2.13.0" level="project" />
1777
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.47" level="project" />
@@ -20,16 +80,14 @@
2080
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.11.1" level="project" />
2181
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
2282
<orderEntry type="library" name="Maven: junit:junit:4.12" level="project" />
23-
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
2483
<orderEntry type="library" name="Maven: org.fusesource.jansi:jansi:1.18" level="project" />
2584
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.16" level="project" />
2685
<orderEntry type="library" name="Maven: jline:jline:2.14.2" level="project" />
2786
<orderEntry type="library" name="Maven: commons-io:commons-io:2.6" level="project" />
2887
<orderEntry type="library" name="Maven: org.kohsuke:github-api:1.95" level="project" />
29-
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.7" level="project" />
30-
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.2" level="project" />
31-
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
32-
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.2" level="project" />
88+
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8.1" level="project" />
89+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.9" level="project" />
90+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.9" level="project" />
3391
<orderEntry type="library" name="Maven: org.scala-lang:scala-library:2.13.0" level="project" />
3492
<orderEntry type="library" name="Maven: cn.jsmod2:jsmod2-emerald:1.0.3" level="project" />
3593
<orderEntry type="library" name="Maven: cn.jsmod2:jsmod2-iapi:1.0.3" level="project" />

JSMod2Core/pom.xml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@
99
<packaging>pom</packaging>
1010
<version>1.0-SNAPSHOT</version>
1111

12+
<parent>
13+
<groupId>org.springframework.boot</groupId>
14+
<artifactId>spring-boot-starter-parent</artifactId>
15+
<version>2.1.6.RELEASE</version>
16+
<relativePath/> <!-- lookup parent from repository -->
17+
</parent>
18+
1219
<repositories>
1320
<repository>
1421
<id>central</id>
@@ -150,6 +157,30 @@
150157
</dependencies>
151158
</dependencyManagement>
152159
<dependencies>
160+
<dependency>
161+
<groupId>org.springframework.boot</groupId>
162+
<artifactId>spring-boot-starter-data-rest</artifactId>
163+
</dependency>
164+
<dependency>
165+
<groupId>org.springframework.boot</groupId>
166+
<artifactId>spring-boot-starter-web</artifactId>
167+
</dependency>
168+
<dependency>
169+
<groupId>org.springframework.session</groupId>
170+
<artifactId>spring-session-core</artifactId>
171+
</dependency>
172+
173+
<dependency>
174+
<groupId>org.springframework.boot</groupId>
175+
<artifactId>spring-boot-devtools</artifactId>
176+
<scope>runtime</scope>
177+
<optional>true</optional>
178+
</dependency>
179+
<dependency>
180+
<groupId>org.springframework.boot</groupId>
181+
<artifactId>spring-boot-starter-test</artifactId>
182+
<scope>test</scope>
183+
</dependency>
153184
<dependency>
154185
<groupId>org.scala-lang</groupId>
155186
<artifactId>scala-compiler</artifactId>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package cn.jsmod2.core.plugin;
2+
3+
import org.springframework.beans.BeansException;
4+
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
5+
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
6+
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
7+
8+
public class BeanRegister implements BeanDefinitionRegistryPostProcessor {
9+
10+
private static BeanDefinitionRegistry registry;
11+
12+
private static ConfigurableListableBeanFactory factory;
13+
14+
@Override
15+
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException {
16+
registry = beanDefinitionRegistry;
17+
}
18+
19+
@Override
20+
public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
21+
factory = configurableListableBeanFactory;
22+
}
23+
24+
public static BeanDefinitionRegistry getRegistry() {
25+
return registry;
26+
}
27+
28+
public static ConfigurableListableBeanFactory getFactory() {
29+
return factory;
30+
}
31+
}

JSMod2Core/src/main/java/cn/jsmod2/core/plugin/PluginClassLoader.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ public Plugin loadPlugin(File jar) {
117117
continue;
118118
}
119119
Class<?> pluginClass = classLoader.loadClass(mainName);
120+
SpringbootLoader.loadBean(pluginClass);
120121
Main main = pluginClass.getAnnotation(Main.class);
121122
if(main!=null){
122123
PluginFileVO vo = new PluginFileVO(main.name(),pluginClass.getName(),main.description(),main.version());
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package cn.jsmod2.core.plugin;
2+
3+
4+
import cn.jsmod2.core.utils.Utils;
5+
import org.apache.commons.lang3.StringUtils;
6+
import org.springframework.beans.factory.config.BeanDefinition;
7+
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
8+
import org.springframework.stereotype.Component;
9+
import org.springframework.stereotype.Repository;
10+
import org.springframework.stereotype.Service;
11+
12+
import java.lang.reflect.Modifier;
13+
14+
public class SpringbootLoader {
15+
16+
public static void loadBean(Class bean){
17+
try {
18+
if(isSpringBeanClass(bean)){
19+
BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(bean);
20+
BeanDefinition beanDefinition = beanDefinitionBuilder.getRawBeanDefinition();
21+
22+
beanDefinition.setScope("singleton");
23+
24+
String beanName = StringUtils.uncapitalize(bean.getSimpleName());
25+
26+
beanName = beanName.substring(beanName.lastIndexOf(".")+1);
27+
28+
beanName = StringUtils.uncapitalize(beanName);
29+
30+
BeanRegister.getRegistry().registerBeanDefinition(beanName,beanDefinition);
31+
32+
}
33+
}catch (Exception e){
34+
Utils.printException(e);
35+
}
36+
}
37+
38+
public static boolean isSpringBeanClass(Class<?> cla){
39+
if(cla==null){
40+
return false;
41+
}
42+
//是否是接口
43+
if(cla.isInterface()){
44+
return false;
45+
}
46+
47+
//是否是抽象类
48+
if( Modifier.isAbstract(cla.getModifiers())){
49+
return false;
50+
}
51+
52+
if(cla.getAnnotation(Component.class)!=null){
53+
return true;
54+
}
55+
if(cla.getAnnotation(Repository.class)!=null){
56+
return true;
57+
}
58+
if(cla.getAnnotation(Service.class)!=null){
59+
return true;
60+
}
61+
62+
return false;
63+
}
64+
65+
66+
}
Binary file not shown.

0 commit comments

Comments
 (0)