Skip to content

Commit 44041dc

Browse files
committed
1. refactor sql-based datasource plugin
2. make cookies HttpOnly
1 parent cb8e3fb commit 44041dc

File tree

28 files changed

+442
-331
lines changed

28 files changed

+442
-331
lines changed

server/api-service/build-ee.sh

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

server/api-service/build-majiang.sh

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

server/api-service/openblocks-domain/src/main/java/com/openblocks/domain/datasource/service/impl/DatasourceStructureServiceImpl.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import com.openblocks.domain.plugin.DatasourceMetaInfo;
1818
import com.openblocks.domain.plugin.service.DatasourceMetaInfoService;
1919
import com.openblocks.infra.mongo.MongoUpsertHelper;
20+
import com.openblocks.sdk.config.CommonConfig;
2021
import com.openblocks.sdk.exception.BizError;
2122
import com.openblocks.sdk.exception.BizException;
2223
import com.openblocks.sdk.exception.PluginException;
@@ -32,7 +33,8 @@
3233
@Slf4j
3334
public class DatasourceStructureServiceImpl implements DatasourceStructureService {
3435

35-
public static final int GET_STRUCTURE_DEFAULT_TIMEOUT_MILLIS = 8000;
36+
@Autowired
37+
private CommonConfig commonConfig;
3638

3739
@Autowired
3840
private DatasourceService datasourceService;
@@ -98,12 +100,13 @@ private Mono<DatasourceStructure> saveStructure(String datasourceId, DatasourceS
98100
private Mono<DatasourceStructure> getLatestStructure(Datasource datasource,
99101
QueryExecutor<? extends DatasourceConnectionConfig, Object, ? extends QueryExecutionContext> queryExecutor) {
100102

103+
long readStructureTimeout = commonConfig.getQuery().getReadStructureTimeout();
101104
return connectionContextService.getOrCreateConnection(datasource)
102105
.flatMap(connectionContext -> queryExecutor.doGetStructure(connectionContext.connection(), datasource.getDetailConfig())
103-
.timeout(Duration.ofMillis(GET_STRUCTURE_DEFAULT_TIMEOUT_MILLIS))
106+
.timeout(Duration.ofMillis(readStructureTimeout))
104107
.doOnError(connectionContext::onQueryError)
105108
.onErrorMap(TimeoutException.class, e -> new BizException(BizError.PLUGIN_EXECUTION_TIMEOUT, "PLUGIN_EXECUTION_TIMEOUT",
106-
GET_STRUCTURE_DEFAULT_TIMEOUT_MILLIS))
109+
readStructureTimeout))
107110
)
108111
.onErrorMap(e -> {
109112
if (e instanceof PluginException) {

server/api-service/openblocks-domain/src/main/java/com/openblocks/domain/user/service/UserServiceImpl.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.apache.commons.lang3.RandomStringUtils;
2626
import org.apache.commons.lang3.StringUtils;
2727
import org.springframework.beans.factory.annotation.Autowired;
28+
import org.springframework.dao.DuplicateKeyException;
2829
import org.springframework.http.codec.multipart.Part;
2930
import org.springframework.stereotype.Service;
3031
import org.springframework.web.server.ServerWebExchange;
@@ -193,7 +194,13 @@ public Mono<Boolean> bindEmail(User user, String email) {
193194
.build();
194195
user.getConnections().add(connection);
195196
return repository.save(user)
196-
.then(Mono.just(true));
197+
.then(Mono.just(true))
198+
.onErrorResume(throwable -> {
199+
if (throwable instanceof DuplicateKeyException) {
200+
return Mono.error(new BizException(BizError.ALREADY_BIND, "ALREADY_BIND", email, ""));
201+
}
202+
return Mono.error(throwable);
203+
});
197204
}
198205

199206
@Override

server/api-service/openblocks-plugins/oraclePlugin/pom.xml

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,22 @@
3030
<artifactId>ojdbc6</artifactId>
3131
<version>11.2.0.4</version>
3232
</dependency>
33-
<dependency>
34-
<groupId>com.zaxxer</groupId>
35-
<artifactId>HikariCP</artifactId>
36-
<version>5.0.1</version>
37-
<exclusions>
38-
<exclusion>
39-
<groupId>org.slf4j</groupId>
40-
<artifactId>slf4j-api</artifactId>
41-
</exclusion>
42-
</exclusions>
43-
</dependency>
4433
<dependency>
4534
<groupId>org.testcontainers</groupId>
4635
<artifactId>oracle-xe</artifactId>
4736
<version>1.17.3</version>
4837
<scope>test</scope>
4938
</dependency>
39+
<dependency>
40+
<groupId>com.openblocks</groupId>
41+
<artifactId>sqlBasedPlugin</artifactId>
42+
<version>1.0-SNAPSHOT</version>
43+
</dependency>
44+
<dependency>
45+
<groupId>org.assertj</groupId>
46+
<artifactId>assertj-core</artifactId>
47+
<scope>test</scope>
48+
</dependency>
5049
</dependencies>
5150

5251
<build>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package com.openblocks.plugin.oracle;
2+
3+
import static org.apache.commons.lang3.StringUtils.isAllBlank;
4+
import static org.apache.commons.lang3.StringUtils.isBlank;
5+
6+
import java.util.HashSet;
7+
import java.util.Set;
8+
9+
import org.apache.commons.lang3.StringUtils;
10+
import org.pf4j.Extension;
11+
12+
import com.openblocks.plugin.oracle.model.OracleDatasourceConfig;
13+
import com.openblocks.plugin.sql.SqlBasedConnector;
14+
import com.zaxxer.hikari.HikariConfig;
15+
16+
@Extension
17+
public class OracleConnector extends SqlBasedConnector<OracleDatasourceConfig> {
18+
19+
private static final String JDBC_DRIVER = "oracle.jdbc.OracleDriver";
20+
21+
public OracleConnector() {
22+
super(50);
23+
}
24+
25+
@Override
26+
protected String getJdbcDriver() {
27+
return JDBC_DRIVER;
28+
}
29+
30+
@Override
31+
protected void setUpConfigs(OracleDatasourceConfig oracleDatasourceConfig, HikariConfig config) {
32+
33+
config.setDriverClassName(JDBC_DRIVER);
34+
//username & password
35+
if (StringUtils.isNotBlank(oracleDatasourceConfig.getUsername())) {
36+
config.setUsername(oracleDatasourceConfig.getUsername());
37+
}
38+
if (StringUtils.isNotBlank(oracleDatasourceConfig.getPassword())) {
39+
config.setPassword(oracleDatasourceConfig.getPassword());
40+
}
41+
config.setJdbcUrl(oracleDatasourceConfig.getJdbcUrl());
42+
43+
config.setReadOnly(oracleDatasourceConfig.isReadonly());
44+
}
45+
46+
@Override
47+
public Set<String> validateConfig(OracleDatasourceConfig connectionConfig) {
48+
Set<String> validates = new HashSet<>();
49+
if (isBlank(connectionConfig.getJdbcUrl())
50+
&& (isBlank(connectionConfig.getHost()) || isAllBlank(connectionConfig.getSid(), connectionConfig.getServiceName()))) {
51+
validates.add("INVALID_JDBC_URL_CONFIG");
52+
}
53+
return validates;
54+
}
55+
}

0 commit comments

Comments
 (0)