diff --git a/src/main/java/run/halo/app/controller/admin/api/OptionController.java b/src/main/java/run/halo/app/controller/admin/api/OptionController.java index cc75de97c..ee572e29e 100644 --- a/src/main/java/run/halo/app/controller/admin/api/OptionController.java +++ b/src/main/java/run/halo/app/controller/admin/api/OptionController.java @@ -49,7 +49,7 @@ public class OptionController { @PostMapping("map_view/saving") @ApiOperation("Saves options by option map") - public void saveOptionsWithMapView(@RequestBody Map optionMap) { + public void saveOptionsWithMapView(@RequestBody Map optionMap) { optionService.save(optionMap); } diff --git a/src/main/java/run/halo/app/model/params/OptionParam.java b/src/main/java/run/halo/app/model/params/OptionParam.java index 6c888f52a..53e85c151 100644 --- a/src/main/java/run/halo/app/model/params/OptionParam.java +++ b/src/main/java/run/halo/app/model/params/OptionParam.java @@ -8,7 +8,7 @@ import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; /** - * Optiona param. + * Optional param. * * @author johnniang * @date 3/20/19 diff --git a/src/main/java/run/halo/app/service/OptionService.java b/src/main/java/run/halo/app/service/OptionService.java index 7f7c49389..c93282a6f 100755 --- a/src/main/java/run/halo/app/service/OptionService.java +++ b/src/main/java/run/halo/app/service/OptionService.java @@ -39,7 +39,7 @@ public interface OptionService extends CrudService { * @param options options */ @Transactional - void save(@Nullable Map options); + void save(@Nullable Map options); /** * SAve multiple options diff --git a/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java b/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java index cb0966039..e4f5ef163 100644 --- a/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/OptionServiceImpl.java @@ -6,7 +6,10 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationEventPublisher; +import org.springframework.lang.NonNull; +import org.springframework.lang.Nullable; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import run.halo.app.cache.StringCacheStore; @@ -23,6 +26,7 @@ import run.halo.app.service.base.AbstractCrudService; import run.halo.app.utils.DateUtils; import run.halo.app.utils.HaloUtils; import run.halo.app.utils.ServiceUtils; +import run.halo.app.utils.ValidationUtils; import java.util.*; @@ -59,46 +63,55 @@ public class OptionServiceImpl extends AbstractCrudService impl propertyEnumMap = Collections.unmodifiableMap(PropertyEnum.getValuePropertyEnumMap()); } - private void save(String key, String value) { + @Deprecated + @Transactional + private void save(@NonNull String key, @Nullable String value) { Assert.hasText(key, "Option key must not be blank"); - - if (StringUtils.isBlank(value)) { - // If the value is blank, remove the key - optionRepository.deleteByKey(key); - log.debug("Removed option key: [{}]", key); - return; - } - - Option option = optionRepository.findByKey(key) - .map(anOption -> { - log.debug("Updating option key: [{}], value: from [{}] to [{}]", key, anOption.getValue(), value); - // Exist - anOption.setValue(value); - return anOption; - }).orElseGet(() -> { - log.debug("Creating option key: [{}], value: [{}]", key, value); - // Not exist - Option anOption = new Option(); - anOption.setKey(key); - anOption.setValue(value); - return anOption; - }); - - // Save or update the options - Option savedOption = optionRepository.save(option); - - log.debug("Saved option: [{}]", savedOption); + save(Collections.singletonMap(key, value)); } @Override - public void save(Map options) { - if (CollectionUtils.isEmpty(options)) { + @Transactional + public void save(Map optionMap) { + if (CollectionUtils.isEmpty(optionMap)) { return; } - options.forEach(this::save); + Map optionKeyMap = ServiceUtils.convertToMap(listAll(), Option::getKey); + + List