From 6745c326779a94768354158f51b50302b21cc1e7 Mon Sep 17 00:00:00 2001 From: Stephane Gamard Date: Wed, 4 Jun 2014 14:37:17 +0200 Subject: [PATCH] SONAR-5007 Getting rid of Normalizer's Reflexive call --- .../index/ActiveRuleNormalizer.java | 8 ++++++++ .../server/rule/index/RuleNormalizer.java | 12 +++++++++++- .../org/sonar/server/search/BaseIndex.java | 18 ++++-------------- .../sonar/server/search/BaseNormalizer.java | 19 +------------------ 4 files changed, 24 insertions(+), 33 deletions(-) diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java index b333278d14f..b160eb817dc 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java @@ -159,6 +159,14 @@ public class ActiveRuleNormalizer extends BaseNormalizer normalize(Object object, Object key) { + Preconditions.checkArgument(object.getClass().isAssignableFrom(ActiveRuleParamDto.class), "Cannot Normalize class"); + Preconditions.checkArgument(key.getClass().isAssignableFrom(ActiveRuleKey.class), "key is not an ActiveRuleKey"); + + return normalize((ActiveRuleParamDto)object, (ActiveRuleKey)key); + } + public List normalize(ActiveRuleParamDto param, ActiveRuleKey key) { Preconditions.checkArgument(key != null, "Cannot normalize ActiveRuleParamDto for null key of ActiveRule"); diff --git a/sonar-server/src/main/java/org/sonar/server/rule/index/RuleNormalizer.java b/sonar-server/src/main/java/org/sonar/server/rule/index/RuleNormalizer.java index 4931e4c9ad2..5766113b0d0 100644 --- a/sonar-server/src/main/java/org/sonar/server/rule/index/RuleNormalizer.java +++ b/sonar-server/src/main/java/org/sonar/server/rule/index/RuleNormalizer.java @@ -19,6 +19,7 @@ */ package org.sonar.server.rule.index; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.Sets; import org.elasticsearch.action.update.UpdateRequest; @@ -132,6 +133,7 @@ public class RuleNormalizer extends BaseNormalizer { super(IndexDefinition.RULE, db); } + @Override public List normalize(RuleKey key) { DbSession dbSession = db.openSession(false); @@ -235,7 +237,15 @@ public class RuleNormalizer extends BaseNormalizer { } } - public List normalize(RuleParamDto param, RuleKey key) { + @Override + public List normalize(Object object, Object key) { + Preconditions.checkArgument(object.getClass().isAssignableFrom(RuleParamDto.class), "Cannot Normalize class"); + Preconditions.checkArgument(key.getClass().isAssignableFrom(RuleKey.class), "key is not an ActiveRuleKey"); + + return normalize((RuleParamDto)object, (RuleKey)key); + } + + private List normalize(RuleParamDto param, RuleKey key) { Map newParam = new HashMap(); newParam.put(RuleParamField.NAME.field(), param.getName()); diff --git a/sonar-server/src/main/java/org/sonar/server/search/BaseIndex.java b/sonar-server/src/main/java/org/sonar/server/search/BaseIndex.java index 23410d3371d..d419c718c95 100644 --- a/sonar-server/src/main/java/org/sonar/server/search/BaseIndex.java +++ b/sonar-server/src/main/java/org/sonar/server/search/BaseIndex.java @@ -198,7 +198,7 @@ public abstract class BaseIndex, K extends Serializable> protected abstract Map mapKey(); - protected Map mapDomain(){ + protected Map mapDomain() { Map mapping = new HashMap(); mapping.put("dynamic", false); mapping.put("_id", mapKey()); @@ -236,7 +236,7 @@ public abstract class BaseIndex, K extends Serializable> mapping.put("type", "nested"); Map mappings = new HashMap(); for (IndexField nestedField : field.nestedFields()) { - if(nestedField != null) { + if (nestedField != null) { mappings.put(nestedField.field(), mapField(nestedField)); } } @@ -363,12 +363,7 @@ public abstract class BaseIndex, K extends Serializable> @Override public void upsert(Object obj, K key) throws Exception { - if (this.normalizer.canNormalize(obj.getClass(), key.getClass())) { - this.updateDocument(this.normalizer.normalizeOther(obj, key), key); - } else { - throw new IllegalStateException("Index " + this.getIndexName() + - " cannot execute UPDATE for class: " + obj.getClass()); - } + this.updateDocument(this.normalizer.normalize(obj, key), key); } @Override @@ -403,12 +398,7 @@ public abstract class BaseIndex, K extends Serializable> @Override public void delete(Object obj, K key) throws Exception { - if (this.normalizer.canNormalize(obj.getClass(), key.getClass())) { - //TODO don't really know what to do here for the moment... - } else { - throw new IllegalStateException("Index " + this.getIndexName() + - " cannot execute DELETE for class: " + obj.getClass()); - } + throw new IllegalStateException("Cannot delete nested Object from ES. Should be using Update"); } @Override diff --git a/sonar-server/src/main/java/org/sonar/server/search/BaseNormalizer.java b/sonar-server/src/main/java/org/sonar/server/search/BaseNormalizer.java index 3cbbf6716d3..5486f4a88e0 100644 --- a/sonar-server/src/main/java/org/sonar/server/search/BaseNormalizer.java +++ b/sonar-server/src/main/java/org/sonar/server/search/BaseNormalizer.java @@ -24,7 +24,6 @@ import org.sonar.core.persistence.Dto; import org.sonar.server.db.DbClient; import java.io.Serializable; -import java.util.List; public abstract class BaseNormalizer, K extends Serializable> { @@ -36,23 +35,7 @@ public abstract class BaseNormalizer, K extends Serializable> { this.definition = definition; } - public boolean canNormalize(Class objectClass, Class keyClass) { - try { - return this.getClass().getMethod("normalize", objectClass, keyClass) != null; - } catch (NoSuchMethodException e) { - return false; - } - } - - public List normalizeOther(Object object, Object key) { - try { - return (List) this.getClass() - .getMethod("normalize", object.getClass(), key.getClass()) - .invoke(this, object, key); - } catch (Exception e) { - throw new IllegalStateException("Could not invoke Normalizer Method", e); - } - } + public abstract java.util.List normalize(Object object, Object key); public abstract java.util.List normalize(K key); -- 2.39.5