Commit 854984e6 by hy

add processor's parent project pom.xml file to be extended

parent d223e22e
...@@ -27,5 +27,29 @@ ...@@ -27,5 +27,29 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies> </dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.14</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project> </project>
\ No newline at end of file
package com.tbyf.dataadapter.console.controlle; package com.tbyf.dataadapter.console.controlle;
import com.tbyf.dataadapter.api.vo.ProcessorVo;
import com.tbyf.dataadapter.api.vo.Result;
import com.tbyf.dataadapter.task.processor.plugin.DataProcessorExtension;
import com.tbyf.dataadapter.task.processor.plugin.HeadProcessorExtension;
import com.tbyf.dataadapter.task.processor.plugin.ProcessorManager; import com.tbyf.dataadapter.task.processor.plugin.ProcessorManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader; import org.springframework.core.io.ResourceLoader;
import org.springframework.http.ContentDisposition; import org.springframework.http.ContentDisposition;
...@@ -9,16 +15,20 @@ import org.springframework.http.HttpHeaders; ...@@ -9,16 +15,20 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils; import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@RestController @RestController
@RequestMapping("/plugin") @RequestMapping("/plugin")
@Slf4j
public class PluginController { public class PluginController {
@Autowired @Autowired
...@@ -27,6 +37,10 @@ public class PluginController { ...@@ -27,6 +37,10 @@ public class PluginController {
@Autowired @Autowired
ProcessorManager processorManager; ProcessorManager processorManager;
@Value("${pluginsRepoLocation}")
private String pluginsRoot;
@GetMapping("/download/{pluginId}") @GetMapping("/download/{pluginId}")
public ResponseEntity<?> download(@PathVariable String pluginId) { public ResponseEntity<?> download(@PathVariable String pluginId) {
Path pluginPath = this.processorManager.getPluginPath(pluginId); Path pluginPath = this.processorManager.getPluginPath(pluginId);
...@@ -47,4 +61,54 @@ public class PluginController { ...@@ -47,4 +61,54 @@ public class PluginController {
.contentType(MediaType.APPLICATION_OCTET_STREAM) .contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource); .body(resource);
} }
@PostMapping("/upload")
public Result<?> upload(MultipartFile file) {
String filename = file.getOriginalFilename();
try {
Path pluginPath = Paths.get(this.pluginsRoot, filename);
file.transferTo(pluginPath);
processorManager.installPlugin(pluginPath.toString());
return Result.ok(true);
} catch (IOException e) {
log.error(e.getMessage(), e);
return Result.ok(false);
}
}
@GetMapping("/headProcessors")
public Result<?> getHeadProcessors() {
Map<String, HeadProcessorExtension> processors = processorManager.getHeadProcessors();
List<ProcessorVo> result = new ArrayList<>();
for (String key : processors.keySet()) {
String[] split = key.split("@");
String pluginId = split[0];
String processorClassname = split[1];
String desc = processors.get(key).description();
ProcessorVo vo = new ProcessorVo();
vo.setPluginId(pluginId);
vo.setProcessorClassname(processorClassname);
vo.setDesc(desc);
result.add(vo);
}
return Result.ok(result);
}
@GetMapping("/processors")
public Result<?> getProcessors() {
Map<String, DataProcessorExtension> processors = processorManager.getProcessors();
List<ProcessorVo> result = new ArrayList<>();
for (String key : processors.keySet()) {
String[] split = key.split("@");
String pluginId = split[0];
String processorClassname = split[1];
String desc = processors.get(key).description();
ProcessorVo vo = new ProcessorVo();
vo.setPluginId(pluginId);
vo.setProcessorClassname(processorClassname);
vo.setDesc(desc);
result.add(vo);
}
return Result.ok(result);
}
} }
...@@ -5,6 +5,8 @@ import com.tbyf.dataadapter.task.processor.HeadProcessor; ...@@ -5,6 +5,8 @@ import com.tbyf.dataadapter.task.processor.HeadProcessor;
import org.pf4j.DefaultPluginManager; import org.pf4j.DefaultPluginManager;
import org.pf4j.PluginWrapper; import org.pf4j.PluginWrapper;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.HashMap; import java.util.HashMap;
...@@ -33,6 +35,13 @@ public class ProcessorManager { ...@@ -33,6 +35,13 @@ public class ProcessorManager {
pluginManager = new DefaultPluginManager(); pluginManager = new DefaultPluginManager();
pluginManager.loadPlugins(); pluginManager.loadPlugins();
pluginManager.startPlugins(); pluginManager.startPlugins();
String pluginsRoot = System.getProperty("pf4j.pluginsDir");
Path path = Paths.get(pluginsRoot);
try {
Files.createDirectories(path);
} catch (IOException e) {
throw new RuntimeException(e);
}
loadProcessors(); loadProcessors();
} }
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.tbyf.dataadapter</groupId>
<artifactId>dataadapter</artifactId>
<version>3.0-SNAPSHOT</version>
</parent>
<artifactId>dataadapter-plugin-parent</artifactId>
<packaging>pom</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<plugin.id>${project.artifactId}</plugin.id>
<plugin.version>${project.version}</plugin.version>
<plugin.provider>tbyf</plugin.provider>
<plugin.description>${project.description}</plugin.description>
<plugin.class/>
<plugin.dependencies/>
</properties>
<dependencies>
<dependency>
<groupId>com.hy.dataadapter</groupId>
<artifactId>dataadapter</artifactId>
<version>3.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.5.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<attach>false</attach>
<archive>
<manifestEntries>
<Plugin-Id>${plugin.id}-${plugin.version}</Plugin-Id>
<Plugin-Version>${plugin.version}</Plugin-Version>
<Plugin-Provider>${plugin.provider}</Plugin-Provider>
<Plugin-Class>${plugin.class}</Plugin-Class>
<Plugin-Description>${plugin.description}</Plugin-Description>
<Plugin-Dependencies>${plugin.dependencies}</Plugin-Dependencies>
</manifestEntries>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
<maven.compiler.source>8</maven.compiler.source> <maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target> <maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<main.class>com.tbyf.dataadapter.app.WorkerBootstrap</main.class>
</properties> </properties>
<dependencies> <dependencies>
...@@ -24,4 +25,33 @@ ...@@ -24,4 +25,33 @@
<version>3.0-SNAPSHOT</version> <version>3.0-SNAPSHOT</version>
</dependency> </dependency>
</dependencies> </dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.5.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>${main.class}</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project> </project>
\ No newline at end of file
...@@ -12,12 +12,14 @@ ...@@ -12,12 +12,14 @@
<module>dataadapter-core</module> <module>dataadapter-core</module>
<module>dataadapter-console</module> <module>dataadapter-console</module>
<module>dataadapter-worker</module> <module>dataadapter-worker</module>
<module>dataadapter-plugin-parent</module>
</modules> </modules>
<properties> <properties>
<maven.compiler.source>8</maven.compiler.source> <maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target> <maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring-boot.version>2.7.14</spring-boot.version>
</properties> </properties>
<dependencyManagement> <dependencyManagement>
...@@ -25,7 +27,7 @@ ...@@ -25,7 +27,7 @@
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId> <artifactId>spring-boot-dependencies</artifactId>
<version>2.7.14</version> <version>${spring-boot.version}</version>
<type>pom</type> <type>pom</type>
<scope>import</scope> <scope>import</scope>
</dependency> </dependency>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment