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:
Shrikant Sharat Kandula 2024-02-27 16:48:02 +05:30 committed by GitHub
parent ac418b389c
commit d59c8344c7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
36 changed files with 85 additions and 352 deletions

View File

@ -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;

View File

@ -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,

View File

@ -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;

View File

@ -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,

View File

@ -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;

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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,

View File

@ -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;

View File

@ -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,

View File

@ -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));

View File

@ -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,

View File

@ -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) {

View File

@ -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);

View File

@ -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));

View File

@ -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);
}
}

View File

@ -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,

View File

@ -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);
}
}

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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);
}

View File

@ -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;

View File

@ -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;

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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;

View File

@ -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,

View File

@ -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");

View File

@ -127,10 +127,7 @@ public class NewActionServiceUnitTest {
@BeforeEach
public void setup() {
newActionService = new NewActionServiceCEImpl(
scheduler,
validator,
mongoConverter,
reactiveMongoTemplate,
newActionRepository,
analyticsService,
datasourceService,

View File

@ -73,10 +73,7 @@ public class PluginServiceCEImplTest {
public void setUp() {
objectMapper = new ObjectMapper();
pluginService = new PluginServiceCEImpl(
scheduler,
validator,
mongoConverter,
reactiveMongoTemplate,
repository,
analyticsService,
workspaceService,