Skip to content

Commit 4fadfa6

Browse files
authored
Merge pull request #218 from lvhuichao/develop
1. fix: fix GUI update command execution failure in view mode 2. feat: move RestApiUriBuilder from restApiPlugin module to openblocks-sdk module and reuse it in graphqlPlugin module 3. fix: remove empty variables and url params from query for graphql
2 parents e7d51de + 900dd19 commit 4fadfa6

46 files changed

Lines changed: 504 additions & 279 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

server/api-service/openblocks-domain/src/main/java/com/openblocks/domain/group/service/GroupMemberServiceImpl.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,5 +93,4 @@ public Mono<List<String>> getNonDynamicUserGroupIdsInOrg(String orgId, String us
9393
.collectList();
9494
}
9595

96-
9796
}

server/api-service/openblocks-domain/src/main/java/com/openblocks/domain/invitation/service/InvitationService.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import org.springframework.context.annotation.Lazy;
88
import org.springframework.stereotype.Service;
99

10-
import com.openblocks.domain.bizthreshold.AbstractBizThresholdChecker;
1110
import com.openblocks.domain.invitation.model.Invitation;
1211
import com.openblocks.domain.invitation.repository.InvitationRepository;
1312
import com.openblocks.domain.organization.model.MemberRole;
@@ -25,9 +24,6 @@ public class InvitationService {
2524
@Autowired
2625
private OrgMemberService orgMemberService;
2726

28-
@Autowired
29-
private AbstractBizThresholdChecker bizThresholdChecker;
30-
3127
@Autowired
3228
private InvitationRepository repository;
3329

@@ -40,9 +36,7 @@ public Mono<Invitation> getById(@Nonnull String invitationId) {
4036
}
4137

4238
public Mono<Boolean> inviteToOrg(String userId, String orgId) {
43-
return bizThresholdChecker.checkMaxOrgCount(userId)
44-
.then(bizThresholdChecker.checkMaxOrgMemberCount(orgId))
45-
.then(orgMemberService.addMember(orgId, userId, MemberRole.MEMBER));
39+
return orgMemberService.addMember(orgId, userId, MemberRole.MEMBER);
4640
}
4741

4842
}

server/api-service/openblocks-domain/src/main/java/com/openblocks/domain/organization/model/MemberRole.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,8 @@ public static MemberRole fromValue(String str) {
3030
return VALUE_MAP.getOrDefault(str, MEMBER);
3131
}
3232

33+
public static boolean isAdmin(String str) {
34+
return ADMIN == fromValue(str);
35+
}
36+
3337
}

server/api-service/openblocks-infra/src/main/java/com/openblocks/infra/event/EventType.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ public enum EventType {
4343
DATA_SOURCE_PERMISSION_GRANT("DATA_SOURCE_PERMISSION_GRANT"),
4444
DATA_SOURCE_PERMISSION_UPDATE("DATA_SOURCE_PERMISSION_UPDATE"),
4545
DATA_SOURCE_PERMISSION_DELETE("DATA_SOURCE_PERMISSION_DELETE"),
46+
47+
// library query
48+
LIBRARY_QUERY_CREATE("LIBRARY_QUERY_CREATE"),
49+
LIBRARY_QUERY_UPDATE("LIBRARY_QUERY_UPDATE"),
50+
LIBRARY_QUERY_DELETE("LIBRARY_QUERY_DELETE"),
51+
LIBRARY_QUERY_PUBLISH("LIBRARY_QUERY_PUBLISH"),
4652
;
4753

4854
private final String desc;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.openblocks.infra.event;
2+
3+
import lombok.Getter;
4+
import lombok.experimental.SuperBuilder;
5+
6+
@Getter
7+
@SuperBuilder
8+
public class LibraryQueryEvent extends AbstractEvent {
9+
10+
private String id;
11+
private String name;
12+
private EventType eventType;
13+
14+
@Override
15+
public EventType getEventType() {
16+
return eventType;
17+
}
18+
}

server/api-service/openblocks-plugins/graphqlPlugin/src/main/java/com/openblocks/plugin/graphql/GraphQLExecutor.java

Lines changed: 10 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
import java.io.IOException;
2323
import java.net.URI;
2424
import java.net.URISyntaxException;
25-
import java.net.URLEncoder;
2625
import java.nio.charset.StandardCharsets;
2726
import java.text.ParseException;
27+
import java.util.HashMap;
2828
import java.util.List;
2929
import java.util.Map;
3030
import java.util.Map.Entry;
@@ -53,7 +53,6 @@
5353
import org.springframework.web.reactive.function.client.ClientResponse;
5454
import org.springframework.web.reactive.function.client.ExchangeStrategies;
5555
import org.springframework.web.reactive.function.client.WebClient;
56-
import org.springframework.web.util.UriComponentsBuilder;
5756

5857
import com.fasterxml.jackson.core.JsonProcessingException;
5958
import com.fasterxml.jackson.databind.JsonNode;
@@ -68,6 +67,7 @@
6867
import com.openblocks.sdk.models.QueryExecutionResult;
6968
import com.openblocks.sdk.plugin.common.QueryExecutionUtils;
7069
import com.openblocks.sdk.plugin.common.QueryExecutor;
70+
import com.openblocks.sdk.plugin.common.RestApiUriBuilder;
7171
import com.openblocks.sdk.plugin.graphql.GraphQLDatasourceConfig;
7272
import com.openblocks.sdk.plugin.restapi.DataUtils;
7373
import com.openblocks.sdk.plugin.restapi.auth.AuthConfig;
@@ -140,8 +140,13 @@ public GraphQLQueryExecutionContext buildQueryExecutionContext(GraphQLDatasource
140140
List<Property> updatedQueryHeaders = renderMustacheValueInProperties(queryHeaders, requestParams);
141141
List<Property> updatedQueryBodyParams = renderMustacheValueInProperties(queryBodyParams, requestParams);
142142
var updatedVariables = JsonUtils.createObjectNode();
143-
queryConfig.getVariables().forEach(property -> updatedVariables.set(property.getKey(),
144-
MustacheHelper.renderMustacheJson(property.getValue(), requestParams)));
143+
queryConfig.getVariables().forEach(property -> {
144+
if (StringUtils.isAllBlank(property.getKey(), property.getValue())) {
145+
return;
146+
}
147+
updatedVariables.set(property.getKey(),
148+
MustacheHelper.renderMustacheJson(property.getValue(), requestParams));
149+
});
145150
String updatedQueryBody = renderMustacheString(queryBody, requestParams);
146151
String normalizedUrl = buildUrl(urlDomain, updatedQueryPath, requestParams);
147152
Map<String, String> allHeaders = buildHeaders(datasourceHeaders, updatedQueryHeaders);
@@ -239,13 +244,7 @@ private List<Property> buildBodyParams(List<Property> datasourceBodyFormData, Li
239244
@Override
240245
public Mono<QueryExecutionResult> executeQuery(Object o, GraphQLQueryExecutionContext context) {
241246
return Mono.defer(() -> {
242-
URI uri;
243-
try {
244-
uri = buildUri(context.getUrl(), context.getUrlParams(), context.isEncodeParams());
245-
} catch (URISyntaxException e) {
246-
return Mono.just(QueryExecutionResult.error(QUERY_ARGUMENT_ERROR, "QUERY_ARGUMENT_ERROR", e));
247-
}
248-
247+
URI uri = RestApiUriBuilder.buildUri(context.getUrl(), new HashMap<>(), context.getUrlParams());
249248
WebClient.Builder webClientBuilder = withSafeHost(builder());
250249

251250
Map<String, String> allHeaders = context.getHeaders();
@@ -291,24 +290,6 @@ public Mono<QueryExecutionResult> executeQuery(Object o, GraphQLQueryExecutionCo
291290
});
292291
}
293292

294-
private URI buildUri(String url, Map<String, String> urlParams, boolean encodeParams) throws URISyntaxException {
295-
String httpUrl = addHttpToUrlWhenPrefixNotPresent(url);
296-
httpUrl = httpUrl.replaceAll("(?<!http:|https:)/{2,}", "/"); // remove redundant "/"
297-
UriComponentsBuilder uriBuilder = UriComponentsBuilder.newInstance();
298-
uriBuilder.uri(new URI(httpUrl));
299-
300-
urlParams.forEach((key, value) -> {
301-
if (encodeParams) {
302-
uriBuilder.queryParam(URLEncoder.encode(key, StandardCharsets.UTF_8),
303-
URLEncoder.encode(value, StandardCharsets.UTF_8)
304-
);
305-
} else {
306-
uriBuilder.queryParam(key, value);
307-
}
308-
});
309-
return uriBuilder.build(true).toUri();
310-
}
311-
312293
private Consumer<MultiValueMap<String, String>> injectCookies(GraphQLQueryExecutionContext request) {
313294
return currentCookies -> {
314295
Set<String> forwardCookies = request.getForwardCookies();

server/api-service/openblocks-plugins/graphqlPlugin/src/main/java/com/openblocks/plugin/graphql/utils/GraphQLBodyUtils.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.HashMap;
44
import java.util.Map;
55

6+
import com.fasterxml.jackson.databind.JsonNode;
67
import com.openblocks.plugin.graphql.model.GraphQLQueryExecutionContext;
78
import com.openblocks.sdk.util.JsonUtils;
89

@@ -15,7 +16,11 @@ public class GraphQLBodyUtils {
1516
public static String convertToGraphQLBody(GraphQLQueryExecutionContext graphQLQueryExecutionContext) {
1617
Map<String, Object> map = new HashMap<>();
1718
map.put(QUERY_KEY, graphQLQueryExecutionContext.getQueryBody());
18-
map.put(VARIABLES_KEY, graphQLQueryExecutionContext.getVariablesParams());
19+
// variables
20+
JsonNode variablesParams = graphQLQueryExecutionContext.getVariablesParams();
21+
if (!variablesParams.isEmpty()) {
22+
map.put(VARIABLES_KEY, graphQLQueryExecutionContext.getVariablesParams());
23+
}
1924
return JsonUtils.toJson(map);
2025
}
2126
}

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,7 @@
7070
<version>1.5</version>
7171
</dependency>
7272

73-
<dependency>
74-
<groupId>org.apache.httpcomponents</groupId>
75-
<artifactId>httpclient</artifactId>
76-
</dependency>
73+
7774

7875
<!-- &lt;!&ndash; https://mvnrepository.com/artifact/io.github.vzhn/netty-http-authenticator &ndash;&gt;-->
7976
<!-- <dependency>-->

server/api-service/openblocks-plugins/restApiPlugin/src/main/java/com/openblocks/plugin/restapi/RestApiExecutor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,14 +85,14 @@
8585
import com.openblocks.plugin.restapi.constants.ResponseDataType;
8686
import com.openblocks.plugin.restapi.helpers.AuthHelper;
8787
import com.openblocks.plugin.restapi.helpers.BufferingFilter;
88-
import com.openblocks.plugin.restapi.helpers.RestApiUriBuilder;
8988
import com.openblocks.plugin.restapi.model.RestApiQueryConfig;
9089
import com.openblocks.plugin.restapi.model.RestApiQueryExecutionContext;
9190
import com.openblocks.sdk.exception.PluginException;
9291
import com.openblocks.sdk.models.Property;
9392
import com.openblocks.sdk.models.QueryExecutionResult;
9493
import com.openblocks.sdk.models.RestBodyFormFileData;
9594
import com.openblocks.sdk.plugin.common.QueryExecutor;
95+
import com.openblocks.sdk.plugin.common.RestApiUriBuilder;
9696
import com.openblocks.sdk.plugin.restapi.DataUtils;
9797
import com.openblocks.sdk.plugin.restapi.MultipartFormData;
9898
import com.openblocks.sdk.plugin.restapi.RestApiDatasourceConfig;

server/api-service/openblocks-plugins/restApiPlugin/src/test/java/com/openblocks/plugin/restapi/RestApiEngineTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
import com.fasterxml.jackson.databind.node.ObjectNode;
2020
import com.fasterxml.jackson.databind.node.TextNode;
2121
import com.google.common.collect.ImmutableMap;
22-
import com.openblocks.plugin.restapi.helpers.RestApiUriBuilder;
2322
import com.openblocks.plugin.restapi.model.RestApiQueryExecutionContext;
2423
import com.openblocks.sdk.models.Property;
2524
import com.openblocks.sdk.models.QueryExecutionResult;
25+
import com.openblocks.sdk.plugin.common.RestApiUriBuilder;
2626
import com.openblocks.sdk.plugin.restapi.RestApiDatasourceConfig;
2727
import com.openblocks.sdk.plugin.restapi.auth.BasicAuthConfig;
2828
import com.openblocks.sdk.query.QueryExecutionContext;

0 commit comments

Comments
 (0)