Skip to content

Commit f0ff551

Browse files
[fel] 整改 fel 模块的插件调用逻辑
1 parent 3b3b86e commit f0ff551

File tree

23 files changed

+107
-51
lines changed

23 files changed

+107
-51
lines changed

framework/fel/java/components/tool-info/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<dependency>
2424
<groupId>com.fasterxml.jackson.core</groupId>
2525
<artifactId>jackson-annotations</artifactId>
26-
<version>${jackson.version}</version>
26+
<version>2.16.2</version>
2727
</dependency>
2828
<dependency>
2929
<groupId>com.fasterxml.jackson.core</groupId>

framework/fel/java/maven-plugins/tool-maven-plugin/src/main/java/modelengine/fel/maven/complie/parser/ByteBuddyToolsParser.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ private static Optional<ToolEntity> parseTool(MethodDescription defMethodDescrip
107107
return Optional.empty();
108108
}
109109
toolEntity.setDefinitionName(defMethodAnnotation.load().name());
110+
toolEntity.setNamespace(defMethodAnnotation.load().namespace());
110111
ByteBuddySchemaParser.parseMethodSchema(toolMethodDescription).ifPresent(toolEntity::setSchema);
111112
toolEntity.setRunnables(parserRunnables(defMethodDescription, toolMethodDescription));
112113
AnnotationDescription.Loadable<ToolMethod> toolMethodAnnotation =

framework/fel/java/maven-plugins/tool-maven-plugin/src/test/resources/weather-tools.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,16 @@
6666
} ]
6767
} ],
6868
"toolGroups" : [ {
69-
"definitionGroupName" : "defGroup_weather_Rain",
7069
"name" : "implGroup_weather_Rain_Mobile",
7170
"summary" : "",
7271
"description" : "",
7372
"extensions" : {
7473
"owner" : [ "测试" ],
7574
"language" : [ "english" ]
7675
},
76+
"definitionGroupName" : "defGroup_weather_Rain",
7777
"tools" : [ {
78+
"namespace" : "Common",
7879
"schema" : {
7980
"name" : "mobile_rain_today",
8081
"description" : "使用A提供的今日下雨信息",
@@ -114,6 +115,7 @@
114115
},
115116
"definitionName" : "rain_today"
116117
}, {
118+
"namespace" : "Common",
117119
"schema" : {
118120
"name" : "mobile_rain_tomorrow",
119121
"description" : "使用A提供的明日下雨信息",
@@ -154,12 +156,13 @@
154156
"definitionName" : "rain_tomorrow"
155157
} ]
156158
}, {
157-
"definitionGroupName" : "defGroup_weather_Rain",
159+
"name" : "implGroup_weather_Rain_Unicom",
158160
"summary" : "",
159161
"description" : "",
160162
"extensions" : { },
161-
"name" : "implGroup_weather_Rain_Unicom",
163+
"definitionGroupName" : "defGroup_weather_Rain",
162164
"tools" : [ {
165+
"namespace" : "Common",
163166
"schema" : {
164167
"name" : "unicom_rain_today",
165168
"description" : "使用B提供的今日下雨信息",
@@ -196,6 +199,7 @@
196199
},
197200
"definitionName" : "rain_today"
198201
}, {
202+
"namespace" : "Common",
199203
"schema" : {
200204
"name" : "unicom_rain_tomorrow",
201205
"description" : "使用B提供的明日下雨信息",

framework/fel/java/plugins/tool-discoverer/src/main/java/modelengine/fel/tool/support/DefaultToolDiscoverer.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
import static modelengine.fitframework.inspection.Validation.isTrue;
1010
import static modelengine.fitframework.inspection.Validation.notNull;
1111

12-
import modelengine.fel.tool.ToolEntity;
12+
import modelengine.fel.tool.DefaultToolEntity;
13+
import modelengine.fel.tool.info.entity.ToolEntity;
1314
import modelengine.fel.tool.ToolSchema;
1415
import modelengine.fel.tool.service.ToolRepository;
1516
import modelengine.fitframework.annotation.Component;
@@ -62,14 +63,14 @@ public DefaultToolDiscoverer(ToolRepository toolRepository, ObjectSerializer ser
6263

6364
@Override
6465
public void onPluginStarted(Plugin plugin) {
65-
this.scanTools(plugin).forEach(this.toolRepository::addTool);
66+
this.scanTools(plugin).forEach(toolEntity -> this.toolRepository.addTool(new DefaultToolEntity(toolEntity)));
6667
}
6768

6869
@Override
6970
public void onPluginStopping(Plugin plugin) {
7071
List<ToolEntity> toolEntities = this.scanTools(plugin);
7172
isTrue(toolEntities.size() < this.maxToolNum, "The tool num in plugin must less than {}", this.maxToolNum);
72-
toolEntities.forEach(tool -> this.toolRepository.deleteTool(tool.namespace(), tool.name()));
73+
toolEntities.forEach(tool -> this.toolRepository.deleteTool(tool.getNamespace(), tool.getSchema().getName()));
7374
}
7475

7576
private List<ToolEntity> scanTools(Plugin plugin) {

framework/fel/java/plugins/tool-executor/src/main/java/modelengine/fel/tool/support/DefaultToolExecutor.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
package modelengine.fel.tool.support;
88

99
import static modelengine.fitframework.inspection.Validation.notNull;
10+
import static modelengine.fitframework.util.ObjectUtils.cast;
1011

12+
import modelengine.fel.tool.DefaultToolEntity;
1113
import modelengine.fel.tool.Tool;
12-
import modelengine.fel.tool.ToolEntity;
14+
import modelengine.fel.tool.info.entity.ToolEntity;
1315
import modelengine.fel.tool.ToolFactory;
1416
import modelengine.fel.tool.ToolFactoryRepository;
1517
import modelengine.fel.tool.service.ToolExecuteService;
@@ -80,7 +82,7 @@ public String execute(String uniqueName, Map<String, Object> jsonObject) {
8082
}
8183

8284
private Tool getTool(String group, String toolName) {
83-
ToolEntity tool = notNull(toolRepository.getTool(group, toolName),
85+
DefaultToolEntity tool = notNull(toolRepository.getTool(group, toolName),
8486
() -> new IllegalStateException(StringUtils.format("The tool cannot be found. [group={0}, tool={1}]",
8587
group,
8688
toolName)));

framework/fel/java/plugins/tool-executor/src/test/java/modelengine/fel/tool/support/DefaultToolExecutorTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@
1515
import static org.mockito.Mockito.mock;
1616
import static org.mockito.Mockito.when;
1717

18+
import modelengine.fel.tool.DefaultToolEntity;
1819
import modelengine.fel.tool.Tool;
19-
import modelengine.fel.tool.ToolEntity;
20+
import modelengine.fel.tool.info.entity.ToolEntity;
2021
import modelengine.fel.tool.ToolFactory;
2122
import modelengine.fel.tool.ToolFactoryRepository;
2223
import modelengine.fel.tool.ToolSchema;
@@ -68,7 +69,7 @@ void tearDown() {
6869
@Test
6970
@DisplayName("调用工具成功返回结果")
7071
void shouldOkWhenExecuteTool() throws IOException {
71-
ToolEntity toolEntity = getTestEntity();
72+
DefaultToolEntity toolEntity = getTestEntity();
7273
when(this.toolRepository.getTool(any(), eq(toolEntity.name()))).thenReturn(toolEntity);
7374
when(this.toolFactoryRepository.match(any())).thenReturn(Optional.of(this.toolFactory));
7475
Tool tool = mock(Tool.class, RETURNS_DEEP_STUBS);
@@ -94,7 +95,7 @@ void shouldFailWhenToolNotFound() {
9495
@Test
9596
@DisplayName("工具工厂不存在,调用失败")
9697
void shouldFailWhenToolFactoryNotFound() throws IOException {
97-
ToolEntity toolEntity = getTestEntity();
98+
DefaultToolEntity toolEntity = getTestEntity();
9899
when(this.toolRepository.getTool(any(), any())).thenReturn(toolEntity);
99100
when(this.toolFactoryRepository.match(any())).thenReturn(Optional.empty());
100101

@@ -105,12 +106,12 @@ void shouldFailWhenToolFactoryNotFound() throws IOException {
105106
"test")).isInstanceOf(IllegalStateException.class);
106107
}
107108

108-
private ToolEntity getTestEntity() throws IOException {
109+
private DefaultToolEntity getTestEntity() throws IOException {
109110
List<ToolEntity> toolEntities =
110111
this.serializer.<Map<String, List<ToolEntity>>>deserialize(IoUtils.content(this.getClass().getClassLoader(), ToolSchema.TOOL_MANIFEST),
111112
TypeUtils.parameterized(Map.class, new Type[] {
112113
String.class, TypeUtils.parameterized(List.class, new Type[] {ToolEntity.class})
113114
})).get("tools");
114-
return toolEntities.get(0);
115+
return new DefaultToolEntity(toolEntities.get(0));
115116
}
116117
}

framework/fel/java/plugins/tool-repository-simple/src/main/java/modelengine/fel/tool/support/SimpleToolRepository.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
import static modelengine.fitframework.inspection.Validation.notBlank;
1010

1111
import modelengine.fel.core.tool.ToolInfo;
12-
import modelengine.fel.tool.ToolEntity;
12+
import modelengine.fel.tool.DefaultToolEntity;
13+
import modelengine.fel.tool.info.entity.ToolEntity;
1314
import modelengine.fel.tool.service.ToolRepository;
1415
import modelengine.fitframework.annotation.Component;
1516
import modelengine.fitframework.log.Logger;
@@ -30,10 +31,10 @@
3031
public class SimpleToolRepository implements ToolRepository {
3132
private static final Logger log = Logger.get(SimpleToolRepository.class);
3233

33-
private final Map<String, ToolEntity> toolCache = new ConcurrentHashMap<>();
34+
private final Map<String, DefaultToolEntity> toolCache = new ConcurrentHashMap<>();
3435

3536
@Override
36-
public void addTool(ToolEntity tool) {
37+
public void addTool(DefaultToolEntity tool) {
3738
if (tool == null) {
3839
return;
3940
}
@@ -53,15 +54,15 @@ public void deleteTool(String namespace, String toolName) {
5354
}
5455

5556
@Override
56-
public ToolEntity getTool(String namespace, String toolName) {
57+
public DefaultToolEntity getTool(String namespace, String toolName) {
5758
notBlank(namespace, "The namespace cannot be blank.");
5859
notBlank(toolName, "The toll name cannot be blank.");
5960
String uniqueName = ToolInfo.identify(namespace, toolName);
6061
return toolCache.get(uniqueName);
6162
}
6263

6364
@Override
64-
public List<ToolEntity> listTool(String namespace) {
65+
public List<DefaultToolEntity> listTool(String namespace) {
6566
notBlank(namespace, "The namespace cannot be blank.");
6667
return toolCache.entrySet()
6768
.stream()

framework/fel/java/services/tool-service/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@
3232
<artifactId>fel-core</artifactId>
3333
</dependency>
3434

35+
<dependency>
36+
<groupId>com.fasterxml.jackson.core</groupId>
37+
<artifactId>jackson-annotations</artifactId>
38+
<version>2.16.2</version>
39+
</dependency>
40+
3541
<!-- Test Fit Core -->
3642
<dependency>
3743
<groupId>org.fitframework</groupId>

framework/fel/java/services/tool-service/src/main/java/modelengine/fel/tool/ToolEntity.java renamed to framework/fel/java/services/tool-service/src/main/java/modelengine/fel/tool/DefaultToolEntity.java

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import static modelengine.fitframework.inspection.Validation.notNull;
1010
import static modelengine.fitframework.util.ObjectUtils.cast;
1111

12+
import modelengine.fel.tool.info.entity.ToolEntity;
1213
import modelengine.fitframework.inspection.Nonnull;
1314
import modelengine.fitframework.util.StringUtils;
1415

@@ -20,61 +21,51 @@
2021
* @author 易文渊
2122
* @since 2024-08-14
2223
*/
23-
public class ToolEntity implements Tool.Info {
24-
private String namespace;
25-
private Map<String, Object> schema;
26-
private Map<String, Object> runnables;
27-
private Map<String, Object> extensions;
24+
public class DefaultToolEntity implements Tool.Info {
25+
private ToolEntity toolEntity;
2826

2927
/**
3028
* 默认构造函数。
3129
*/
32-
public ToolEntity() {}
30+
public DefaultToolEntity() {}
3331

3432
/**
3533
* 创建 {@link ToolEntity} 的实例。
3634
*
37-
* @param namespace 表示工具命名空间的 {@link String}。
38-
* @param schema 表示工具格式规范描述的 {@link Map}{@code <}{@link String}{@code , }{@link Object}{@code >}。
39-
* @param runnables 表示工具运行规范的 {@link Map}{@code <}{@link String}{@code , }{@link Object}{@code >}。
40-
* @param extensions 表示工具额外参数规范的 {@link Map}{@code <}{@link String}{@code , }{@link Object}{@code >}。
35+
* @param toolEntity 表示工具实体类的 {@link ToolEntity}。
4136
*/
42-
public ToolEntity(String namespace, Map<String, Object> schema, Map<String, Object> runnables,
43-
Map<String, Object> extensions) {
44-
this.namespace = notNull(namespace, "The namespace cannot be null.");
45-
this.schema = notNull(schema, "The schema cannot be null.");
46-
this.runnables = notNull(runnables, "The runnables cannot be null.");
47-
this.extensions = notNull(extensions, "The extensions cannot be null.");
37+
public DefaultToolEntity(ToolEntity toolEntity) {
38+
this.toolEntity = toolEntity;
4839
}
4940

5041
@Nonnull
5142
@Override
5243
public String namespace() {
53-
return this.namespace;
44+
return this.toolEntity.getNamespace();
5445
}
5546

5647
@Nonnull
5748
@Override
5849
public String name() {
59-
return cast(this.schema.get(ToolSchema.NAME));
50+
return this.toolEntity.getSchema().getName();
6051
}
6152

6253
@Nonnull
6354
@Override
6455
public String description() {
65-
return cast(this.schema.get(ToolSchema.DESCRIPTION));
56+
return this.toolEntity.getSchema().getDescription();
6657
}
6758

6859
@Nonnull
6960
@Override
7061
public Map<String, Object> parameters() {
71-
return cast(this.schema.get(ToolSchema.PARAMETERS));
62+
return this.toolEntity.parameters();
7263
}
7364

7465
@Nonnull
7566
@Override
7667
public Map<String, Object> extensions() {
77-
return this.extensions;
68+
return this.toolEntity.getExtensions();
7869
}
7970

8071
@Override
@@ -99,12 +90,12 @@ public String definitionGroupName() {
9990

10091
@Override
10192
public Map<String, Object> schema() {
102-
return this.schema;
93+
return this.toolEntity.schema();
10394
}
10495

10596
@Override
10697
public Map<String, Object> runnables() {
107-
return this.runnables;
98+
return this.toolEntity.getRunnables();
10899
}
109100

110101
@Override

framework/fel/java/components/tool-info/src/main/java/modelengine/fel/tool/info/entity/DefinitionEntity.java renamed to framework/fel/java/services/tool-service/src/main/java/modelengine/fel/tool/info/entity/DefinitionEntity.java

File renamed without changes.

0 commit comments

Comments
 (0)