chore: Remove mongoTemplate in BaseService (#31283)
The `BaseService` keeps references to a `ReactiveMongoTemplate`, a `MongoConverter` and a `Scheduler`. For the first two, they shouldn't be directly used at all in Service classes, that's an abstraction leak. That's what repositories are for. The third one isn't really used anywhere in `BaseService` at all. This PR removes all three of these from `BaseService`.
This commit is contained in:
parent
ac418b389c
commit
d59c8344c7
|
|
@ -31,15 +31,12 @@ import org.apache.commons.lang3.ObjectUtils;
|
|||
import org.bson.types.ObjectId;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.LinkedMultiValueMap;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import org.springframework.util.StringUtils;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -69,10 +66,7 @@ public class ActionCollectionServiceCEImpl extends BaseService<ActionCollectionR
|
|||
|
||||
@Autowired
|
||||
public ActionCollectionServiceCEImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
ActionCollectionRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
NewActionService newActionService,
|
||||
|
|
@ -83,7 +77,7 @@ public class ActionCollectionServiceCEImpl extends BaseService<ActionCollectionR
|
|||
ActionPermission actionPermission,
|
||||
DefaultResourcesService<ActionCollection> defaultResourcesService) {
|
||||
|
||||
super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository, analyticsService);
|
||||
super(validator, repository, analyticsService);
|
||||
this.newActionService = newActionService;
|
||||
this.policyGenerator = policyGenerator;
|
||||
this.applicationService = applicationService;
|
||||
|
|
|
|||
|
|
@ -12,20 +12,14 @@ import com.appsmith.server.solutions.ActionPermission;
|
|||
import com.appsmith.server.solutions.ApplicationPermission;
|
||||
import jakarta.validation.Validator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ActionCollectionServiceImpl extends ActionCollectionServiceCEImpl implements ActionCollectionService {
|
||||
|
||||
public ActionCollectionServiceImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
ActionCollectionRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
NewActionService newActionService,
|
||||
|
|
@ -36,10 +30,7 @@ public class ActionCollectionServiceImpl extends ActionCollectionServiceCEImpl i
|
|||
ActionPermission actionPermission,
|
||||
DefaultResourcesService<ActionCollection> defaultResourcesService) {
|
||||
super(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
analyticsService,
|
||||
newActionService,
|
||||
|
|
|
|||
|
|
@ -50,15 +50,12 @@ import lombok.extern.slf4j.Slf4j;
|
|||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.dao.DuplicateKeyException;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.http.codec.multipart.Part;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import org.springframework.util.StringUtils;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -99,10 +96,7 @@ public class ApplicationServiceCEImpl extends BaseService<ApplicationRepository,
|
|||
|
||||
@Autowired
|
||||
public ApplicationServiceCEImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
ApplicationRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
PolicySolution policySolution,
|
||||
|
|
@ -118,7 +112,7 @@ public class ApplicationServiceCEImpl extends BaseService<ApplicationRepository,
|
|||
WorkspaceService workspaceService,
|
||||
WorkspacePermission workspacePermission) {
|
||||
|
||||
super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository, analyticsService);
|
||||
super(validator, repository, analyticsService);
|
||||
this.policySolution = policySolution;
|
||||
this.configService = configService;
|
||||
this.responseUtils = responseUtils;
|
||||
|
|
|
|||
|
|
@ -17,20 +17,14 @@ import com.appsmith.server.solutions.PolicySolution;
|
|||
import com.appsmith.server.solutions.WorkspacePermission;
|
||||
import jakarta.validation.Validator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class ApplicationServiceImpl extends ApplicationServiceCECompatibleImpl implements ApplicationService {
|
||||
|
||||
public ApplicationServiceImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
ApplicationRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
PolicySolution policySolution,
|
||||
|
|
@ -47,10 +41,7 @@ public class ApplicationServiceImpl extends ApplicationServiceCECompatibleImpl i
|
|||
WorkspacePermission workspacePermission) {
|
||||
|
||||
super(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
analyticsService,
|
||||
policySolution,
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import org.bson.types.ObjectId;
|
|||
import org.springframework.data.mongodb.core.query.Criteria;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public class Bridge extends Criteria {
|
||||
|
|
@ -27,6 +28,11 @@ public class Bridge extends Criteria {
|
|||
return this;
|
||||
}
|
||||
|
||||
public Bridge in(@NonNull String key, @NonNull Collection<String> value) {
|
||||
criteriaList.add(Criteria.where(key).in(value));
|
||||
return this;
|
||||
}
|
||||
|
||||
public Bridge exists(@NonNull String key) {
|
||||
criteriaList.add(Criteria.where(key).exists(true));
|
||||
return this;
|
||||
|
|
|
|||
|
|
@ -11,11 +11,8 @@ import com.appsmith.server.services.BaseService;
|
|||
import jakarta.validation.Validator;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
|
@ -30,14 +27,11 @@ public class CustomJSLibServiceCEImpl extends BaseService<CustomJSLibRepository,
|
|||
protected final ContextBasedJsLibService<Application> applicationContextBasedJsLibService;
|
||||
|
||||
public CustomJSLibServiceCEImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
CustomJSLibRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
ContextBasedJsLibService<Application> applicationContextBasedJsLibService) {
|
||||
super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository, analyticsService);
|
||||
super(validator, repository, analyticsService);
|
||||
this.applicationContextBasedJsLibService = applicationContextBasedJsLibService;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,29 +6,16 @@ import com.appsmith.server.repositories.CustomJSLibRepository;
|
|||
import com.appsmith.server.services.AnalyticsService;
|
||||
import jakarta.validation.Validator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class CustomJSLibServiceImpl extends CustomJSLibServiceCEImpl implements CustomJSLibService {
|
||||
public CustomJSLibServiceImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
CustomJSLibRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
ContextBasedJsLibService<Application> applicationContextBasedJsLibService) {
|
||||
super(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
analyticsService,
|
||||
applicationContextBasedJsLibService);
|
||||
super(validator, repository, analyticsService, applicationContextBasedJsLibService);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,8 +62,6 @@ import lombok.extern.slf4j.Slf4j;
|
|||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.bson.types.ObjectId;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.LinkedCaseInsensitiveMap;
|
||||
import org.springframework.util.LinkedMultiValueMap;
|
||||
|
|
@ -72,7 +70,6 @@ import org.springframework.util.StringUtils;
|
|||
import reactor.core.observability.micrometer.Micrometer;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
import reactor.util.function.Tuple2;
|
||||
|
||||
import java.time.Instant;
|
||||
|
|
@ -135,10 +132,7 @@ public class NewActionServiceCEImpl extends BaseService<NewActionRepository, New
|
|||
private final DefaultResourcesService<ActionDTO> dtoDefaultResourcesService;
|
||||
|
||||
public NewActionServiceCEImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
NewActionRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
DatasourceService datasourceService,
|
||||
|
|
@ -161,7 +155,7 @@ public class NewActionServiceCEImpl extends BaseService<NewActionRepository, New
|
|||
DefaultResourcesService<NewAction> defaultResourcesService,
|
||||
DefaultResourcesService<ActionDTO> dtoDefaultResourcesService) {
|
||||
|
||||
super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository, analyticsService);
|
||||
super(validator, repository, analyticsService);
|
||||
this.repository = repository;
|
||||
this.datasourceService = datasourceService;
|
||||
this.pluginService = pluginService;
|
||||
|
|
|
|||
|
|
@ -24,20 +24,14 @@ import com.appsmith.server.validations.EntityValidationService;
|
|||
import io.micrometer.observation.ObservationRegistry;
|
||||
import jakarta.validation.Validator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class NewActionServiceImpl extends NewActionServiceCEImpl implements NewActionService {
|
||||
|
||||
public NewActionServiceImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
NewActionRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
DatasourceService datasourceService,
|
||||
|
|
@ -60,10 +54,7 @@ public class NewActionServiceImpl extends NewActionServiceCEImpl implements NewA
|
|||
DefaultResourcesService<NewAction> defaultResourcesService,
|
||||
DefaultResourcesService<ActionDTO> dtoDefaultResourcesService) {
|
||||
super(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
analyticsService,
|
||||
datasourceService,
|
||||
|
|
|
|||
|
|
@ -30,13 +30,10 @@ import net.minidev.json.parser.JSONParser;
|
|||
import net.minidev.json.parser.ParseException;
|
||||
import org.bson.types.ObjectId;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
|
@ -64,10 +61,7 @@ public class NewPageServiceCEImpl extends BaseService<NewPageRepository, NewPage
|
|||
|
||||
@Autowired
|
||||
public NewPageServiceCEImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
NewPageRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
ApplicationService applicationService,
|
||||
|
|
@ -76,7 +70,7 @@ public class NewPageServiceCEImpl extends BaseService<NewPageRepository, NewPage
|
|||
ApplicationPermission applicationPermission,
|
||||
PagePermission pagePermission,
|
||||
ApplicationSnapshotRepository applicationSnapshotRepository) {
|
||||
super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository, analyticsService);
|
||||
super(validator, repository, analyticsService);
|
||||
this.applicationService = applicationService;
|
||||
this.userDataService = userDataService;
|
||||
this.responseUtils = responseUtils;
|
||||
|
|
|
|||
|
|
@ -10,20 +10,14 @@ import com.appsmith.server.solutions.ApplicationPermission;
|
|||
import com.appsmith.server.solutions.PagePermission;
|
||||
import jakarta.validation.Validator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class NewPageServiceImpl extends NewPageServiceCEImpl implements NewPageService {
|
||||
|
||||
public NewPageServiceImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
NewPageRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
ApplicationService applicationService,
|
||||
|
|
@ -34,10 +28,7 @@ public class NewPageServiceImpl extends NewPageServiceCEImpl implements NewPageS
|
|||
ApplicationSnapshotRepository applicationSnapshotRepository) {
|
||||
|
||||
super(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
analyticsService,
|
||||
applicationService,
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import com.appsmith.server.dtos.PluginWorkspaceDTO;
|
|||
import com.appsmith.server.dtos.WorkspacePluginStatus;
|
||||
import com.appsmith.server.exceptions.AppsmithError;
|
||||
import com.appsmith.server.exceptions.AppsmithException;
|
||||
import com.appsmith.server.helpers.ce.bridge.Bridge;
|
||||
import com.appsmith.server.repositories.PluginRepository;
|
||||
import com.appsmith.server.services.AnalyticsService;
|
||||
import com.appsmith.server.services.BaseService;
|
||||
|
|
@ -29,10 +30,6 @@ import org.pf4j.PluginManager;
|
|||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.data.mongodb.core.query.Criteria;
|
||||
import org.springframework.data.mongodb.core.query.Query;
|
||||
import org.springframework.data.redis.core.ReactiveRedisTemplate;
|
||||
import org.springframework.data.redis.listener.ChannelTopic;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
|
|
@ -41,7 +38,6 @@ import org.springframework.util.StringUtils;
|
|||
import reactor.core.Exceptions;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
|
|
@ -59,6 +55,8 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.appsmith.server.helpers.ce.bridge.Bridge.bridge;
|
||||
|
||||
@Slf4j
|
||||
public class PluginServiceCEImpl extends BaseService<PluginRepository, Plugin, String> implements PluginServiceCE {
|
||||
|
||||
|
|
@ -93,10 +91,7 @@ public class PluginServiceCEImpl extends BaseService<PluginRepository, Plugin, S
|
|||
|
||||
@Autowired
|
||||
public PluginServiceCEImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
PluginRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
WorkspaceService workspaceService,
|
||||
|
|
@ -104,7 +99,7 @@ public class PluginServiceCEImpl extends BaseService<PluginRepository, Plugin, S
|
|||
ReactiveRedisTemplate<String, String> reactiveTemplate,
|
||||
ChannelTopic topic,
|
||||
ObjectMapper objectMapper) {
|
||||
super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository, analyticsService);
|
||||
super(validator, repository, analyticsService);
|
||||
this.workspaceService = workspaceService;
|
||||
this.pluginManager = pluginManager;
|
||||
this.reactiveTemplate = reactiveTemplate;
|
||||
|
|
@ -136,20 +131,20 @@ public class PluginServiceCEImpl extends BaseService<PluginRepository, Plugin, S
|
|||
List<String> pluginIds = org.getPlugins().stream()
|
||||
.map(WorkspacePlugin::getPluginId)
|
||||
.collect(Collectors.toList());
|
||||
Query query = new Query();
|
||||
query.addCriteria(Criteria.where(FieldName.ID).in(pluginIds));
|
||||
final Bridge criteria = bridge().in(FieldName.ID, pluginIds);
|
||||
|
||||
if (params.getFirst(FieldName.TYPE) != null) {
|
||||
final String typeString = params.getFirst(FieldName.TYPE);
|
||||
if (typeString != null) {
|
||||
try {
|
||||
PluginType pluginType = PluginType.valueOf(params.getFirst(FieldName.TYPE));
|
||||
query.addCriteria(Criteria.where(FieldName.TYPE).is(pluginType));
|
||||
PluginType.valueOf(typeString); // Check if the type is valid
|
||||
criteria.equal(FieldName.TYPE, typeString);
|
||||
} catch (IllegalArgumentException e) {
|
||||
log.error("No plugins for type : {}", params.getFirst(FieldName.TYPE));
|
||||
log.error("No plugins for type : {}", typeString);
|
||||
return Flux.empty();
|
||||
}
|
||||
}
|
||||
|
||||
return mongoTemplate.find(query, Plugin.class);
|
||||
return repository.queryBuilder().criteria(criteria).all();
|
||||
})
|
||||
.flatMap(plugin ->
|
||||
getTemplates(plugin).doOnSuccess(plugin::setTemplates).thenReturn(plugin));
|
||||
|
|
|
|||
|
|
@ -7,22 +7,16 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|||
import jakarta.validation.Validator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.pf4j.PluginManager;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.data.redis.core.ReactiveRedisTemplate;
|
||||
import org.springframework.data.redis.listener.ChannelTopic;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class PluginServiceImpl extends PluginServiceCEImpl implements PluginService {
|
||||
|
||||
public PluginServiceImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
PluginRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
WorkspaceService workspaceService,
|
||||
|
|
@ -32,10 +26,7 @@ public class PluginServiceImpl extends PluginServiceCEImpl implements PluginServ
|
|||
ObjectMapper objectMapper) {
|
||||
|
||||
super(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
analyticsService,
|
||||
workspaceService,
|
||||
|
|
|
|||
|
|
@ -296,6 +296,23 @@ public abstract class BaseAppsmithRepositoryCEImpl<T extends BaseDomain> {
|
|||
this.genericDomain)));
|
||||
}
|
||||
|
||||
public Mono<Integer> updateExecute(@NonNull QueryAllParams<T> params, @NonNull T resource) {
|
||||
final Update update = new Update();
|
||||
|
||||
// In case the update is not used to update the policies, then set the policies to null to ensure that the
|
||||
// existing policies are not overwritten.
|
||||
if (resource.getPolicies().isEmpty()) {
|
||||
resource.setPolicies(null);
|
||||
}
|
||||
|
||||
final Map<String, Object> updateMap = getDbObject(resource).toMap();
|
||||
for (Map.Entry<String, Object> entry : updateMap.entrySet()) {
|
||||
update.set(entry.getKey(), entry.getValue());
|
||||
}
|
||||
|
||||
return updateExecute(params, update);
|
||||
}
|
||||
|
||||
public Mono<Integer> updateExecute(@NonNull QueryAllParams<T> params, @NonNull UpdateDefinition update) {
|
||||
Objects.requireNonNull(params.getCriteria());
|
||||
|
||||
|
|
@ -316,7 +333,7 @@ public abstract class BaseAppsmithRepositoryCEImpl<T extends BaseDomain> {
|
|||
return Mono.error(new AppsmithException(AppsmithError.INVALID_PARAMETER, "scope"));
|
||||
}
|
||||
}))
|
||||
.map(updateResult -> Math.toIntExact(updateResult.getModifiedCount()));
|
||||
.map(updateResult -> Math.toIntExact(updateResult.getMatchedCount()));
|
||||
}
|
||||
|
||||
public Mono<T> updateExecuteAndFind(@NonNull QueryAllParams<T> params, @NonNull UpdateDefinition update) {
|
||||
|
|
|
|||
|
|
@ -66,6 +66,11 @@ public class QueryAllParams<T extends BaseDomain> {
|
|||
return repo.updateExecute(this, update);
|
||||
}
|
||||
|
||||
public Mono<Integer> updateFirst(@NonNull T resource) {
|
||||
scope = Scope.FIRST;
|
||||
return repo.updateExecute(this, resource);
|
||||
}
|
||||
|
||||
public Mono<Integer> updateFirst(@NonNull UpdateDefinition update) {
|
||||
scope = Scope.FIRST;
|
||||
return repo.updateExecute(this, update);
|
||||
|
|
|
|||
|
|
@ -8,21 +8,15 @@ import com.appsmith.server.exceptions.AppsmithError;
|
|||
import com.appsmith.server.exceptions.AppsmithException;
|
||||
import com.appsmith.server.repositories.AppsmithRepository;
|
||||
import com.appsmith.server.repositories.BaseRepository;
|
||||
import com.mongodb.BasicDBObject;
|
||||
import com.mongodb.DBObject;
|
||||
import jakarta.validation.Validator;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.data.mongodb.core.query.Criteria;
|
||||
import org.springframework.data.mongodb.core.query.Query;
|
||||
import org.springframework.data.mongodb.core.query.Update;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.Instant;
|
||||
|
|
@ -34,42 +28,23 @@ import java.util.function.Function;
|
|||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.appsmith.server.helpers.ce.bridge.Bridge.bridge;
|
||||
import static java.util.stream.Collectors.toSet;
|
||||
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public abstract class BaseService<
|
||||
R extends BaseRepository<T, ID> & AppsmithRepository<T>, T extends BaseDomain, ID extends Serializable>
|
||||
implements CrudService<T, ID> {
|
||||
|
||||
final Scheduler scheduler;
|
||||
|
||||
protected final MongoConverter mongoConverter;
|
||||
|
||||
protected final ReactiveMongoTemplate mongoTemplate;
|
||||
protected final Validator validator;
|
||||
|
||||
protected final R repository;
|
||||
|
||||
protected final Validator validator;
|
||||
|
||||
protected final AnalyticsService analyticsService;
|
||||
|
||||
private static final String ENTITY_FIELDS = "entity_fields";
|
||||
|
||||
public BaseService(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
R repository,
|
||||
AnalyticsService analyticsService) {
|
||||
this.scheduler = scheduler;
|
||||
this.validator = validator;
|
||||
this.mongoConverter = mongoConverter;
|
||||
this.mongoTemplate = reactiveMongoTemplate;
|
||||
this.repository = repository;
|
||||
this.analyticsService = analyticsService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<T> update(ID id, T resource) {
|
||||
return update(id, resource, "id");
|
||||
|
|
@ -80,24 +55,14 @@ public abstract class BaseService<
|
|||
return Mono.error(new AppsmithException(AppsmithError.INVALID_PARAMETER, FieldName.ID));
|
||||
}
|
||||
|
||||
Query query = new Query(Criteria.where(key).is(id));
|
||||
|
||||
// In case the update is not used to update the policies, then set the policies to null to ensure that the
|
||||
// existing policies are not overwritten.
|
||||
if (resource.getPolicies().isEmpty()) {
|
||||
resource.setPolicies(null);
|
||||
}
|
||||
|
||||
resource.setUpdatedAt(Instant.now());
|
||||
|
||||
DBObject update = getDbObject(resource);
|
||||
|
||||
Update updateObj = new Update();
|
||||
Map<String, Object> updateMap = update.toMap();
|
||||
updateMap.entrySet().stream().forEach(entry -> updateObj.set(entry.getKey(), entry.getValue()));
|
||||
|
||||
return mongoTemplate
|
||||
.updateFirst(query, updateObj, resource.getClass())
|
||||
// TODO(Shri): update happens with `key=id` and find happens with `id=id` criteria. This is incorrect, but is
|
||||
// too fragile to touch right now. Need to dig in slow and deep to fix this.
|
||||
return repository
|
||||
.queryBuilder()
|
||||
.criteria(bridge().equal(key, (String) id))
|
||||
.updateFirst(resource)
|
||||
.flatMap(obj -> repository.findById(id))
|
||||
.flatMap(savedResource ->
|
||||
analyticsService.sendUpdateEvent(savedResource, getAnalyticsProperties(savedResource)));
|
||||
|
|
@ -150,12 +115,6 @@ public abstract class BaseService<
|
|||
analyticsService.sendCreateEvent(savedResource, getAnalyticsProperties(savedResource)));
|
||||
}
|
||||
|
||||
protected DBObject getDbObject(Object o) {
|
||||
BasicDBObject basicDBObject = new BasicDBObject();
|
||||
mongoConverter.write(o, basicDBObject);
|
||||
return basicDBObject;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<T> archiveById(ID id) {
|
||||
return Mono.error(new AppsmithException(AppsmithError.UNSUPPORTED_OPERATION));
|
||||
|
|
|
|||
|
|
@ -4,23 +4,14 @@ import com.appsmith.server.repositories.CollectionRepository;
|
|||
import com.appsmith.server.services.ce.CollectionServiceCEImpl;
|
||||
import jakarta.validation.Validator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class CollectionServiceImpl extends CollectionServiceCEImpl implements CollectionService {
|
||||
|
||||
public CollectionServiceImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
CollectionRepository repository,
|
||||
AnalyticsService analyticsService) {
|
||||
|
||||
super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository, analyticsService);
|
||||
Validator validator, CollectionRepository repository, AnalyticsService analyticsService) {
|
||||
super(validator, repository, analyticsService);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,20 +7,14 @@ import com.appsmith.server.services.ce_compatible.PermissionGroupServiceCECompat
|
|||
import com.appsmith.server.solutions.PermissionGroupPermission;
|
||||
import com.appsmith.server.solutions.PolicySolution;
|
||||
import jakarta.validation.Validator;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
@Service
|
||||
public class PermissionGroupServiceImpl extends PermissionGroupServiceCECompatibleImpl
|
||||
implements PermissionGroupService {
|
||||
|
||||
public PermissionGroupServiceImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
PermissionGroupRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
SessionUserService sessionUserService,
|
||||
|
|
@ -31,10 +25,7 @@ public class PermissionGroupServiceImpl extends PermissionGroupServiceCECompatib
|
|||
PermissionGroupPermission permissionGroupPermission) {
|
||||
|
||||
super(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
analyticsService,
|
||||
sessionUserService,
|
||||
|
|
|
|||
|
|
@ -6,8 +6,6 @@ import com.appsmith.server.services.ce.TenantServiceCEImpl;
|
|||
import com.appsmith.server.solutions.EnvManager;
|
||||
import jakarta.validation.Validator;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
|
|
@ -17,22 +15,11 @@ public class TenantServiceImpl extends TenantServiceCEImpl implements TenantServ
|
|||
public TenantServiceImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
TenantRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
ConfigService configService,
|
||||
@Lazy EnvManager envManager,
|
||||
FeatureFlagMigrationHelper featureFlagMigrationHelper) {
|
||||
super(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
analyticsService,
|
||||
configService,
|
||||
envManager,
|
||||
featureFlagMigrationHelper);
|
||||
super(validator, repository, analyticsService, configService, envManager, featureFlagMigrationHelper);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,19 +7,13 @@ import com.appsmith.server.services.ce.UserDataServiceCEImpl;
|
|||
import com.appsmith.server.solutions.ReleaseNotesService;
|
||||
import com.appsmith.server.solutions.UserChangedHandler;
|
||||
import jakarta.validation.Validator;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
@Service
|
||||
public class UserDataServiceImpl extends UserDataServiceCEImpl implements UserDataService {
|
||||
|
||||
public UserDataServiceImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
UserDataRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
UserRepository userRepository,
|
||||
|
|
@ -32,10 +26,7 @@ public class UserDataServiceImpl extends UserDataServiceCEImpl implements UserDa
|
|||
TenantService tenantService) {
|
||||
|
||||
super(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
analyticsService,
|
||||
userRepository,
|
||||
|
|
|
|||
|
|
@ -16,21 +16,15 @@ import com.appsmith.server.solutions.PolicySolution;
|
|||
import com.appsmith.server.solutions.UserChangedHandler;
|
||||
import jakarta.validation.Validator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class UserServiceImpl extends UserServiceCECompatibleImpl implements UserService {
|
||||
|
||||
public UserServiceImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
UserRepository repository,
|
||||
WorkspaceService workspaceService,
|
||||
AnalyticsService analyticsService,
|
||||
|
|
@ -54,10 +48,7 @@ public class UserServiceImpl extends UserServiceCECompatibleImpl implements User
|
|||
PACConfigurationService pacConfigurationService,
|
||||
UserServiceHelper userServiceHelper) {
|
||||
super(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
workspaceService,
|
||||
analyticsService,
|
||||
|
|
|
|||
|
|
@ -12,20 +12,14 @@ import com.appsmith.server.solutions.WorkspacePermission;
|
|||
import jakarta.validation.Validator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.modelmapper.ModelMapper;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class WorkspaceServiceImpl extends WorkspaceServiceCEImpl implements WorkspaceService {
|
||||
|
||||
public WorkspaceServiceImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
WorkspaceRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
PluginRepository pluginRepository,
|
||||
|
|
@ -41,10 +35,7 @@ public class WorkspaceServiceImpl extends WorkspaceServiceCEImpl implements Work
|
|||
WorkspaceServiceHelper workspaceServiceHelper) {
|
||||
|
||||
super(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
analyticsService,
|
||||
pluginRepository,
|
||||
|
|
|
|||
|
|
@ -11,10 +11,7 @@ import com.appsmith.server.services.AnalyticsService;
|
|||
import com.appsmith.server.services.BaseService;
|
||||
import jakarta.validation.Validator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -25,13 +22,8 @@ public class CollectionServiceCEImpl extends BaseService<CollectionRepository, C
|
|||
implements CollectionServiceCE {
|
||||
|
||||
public CollectionServiceCEImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
CollectionRepository repository,
|
||||
AnalyticsService analyticsService) {
|
||||
super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository, analyticsService);
|
||||
Validator validator, CollectionRepository repository, AnalyticsService analyticsService) {
|
||||
super(validator, repository, analyticsService);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -22,13 +22,10 @@ import com.appsmith.server.solutions.PermissionGroupPermission;
|
|||
import com.appsmith.server.solutions.PolicySolution;
|
||||
import jakarta.validation.Validator;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.data.mongodb.core.query.Update;
|
||||
import org.springframework.util.StringUtils;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
|
@ -55,10 +52,7 @@ public class PermissionGroupServiceCEImpl extends BaseService<PermissionGroupRep
|
|||
private PermissionGroup publicPermissionGroup = null;
|
||||
|
||||
public PermissionGroupServiceCEImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
PermissionGroupRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
SessionUserService sessionUserService,
|
||||
|
|
@ -68,7 +62,7 @@ public class PermissionGroupServiceCEImpl extends BaseService<PermissionGroupRep
|
|||
ConfigRepository configRepository,
|
||||
PermissionGroupPermission permissionGroupPermission) {
|
||||
|
||||
super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository, analyticsService);
|
||||
super(validator, repository, analyticsService);
|
||||
this.sessionUserService = sessionUserService;
|
||||
this.tenantService = tenantService;
|
||||
this.userRepository = userRepository;
|
||||
|
|
|
|||
|
|
@ -20,11 +20,8 @@ import com.appsmith.server.solutions.EnvManager;
|
|||
import jakarta.validation.Validator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.util.StringUtils;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -43,16 +40,13 @@ public class TenantServiceCEImpl extends BaseService<TenantRepository, Tenant, S
|
|||
private final FeatureFlagMigrationHelper featureFlagMigrationHelper;
|
||||
|
||||
public TenantServiceCEImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
TenantRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
ConfigService configService,
|
||||
@Lazy EnvManager envManager,
|
||||
FeatureFlagMigrationHelper featureFlagMigrationHelper) {
|
||||
super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository, analyticsService);
|
||||
super(validator, repository, analyticsService);
|
||||
this.configService = configService;
|
||||
this.envManager = envManager;
|
||||
this.featureFlagMigrationHelper = featureFlagMigrationHelper;
|
||||
|
|
|
|||
|
|
@ -23,20 +23,13 @@ import com.appsmith.server.services.SessionUserService;
|
|||
import com.appsmith.server.services.TenantService;
|
||||
import com.appsmith.server.solutions.ReleaseNotesService;
|
||||
import com.appsmith.server.solutions.UserChangedHandler;
|
||||
import com.mongodb.DBObject;
|
||||
import jakarta.validation.Validator;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.data.mongodb.core.query.Criteria;
|
||||
import org.springframework.data.mongodb.core.query.Query;
|
||||
import org.springframework.data.mongodb.core.query.Update;
|
||||
import org.springframework.http.codec.multipart.Part;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.server.ServerWebExchange;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
import reactor.util.function.Tuple2;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -45,6 +38,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
|
||||
import static com.appsmith.server.constants.ce.FieldNameCE.DEFAULT;
|
||||
import static com.appsmith.server.helpers.ce.bridge.Bridge.bridge;
|
||||
|
||||
public class UserDataServiceCEImpl extends BaseService<UserDataRepository, UserData, String>
|
||||
implements UserDataServiceCE {
|
||||
|
|
@ -73,10 +67,7 @@ public class UserDataServiceCEImpl extends BaseService<UserDataRepository, UserD
|
|||
|
||||
@Autowired
|
||||
public UserDataServiceCEImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
UserDataRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
UserRepository userRepository,
|
||||
|
|
@ -87,7 +78,7 @@ public class UserDataServiceCEImpl extends BaseService<UserDataRepository, UserD
|
|||
UserChangedHandler userChangedHandler,
|
||||
ApplicationRepository applicationRepository,
|
||||
TenantService tenantService) {
|
||||
super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository, analyticsService);
|
||||
super(validator, repository, analyticsService);
|
||||
this.userRepository = userRepository;
|
||||
this.releaseNotesService = releaseNotesService;
|
||||
this.assetService = assetService;
|
||||
|
|
@ -159,24 +150,11 @@ public class UserDataServiceCEImpl extends BaseService<UserDataRepository, UserD
|
|||
return Mono.error(new AppsmithException(AppsmithError.INVALID_PARAMETER, UserData.Fields.userId));
|
||||
}
|
||||
|
||||
Query query = new Query(Criteria.where(UserData.Fields.userId).is(userId));
|
||||
|
||||
// In case the update is not used to update the policies, then set the policies to null to ensure that the
|
||||
// existing policies are not overwritten.
|
||||
if (resource.getPolicies().isEmpty()) {
|
||||
resource.setPolicies(null);
|
||||
}
|
||||
|
||||
DBObject update = getDbObject(resource);
|
||||
|
||||
Update updateObj = new Update();
|
||||
Map<String, Object> updateMap = update.toMap();
|
||||
updateMap.entrySet().stream().forEach(entry -> updateObj.set(entry.getKey(), entry.getValue()));
|
||||
|
||||
return mongoTemplate
|
||||
.updateFirst(query, updateObj, resource.getClass())
|
||||
.flatMap(updateResult ->
|
||||
updateResult.getMatchedCount() == 0 ? Mono.empty() : repository.findByUserId(userId))
|
||||
return repository
|
||||
.queryBuilder()
|
||||
.criteria(bridge().equal(UserData.Fields.userId, userId))
|
||||
.updateFirst(resource)
|
||||
.flatMap(count -> count == 0 ? Mono.empty() : repository.findByUserId(userId))
|
||||
.flatMap(analyticsService::sendUpdateEvent);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -44,8 +44,6 @@ import org.apache.http.NameValuePair;
|
|||
import org.apache.http.client.utils.URLEncodedUtils;
|
||||
import org.apache.http.message.BasicNameValuePair;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.context.ReactiveSecurityContextHolder;
|
||||
|
|
@ -62,7 +60,6 @@ import org.springframework.web.server.WebFilterChain;
|
|||
import org.springframework.web.server.WebSession;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
import reactor.core.scheduler.Schedulers;
|
||||
|
||||
import java.net.URI;
|
||||
|
|
@ -123,10 +120,7 @@ public class UserServiceCEImpl extends BaseService<UserRepository, User, String>
|
|||
|
||||
@Autowired
|
||||
public UserServiceCEImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
UserRepository repository,
|
||||
WorkspaceService workspaceService,
|
||||
AnalyticsService analyticsService,
|
||||
|
|
@ -145,7 +139,7 @@ public class UserServiceCEImpl extends BaseService<UserRepository, User, String>
|
|||
PACConfigurationService pacConfigurationService,
|
||||
UserServiceHelper userServiceHelper) {
|
||||
|
||||
super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository, analyticsService);
|
||||
super(validator, repository, analyticsService);
|
||||
this.workspaceService = workspaceService;
|
||||
this.sessionUserService = sessionUserService;
|
||||
this.passwordResetTokenRepository = passwordResetTokenRepository;
|
||||
|
|
|
|||
|
|
@ -35,15 +35,12 @@ import lombok.extern.slf4j.Slf4j;
|
|||
import org.modelmapper.ModelMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.http.codec.multipart.Part;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import org.springframework.util.StringUtils;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
|
@ -88,10 +85,7 @@ public class WorkspaceServiceCEImpl extends BaseService<WorkspaceRepository, Wor
|
|||
|
||||
@Autowired
|
||||
public WorkspaceServiceCEImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
WorkspaceRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
PluginRepository pluginRepository,
|
||||
|
|
@ -106,7 +100,7 @@ public class WorkspaceServiceCEImpl extends BaseService<WorkspaceRepository, Wor
|
|||
PermissionGroupPermission permissionGroupPermission,
|
||||
WorkspaceServiceHelper workspaceServiceHelper) {
|
||||
|
||||
super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository, analyticsService);
|
||||
super(validator, repository, analyticsService);
|
||||
this.pluginRepository = pluginRepository;
|
||||
this.sessionUserService = sessionUserService;
|
||||
this.assetRepository = assetRepository;
|
||||
|
|
|
|||
|
|
@ -16,19 +16,13 @@ import com.appsmith.server.solutions.DatasourcePermission;
|
|||
import com.appsmith.server.solutions.PolicySolution;
|
||||
import com.appsmith.server.solutions.WorkspacePermission;
|
||||
import jakarta.validation.Validator;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
@Service
|
||||
public class ApplicationServiceCECompatibleImpl extends ApplicationServiceCEImpl
|
||||
implements ApplicationServiceCECompatible {
|
||||
public ApplicationServiceCECompatibleImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
ApplicationRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
PolicySolution policySolution,
|
||||
|
|
@ -44,10 +38,7 @@ public class ApplicationServiceCECompatibleImpl extends ApplicationServiceCEImpl
|
|||
WorkspaceService workspaceService,
|
||||
WorkspacePermission workspacePermission) {
|
||||
super(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
analyticsService,
|
||||
policySolution,
|
||||
|
|
|
|||
|
|
@ -10,19 +10,13 @@ import com.appsmith.server.services.ce.PermissionGroupServiceCEImpl;
|
|||
import com.appsmith.server.solutions.PermissionGroupPermission;
|
||||
import com.appsmith.server.solutions.PolicySolution;
|
||||
import jakarta.validation.Validator;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
@Service
|
||||
public class PermissionGroupServiceCECompatibleImpl extends PermissionGroupServiceCEImpl
|
||||
implements PermissionGroupServiceCECompatible {
|
||||
public PermissionGroupServiceCECompatibleImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
PermissionGroupRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
SessionUserService sessionUserService,
|
||||
|
|
@ -32,10 +26,7 @@ public class PermissionGroupServiceCECompatibleImpl extends PermissionGroupServi
|
|||
ConfigRepository configRepository,
|
||||
PermissionGroupPermission permissionGroupPermission) {
|
||||
super(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
analyticsService,
|
||||
sessionUserService,
|
||||
|
|
|
|||
|
|
@ -18,19 +18,13 @@ import com.appsmith.server.services.WorkspaceService;
|
|||
import com.appsmith.server.services.ce.UserServiceCEImpl;
|
||||
import com.appsmith.server.solutions.UserChangedHandler;
|
||||
import jakarta.validation.Validator;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
@Service
|
||||
public class UserServiceCECompatibleImpl extends UserServiceCEImpl implements UserServiceCECompatible {
|
||||
public UserServiceCECompatibleImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
UserRepository repository,
|
||||
WorkspaceService workspaceService,
|
||||
AnalyticsService analyticsService,
|
||||
|
|
@ -49,10 +43,7 @@ public class UserServiceCECompatibleImpl extends UserServiceCEImpl implements Us
|
|||
PACConfigurationService pacConfigurationService,
|
||||
UserServiceHelper userServiceHelper) {
|
||||
super(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
workspaceService,
|
||||
analyticsService,
|
||||
|
|
|
|||
|
|
@ -17,13 +17,10 @@ import com.appsmith.server.services.BaseService;
|
|||
import com.appsmith.server.solutions.ApplicationPermission;
|
||||
import jakarta.validation.Validator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import org.springframework.util.StringUtils;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
import reactor.util.function.Tuples;
|
||||
|
||||
import static com.appsmith.server.acl.AclPermission.MANAGE_THEMES;
|
||||
|
|
@ -39,17 +36,14 @@ public class ThemeServiceCEImpl extends BaseService<ThemeRepository, Theme, Stri
|
|||
private String defaultThemeId; // acts as a simple cache so that we don't need to fetch from DB always
|
||||
|
||||
public ThemeServiceCEImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
ThemeRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
ApplicationRepository applicationRepository,
|
||||
ApplicationService applicationService,
|
||||
PolicyGenerator policyGenerator,
|
||||
ApplicationPermission applicationPermission) {
|
||||
super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository, analyticsService);
|
||||
super(validator, repository, analyticsService);
|
||||
this.applicationRepository = applicationRepository;
|
||||
this.applicationService = applicationService;
|
||||
this.policyGenerator = policyGenerator;
|
||||
|
|
|
|||
|
|
@ -8,19 +8,13 @@ import com.appsmith.server.services.AnalyticsService;
|
|||
import com.appsmith.server.solutions.ApplicationPermission;
|
||||
import jakarta.validation.Validator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class ThemeServiceImpl extends ThemeServiceCEImpl implements ThemeService {
|
||||
public ThemeServiceImpl(
|
||||
Scheduler scheduler,
|
||||
Validator validator,
|
||||
MongoConverter mongoConverter,
|
||||
ReactiveMongoTemplate reactiveMongoTemplate,
|
||||
ThemeRepository repository,
|
||||
AnalyticsService analyticsService,
|
||||
ApplicationRepository applicationRepository,
|
||||
|
|
@ -28,10 +22,7 @@ public class ThemeServiceImpl extends ThemeServiceCEImpl implements ThemeService
|
|||
PolicyGenerator policyGenerator,
|
||||
ApplicationPermission applicationPermission) {
|
||||
super(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
analyticsService,
|
||||
applicationRepository,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.appsmith.server.services;
|
||||
|
||||
import com.appsmith.external.models.ActionDTO;
|
||||
import com.appsmith.external.models.BaseDomain;
|
||||
import com.appsmith.external.models.DefaultResources;
|
||||
import com.appsmith.external.models.PluginType;
|
||||
import com.appsmith.external.views.Views;
|
||||
|
|
@ -28,6 +29,7 @@ import com.appsmith.server.newactions.base.NewActionService;
|
|||
import com.appsmith.server.newpages.base.NewPageService;
|
||||
import com.appsmith.server.refactors.applications.RefactoringService;
|
||||
import com.appsmith.server.repositories.ActionCollectionRepository;
|
||||
import com.appsmith.server.repositories.ce.params.QueryAllParams;
|
||||
import com.appsmith.server.solutions.ActionPermission;
|
||||
import com.appsmith.server.solutions.ActionPermissionImpl;
|
||||
import com.appsmith.server.solutions.ApplicationPermission;
|
||||
|
|
@ -36,18 +38,15 @@ import com.appsmith.server.solutions.PagePermission;
|
|||
import com.appsmith.server.solutions.PagePermissionImpl;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.mongodb.client.result.UpdateResult;
|
||||
import jakarta.validation.Validator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.minidev.json.JSONObject;
|
||||
import org.bson.BsonObjectId;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
import org.springframework.data.mongodb.core.convert.MongoConverter;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import reactor.core.publisher.Flux;
|
||||
|
|
@ -69,6 +68,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@Slf4j
|
||||
|
|
@ -116,9 +116,6 @@ public class ActionCollectionServiceImplTest {
|
|||
@MockBean
|
||||
private MongoConverter mongoConverter;
|
||||
|
||||
@MockBean
|
||||
private ReactiveMongoTemplate reactiveMongoTemplate;
|
||||
|
||||
@MockBean
|
||||
private AnalyticsService analyticsService;
|
||||
|
||||
|
|
@ -134,10 +131,7 @@ public class ActionCollectionServiceImplTest {
|
|||
pagePermission = new PagePermissionImpl();
|
||||
actionPermission = new ActionPermissionImpl();
|
||||
actionCollectionService = new ActionCollectionServiceImpl(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
actionCollectionRepository,
|
||||
analyticsService,
|
||||
newActionService,
|
||||
|
|
@ -543,8 +537,12 @@ public class ActionCollectionServiceImplTest {
|
|||
return Mono.just(argument);
|
||||
});
|
||||
|
||||
Mockito.when(reactiveMongoTemplate.updateFirst(Mockito.any(), Mockito.any(), Mockito.any(Class.class)))
|
||||
.thenReturn(Mono.just((Mockito.mock(UpdateResult.class))));
|
||||
// Mockito.when(reactiveMongoTemplate.updateFirst(Mockito.any(), Mockito.any(), Mockito.any(Class.class)))
|
||||
// .thenReturn(Mono.just((Mockito.mock(UpdateResult.class))));
|
||||
|
||||
final QueryAllParams params = Mockito.spy(new QueryAllParams(null));
|
||||
doReturn(Mono.just(1)).when(params).updateFirst(Mockito.<BaseDomain>any());
|
||||
Mockito.when(actionCollectionRepository.queryBuilder()).thenReturn(params);
|
||||
|
||||
Mockito.when(actionCollectionRepository.findById(Mockito.anyString(), Mockito.<AclPermission>any()))
|
||||
.thenReturn(Mono.just(actionCollection));
|
||||
|
|
@ -808,8 +806,9 @@ public class ActionCollectionServiceImplTest {
|
|||
|
||||
Mockito.when(actionCollectionRepository.findById(Mockito.anyString())).thenReturn(Mono.just(actionCollection));
|
||||
|
||||
Mockito.when(reactiveMongoTemplate.updateFirst(Mockito.any(), Mockito.any(), Mockito.any(Class.class)))
|
||||
.thenReturn(Mono.just(UpdateResult.acknowledged(1, 1L, new BsonObjectId())));
|
||||
final QueryAllParams params = Mockito.spy(new QueryAllParams(null));
|
||||
doReturn(Mono.just(1)).when(params).updateFirst(Mockito.<BaseDomain>any());
|
||||
Mockito.when(actionCollectionRepository.queryBuilder()).thenReturn(params);
|
||||
|
||||
PageDTO oldPageDTO = new PageDTO();
|
||||
oldPageDTO.setId("oldPageId");
|
||||
|
|
|
|||
|
|
@ -127,10 +127,7 @@ public class NewActionServiceUnitTest {
|
|||
@BeforeEach
|
||||
public void setup() {
|
||||
newActionService = new NewActionServiceCEImpl(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
newActionRepository,
|
||||
analyticsService,
|
||||
datasourceService,
|
||||
|
|
|
|||
|
|
@ -73,10 +73,7 @@ public class PluginServiceCEImplTest {
|
|||
public void setUp() {
|
||||
objectMapper = new ObjectMapper();
|
||||
pluginService = new PluginServiceCEImpl(
|
||||
scheduler,
|
||||
validator,
|
||||
mongoConverter,
|
||||
reactiveMongoTemplate,
|
||||
repository,
|
||||
analyticsService,
|
||||
workspaceService,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user