Commit 854984e6 by hy

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

parent d223e22e
......@@ -27,5 +27,29 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</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>
\ No newline at end of file
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 lombok.extern.slf4j.Slf4j;
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.ResourceLoader;
import org.springframework.http.ContentDisposition;
......@@ -9,16 +15,20 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/plugin")
@Slf4j
public class PluginController {
@Autowired
......@@ -27,6 +37,10 @@ public class PluginController {
@Autowired
ProcessorManager processorManager;
@Value("${pluginsRepoLocation}")
private String pluginsRoot;
@GetMapping("/download/{pluginId}")
public ResponseEntity<?> download(@PathVariable String pluginId) {
Path pluginPath = this.processorManager.getPluginPath(pluginId);
......@@ -47,4 +61,54 @@ public class PluginController {
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.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;
import org.pf4j.DefaultPluginManager;
import org.pf4j.PluginWrapper;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
......@@ -33,6 +35,13 @@ public class ProcessorManager {
pluginManager = new DefaultPluginManager();
pluginManager.loadPlugins();
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();
}
......
<?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 @@
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<main.class>com.tbyf.dataadapter.app.WorkerBootstrap</main.class>
</properties>
<dependencies>
......@@ -24,4 +25,33 @@
<version>3.0-SNAPSHOT</version>
</dependency>
</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>
\ No newline at end of file
......@@ -12,12 +12,14 @@
<module>dataadapter-core</module>
<module>dataadapter-console</module>
<module>dataadapter-worker</module>
<module>dataadapter-plugin-parent</module>
</modules>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring-boot.version>2.7.14</spring-boot.version>
</properties>
<dependencyManagement>
......@@ -25,7 +27,7 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.7.14</version>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</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