次のコードでは、null 以外のすべての値について、setOriginatingNumber を null にリセットしています。
if (config.getOriginPhoneNumber() != null) {
PhoneNumber originphoneNumber = new PhoneNumber();
config.setOriginatingNumber(formatPhoneNumber(originphoneNumber));
}
空白の電話番号にリセットされます。これにより、複数の問題が発生する可能性があります。このシナリオは、ユーザーが既存の電話番号の値を編集して英数字に変更した場合にのみ存在します。
config.getOriginPhoneNumber() の null 以外の値ごとに、コードが空白の電話番号に設定されていることを確認する方法
public SmsChannelConfig applyTo(
final SmsChannelConfigRepository repository,
final UserContext context, final ModuleRepository moduleRepository) {
final SmsChannelConfig config;
if (source == null) {
config = new SmsChannelConfig(context);
} else {
config = source;
}
super.applyTo(repository, config);
if (!Strings.isNullOrEmpty(getOriginatorType())
&& "Number".equals(getOriginatorType())) {
PhoneNumber originphoneNumber = new PhoneNumber();
originphoneNumber.setNumber(getPhoneNumber());
originphoneNumber.setCountryCode(getCountryCode());
config.setOriginPhoneNumber(originphoneNumber);
config.setOriginatingNumber(formatPhoneNumber(originphoneNumber));
config.setOriginText(null);
} else {
config.setOriginText(getOriginator());
if (config.getOriginPhoneNumber() != null) {
PhoneNumber originphoneNumber = new PhoneNumber();
config.setOriginatingNumber(formatPhoneNumber(originphoneNumber));
}
}
config.setOperator(getOperator());
if (!Strings.isNullOrEmpty(getOperator())) {
List<ExternalResource> resources = SmsChannelConfigUtil
.getSmsProviders(moduleRepository, context);
for (ExternalResource resource : resources) {
if (getOperator().equals(resource.getId().getResourceName())) {
config.setOperatorName(resource.toString());
}
}
}
config.setDescription(getDescription());
config.setName(getName());
if (repository.query().all().isEmpty()) {
repository.setDefault(context.getOrganization(), config);
}
return config;
}
複数の問題が発生しないように、getOriginatorType() が「Number」と等しくない場合にのみ、originphoneNumber の値を null にリセットします。