Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementation of #113 Plugin Facility for Sputnik Processors #131

Merged
merged 5 commits into from
Feb 23, 2016
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 11 additions & 32 deletions src/main/java/pl/touk/sputnik/engine/ProcessorBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,48 +2,27 @@

import org.jetbrains.annotations.NotNull;
import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.configuration.GeneralOption;
import pl.touk.sputnik.processor.checkstyle.CheckstyleProcessor;
import pl.touk.sputnik.processor.codenarc.CodeNarcProcessor;
import pl.touk.sputnik.processor.findbugs.FindBugsProcessor;
import pl.touk.sputnik.processor.jshint.JsHintProcessor;
import pl.touk.sputnik.processor.jslint.JsLintProcessor;
import pl.touk.sputnik.processor.pmd.PmdProcessor;
import pl.touk.sputnik.processor.scalastyle.ScalastyleProcessor;
import pl.touk.sputnik.processor.sonar.SonarProcessor;
import pl.touk.sputnik.processor.ReviewProcessorFactory;
import pl.touk.sputnik.review.ReviewProcessor;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ServiceLoader;

public class ProcessorBuilder {

@NotNull
public static List<ReviewProcessor> buildProcessors(Configuration configuration) {
List<ReviewProcessor> processors = new ArrayList<>();
if (Boolean.valueOf(configuration.getProperty(GeneralOption.CHECKSTYLE_ENABLED))) {
processors.add(new CheckstyleProcessor(configuration));
}
if (Boolean.valueOf(configuration.getProperty(GeneralOption.PMD_ENABLED))) {
processors.add(new PmdProcessor(configuration));
}
if (Boolean.valueOf(configuration.getProperty(GeneralOption.FINDBUGS_ENABLED))) {
processors.add(new FindBugsProcessor(configuration));
}
if (Boolean.valueOf(configuration.getProperty(GeneralOption.SCALASTYLE_ENABLED))) {
processors.add(new ScalastyleProcessor(configuration));
}
if (Boolean.valueOf(configuration.getProperty(GeneralOption.CODE_NARC_ENABLED))) {
processors.add(new CodeNarcProcessor(configuration));
}
if (Boolean.valueOf(configuration.getProperty(GeneralOption.JSLINT_ENABLED))) {
processors.add(new JsLintProcessor(configuration));
}
if (Boolean.valueOf(configuration.getProperty(GeneralOption.JSHINT_ENABLED))) {
processors.add(new JsHintProcessor(configuration));
}
if (Boolean.valueOf(configuration.getProperty(GeneralOption.SONAR_ENABLED))) {
processors.add(new SonarProcessor(configuration));

ServiceLoader<ReviewProcessorFactory> loader = ServiceLoader.load(ReviewProcessorFactory.class);
Iterator<ReviewProcessorFactory> iterator = loader.iterator();
while (iterator.hasNext()) {
ReviewProcessorFactory factory = iterator.next();
if (factory.isEnabled(configuration)) {
processors.add(factory.create(configuration));
}
}
return processors;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package pl.touk.sputnik.processor;

import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.review.ReviewProcessor;

public interface ReviewProcessorFactory<T extends ReviewProcessor> {

boolean isEnabled(Configuration configuration);

T create(Configuration configuration);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package pl.touk.sputnik.processor.checkstyle;

import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.configuration.GeneralOption;
import pl.touk.sputnik.processor.ReviewProcessorFactory;

public class CheckstyleReviewProcessorFactory implements ReviewProcessorFactory<CheckstyleProcessor> {

@Override
public boolean isEnabled(Configuration configuration) {
return Boolean.valueOf(configuration.getProperty(GeneralOption.CHECKSTYLE_ENABLED));
}

@Override
public CheckstyleProcessor create(Configuration configuration) {
return new CheckstyleProcessor(configuration);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package pl.touk.sputnik.processor.codenarc;

import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.configuration.GeneralOption;
import pl.touk.sputnik.processor.ReviewProcessorFactory;

public class NodeCardReviewProcessorFactory implements ReviewProcessorFactory<CodeNarcProcessor> {

@Override
public boolean isEnabled(Configuration configuration) {
return Boolean.valueOf(configuration.getProperty(GeneralOption.CODE_NARC_ENABLED));
}

@Override
public CodeNarcProcessor create(Configuration configuration) {
return new CodeNarcProcessor(configuration);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package pl.touk.sputnik.processor.findbugs;

import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.configuration.GeneralOption;
import pl.touk.sputnik.processor.ReviewProcessorFactory;

public class FindbugsReviewProcessorFactory implements ReviewProcessorFactory<FindBugsProcessor> {

@Override
public boolean isEnabled(Configuration configuration) {
return Boolean.valueOf(configuration.getProperty(GeneralOption.FINDBUGS_ENABLED));
}

@Override
public FindBugsProcessor create(Configuration configuration) {
return new FindBugsProcessor(configuration);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package pl.touk.sputnik.processor.jshint;

import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.configuration.GeneralOption;
import pl.touk.sputnik.processor.ReviewProcessorFactory;

public class JsHintReviewProcessorFactory implements ReviewProcessorFactory<JsHintProcessor> {

@Override
public boolean isEnabled(Configuration configuration) {
return Boolean.valueOf(configuration.getProperty(GeneralOption.JSHINT_ENABLED));
}

@Override
public JsHintProcessor create(Configuration configuration) {
return new JsHintProcessor(configuration);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package pl.touk.sputnik.processor.jslint;

import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.configuration.GeneralOption;
import pl.touk.sputnik.processor.ReviewProcessorFactory;

public class JsLintReviewProcessorFactory implements ReviewProcessorFactory<JsLintProcessor> {

@Override
public boolean isEnabled(Configuration configuration) {
return Boolean.valueOf(configuration.getProperty(GeneralOption.JSLINT_ENABLED));
}

@Override
public JsLintProcessor create(Configuration configuration) {
return new JsLintProcessor(configuration);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package pl.touk.sputnik.processor.pmd;

import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.configuration.GeneralOption;
import pl.touk.sputnik.processor.ReviewProcessorFactory;

public class PmdReviewProcessorFactory implements ReviewProcessorFactory<PmdProcessor> {

@Override
public boolean isEnabled(Configuration configuration) {
return Boolean.valueOf(configuration.getProperty(GeneralOption.PMD_ENABLED));
}

@Override
public PmdProcessor create(Configuration configuration) {
return new PmdProcessor(configuration);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package pl.touk.sputnik.processor.scalastyle;

import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.configuration.GeneralOption;
import pl.touk.sputnik.processor.ReviewProcessorFactory;

public class ScalastyleReviewProcessorFactory implements ReviewProcessorFactory<ScalastyleProcessor> {

@Override
public boolean isEnabled(Configuration configuration) {
return Boolean.valueOf(configuration.getProperty(GeneralOption.SCALASTYLE_ENABLED));
}

@Override
public ScalastyleProcessor create(Configuration configuration) {
return new ScalastyleProcessor(configuration);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package pl.touk.sputnik.processor.sonar;

import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.configuration.GeneralOption;
import pl.touk.sputnik.processor.ReviewProcessorFactory;

public class SonarReviewProcessorFactory implements ReviewProcessorFactory<SonarProcessor> {

@Override
public boolean isEnabled(Configuration configuration) {
return Boolean.valueOf(configuration.getProperty(GeneralOption.SONAR_ENABLED));
}

@Override
public SonarProcessor create(Configuration configuration) {
return new SonarProcessor(configuration);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
pl.touk.sputnik.processor.checkstyle.CheckstyleReviewProcessorFactory
pl.touk.sputnik.processor.pmd.PmdReviewProcessorFactory
pl.touk.sputnik.processor.findbugs.FindbugsReviewProcessorFactory
pl.touk.sputnik.processor.scalastyle.ScalastyleReviewProcessorFactory
pl.touk.sputnik.processor.codenarc.NodeCardReviewProcessorFactory
pl.touk.sputnik.processor.jslint.JsLintReviewProcessorFactory
pl.touk.sputnik.processor.jshint.JsHintReviewProcessorFactory
pl.touk.sputnik.processor.sonar.SonarReviewProcessorFactory
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package pl.touk.sputnik.processor.checkstyle;

import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.configuration.GeneralOption;
import pl.touk.sputnik.processor.ReviewProcessorFactory;

import org.junit.Test;

import static org.junit.Assert.*;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class CheckstyleReviewProcessorFactoryTest {

@Test
public void testIsEnabled() throws Exception {
Configuration configuration = mock(Configuration.class);
when(configuration.getProperty(eq(GeneralOption.CHECKSTYLE_ENABLED))).thenReturn("true");

ReviewProcessorFactory factory = new CheckstyleReviewProcessorFactory();
assertTrue(factory.isEnabled(configuration));
}

@Test
public void testCreate() throws Exception {
Configuration configuration = mock(Configuration.class);
when(configuration.getProperty(eq(GeneralOption.CHECKSTYLE_ENABLED))).thenReturn("true");

ReviewProcessorFactory factory = new CheckstyleReviewProcessorFactory();
assertNotNull(factory.create(configuration));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package pl.touk.sputnik.processor.codenarc;

import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.configuration.GeneralOption;
import pl.touk.sputnik.processor.ReviewProcessorFactory;

import org.junit.Test;

import static org.junit.Assert.*;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class NodeCardReviewProcessorFactoryTest {

@Test
public void testIsEnabled() throws Exception {
Configuration configuration = mock(Configuration.class);
when(configuration.getProperty(eq(GeneralOption.CODE_NARC_ENABLED))).thenReturn("true");

ReviewProcessorFactory factory = new NodeCardReviewProcessorFactory();
assertTrue(factory.isEnabled(configuration));
}

@Test
public void testCreate() throws Exception {
Configuration configuration = mock(Configuration.class);
when(configuration.getProperty(eq(GeneralOption.CODE_NARC_ENABLED))).thenReturn("true");

ReviewProcessorFactory factory = new NodeCardReviewProcessorFactory();
assertNotNull(factory.create(configuration));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package pl.touk.sputnik.processor.findbugs;

import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.configuration.GeneralOption;
import pl.touk.sputnik.processor.ReviewProcessorFactory;

import org.junit.Test;

import static org.junit.Assert.*;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class FindbugsReviewProcessorFactoryTest {

@Test
public void testIsEnabled() throws Exception {
Configuration configuration = mock(Configuration.class);
when(configuration.getProperty(eq(GeneralOption.FINDBUGS_ENABLED))).thenReturn("true");

ReviewProcessorFactory factory = new FindbugsReviewProcessorFactory();
assertTrue(factory.isEnabled(configuration));
}

@Test
public void testCreate() throws Exception {
Configuration configuration = mock(Configuration.class);
when(configuration.getProperty(eq(GeneralOption.FINDBUGS_ENABLED))).thenReturn("true");

ReviewProcessorFactory factory = new FindbugsReviewProcessorFactory();
assertNotNull(factory.create(configuration));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package pl.touk.sputnik.processor.jshint;

import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.configuration.GeneralOption;
import pl.touk.sputnik.processor.ReviewProcessorFactory;
import pl.touk.sputnik.processor.checkstyle.CheckstyleReviewProcessorFactory;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Checkstyle] ERROR: Unused import - pl.touk.sputnik.processor.checkstyle.CheckstyleReviewProcessorFactory.


import org.junit.Test;

import static org.junit.Assert.*;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class JsHintReviewProcessorFactoryTest {

@Test
public void testIsEnabled() throws Exception {
Configuration configuration = mock(Configuration.class);
when(configuration.getProperty(eq(GeneralOption.JSHINT_ENABLED))).thenReturn("true");

ReviewProcessorFactory factory = new JsHintReviewProcessorFactory();
assertTrue(factory.isEnabled(configuration));
}

@Test
public void testCreate() throws Exception {
Configuration configuration = mock(Configuration.class);
when(configuration.getProperty(eq(GeneralOption.JSHINT_ENABLED))).thenReturn("true");

ReviewProcessorFactory factory = new JsHintReviewProcessorFactory();
assertNotNull(factory.create(configuration));
}
}
Loading