session.close();
}
- Map<String, Object> upsert = new HashMap<String, Object>(newRule);
- upsert.put(ActiveRuleField.PARAMS.field(), new ArrayList());
+ Map<String, Object> upsert = getUpsertFor(ActiveRuleField.ALL_FIELDS, newRule);
/* Creating updateRequest */
return ImmutableList.of(new UpdateRequest()
update.put(RuleField._TAGS.field(), Sets.union(rule.getSystemTags(), rule.getTags()));
/** Upsert elements */
- Map<String, Object> upsert = new HashMap<String, Object>(update);
+ Map<String, Object> upsert = getUpsertFor(RuleField.ALL_FIELDS, update);
upsert.put(RuleField.KEY.field(), rule.getKey().toString());
- upsert.put(RuleField.PARAMS.field(), new ArrayList<String>());
/** Creating updateRequest */
return ImmutableList.of(new UpdateRequest()
import org.sonar.server.db.DbClient;
import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
public abstract class BaseNormalizer<DTO extends Dto<KEY>, KEY extends Serializable> {
this.definition = definition;
}
+ protected Map<String, Object> getUpsertFor(Set<IndexField> fields, Map<String, Object> update) {
+ Map<String, Object> upsert = new HashMap<String, Object>(update);
+ for (IndexField field : fields) {
+ if (!upsert.containsKey(field.field())) {
+ if (field.type().equals(IndexField.Type.OBJECT)) {
+ upsert.put(field.field(), new ArrayList<String>());
+ } else {
+ upsert.put(field.field(), null);
+ }
+ }
+ }
+ return upsert;
+ }
+
public List<UpdateRequest> deleteNested(Object object, KEY key) {
throw new IllegalStateException("Nested Delete not implemented in current normalizer!");
}