优化结构

This commit is contained in:
zhou-hao
2018-06-02 12:20:54 +08:00
parent a040f29773
commit 12a76cfb88
30 changed files with 33 additions and 446 deletions

View File

@@ -6,17 +6,18 @@
<artifactId>hsweb-system-file</artifactId>
<groupId>org.hswebframework.web</groupId>
<version>3.0.0-RC-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>hsweb-system-file-entity</artifactId>
<description>文件服务api</description>
<artifactId>hsweb-system-file-api</artifactId>
<dependencies>
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-commons-entity</artifactId>
<artifactId>hsweb-commons-service-api</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View File

@@ -1,27 +0,0 @@
<?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">
<parent>
<artifactId>hsweb-system-file-dao</artifactId>
<groupId>org.hswebframework.web</groupId>
<version>3.0.0-RC-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>hsweb-system-file-dao-api</artifactId>
<dependencies>
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-system-file-entity</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-commons-dao-api</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View File

@@ -1,26 +0,0 @@
<?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">
<parent>
<artifactId>hsweb-system-file-dao</artifactId>
<groupId>org.hswebframework.web</groupId>
<version>3.0.0-RC-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>hsweb-system-file-dao-mybatis</artifactId>
<dependencies>
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-system-file-dao-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-commons-dao-mybatis</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View File

@@ -1,18 +0,0 @@
<?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">
<parent>
<artifactId>hsweb-system-file</artifactId>
<groupId>org.hswebframework.web</groupId>
<version>3.0.0-RC-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>hsweb-system-file-dao</artifactId>
<packaging>pom</packaging>
<modules>
<module>hsweb-system-file-dao-api</module>
<module>hsweb-system-file-dao-mybatis</module>
</modules>
</project>

View File

@@ -3,13 +3,15 @@
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">
<parent>
<artifactId>hsweb-system-file-service</artifactId>
<artifactId>hsweb-system-file</artifactId>
<groupId>org.hswebframework.web</groupId>
<version>3.0.0-RC-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>hsweb-system-file-service-simple</artifactId>
<artifactId>hsweb-system-file-local</artifactId>
<dependencies>
<dependency>
@@ -19,7 +21,7 @@
</dependency>
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-system-file-service-api</artifactId>
<artifactId>hsweb-system-file-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
@@ -28,5 +30,10 @@
<version>0.2.0</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-commons-dao-mybatis</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View File

@@ -3,18 +3,21 @@
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">
<parent>
<artifactId>hsweb-system-file-service</artifactId>
<artifactId>hsweb-system-file</artifactId>
<groupId>org.hswebframework.web</groupId>
<version>3.0.0-RC-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>hsweb-system-file-service-oauth2</artifactId>
<artifactId>hsweb-system-file-oauth2</artifactId>
<description>基于hsweb oauth2的文件服务,通过oauth2调用远程文件服务.</description>
<dependencies>
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-system-file-service-api</artifactId>
<artifactId>hsweb-system-file-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>

View File

@@ -1,26 +0,0 @@
<?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">
<parent>
<artifactId>hsweb-system-file-service</artifactId>
<groupId>org.hswebframework.web</groupId>
<version>3.0.0-RC-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>hsweb-system-file-service-api</artifactId>
<dependencies>
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-commons-service-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-system-file-dao-api</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View File

@@ -1,109 +0,0 @@
package org.hswebframework.web.service.file.oauth2;
import lombok.extern.slf4j.Slf4j;
import org.hswebframework.web.authorization.oauth2.client.request.OAuth2Request;
import org.hswebframework.web.authorization.oauth2.client.request.TokenExpiredCallBack;
import org.hswebframework.web.authorization.oauth2.client.response.OAuth2Response;
import java.io.InputStream;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;
@Slf4j
public class MockOAuth2Request implements OAuth2Request {
private Function<String, OAuth2Response> responseGetter;
public MockOAuth2Request(Function<String, OAuth2Response> responseGetter) {
this.responseGetter = responseGetter;
}
@Override
public OAuth2Request onRefreshTokenExpired(TokenExpiredCallBack refreshTokenExpiredCallBack) {
return this;
}
@Override
public OAuth2Request onTokenExpired(TokenExpiredCallBack callback) {
return this;
}
@Override
public OAuth2Request param(String name, Object value) {
log.info("set param :{}={}", name, value);
return this;
}
@Override
public OAuth2Request params(Map<String, String> params) {
log.info("set params :{}", params);
return this;
}
@Override
public OAuth2Response upload(String name, InputStream inputStream) {
return responseGetter.apply("post");
}
@Override
public OAuth2Response upload(String name, InputStream inputStream, String fileName) {
return responseGetter.apply("post");
}
@Override
public OAuth2Request requestBody(String value) {
log.info("set request body :{}", value);
return this;
}
@Override
public OAuth2Request header(String name, String value) {
return this;
}
@Override
public OAuth2Request cookie(String cookie) {
return this;
}
@Override
public OAuth2Request contentType(String contentType) {
return this;
}
@Override
public OAuth2Request accept(String accept) {
return this;
}
@Override
public OAuth2Request timeout(long millisecond, Consumer<OAuth2Request> timeoutCallBack) {
return this;
}
@Override
public OAuth2Response get() {
return responseGetter.apply("get");
}
@Override
public OAuth2Response put() {
return responseGetter.apply("put");
}
@Override
public OAuth2Response post() {
return responseGetter.apply("post");
}
@Override
public OAuth2Response delete() {
return responseGetter.apply("delete");
}
@Override
public OAuth2Response patch() {
return responseGetter.apply("patch");
}
}

View File

@@ -1,71 +0,0 @@
package org.hswebframework.web.service.file.oauth2;
import org.hswebframework.web.authorization.oauth2.client.request.ResponseConvertHandler;
import org.hswebframework.web.authorization.oauth2.client.response.OAuth2Response;
import org.hswebframework.web.authorization.oauth2.client.response.ResponseConvert;
import org.hswebframework.web.authorization.oauth2.client.simple.provider.HswebResponseConvertSupport;
import org.hswebframework.web.authorization.simple.builder.SimpleAuthenticationBuilderFactory;
import org.hswebframework.web.authorization.simple.builder.SimpleDataAccessConfigBuilderFactory;
import org.hswebframework.web.oauth2.core.ErrorType;
import org.springframework.util.StreamUtils;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.function.BiConsumer;
public class MockOAuth2Response implements OAuth2Response {
private InputStream result;
private ResponseConvertHandler handler = new HswebResponseConvertSupport(new SimpleAuthenticationBuilderFactory(new SimpleDataAccessConfigBuilderFactory()));
@Override
public InputStream asStream() {
return result;
}
public MockOAuth2Response(InputStream result) {
this.result = result;
}
@Override
public String asString() {
return new String(asBytes());
}
@Override
public byte[] asBytes() {
try {
return StreamUtils.copyToByteArray(result);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public <T> T as(ResponseConvert<T> convert) {
return convert.convert(this);
}
@Override
public <T> T as(Class<T> type) {
return handler.convert(this, type);
}
@Override
public <T> List<T> asList(Class<T> type) {
return handler.convertList(this, type);
}
@Override
public int status() {
return 200;
}
@Override
public OAuth2Response onError(BiConsumer<OAuth2Response, ErrorType> onError) {
return this;
}
}

View File

@@ -1,111 +0,0 @@
package org.hswebframework.web.service.file.oauth2;
import com.alibaba.fastjson.JSON;
import org.hswebframework.web.authorization.oauth2.client.OAuth2RequestService;
import org.hswebframework.web.authorization.oauth2.client.OAuth2SessionBuilder;
import org.hswebframework.web.authorization.oauth2.client.request.OAuth2Request;
import org.hswebframework.web.authorization.oauth2.client.request.OAuth2Session;
import org.hswebframework.web.commons.entity.PagerResult;
import org.hswebframework.web.controller.message.ResponseMessage;
import org.hswebframework.web.entity.file.FileInfoEntity;
import org.hswebframework.web.entity.file.SimpleFileInfoEntity;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
/**
* @author zhouhao
* @since
*/
@RunWith(MockitoJUnitRunner.class)
public class OAuth2FileServiceTest {
@InjectMocks
private OAuth2FileService fileService = new OAuth2FileService();
@Mock
private OAuth2RequestService auth2RequestService;
@Mock
private OAuth2Session oAuth2Session;
@Before
public void init() {
when(oAuth2Session.request("file/download/test")).thenReturn(
createFixedResponseRequest(
whenRequest("get", new ByteArrayInputStream("test".getBytes())))
);
when(oAuth2Session.request("file/upload")).thenReturn(
createFixedResponseRequest(
whenRequest("post", ResponseMessage.ok(SimpleFileInfoEntity.builder()
.md5("test")
.build()).toString()))
);
when(oAuth2Session.request("file/upload-static")).thenReturn(
createFixedResponseRequest(
whenRequest("post", ResponseMessage.ok("http://file-server/upload/test.png").toString())));
OAuth2SessionBuilder builder = mock(OAuth2SessionBuilder.class);
when(builder.byClientCredentials()).thenReturn(oAuth2Session);
when(auth2RequestService.create(anyString())).thenReturn(builder);
}
@Test
public void uploadTest() throws IOException {
String staticFile = fileService.saveStaticFile(new ByteArrayInputStream("test".getBytes()), "test");
Assert.assertEquals(staticFile, "http://file-server/upload/test.png");
FileInfoEntity entity = fileService.saveFile(new ByteArrayInputStream("test".getBytes()), "test", "text/plain", "admin");
Assert.assertNotNull(entity);
Assert.assertEquals(entity.getMd5(), "test");
}
interface OAuth2MethodRequest {
String getMethod();
InputStream getResponse();
}
public OAuth2MethodRequest whenRequest(String method, String json) {
return whenRequest(method, new ByteArrayInputStream(json.getBytes()));
}
public OAuth2MethodRequest whenRequest(String method, InputStream stream) {
return new OAuth2MethodRequest() {
@Override
public String getMethod() {
return method;
}
@Override
public InputStream getResponse() {
return stream;
}
};
}
private OAuth2Request createFixedResponseRequest(OAuth2MethodRequest... requests) {
return new MockOAuth2Request((method) -> {
for (OAuth2MethodRequest request : requests) {
if (request.getMethod().equals(method)) {
return new MockOAuth2Response(request.getResponse());
}
}
return new MockOAuth2Response(new ByteArrayInputStream(ResponseMessage.error(404, "not found").toString().getBytes()));
});
}
}

View File

@@ -1,21 +0,0 @@
<?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">
<parent>
<artifactId>hsweb-system-file</artifactId>
<groupId>org.hswebframework.web</groupId>
<version>3.0.0-RC-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>hsweb-system-file-service</artifactId>
<packaging>pom</packaging>
<modules>
<module>hsweb-system-file-service-api</module>
<module>hsweb-system-file-service-simple</module>
<module>hsweb-system-file-service-oauth2</module>
</modules>
</project>

View File

@@ -31,20 +31,19 @@
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-system-file-service-simple</artifactId>
<artifactId>hsweb-system-file-local</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-system-file-dao-mybatis</artifactId>
<artifactId>hsweb-system-file-web</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-system-file-controller</artifactId>
<version>${project.version}</version>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>

View File

@@ -9,8 +9,9 @@
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>hsweb-system-file-controller</artifactId>
<artifactId>hsweb-system-file-web</artifactId>
<description>通过SpringMvc实现文件上传,秒传等功能</description>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
@@ -20,7 +21,7 @@
</dependency>
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-system-file-service-api</artifactId>
<artifactId>hsweb-system-file-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>

View File

@@ -12,11 +12,11 @@
<artifactId>hsweb-system-file</artifactId>
<packaging>pom</packaging>
<modules>
<module>hsweb-system-file-service</module>
<module>hsweb-system-file-controller</module>
<module>hsweb-system-file-dao</module>
<module>hsweb-system-file-entity</module>
<module>hsweb-system-file-starter</module>
<module>hsweb-system-file-api</module>
<module>hsweb-system-file-local</module>
<module>hsweb-system-file-web</module>
<module>hsweb-system-file-oauth2</module>
</modules>

View File

@@ -1,15 +0,0 @@
<?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">
<parent>
<artifactId>hsweb-system</artifactId>
<groupId>org.hswebframework.web</groupId>
<version>3.0.0-RC-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>hsweb-system-monitor</artifactId>
</project>