aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@sonarsource.com>2014-10-09 15:58:55 +0200
committerSimon Brandhof <simon.brandhof@sonarsource.com>2014-10-10 15:25:04 +0200
commit8cee55e18d3d0bf8959423f2ab7a9ffcc2fcd45b (patch)
treead464a27b2e6dc725f917f70c51a5db6762e1849
parent5851a9a6c9d34d3239de2e8457e00889ae6d9317 (diff)
downloadsonarqube-8cee55e18d3d0bf8959423f2ab7a9ffcc2fcd45b.tar.gz
sonarqube-8cee55e18d3d0bf8959423f2ab7a9ffcc2fcd45b.zip
Remove dangerous coupling of sonar-server on sonar-search
-rw-r--r--server/sonar-process/src/main/java/org/sonar/process/ProcessConstants.java7
-rw-r--r--server/sonar-search/src/main/java/org/sonar/search/SearchSettings.java3
-rw-r--r--server/sonar-search/src/main/java/org/sonar/search/script/ListUpdate.java27
-rw-r--r--server/sonar-search/src/test/java/org/sonar/search/script/UpdateListScriptTest.java53
-rw-r--r--server/sonar-server/pom.xml2
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java22
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleNormalizer.java22
7 files changed, 69 insertions, 67 deletions
diff --git a/server/sonar-process/src/main/java/org/sonar/process/ProcessConstants.java b/server/sonar-process/src/main/java/org/sonar/process/ProcessConstants.java
index 0f7952a66c2..2d1a524e3fc 100644
--- a/server/sonar-process/src/main/java/org/sonar/process/ProcessConstants.java
+++ b/server/sonar-process/src/main/java/org/sonar/process/ProcessConstants.java
@@ -55,4 +55,11 @@ public interface ProcessConstants {
*/
String ENABLE_STOP_COMMAND = "sonar.enableStopCommand";
+ // Constants declared by the ES plugin ListUpdate (see sonar-search)
+ // that are used by sonar-server
+ String ES_PLUGIN_LISTUPDATE_SCRIPT_NAME = "listUpdate";
+ String ES_PLUGIN_LISTUPDATE_ID_FIELD = "idField";
+ String ES_PLUGIN_LISTUPDATE_ID_VALUE = "idValue";
+ String ES_PLUGIN_LISTUPDATE_FIELD = "field";
+ String ES_PLUGIN_LISTUPDATE_VALUE = "value";
}
diff --git a/server/sonar-search/src/main/java/org/sonar/search/SearchSettings.java b/server/sonar-search/src/main/java/org/sonar/search/SearchSettings.java
index b33c8b50f5b..c1c7d564002 100644
--- a/server/sonar-search/src/main/java/org/sonar/search/SearchSettings.java
+++ b/server/sonar-search/src/main/java/org/sonar/search/SearchSettings.java
@@ -117,7 +117,8 @@ class SearchSettings {
private void configurePlugins(ImmutableSettings.Builder builder) {
builder
.put("script.default_lang", "native")
- .put("script.native." + ListUpdate.NAME + ".type", ListUpdate.UpdateListScriptFactory.class.getName());
+ .put(String.format("script.native.%s.type", ProcessConstants.ES_PLUGIN_LISTUPDATE_SCRIPT_NAME),
+ ListUpdate.UpdateListScriptFactory.class.getName());
}
private void configureNetwork(ImmutableSettings.Builder builder) {
diff --git a/server/sonar-search/src/main/java/org/sonar/search/script/ListUpdate.java b/server/sonar-search/src/main/java/org/sonar/search/script/ListUpdate.java
index 46c4ceed487..721ba6b2328 100644
--- a/server/sonar-search/src/main/java/org/sonar/search/script/ListUpdate.java
+++ b/server/sonar-search/src/main/java/org/sonar/search/script/ListUpdate.java
@@ -24,6 +24,7 @@ import org.elasticsearch.common.xcontent.support.XContentMapValues;
import org.elasticsearch.script.AbstractExecutableScript;
import org.elasticsearch.script.ExecutableScript;
import org.elasticsearch.script.NativeScriptFactory;
+import org.sonar.process.ProcessConstants;
import java.util.ArrayList;
import java.util.Collection;
@@ -32,35 +33,28 @@ import java.util.Map;
public class ListUpdate extends AbstractExecutableScript {
- public static final String NAME = "listUpdate";
-
- public static final String ID_FIELD = "idField";
- public static final String ID_VALUE = "idValue";
- public static final String FIELD = "field";
- public static final String VALUE = "value";
-
public static class UpdateListScriptFactory implements NativeScriptFactory {
@Override
public ExecutableScript newScript(@Nullable Map<String, Object> params) {
- String idField = XContentMapValues.nodeStringValue(params.get(ID_FIELD), null);
- String idValue = XContentMapValues.nodeStringValue(params.get(ID_VALUE), null);
- String field = XContentMapValues.nodeStringValue(params.get(FIELD), null);
+ String idField = XContentMapValues.nodeStringValue(params.get(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_FIELD), null);
+ String idValue = XContentMapValues.nodeStringValue(params.get(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_VALUE), null);
+ String field = XContentMapValues.nodeStringValue(params.get(ProcessConstants.ES_PLUGIN_LISTUPDATE_FIELD), null);
Map value = null;
if (idField == null) {
- throw new IllegalStateException("Missing '" + ID_FIELD + "' parameter");
+ throw new IllegalStateException(String.format("Missing '%s' parameter", ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_FIELD));
}
if (idValue == null) {
- throw new IllegalStateException("Missing '" + ID_VALUE + "' parameter");
+ throw new IllegalStateException(String.format("Missing '%s' parameter", ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_VALUE));
}
if (field == null) {
- throw new IllegalStateException("Missing '" + FIELD + "' parameter");
+ throw new IllegalStateException(String.format("Missing '%s' parameter", ProcessConstants.ES_PLUGIN_LISTUPDATE_FIELD));
}
//NULL case is deletion of nested item
- if (params.containsKey(VALUE)) {
- Object obj = params.get(VALUE);
+ if (params.containsKey(ProcessConstants.ES_PLUGIN_LISTUPDATE_VALUE)) {
+ Object obj = params.get(ProcessConstants.ES_PLUGIN_LISTUPDATE_VALUE);
if (obj != null) {
- value = XContentMapValues.nodeMapValue(params.get(VALUE), "Update item");
+ value = XContentMapValues.nodeMapValue(params.get(ProcessConstants.ES_PLUGIN_LISTUPDATE_VALUE), "Update item");
}
}
@@ -73,7 +67,6 @@ public class ListUpdate extends AbstractExecutableScript {
private final String idValue;
private final String field;
private final Map<String, Object> value;
-
private Map<String, Object> ctx;
public ListUpdate(String idField, String idValue, String field, @Nullable Map<String, Object> value) {
diff --git a/server/sonar-search/src/test/java/org/sonar/search/script/UpdateListScriptTest.java b/server/sonar-search/src/test/java/org/sonar/search/script/UpdateListScriptTest.java
index f32f8f2e057..a645cb99647 100644
--- a/server/sonar-search/src/test/java/org/sonar/search/script/UpdateListScriptTest.java
+++ b/server/sonar-search/src/test/java/org/sonar/search/script/UpdateListScriptTest.java
@@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableMap;
import org.elasticsearch.script.ExecutableScript;
import org.junit.Before;
import org.junit.Test;
+import org.sonar.process.ProcessConstants;
import java.util.Collection;
import java.util.HashMap;
@@ -53,7 +54,7 @@ public class UpdateListScriptTest {
}
// Missing ID_VALUE
- params.put(ListUpdate.ID_FIELD, "test");
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_FIELD, "test");
try {
factory.newScript(params);
fail();
@@ -62,7 +63,7 @@ public class UpdateListScriptTest {
}
// Missing FIELD
- params.put(ListUpdate.ID_VALUE, "test");
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_VALUE, "test");
try {
factory.newScript(params);
fail();
@@ -71,12 +72,12 @@ public class UpdateListScriptTest {
}
// Has all required attributes and Null Value
- params.put(ListUpdate.FIELD, "test");
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_FIELD, "test");
ExecutableScript script = factory.newScript(params);
assertThat(script).isNotNull();
// Has all required attributes and VALUE of wrong type
- params.put(ListUpdate.VALUE, new Integer(52));
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_VALUE, new Integer(52));
try {
factory.newScript(params);
fail();
@@ -85,12 +86,12 @@ public class UpdateListScriptTest {
}
// Has all required attributes and Proper VALUE
- params.put(ListUpdate.VALUE, ImmutableMap.of("key", "value"));
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_VALUE, ImmutableMap.of("key", "value"));
script = factory.newScript(params);
assertThat(script).isNotNull();
// Missing ID_FIELD
- params.remove(ListUpdate.ID_FIELD);
+ params.remove(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_FIELD);
try {
factory.newScript(params);
fail();
@@ -109,10 +110,10 @@ public class UpdateListScriptTest {
// 0 Create list when field does not exists
Map<String, Object> params = new HashMap<String, Object>();
- params.put(ListUpdate.FIELD, listField);
- params.put(ListUpdate.ID_FIELD, "key");
- params.put(ListUpdate.ID_VALUE, "1");
- params.put(ListUpdate.VALUE, mapOf("key", "1", "value", "A"));
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_FIELD, listField);
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_FIELD, "key");
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_VALUE, "1");
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_VALUE, mapOf("key", "1", "value", "A"));
ExecutableScript script = factory.newScript(params);
script.setNextVar("ctx", ImmutableMap.of("_source", source));
@@ -124,10 +125,10 @@ public class UpdateListScriptTest {
// Add item to existing list
params = new HashMap<String, Object>();
- params.put(ListUpdate.FIELD, listField);
- params.put(ListUpdate.ID_FIELD, "key");
- params.put(ListUpdate.ID_VALUE, "2");
- params.put(ListUpdate.VALUE, mapOf("key", "2", "value", "B"));
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_FIELD, listField);
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_FIELD, "key");
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_VALUE, "2");
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_VALUE, mapOf("key", "2", "value", "B"));
script = factory.newScript(params);
script.setNextVar("ctx", ImmutableMap.of("_source", source));
script.run();
@@ -136,10 +137,10 @@ public class UpdateListScriptTest {
// updated first item in list
params = new HashMap<String, Object>();
- params.put(ListUpdate.FIELD, listField);
- params.put(ListUpdate.ID_FIELD, "key");
- params.put(ListUpdate.ID_VALUE, "1");
- params.put(ListUpdate.VALUE, mapOf("key", "1", "value", "a"));
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_FIELD, listField);
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_FIELD, "key");
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_VALUE, "1");
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_VALUE, mapOf("key", "1", "value", "a"));
script = factory.newScript(params);
script.setNextVar("ctx", ImmutableMap.of("_source", source));
script.run();
@@ -148,10 +149,10 @@ public class UpdateListScriptTest {
// updated second item in list
params = new HashMap<String, Object>();
- params.put(ListUpdate.FIELD, listField);
- params.put(ListUpdate.ID_FIELD, "key");
- params.put(ListUpdate.ID_VALUE, "2");
- params.put(ListUpdate.VALUE, mapOf("key", "2", "value", "b"));
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_FIELD, listField);
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_FIELD, "key");
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_VALUE, "2");
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_VALUE, mapOf("key", "2", "value", "b"));
script = factory.newScript(params);
script.setNextVar("ctx", ImmutableMap.of("_source", source));
script.run();
@@ -160,10 +161,10 @@ public class UpdateListScriptTest {
// delete first item
params = new HashMap<String, Object>();
- params.put(ListUpdate.FIELD, listField);
- params.put(ListUpdate.ID_FIELD, "key");
- params.put(ListUpdate.ID_VALUE, "1");
- params.put(ListUpdate.VALUE, null);
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_FIELD, listField);
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_FIELD, "key");
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_VALUE, "1");
+ params.put(ProcessConstants.ES_PLUGIN_LISTUPDATE_VALUE, null);
script = factory.newScript(params);
script.setNextVar("ctx", ImmutableMap.of("_source", source));
script.run();
diff --git a/server/sonar-server/pom.xml b/server/sonar-server/pom.xml
index 41c98f29168..61234d91e9c 100644
--- a/server/sonar-server/pom.xml
+++ b/server/sonar-server/pom.xml
@@ -238,7 +238,7 @@
<groupId>org.codehaus.sonar</groupId>
<artifactId>sonar-search</artifactId>
<version>${project.version}</version>
- <scope>provided</scope>
+ <scope>test</scope>
</dependency>
</dependencies>
diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java
index 01936878674..bdb38fdcf40 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java
@@ -28,7 +28,7 @@ import org.sonar.core.qualityprofile.db.ActiveRuleDto;
import org.sonar.core.qualityprofile.db.ActiveRuleKey;
import org.sonar.core.qualityprofile.db.ActiveRuleParamDto;
import org.sonar.core.qualityprofile.db.QualityProfileDto;
-import org.sonar.search.script.ListUpdate;
+import org.sonar.process.ProcessConstants;
import org.sonar.server.db.DbClient;
import org.sonar.server.qualityprofile.ActiveRule;
import org.sonar.server.search.BaseNormalizer;
@@ -194,11 +194,11 @@ public class ActiveRuleNormalizer extends BaseNormalizer<ActiveRuleDto, ActiveRu
.replicationType(ReplicationType.ASYNC)
.routing(key.ruleKey().toString())
.id(key.toString())
- .script(ListUpdate.NAME)
- .addScriptParam(ListUpdate.FIELD, ActiveRuleField.PARAMS.field())
- .addScriptParam(ListUpdate.VALUE, newParam)
- .addScriptParam(ListUpdate.ID_FIELD, ActiveRuleParamField.NAME.field())
- .addScriptParam(ListUpdate.ID_VALUE, param.getKey())
+ .script(ProcessConstants.ES_PLUGIN_LISTUPDATE_SCRIPT_NAME)
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_FIELD, ActiveRuleField.PARAMS.field())
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_VALUE, newParam)
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_FIELD, ActiveRuleParamField.NAME.field())
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_VALUE, param.getKey())
);
}
@@ -207,11 +207,11 @@ public class ActiveRuleNormalizer extends BaseNormalizer<ActiveRuleDto, ActiveRu
.replicationType(ReplicationType.ASYNC)
.routing(key.ruleKey().toString())
.id(key.toString())
- .script(ListUpdate.NAME)
- .addScriptParam(ListUpdate.FIELD, ActiveRuleField.PARAMS.field())
- .addScriptParam(ListUpdate.VALUE, null)
- .addScriptParam(ListUpdate.ID_FIELD, ActiveRuleParamField.NAME.field())
- .addScriptParam(ListUpdate.ID_VALUE, param.getKey())
+ .script(ProcessConstants.ES_PLUGIN_LISTUPDATE_SCRIPT_NAME)
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_FIELD, ActiveRuleField.PARAMS.field())
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_VALUE, null)
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_FIELD, ActiveRuleParamField.NAME.field())
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_VALUE, param.getKey())
);
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleNormalizer.java b/server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleNormalizer.java
index e94ad6abbbd..086a75fda73 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleNormalizer.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleNormalizer.java
@@ -31,7 +31,7 @@ import org.sonar.core.rule.RuleDto;
import org.sonar.core.rule.RuleParamDto;
import org.sonar.core.technicaldebt.db.CharacteristicDto;
import org.sonar.markdown.Markdown;
-import org.sonar.search.script.ListUpdate;
+import org.sonar.process.ProcessConstants;
import org.sonar.server.db.DbClient;
import org.sonar.server.search.BaseNormalizer;
import org.sonar.server.search.IndexField;
@@ -324,22 +324,22 @@ public class RuleNormalizer extends BaseNormalizer<RuleDto, RuleKey> {
return ImmutableList.of(new UpdateRequest()
.id(key.toString())
- .script(ListUpdate.NAME)
- .addScriptParam(ListUpdate.FIELD, RuleField.PARAMS.field())
- .addScriptParam(ListUpdate.VALUE, newParam)
- .addScriptParam(ListUpdate.ID_FIELD, RuleParamField.NAME.field())
- .addScriptParam(ListUpdate.ID_VALUE, param.getName())
+ .script(ProcessConstants.ES_PLUGIN_LISTUPDATE_SCRIPT_NAME)
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_FIELD, RuleField.PARAMS.field())
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_VALUE, newParam)
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_FIELD, RuleParamField.NAME.field())
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_VALUE, param.getName())
);
}
private List<UpdateRequest> nestedDelete(RuleParamDto param, RuleKey key) {
return ImmutableList.of(new UpdateRequest()
.id(key.toString())
- .script(ListUpdate.NAME)
- .addScriptParam(ListUpdate.FIELD, RuleField.PARAMS.field())
- .addScriptParam(ListUpdate.VALUE, null)
- .addScriptParam(ListUpdate.ID_FIELD, RuleParamField.NAME.field())
- .addScriptParam(ListUpdate.ID_VALUE, param.getName())
+ .script(ProcessConstants.ES_PLUGIN_LISTUPDATE_SCRIPT_NAME)
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_FIELD, RuleField.PARAMS.field())
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_VALUE, null)
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_FIELD, RuleParamField.NAME.field())
+ .addScriptParam(ProcessConstants.ES_PLUGIN_LISTUPDATE_ID_VALUE, param.getName())
);
}