summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/rule/RulesProviderTest.java5
-rw-r--r--sonar-core/src/main/java/org/sonar/core/cluster/LocalNonBlockingWorkQueue.java (renamed from sonar-server/src/main/java/org/sonar/server/cluster/LocalNonBlockingWorkQueue.java)4
-rw-r--r--sonar-core/src/main/java/org/sonar/core/cluster/WorkQueue.java (renamed from sonar-server/src/main/java/org/sonar/server/cluster/WorkQueue.java)2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/db/BaseDao.java (renamed from sonar-server/src/main/java/org/sonar/server/db/BaseDao.java)49
-rw-r--r--sonar-core/src/main/java/org/sonar/core/db/Dao.java (renamed from sonar-server/src/main/java/org/sonar/server/db/Dao.java)6
-rw-r--r--sonar-core/src/main/java/org/sonar/core/db/Dto.java (renamed from sonar-server/src/main/java/org/sonar/server/db/Dto.java)2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/rule/RuleConstants.java (renamed from sonar-server/src/main/java/org/sonar/server/rule2/RuleConstants.java)2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/rule/RuleDao.java51
-rw-r--r--sonar-core/src/main/java/org/sonar/core/rule/RuleDto.java11
-rw-r--r--sonar-core/src/main/java/org/sonar/core/rule/RuleMapper.java4
-rw-r--r--sonar-core/src/test/java/org/sonar/core/cluster/LocalNonBlockingWorkQueueTest.java (renamed from sonar-server/src/test/java/org/sonar/server/cluster/LocalNonBlockingWorkQueueTest.java)4
-rw-r--r--sonar-core/src/test/java/org/sonar/core/rule/RuleDaoTest.java5
-rw-r--r--sonar-server/src/main/coffee/component-viewer/coverage-popup.coffee16
-rw-r--r--sonar-server/src/main/coffee/component-viewer/duplication-popup.coffee36
-rw-r--r--sonar-server/src/main/coffee/component-viewer/main.coffee44
-rw-r--r--sonar-server/src/main/coffee/component-viewer/popup.coffee22
-rw-r--r--sonar-server/src/main/coffee/component-viewer/source.coffee42
-rw-r--r--sonar-server/src/main/hbs/component-viewer/duplicationPopup.hbs19
-rw-r--r--sonar-server/src/main/hbs/component-viewer/source.hbs31
-rw-r--r--sonar-server/src/main/java/org/sonar/server/rule2/RuleDao.java45
-rw-r--r--sonar-server/src/main/java/org/sonar/server/rule2/RuleDto.java344
-rw-r--r--sonar-server/src/main/java/org/sonar/server/rule2/RuleIndex.java8
-rw-r--r--sonar-server/src/main/java/org/sonar/server/rule2/RuleService.java2
-rw-r--r--sonar-server/src/main/java/org/sonar/server/search/BaseIndex.java5
-rw-r--r--sonar-server/src/main/java/org/sonar/server/search/IndexSynchronizer.java3
-rw-r--r--sonar-server/src/main/less/component-viewer.less25
-rw-r--r--sonar-server/src/main/less/variables.less1
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/views/issues/search.html.erb6
-rw-r--r--sonar-server/src/test/java/org/sonar/server/rule/RegisterRulesTest.java12
-rw-r--r--sonar-server/src/test/java/org/sonar/server/rule2/RuleIndexTest.java6
-rw-r--r--sonar-server/src/test/java/org/sonar/server/search/BaseIndexTest.java1
31 files changed, 133 insertions, 680 deletions
diff --git a/sonar-batch/src/test/java/org/sonar/batch/rule/RulesProviderTest.java b/sonar-batch/src/test/java/org/sonar/batch/rule/RulesProviderTest.java
index 42ab22fed38..da1ad682f1a 100644
--- a/sonar-batch/src/test/java/org/sonar/batch/rule/RulesProviderTest.java
+++ b/sonar-batch/src/test/java/org/sonar/batch/rule/RulesProviderTest.java
@@ -36,11 +36,13 @@ import org.sonar.api.rule.RuleKey;
import org.sonar.api.rule.Severity;
import org.sonar.api.utils.Duration;
import org.sonar.api.utils.Durations;
+import org.sonar.core.cluster.WorkQueue;
import org.sonar.core.persistence.AbstractDaoTestCase;
import org.sonar.core.rule.RuleDao;
import static org.fest.assertions.Assertions.assertThat;
import static org.fest.assertions.Fail.fail;
+import static org.mockito.Mockito.mock;
@RunWith(MockitoJUnitRunner.class)
public class RulesProviderTest extends AbstractDaoTestCase {
@@ -80,7 +82,8 @@ public class RulesProviderTest extends AbstractDaoTestCase {
.setParentId(102));
durations = new Durations(new Settings().setProperty("sonar.technicalDebt.hoursInDay", 8), null);
- ruleDao = new RuleDao(getMyBatis());
+ WorkQueue queue = mock(WorkQueue.class);
+ ruleDao = new RuleDao(getMyBatis(),queue);
provider = new RulesProvider();
}
diff --git a/sonar-server/src/main/java/org/sonar/server/cluster/LocalNonBlockingWorkQueue.java b/sonar-core/src/main/java/org/sonar/core/cluster/LocalNonBlockingWorkQueue.java
index 3ee3ed7777c..25b10c399ec 100644
--- a/sonar-server/src/main/java/org/sonar/server/cluster/LocalNonBlockingWorkQueue.java
+++ b/sonar-core/src/main/java/org/sonar/core/cluster/LocalNonBlockingWorkQueue.java
@@ -17,7 +17,9 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-package org.sonar.server.cluster;
+package org.sonar.core.cluster;
+
+import org.sonar.core.cluster.WorkQueue;
import java.io.Serializable;
import java.util.Map;
diff --git a/sonar-server/src/main/java/org/sonar/server/cluster/WorkQueue.java b/sonar-core/src/main/java/org/sonar/core/cluster/WorkQueue.java
index 79c3b520dc9..e3790f642b9 100644
--- a/sonar-server/src/main/java/org/sonar/server/cluster/WorkQueue.java
+++ b/sonar-core/src/main/java/org/sonar/core/cluster/WorkQueue.java
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-package org.sonar.server.cluster;
+package org.sonar.core.cluster;
import java.io.Serializable;
diff --git a/sonar-server/src/main/java/org/sonar/server/db/BaseDao.java b/sonar-core/src/main/java/org/sonar/core/db/BaseDao.java
index 21a2270ef63..e10bbf6cfdb 100644
--- a/sonar-server/src/main/java/org/sonar/server/db/BaseDao.java
+++ b/sonar-core/src/main/java/org/sonar/core/db/BaseDao.java
@@ -17,40 +17,47 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-package org.sonar.server.db;
+package org.sonar.core.db;
import org.apache.ibatis.session.SqlSession;
+import org.sonar.core.cluster.WorkQueue;
import org.sonar.core.persistence.MyBatis;
-import org.sonar.server.cluster.WorkQueue;
import java.io.Serializable;
-public abstract class BaseDao<E extends Dto<K>, K extends Serializable> implements Dao<E, K> {
+public abstract class BaseDao<E extends Dto<K>, K extends Serializable, M extends Dao<E,K>>
+ implements Dao<E, K> {
- private MyBatis myBatis;
- private WorkQueue workQueue;
+ protected MyBatis mybatis;
+ private WorkQueue queue;
protected BaseDao(WorkQueue workQueue, MyBatis myBatis) {
- this.myBatis = myBatis;
- this.workQueue = workQueue;
+ this.mybatis = myBatis;
+ this.queue = workQueue;
}
protected abstract String getIndexName();
+ protected abstract Class<M> getMapperClass();
+
+ private M getMapper(SqlSession session) {
+ return session.getMapper(getMapperClass());
+ }
+
protected void enqueInsert(K key) {
- this.workQueue.enqueInsert(this.getIndexName(), key);
+ this.queue.enqueInsert(this.getIndexName(), key);
}
protected void enqueUpdate(K key) {
- this.workQueue.enqueUpdate(this.getIndexName(), key);
+ this.queue.enqueUpdate(this.getIndexName(), key);
}
protected void enqueDelete(K key) {
- this.workQueue.enqueDelete(this.getIndexName(), key);
+ this.queue.enqueDelete(this.getIndexName(), key);
}
protected MyBatis getMyBatis(){
- return this.myBatis;
+ return this.mybatis;
}
@Override
@@ -58,36 +65,32 @@ public abstract class BaseDao<E extends Dto<K>, K extends Serializable> implemen
public E getByKey(K key) {
E item = null;
SqlSession session = getMyBatis().openSession();
- item = (E) session.getMapper(this.getClass()).getByKey(key);
+ item = getMapper(session).getByKey(key);
MyBatis.closeQuietly(session);
return item;
}
@Override
- public E update(E item) {
+ public void update(E item) {
SqlSession session = getMyBatis().openSession();
- E result = null;
try {
- result = (E) session.getMapper(this.getClass()).update(item);
+ getMapper(session).update(item);
session.commit();
- } finally {
this.enqueUpdate(item.getKey());
+ } finally {
MyBatis.closeQuietly(session);
- return result;
}
}
@Override
- public E insert(E item) {
+ public void insert(E item) {
SqlSession session = getMyBatis().openSession();
- E result = null;
try {
- result = (E) session.getMapper(this.getClass()).insert(item);
+ getMapper(session).insert(item);
session.commit();
+ this.enqueInsert(item.getKey());
} finally {
MyBatis.closeQuietly(session);
- this.enqueInsert(item.getKey());
- return result;
}
}
@@ -100,7 +103,7 @@ public abstract class BaseDao<E extends Dto<K>, K extends Serializable> implemen
public void deleteByKey(K key) {
SqlSession session = getMyBatis().openSession();
try {
- session.getMapper(this.getClass()).deleteByKey(key);
+ getMapper(session).deleteByKey(key);
session.commit();
} finally {
MyBatis.closeQuietly(session);
diff --git a/sonar-server/src/main/java/org/sonar/server/db/Dao.java b/sonar-core/src/main/java/org/sonar/core/db/Dao.java
index e3fad2e59f5..458d2b703e2 100644
--- a/sonar-server/src/main/java/org/sonar/server/db/Dao.java
+++ b/sonar-core/src/main/java/org/sonar/core/db/Dao.java
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-package org.sonar.server.db;
+package org.sonar.core.db;
import java.io.Serializable;
import java.util.Collection;
@@ -26,9 +26,9 @@ public interface Dao<E extends Dto<K>, K extends Serializable> {
public E getByKey(K key);
- public E update(E item);
+ public void update(E item);
- public E insert(E item);
+ public void insert(E item);
public void delete(E item);
diff --git a/sonar-server/src/main/java/org/sonar/server/db/Dto.java b/sonar-core/src/main/java/org/sonar/core/db/Dto.java
index 483a276f175..2ac53d71222 100644
--- a/sonar-server/src/main/java/org/sonar/server/db/Dto.java
+++ b/sonar-core/src/main/java/org/sonar/core/db/Dto.java
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-package org.sonar.server.db;
+package org.sonar.core.db;
import java.io.Serializable;
diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/RuleConstants.java b/sonar-core/src/main/java/org/sonar/core/rule/RuleConstants.java
index dffd18d7e31..636a6dcd67c 100644
--- a/sonar-server/src/main/java/org/sonar/server/rule2/RuleConstants.java
+++ b/sonar-core/src/main/java/org/sonar/core/rule/RuleConstants.java
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-package org.sonar.server.rule2;
+package org.sonar.core.rule;
public interface RuleConstants {
diff --git a/sonar-core/src/main/java/org/sonar/core/rule/RuleDao.java b/sonar-core/src/main/java/org/sonar/core/rule/RuleDao.java
index 3b5677fc9b9..1c87168d8b5 100644
--- a/sonar-core/src/main/java/org/sonar/core/rule/RuleDao.java
+++ b/sonar-core/src/main/java/org/sonar/core/rule/RuleDao.java
@@ -24,6 +24,8 @@ import org.apache.ibatis.session.SqlSession;
import org.sonar.api.BatchComponent;
import org.sonar.api.ServerComponent;
import org.sonar.api.rule.RuleKey;
+import org.sonar.core.cluster.WorkQueue;
+import org.sonar.core.db.BaseDao;
import org.sonar.core.persistence.MyBatis;
import javax.annotation.CheckForNull;
@@ -33,12 +35,22 @@ import java.util.List;
import static com.google.common.collect.Lists.newArrayList;
-public class RuleDao implements BatchComponent, ServerComponent {
+public class RuleDao extends BaseDao<RuleDto, RuleKey, RuleMapper>
+ implements BatchComponent, ServerComponent {
- private MyBatis mybatis;
- public RuleDao(MyBatis mybatis) {
- this.mybatis = mybatis;
+ public RuleDao(MyBatis mybatis, WorkQueue queue) {
+ super(queue, mybatis);
+ }
+
+ @Override
+ protected String getIndexName() {
+ return RuleConstants.INDEX_NAME;
+ }
+
+ @Override
+ protected Class<RuleMapper> getMapperClass() {
+ return RuleMapper.class;
}
public List<RuleDto> selectAll() {
@@ -131,29 +143,18 @@ public class RuleDao implements BatchComponent, ServerComponent {
getMapper(session).update(rule);
}
- public void update(RuleDto rule) {
- SqlSession session = mybatis.openSession();
- try {
- update(rule, session);
- session.commit();
- } finally {
- MyBatis.closeQuietly(session);
- }
- }
+// public RuleDto update(RuleDto rule) {
+// return super.update(rule);
+// }
+//
+// public RuleDto insert(RuleDto ruleToInsert) {
+// return super.insert(ruleToInsert);
+// }
public void insert(RuleDto ruleToInsert, SqlSession session) {
getMapper(session).insert(ruleToInsert);
}
- public void insert(RuleDto ruleToInsert) {
- SqlSession session = mybatis.openSession();
- try {
- insert(ruleToInsert, session);
- session.commit();
- } finally {
- MyBatis.closeQuietly(session);
- }
- }
public void insert(Collection<RuleDto> rules) {
SqlSession session = mybatis.openBatchSession();
@@ -307,4 +308,10 @@ public class RuleDao implements BatchComponent, ServerComponent {
}
return dtos;
}
+
+ @Override
+ public Collection<RuleKey> insertsSince(Long timestamp) {
+ // TODO Auto-generated method stub
+ return null;
+ }
}
diff --git a/sonar-core/src/main/java/org/sonar/core/rule/RuleDto.java b/sonar-core/src/main/java/org/sonar/core/rule/RuleDto.java
index 8bb8f4e38b5..78dd41c99a5 100644
--- a/sonar-core/src/main/java/org/sonar/core/rule/RuleDto.java
+++ b/sonar-core/src/main/java/org/sonar/core/rule/RuleDto.java
@@ -19,6 +19,9 @@
*/
package org.sonar.core.rule;
+import org.sonar.api.rule.RuleKey;
+
+import org.sonar.core.db.Dto;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
@@ -30,7 +33,7 @@ import javax.annotation.Nullable;
import java.util.Date;
-public final class RuleDto {
+public final class RuleDto implements Dto<RuleKey>{
public static final Integer DISABLED_CHARACTERISTIC_ID = -1;
@@ -61,6 +64,12 @@ public final class RuleDto {
private Date createdAt;
private Date updatedAt;
+ @Override
+ public RuleKey getKey() {
+ return RuleKey.of(this.getRepositoryKey(), this.getRuleKey());
+ }
+
+ @Deprecated
public Integer getId() {
return id;
}
diff --git a/sonar-core/src/main/java/org/sonar/core/rule/RuleMapper.java b/sonar-core/src/main/java/org/sonar/core/rule/RuleMapper.java
index e31b14e04aa..536071017eb 100644
--- a/sonar-core/src/main/java/org/sonar/core/rule/RuleMapper.java
+++ b/sonar-core/src/main/java/org/sonar/core/rule/RuleMapper.java
@@ -21,10 +21,12 @@ package org.sonar.core.rule;
import org.apache.ibatis.annotations.Param;
import org.sonar.api.rule.RuleKey;
+import org.sonar.core.db.Dao;
import java.util.List;
-public interface RuleMapper {
+public interface RuleMapper extends Dao<RuleDto, RuleKey>{
+
List<RuleDto> selectAll();
List<RuleDto> selectEnablesAndNonManual();
diff --git a/sonar-server/src/test/java/org/sonar/server/cluster/LocalNonBlockingWorkQueueTest.java b/sonar-core/src/test/java/org/sonar/core/cluster/LocalNonBlockingWorkQueueTest.java
index 117db387a9a..c352f14cb44 100644
--- a/sonar-server/src/test/java/org/sonar/server/cluster/LocalNonBlockingWorkQueueTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/cluster/LocalNonBlockingWorkQueueTest.java
@@ -17,7 +17,9 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-package org.sonar.server.cluster;
+package org.sonar.core.cluster;
+
+import org.sonar.core.cluster.LocalNonBlockingWorkQueue;
import org.junit.Test;
diff --git a/sonar-core/src/test/java/org/sonar/core/rule/RuleDaoTest.java b/sonar-core/src/test/java/org/sonar/core/rule/RuleDaoTest.java
index 6386962c054..152447530c9 100644
--- a/sonar-core/src/test/java/org/sonar/core/rule/RuleDaoTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/rule/RuleDaoTest.java
@@ -30,12 +30,14 @@ import org.sonar.api.rule.Severity;
import org.sonar.api.rules.Rule;
import org.sonar.api.utils.DateUtils;
import org.sonar.check.Cardinality;
+import org.sonar.core.cluster.WorkQueue;
import org.sonar.core.persistence.AbstractDaoTestCase;
import java.util.List;
import static com.google.common.collect.Lists.newArrayList;
import static org.fest.assertions.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
public class RuleDaoTest extends AbstractDaoTestCase {
@@ -43,7 +45,8 @@ public class RuleDaoTest extends AbstractDaoTestCase {
@Before
public void createDao() throws Exception {
- dao = new RuleDao(getMyBatis());
+ WorkQueue queue = mock(WorkQueue.class);
+ dao = new RuleDao(getMyBatis(), queue);
}
@Test
diff --git a/sonar-server/src/main/coffee/component-viewer/coverage-popup.coffee b/sonar-server/src/main/coffee/component-viewer/coverage-popup.coffee
index 63d38c8b702..7623eebcd57 100644
--- a/sonar-server/src/main/coffee/component-viewer/coverage-popup.coffee
+++ b/sonar-server/src/main/coffee/component-viewer/coverage-popup.coffee
@@ -1,17 +1,16 @@
define [
'backbone.marionette'
'templates/component-viewer'
- 'component-viewer/popup'
], (
Marionette
Templates
- Popup
) ->
$ = jQuery
- class CoveragePopupView extends Popup
+ class CoveragePopupView extends Marionette.ItemView
+ className: 'component-viewer-popup'
template: Templates['coveragePopup']
@@ -19,6 +18,17 @@ define [
'click a[data-key]': 'goToFile'
+ onRender: ->
+ @$el.detach().appendTo $('body')
+ @$el.css
+ top: @options.triggerEl.offset().top
+ left: @options.triggerEl.offset().left + @options.triggerEl.outerWidth()
+
+ $('body').on 'click.coverage-popup', =>
+ $('body').off 'click.coverage-popup'
+ @close()
+
+
goToFile: (e) ->
key = $(e.currentTarget).data 'key'
test = $(e.currentTarget).data 'test'
diff --git a/sonar-server/src/main/coffee/component-viewer/duplication-popup.coffee b/sonar-server/src/main/coffee/component-viewer/duplication-popup.coffee
deleted file mode 100644
index 5a220687339..00000000000
--- a/sonar-server/src/main/coffee/component-viewer/duplication-popup.coffee
+++ /dev/null
@@ -1,36 +0,0 @@
-define [
- 'backbone.marionette'
- 'templates/component-viewer'
- 'component-viewer/popup'
-], (
- Marionette
- Templates
- Popup
-) ->
-
- $ = jQuery
-
-
- class DuplicationPopupView extends Popup
- template: Templates['duplicationPopup']
-
-
- events:
- 'click a[data-key]': 'goToFile'
-
-
- goToFile: (e) ->
- key = $(e.currentTarget).data 'key'
- @options.main.addTransition key, 'duplication', [
- {
- key: 'org.codehaus.sonar:sonar-plugin-api:src/test/java/org/sonar/api/resources/ResourceTypeTree.java'
- name: 'ResourceTypeTree.java'
- active: true
- }
- {
- key: 'org.codehaus.sonar:sonar-batch:src/main/java/org/sonar/batch/phases/PhaseExecutor.java'
- name: 'PhaseExecutor.java'
- active: false
- }
- ], []
-
diff --git a/sonar-server/src/main/coffee/component-viewer/main.coffee b/sonar-server/src/main/coffee/component-viewer/main.coffee
index 0f540618849..5601a7b88d1 100644
--- a/sonar-server/src/main/coffee/component-viewer/main.coffee
+++ b/sonar-server/src/main/coffee/component-viewer/main.coffee
@@ -25,8 +25,6 @@ define [
ISSUES_METRIC_LIST = 'blocker_violations,critical_violations,major_violations,minor_violations,info_violations'
- DUPLICATIONS_METRIC_LIST = 'duplicated_lines_density,duplicated_blocks,duplicated_files,duplicated_lines'
-
class ComponentViewer extends Marionette.Layout
@@ -54,7 +52,7 @@ define [
@settings = new Backbone.Model
issues: false
coverage: false
- duplications: true
+ duplications: false
scm: false
workspace: false
@@ -81,10 +79,6 @@ define [
$.get API_RESOURCES, resource: key, metrics: ISSUES_METRIC_LIST
- requestComponentDuplications: (key) ->
- $.get API_RESOURCES, resource: key, metrics: DUPLICATIONS_METRIC_LIST
-
-
requestSource: (key) ->
$.get API_SOURCES, resource: key, (data) =>
@source.set source: data[0]
@@ -93,15 +87,15 @@ define [
extractCoverage: (data) ->
toObj = (d) ->
q = {}
- d?.split(';').forEach (item) ->
+ d.split(';').forEach (item) ->
tokens = item.split '='
q[tokens[0]] = tokens[1]
q
msr = data[0].msr
- coverage = toObj _.findWhere(msr, key: 'coverage_line_hits_data')?.data
- coverageConditions = toObj _.findWhere(msr, key: 'covered_conditions_by_line')?.data
- conditions = toObj _.findWhere(msr, key: 'conditions_by_line')?.data
+ coverage = toObj _.findWhere(msr, key: 'coverage_line_hits_data').data
+ coverageConditions = toObj _.findWhere(msr, key: 'covered_conditions_by_line').data
+ conditions = toObj _.findWhere(msr, key: 'conditions_by_line').data
@source.set
coverage: coverage
coverageConditions: coverageConditions
@@ -111,18 +105,6 @@ define [
@component.set 'coverageMeasures', coverageMeasures
- extractDuplications: (data) ->
- @source.set
- duplications: [
- { from: 18, count: 33 }
- { from: 24, count: 23 }
- { from: 62, count: 33 }
- ]
- duplicationsMeasures = _.sortBy data[0].msr, (item) -> -(item.key == 'duplicated_lines_density')
- console.log data
- @component.set 'duplicationsMeasures', duplicationsMeasures
-
-
extractIssues: (data) ->
issuesMeasures = {}
data[0].msr.forEach (q) ->
@@ -145,7 +127,6 @@ define [
model.set 'component': @component.toJSON()
@render()
if @settings.get('coverage') then @showCoverage() else @hideCoverage()
- if @settings.get('duplications') then @showDuplications() else @hideDuplications()
showCoverage: ->
@@ -191,21 +172,6 @@ define [
@sourceView.render()
- showDuplications: ->
- @settings.set 'duplications', true
- unless @source.has 'duplications'
- @requestComponentDuplications(@key).done (data) =>
- @extractDuplications data
- @sourceView.render()
- else
- @sourceView.render()
-
-
- hideDuplications: ->
- @settings.set 'duplications', false
- @sourceView.render()
-
-
addTransition: (key, transition, optionsForCurrent, options) ->
if optionsForCurrent?
last = @workspace.at(@workspace.length - 1)
diff --git a/sonar-server/src/main/coffee/component-viewer/popup.coffee b/sonar-server/src/main/coffee/component-viewer/popup.coffee
deleted file mode 100644
index bd806802b06..00000000000
--- a/sonar-server/src/main/coffee/component-viewer/popup.coffee
+++ /dev/null
@@ -1,22 +0,0 @@
-define [
- 'backbone.marionette'
-], (
- Marionette
-) ->
-
- $ = jQuery
-
-
- class CoveragePopupView extends Marionette.ItemView
- className: 'component-viewer-popup'
-
-
- onRender: ->
- @$el.detach().appendTo $('body')
- @$el.css
- top: @options.triggerEl.offset().top
- left: @options.triggerEl.offset().left + @options.triggerEl.outerWidth()
-
- $('body').on 'click.coverage-popup', =>
- $('body').off 'click.coverage-popup'
- @close() \ No newline at end of file
diff --git a/sonar-server/src/main/coffee/component-viewer/source.coffee b/sonar-server/src/main/coffee/component-viewer/source.coffee
index e54ec45efd8..74b37753166 100644
--- a/sonar-server/src/main/coffee/component-viewer/source.coffee
+++ b/sonar-server/src/main/coffee/component-viewer/source.coffee
@@ -2,7 +2,6 @@ define [
'backbone.marionette'
'templates/component-viewer'
'component-viewer/coverage-popup'
- 'component-viewer/duplication-popup'
'issues/issue-view'
'issues/models/issue'
'common/handlebars-extensions'
@@ -10,7 +9,6 @@ define [
Marionette
Templates
CoveragePopupView
- DuplicationPopupView
IssueView
Issue
) ->
@@ -26,14 +24,9 @@ define [
'click .js-toggle-settings': 'toggleSettings'
'click .js-toggle-measures': 'toggleMeasures'
'change #source-coverage': 'toggleCoverage'
- 'change #source-duplications': 'toggleDuplications'
'change #source-workspace': 'toggleWorkspace'
'click .coverage-tests': 'showCoveragePopup'
- 'click .duplication-exists': 'showDuplicationPopup'
- 'mouseenter .duplication-exists': 'duplicationMouseEnter'
- 'mouseleave .duplication-exists': 'duplicationMouseLeave'
-
onRender: ->
@delegateEvents()
@@ -71,12 +64,6 @@ define [
if active then @options.main.showCoverage() else @options.main.hideCoverage()
- toggleDuplications: (e) ->
- active = $(e.currentTarget).is ':checked'
- @showSettings = true
- if active then @options.main.showDuplications() else @options.main.hideDuplications()
-
-
toggleWorkspace: (e) ->
active = $(e.currentTarget).is ':checked'
@showSettings = true
@@ -92,36 +79,11 @@ define [
popup.render()
- showDuplicationPopup: (e) ->
- e.stopPropagation()
- $('body').click()
- popup = new DuplicationPopupView
- triggerEl: $(e.currentTarget)
- main: @options.main
- popup.render()
-
-
- duplicationMouseEnter: (e) ->
- @toggleDuplicationHover e, true
-
-
- duplicationMouseLeave: (e) ->
- @toggleDuplicationHover e, false
-
-
- toggleDuplicationHover: (e, add) ->
- bar = $(e.currentTarget)
- index = bar.parent().children('.duplication').index bar
- @$('.duplications').each ->
- $(".duplication", @).eq(index).filter('.duplication-exists').toggleClass 'duplication-hover', add
-
-
prepareSource: ->
source = @model.get 'source'
coverage = @model.get 'coverage'
coverageConditions = @model.get 'coverageConditions'
conditions = @model.get 'conditions'
- duplications = @model.get('duplications') || []
_.map source, (code, line) ->
lineCoverage = coverage? && coverage[line]? && coverage[line]
lineCoverage = +lineCoverage if _.isString lineCoverage
@@ -141,9 +103,6 @@ define [
lineCoverageConditionsStatus = 'orange' if lineCoverageConditions > 0 && lineCoverageConditions < lineConditions
lineCoverageConditionsStatus = 'green' if lineCoverageConditions == lineConditions
- lineDuplications = duplications.map (d) ->
- d.from <= line && (d.from + d.count) > line
-
lineNumber: line
code: code
coverage: lineCoverage
@@ -151,7 +110,6 @@ define [
coverageConditions: lineCoverageConditions
conditions: lineConditions
coverageConditionsStatus: lineCoverageConditionsStatus || lineCoverageStatus
- duplications: lineDuplications
serializeData: ->
diff --git a/sonar-server/src/main/hbs/component-viewer/duplicationPopup.hbs b/sonar-server/src/main/hbs/component-viewer/duplicationPopup.hbs
deleted file mode 100644
index 3be9afb0a5a..00000000000
--- a/sonar-server/src/main/hbs/component-viewer/duplicationPopup.hbs
+++ /dev/null
@@ -1,19 +0,0 @@
-<div class="component-viewer-popup-section">
- <div class="component-viewer-popup-section-title">
- 2 duplications
- </div>
- <ul class="component-viewer-popup-list">
- <li>
- <a data-key="org.codehaus.sonar:sonar-plugin-api:src/main/java/org/sonar/api/resources/ResourceTypeTree.java">
- <span>ResourceTypeTree.java</span>
- </a>
- </li>
- <li>
- <a data-key="org.codehaus.sonar:sonar-batch:src/main/java/org/sonar/batch/phases/PhaseExecutor.java">
- <span>PhaseExecutor.java</span>
- </a>
- </li>
- </ul>
-</div>
-
-<div class="component-viewer-popup-arrow"></div> \ No newline at end of file
diff --git a/sonar-server/src/main/hbs/component-viewer/source.hbs b/sonar-server/src/main/hbs/component-viewer/source.hbs
index ba11ec0cf52..c6372ef5da1 100644
--- a/sonar-server/src/main/hbs/component-viewer/source.hbs
+++ b/sonar-server/src/main/hbs/component-viewer/source.hbs
@@ -5,9 +5,6 @@
<th class="stat"></th>
<th class="stat"></th>
{{/if}}
- {{#if settings.duplications}}
- <th class="stat"></th>
- {{/if}}
<th class="stat settings-toggle">
<button class="button-clean js-toggle-settings">
<i class="icon-settings"></i></i>
@@ -45,9 +42,6 @@
<th class="stat"></th>
<th class="stat"></th>
{{/if}}
- {{#if settings.duplications}}
- <th class="stat"></th>
- {{/if}}
<th class="stat settings-toggle">
<button class="button-clean js-toggle-measures"><i class="icon-list"></i></button>
</th>
@@ -99,18 +93,8 @@
{{/if}}
</li>
{{/if}}
- {{#if settings.duplications}}
- <li class="component-viewer-measures-section brief">
- {{component.duplicationsMeasures}}
- {{#if component.duplicationsMeasures}}
- <dl>
- {{#each component.duplicationsMeasures}}
- <dt>{{t 'metric' key 'name'}}</dt><dd>{{frmt_val}}</dd>
- {{/each}}
- </dl>
- {{/if}}
- </li>
- {{/if}}
+ <li class="component-viewer-measures-section">
+ </li>
</ul>
</th>
</tr>
@@ -121,9 +105,6 @@
<td class="stat coverage-tests"></td>
<td class="stat coverage-conditions"></td>
{{/if}}
- {{#if settings.duplications}}
- <td class="stat"></td>
- {{/if}}
<td class="stat lid"></td>
<td class="line"></td>
</tr>
@@ -150,14 +131,6 @@
</td>
{{/if}}
- {{#if ../settings.duplications}}
- <td class="stat duplications">
- {{#each duplications}}
- <span class="duplication {{#if this}}duplication-exists{{/if}}"></span>
- {{/each}}
- </td>
- {{/if}}
-
<td class="stat lid">{{lineNumber}}</td>
<td class="line"><pre>{{{code}}}</pre></td>
diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/RuleDao.java b/sonar-server/src/main/java/org/sonar/server/rule2/RuleDao.java
deleted file mode 100644
index ac01c142d77..00000000000
--- a/sonar-server/src/main/java/org/sonar/server/rule2/RuleDao.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.server.rule2;
-
-import org.sonar.api.rule.RuleKey;
-import org.sonar.core.persistence.MyBatis;
-import org.sonar.server.cluster.WorkQueue;
-import org.sonar.server.db.BaseDao;
-
-import java.util.Collection;
-
-public class RuleDao extends BaseDao<RuleDto, RuleKey> {
-
- protected RuleDao(WorkQueue workQueue, MyBatis myBatis) {
- super(workQueue, myBatis);
- }
-
- @Override
- protected String getIndexName() {
- return RuleConstants.INDEX_NAME;
- }
-
- @Override
- public Collection<RuleKey> insertsSince(Long timestamp) {
- // TODO Auto-generated method stub
- return null;
- }
-}
diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/RuleDto.java b/sonar-server/src/main/java/org/sonar/server/rule2/RuleDto.java
deleted file mode 100644
index 621de3ae268..00000000000
--- a/sonar-server/src/main/java/org/sonar/server/rule2/RuleDto.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.server.rule2;
-
-import org.sonar.api.rule.RuleKey;
-
-import org.sonar.core.rule.SeverityUtil;
-import org.sonar.server.db.Dto;
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.apache.commons.lang.builder.ReflectionToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
-import org.sonar.check.Cardinality;
-
-import javax.annotation.CheckForNull;
-import javax.annotation.Nullable;
-
-import java.util.Date;
-
-public final class RuleDto implements Dto<RuleKey> {
-
- public static final Integer DISABLED_CHARACTERISTIC_ID = -1;
-
- private String repositoryKey;
- private String ruleKey;
- private String description;
- private String status;
- private String name;
- private String configKey;
- private Integer severity;
- private Cardinality cardinality;
- private String language;
- private Integer parentId;
- private String noteData;
- private String noteUserLogin;
- private Date noteCreatedAt;
- private Date noteUpdatedAt;
- private Integer subCharacteristicId;
- private Integer defaultSubCharacteristicId;
- private String remediationFunction;
- private String defaultRemediationFunction;
- private String remediationCoefficient;
- private String defaultRemediationCoefficient;
- private String remediationOffset;
- private String defaultRemediationOffset;
- private String effortToFixDescription;
- private Date createdAt;
- private Date updatedAt;
-
- @Override
- public RuleKey getKey() {
- return RuleKey.of(this.getRepositoryKey(), this.getRuleKey());
- }
-
- public String getRepositoryKey() {
- return repositoryKey;
- }
-
- public RuleDto setRepositoryKey(String repositoryKey) {
- this.repositoryKey = repositoryKey;
- return this;
- }
-
- public String getRuleKey() {
- return ruleKey;
- }
-
- public RuleDto setRuleKey(String ruleKey) {
- this.ruleKey = ruleKey;
- return this;
- }
-
- public String getDescription() {
- return description;
- }
-
- public RuleDto setDescription(String description) {
- this.description = description;
- return this;
- }
-
- public String getStatus() {
- return status;
- }
-
- public RuleDto setStatus(String status) {
- this.status = status;
- return this;
- }
-
- public String getName() {
- return name;
- }
-
- public RuleDto setName(String name) {
- this.name = name;
- return this;
- }
-
- public String getConfigKey() {
- return configKey;
- }
-
- public RuleDto setConfigKey(String configKey) {
- this.configKey = configKey;
- return this;
- }
-
- public Integer getSeverity() {
- return severity;
- }
-
- public String getSeverityString() {
- return SeverityUtil.getSeverityFromOrdinal(severity);
- }
-
- public RuleDto setSeverity(String severity) {
- this.severity = SeverityUtil.getOrdinalFromSeverity(severity);
- return this;
- }
-
- public RuleDto setSeverity(Integer severity) {
- this.severity = severity;
- return this;
- }
-
-
- public Cardinality getCardinality() {
- return cardinality;
- }
-
- public RuleDto setCardinality(Cardinality cardinality) {
- this.cardinality = cardinality;
- return this;
- }
-
- public String getLanguage() {
- return language;
- }
-
- public RuleDto setLanguage(String language) {
- this.language = language;
- return this;
- }
-
- @CheckForNull
- public Integer getParentId() {
- return parentId;
- }
-
- public RuleDto setParentId(@Nullable Integer parentId) {
- this.parentId = parentId;
- return this;
- }
-
- public String getNoteData() {
- return noteData;
- }
-
- public RuleDto setNoteData(String noteData) {
- this.noteData = noteData;
- return this;
- }
-
- public String getNoteUserLogin() {
- return noteUserLogin;
- }
-
- public RuleDto setNoteUserLogin(String noteUserLogin) {
- this.noteUserLogin = noteUserLogin;
- return this;
- }
-
- public Date getNoteCreatedAt() {
- return noteCreatedAt;
- }
-
- public RuleDto setNoteCreatedAt(Date noteCreatedAt) {
- this.noteCreatedAt = noteCreatedAt;
- return this;
- }
-
- public Date getNoteUpdatedAt() {
- return noteUpdatedAt;
- }
-
- public RuleDto setNoteUpdatedAt(Date noteUpdatedAt) {
- this.noteUpdatedAt = noteUpdatedAt;
- return this;
- }
-
- @CheckForNull
- public Integer getSubCharacteristicId() {
- return subCharacteristicId;
- }
-
- public RuleDto setSubCharacteristicId(@Nullable Integer subCharacteristicId) {
- this.subCharacteristicId = subCharacteristicId;
- return this;
- }
-
- @CheckForNull
- public Integer getDefaultSubCharacteristicId() {
- return defaultSubCharacteristicId;
- }
-
- public RuleDto setDefaultSubCharacteristicId(@Nullable Integer defaultSubCharacteristicId) {
- this.defaultSubCharacteristicId = defaultSubCharacteristicId;
- return this;
- }
-
- @CheckForNull
- public String getRemediationFunction() {
- return remediationFunction;
- }
-
- public RuleDto setRemediationFunction(@Nullable String remediationFunction) {
- this.remediationFunction = remediationFunction;
- return this;
- }
-
- @CheckForNull
- public String getDefaultRemediationFunction() {
- return defaultRemediationFunction;
- }
-
- public RuleDto setDefaultRemediationFunction(@Nullable String defaultRemediationFunction) {
- this.defaultRemediationFunction = defaultRemediationFunction;
- return this;
- }
-
- @CheckForNull
- public String getRemediationCoefficient() {
- return remediationCoefficient;
- }
-
- public RuleDto setRemediationCoefficient(@Nullable String remediationCoefficient) {
- this.remediationCoefficient = remediationCoefficient;
- return this;
- }
-
- @CheckForNull
- public String getDefaultRemediationCoefficient() {
- return defaultRemediationCoefficient;
- }
-
- public RuleDto setDefaultRemediationCoefficient(@Nullable String defaultRemediationCoefficient) {
- this.defaultRemediationCoefficient = defaultRemediationCoefficient;
- return this;
- }
-
- @CheckForNull
- public String getRemediationOffset() {
- return remediationOffset;
- }
-
- public RuleDto setRemediationOffset(@Nullable String remediationOffset) {
- this.remediationOffset = remediationOffset;
- return this;
- }
-
- @CheckForNull
- public String getDefaultRemediationOffset() {
- return defaultRemediationOffset;
- }
-
- public RuleDto setDefaultRemediationOffset(@Nullable String defaultRemediationOffset) {
- this.defaultRemediationOffset = defaultRemediationOffset;
- return this;
- }
-
- @CheckForNull
- public String getEffortToFixDescription() {
- return effortToFixDescription;
- }
-
- public RuleDto setEffortToFixDescription(@Nullable String effortToFixDescription) {
- this.effortToFixDescription = effortToFixDescription;
- return this;
- }
-
- public Date getCreatedAt() {
- return createdAt;
- }
-
- public RuleDto setCreatedAt(Date createdAt) {
- this.createdAt = createdAt;
- return this;
- }
-
- public Date getUpdatedAt() {
- return updatedAt;
- }
-
- public RuleDto setUpdatedAt(Date updatedAt) {
- this.updatedAt = updatedAt;
- return this;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (!(obj instanceof RuleDto)) {
- return false;
- }
- if (this == obj) {
- return true;
- }
- RuleDto other = (RuleDto) obj;
- return new EqualsBuilder()
- .append(repositoryKey, other.getRepositoryKey())
- .append(ruleKey, other.getRuleKey())
- .isEquals();
- }
-
- @Override
- public int hashCode() {
- return new HashCodeBuilder(17, 37)
- .append(repositoryKey)
- .append(ruleKey)
- .toHashCode();
- }
-
- @Override
- public String toString() {
- return new ReflectionToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).toString();
- }
-}
diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/RuleIndex.java b/sonar-server/src/main/java/org/sonar/server/rule2/RuleIndex.java
index 1867a4e572e..53ca1b54cc8 100644
--- a/sonar-server/src/main/java/org/sonar/server/rule2/RuleIndex.java
+++ b/sonar-server/src/main/java/org/sonar/server/rule2/RuleIndex.java
@@ -27,8 +27,10 @@ import org.elasticsearch.index.query.QueryBuilders;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.rule.RuleKey;
+import org.sonar.core.cluster.WorkQueue;
import org.sonar.core.profiling.Profiling;
-import org.sonar.server.cluster.WorkQueue;
+import org.sonar.core.rule.RuleConstants;
+import org.sonar.core.rule.RuleDao;
import org.sonar.server.search.BaseIndex;
import java.io.IOException;
@@ -42,8 +44,8 @@ public class RuleIndex extends BaseIndex<RuleKey> {
private static final Logger LOG = LoggerFactory.getLogger(RuleIndex.class);
- public RuleIndex(WorkQueue workQueue, RuleDao dao, Profiling profiling) {
- super(workQueue, dao, profiling);
+ public RuleIndex(WorkQueue queue, RuleDao dao, Profiling profiling) {
+ super(queue, dao, profiling);
}
@Override
diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/RuleService.java b/sonar-server/src/main/java/org/sonar/server/rule2/RuleService.java
index a9087216fd8..dfd0835e3cf 100644
--- a/sonar-server/src/main/java/org/sonar/server/rule2/RuleService.java
+++ b/sonar-server/src/main/java/org/sonar/server/rule2/RuleService.java
@@ -20,6 +20,8 @@
package org.sonar.server.rule2;
import org.sonar.api.rule.RuleKey;
+import org.sonar.core.rule.RuleDao;
+import org.sonar.core.rule.RuleDto;
import org.sonar.server.search.Hit;
import javax.annotation.CheckForNull;
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 9eaf598196e..1d6529238e0 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
@@ -33,12 +33,11 @@ import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.sonar.core.persistence.MyBatis;
+import org.sonar.core.cluster.WorkQueue;
+import org.sonar.core.db.Dao;
import org.sonar.core.profiling.Profiling;
import org.sonar.core.profiling.Profiling.Level;
import org.sonar.core.profiling.StopWatch;
-import org.sonar.server.cluster.WorkQueue;
-import org.sonar.server.db.Dao;
import java.io.Serializable;
import java.util.Collection;
diff --git a/sonar-server/src/main/java/org/sonar/server/search/IndexSynchronizer.java b/sonar-server/src/main/java/org/sonar/server/search/IndexSynchronizer.java
index 0547675b535..de2d4bc0d9f 100644
--- a/sonar-server/src/main/java/org/sonar/server/search/IndexSynchronizer.java
+++ b/sonar-server/src/main/java/org/sonar/server/search/IndexSynchronizer.java
@@ -19,9 +19,10 @@
*/
package org.sonar.server.search;
+import org.sonar.core.cluster.WorkQueue;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.sonar.server.cluster.WorkQueue;
import java.io.Serializable;
diff --git a/sonar-server/src/main/less/component-viewer.less b/sonar-server/src/main/less/component-viewer.less
index 7f2f9979911..6f1d21d59e2 100644
--- a/sonar-server/src/main/less/component-viewer.less
+++ b/sonar-server/src/main/less/component-viewer.less
@@ -124,7 +124,6 @@
font-size: 11px;
text-align: right;
cursor: default;
- white-space: nowrap;
}
.sources2 .lid {
@@ -137,30 +136,6 @@
cursor: pointer;
}
- .sources2 .duplications {
- padding-top: 0;
- padding-bottom: 0;
- font-size: 0;
-
- .duplication {
- display: inline-block;
- vertical-align: top;
- .size(5px, 100%);
- }
-
- .duplication + .duplication { margin-left: 2px; }
-
- .duplication-exists {
- background-color: @lightOrange;
- cursor: pointer;
- .trans;
- }
-
- .duplication-hover {
- background-color: darken(@lightOrange, 10%);
- }
- }
-
.sources2 .measures {
padding: 4px 5px;
border-left: 1px solid @barBorderColor;
diff --git a/sonar-server/src/main/less/variables.less b/sonar-server/src/main/less/variables.less
index ea62c4aaba9..659091e4ba4 100644
--- a/sonar-server/src/main/less/variables.less
+++ b/sonar-server/src/main/less/variables.less
@@ -24,7 +24,6 @@
@green: #85bb43;
@yellow: #fede06;
@orange: #f90;
-@lightOrange: #f3ca8e;
@purple: #9139d4;
@darkBlue: darken(@blue, 20%);
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/issues/search.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/issues/search.html.erb
index 758be6eae54..d09c9d319c3 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/views/issues/search.html.erb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/views/issues/search.html.erb
@@ -238,10 +238,6 @@
'metric.file_complexity_distribution.name': '<%= escape_javascript message('metric.file_complexity_distribution.name') -%>',
'metric.coverage.name': '<%= escape_javascript message('metric.coverage.name') -%>',
'metric.line_coverage.name': '<%= escape_javascript message('metric.line_coverage.name') -%>',
- 'metric.branch_coverage.name': '<%= escape_javascript message('metric.branch_coverage.name') -%>',
- 'metric.duplicated_blocks.name': '<%= escape_javascript message('metric.duplicated_blocks.name') -%>',
- 'metric.duplicated_files.name': '<%= escape_javascript message('metric.duplicated_files.name') -%>',
- 'metric.duplicated_lines.name': '<%= escape_javascript message('metric.duplicated_lines.name') -%>',
- 'metric.duplicated_lines_density.name': '<%= escape_javascript message('metric.duplicated_lines_density.name') -%>'
+ 'metric.branch_coverage.name': '<%= escape_javascript message('metric.branch_coverage.name') -%>'
};
</script>
diff --git a/sonar-server/src/test/java/org/sonar/server/rule/RegisterRulesTest.java b/sonar-server/src/test/java/org/sonar/server/rule/RegisterRulesTest.java
index 01c35e4d405..6707ea13852 100644
--- a/sonar-server/src/test/java/org/sonar/server/rule/RegisterRulesTest.java
+++ b/sonar-server/src/test/java/org/sonar/server/rule/RegisterRulesTest.java
@@ -34,6 +34,8 @@ import org.sonar.api.server.rule.RulesDefinition;
import org.sonar.api.utils.DateUtils;
import org.sonar.api.utils.MessageException;
import org.sonar.api.utils.System2;
+import org.sonar.core.cluster.LocalNonBlockingWorkQueue;
+import org.sonar.core.cluster.WorkQueue;
import org.sonar.core.persistence.AbstractDaoTestCase;
import org.sonar.core.persistence.MyBatis;
import org.sonar.core.qualityprofile.db.ActiveRuleDao;
@@ -50,7 +52,11 @@ import java.util.Date;
import static org.fest.assertions.Assertions.assertThat;
import static org.fest.assertions.Fail.fail;
-import static org.mockito.Mockito.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class RegisterRulesTest extends AbstractDaoTestCase {
@@ -85,14 +91,16 @@ public class RegisterRulesTest extends AbstractDaoTestCase {
ActiveRuleDao activeRuleDao;
CharacteristicDao characteristicDao;
System2 system;
+ WorkQueue queue;
Date date = DateUtils.parseDateTime("2014-03-17T19:10:03+0100");
@Before
public void before() {
system = mock(System2.class);
+ queue = mock(WorkQueue.class);
when(system.now()).thenReturn(date.getTime());
myBatis = getMyBatis();
- ruleDao = new RuleDao(myBatis);
+ ruleDao = new RuleDao(myBatis, queue);
ruleTagDao = new RuleTagDao(myBatis);
activeRuleDao = new ActiveRuleDao(myBatis);
ruleTagOperations = new RuleTagOperations(ruleTagDao, esRuleTags);
diff --git a/sonar-server/src/test/java/org/sonar/server/rule2/RuleIndexTest.java b/sonar-server/src/test/java/org/sonar/server/rule2/RuleIndexTest.java
index 28f77935620..f356961ddef 100644
--- a/sonar-server/src/test/java/org/sonar/server/rule2/RuleIndexTest.java
+++ b/sonar-server/src/test/java/org/sonar/server/rule2/RuleIndexTest.java
@@ -19,23 +19,21 @@
*/
package org.sonar.server.rule2;
+import org.sonar.core.cluster.LocalNonBlockingWorkQueue;
+
import com.github.tlrx.elasticsearch.test.annotations.ElasticsearchNode;
import com.github.tlrx.elasticsearch.test.support.junit.runners.ElasticsearchRunner;
import org.elasticsearch.node.Node;
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.sonar.api.config.Settings;
import org.sonar.core.profiling.Profiling;
-import org.sonar.server.cluster.LocalNonBlockingWorkQueue;
import org.sonar.server.search.BaseIndex;
-
import static org.fest.assertions.Assertions.assertThat;
@RunWith(ElasticsearchRunner.class)
-@Ignore("Should be fixed")
public class RuleIndexTest {
private static final String TEST_NODE_NAME = "es_node_for_tests";
diff --git a/sonar-server/src/test/java/org/sonar/server/search/BaseIndexTest.java b/sonar-server/src/test/java/org/sonar/server/search/BaseIndexTest.java
index 02db86fd287..ced123ba714 100644
--- a/sonar-server/src/test/java/org/sonar/server/search/BaseIndexTest.java
+++ b/sonar-server/src/test/java/org/sonar/server/search/BaseIndexTest.java
@@ -31,6 +31,7 @@ import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.sonar.api.config.Settings;
+import org.sonar.core.cluster.LocalNonBlockingWorkQueue;
import org.sonar.core.profiling.Profiling;
import org.sonar.server.cluster.LocalNonBlockingWorkQueue;