]> source.dussan.org Git - sonarqube.git/commitdiff
Add method ChannelDispatcher.Builder#addChannels(Channel...) + minor fixes
authorSimon Brandhof <simon.brandhof@gmail.com>
Tue, 28 Jun 2011 06:42:53 +0000 (08:42 +0200)
committerSimon Brandhof <simon.brandhof@gmail.com>
Tue, 28 Jun 2011 06:43:11 +0000 (08:43 +0200)
sonar-channel/src/main/java/org/sonar/channel/ChannelDispatcher.java
sonar-channel/src/main/java/org/sonar/channel/CodeBuffer.java
sonar-channel/src/test/java/org/sonar/channel/ChannelDispatcherTest.java
sonar-channel/src/test/java/org/sonar/channel/RegexChannelTest.java

index 58b8c95afba198aa2e215a7ad09dc7ef7b78aa34..d21ac683abdc92d2fef123b94a94a4d945161670 100644 (file)
@@ -36,7 +36,7 @@ public class ChannelDispatcher<OUTPUT> extends Channel<OUTPUT> {
   private final Channel[] channels;
 
   /**
-   * @deprecated please use the builder() method
+   * @deprecated in version 2.9. Please use the builder() method
    */
   @SuppressWarnings("rawtypes")
   @Deprecated
@@ -45,7 +45,7 @@ public class ChannelDispatcher<OUTPUT> extends Channel<OUTPUT> {
   }
 
   /**
-   * @deprecated please use the builder() method
+   * @deprecated in version 2.9. Please use the builder() method
    */
   @SuppressWarnings("rawtypes")
   @Deprecated
@@ -54,7 +54,7 @@ public class ChannelDispatcher<OUTPUT> extends Channel<OUTPUT> {
   }
 
   /**
-   * @deprecated please use the builder() method
+   * @deprecated in version 2.9. Please use the builder() method
    */
   @SuppressWarnings("rawtypes")
   @Deprecated
@@ -94,6 +94,10 @@ public class ChannelDispatcher<OUTPUT> extends Channel<OUTPUT> {
     return true;
   }
 
+  Channel[] getChannels() {
+    return channels;
+  }
+
   /**
    * Get a Builder instance to build a new ChannelDispatcher
    */
@@ -114,6 +118,13 @@ public class ChannelDispatcher<OUTPUT> extends Channel<OUTPUT> {
       return this;
     }
 
+    public Builder addChannels(Channel... c) {
+      for (Channel channel : c) {
+        addChannel(channel);
+      }
+      return this;
+    }
+
     /**
      * If this option is activated, an IllegalStateException will be thrown as soon as a character won't be consumed by any channel.
      */
index 6373bb0ff40595072b873698e1744d18c4950a30..7274181662e79370997a73c78f4c42fffa3dcb50 100644 (file)
@@ -48,13 +48,11 @@ public class CodeBuffer implements CharSequence {
   private static final char LF = '\n';
   private static final char CR = '\r';
   private int tabWidth;
-  private CodeReaderConfiguration configuration;
 
   private boolean recordingMode = false;
   private StringBuilder recordedCharacters = new StringBuilder();
 
   protected CodeBuffer(Reader initialCodeReader, CodeReaderConfiguration configuration) {
-    this.configuration = configuration;
     lastChar = -1;
     cursor = new Cursor();
     bufferCapacity = configuration.getBufferCapacity();
index 030d82feb7003e2b944f767ea5f25cb6ed5a4819..f24761e8045b04e9403e06d467b0df96e8bc2d07 100644 (file)
@@ -34,14 +34,21 @@ public class ChannelDispatcherTest {
     assertThat(output.toString(), is("twowords"));
   }
 
+  @Test
+  public void shouldAddChannels() {
+    ChannelDispatcher<StringBuilder> dispatcher = ChannelDispatcher.builder().addChannels(new SpaceDeletionChannel(), new FakeChannel()).build();
+    assertThat(dispatcher.getChannels().length, is(2));
+    assertThat(dispatcher.getChannels()[0], is(SpaceDeletionChannel.class));
+    assertThat(dispatcher.getChannels()[1], is(FakeChannel.class));
+  }
+
   @Test(expected = IllegalStateException.class)
   public void shouldThrowExceptionWhenNoChannelToConsumeNextCharacter() {
     ChannelDispatcher<StringBuilder> dispatcher = ChannelDispatcher.builder().failIfNoChannelToConsumeOneCharacter().build();
     dispatcher.consume(new CodeReader("two words"), new StringBuilder());
   }
 
-  private class SpaceDeletionChannel extends Channel<StringBuilder> {
-
+  private static class SpaceDeletionChannel extends Channel<StringBuilder> {
     @Override
     public boolean consume(CodeReader code, StringBuilder output) {
       if (code.peek() == ' ') {
@@ -51,6 +58,13 @@ public class ChannelDispatcherTest {
       }
       return true;
     }
+  }
 
+  private static class FakeChannel extends Channel<StringBuilder> {
+    @Override
+    public boolean consume(CodeReader code, StringBuilder output) {
+      return true;
+    }
   }
+
 }
index 7fb5c3a11ab43da6ac54bc604701d2a8f5d8e876..35d9c936b788aef595c6caace6fc0ee0c88e495e 100644 (file)
@@ -28,13 +28,13 @@ public class RegexChannelTest {
 
   @Test
   public void shouldMatch() {
-    ChannelDispatcher<StringBuilder> dispatcher = new ChannelDispatcher<StringBuilder>(new MyWordChannel(), new BlackholeChannel());
+    ChannelDispatcher<StringBuilder> dispatcher = ChannelDispatcher.builder().addChannel(new MyWordChannel()).addChannel(new BlackholeChannel()).build();
     StringBuilder output = new StringBuilder();
     dispatcher.consume(new CodeReader("my word"), output);
     assertThat(output.toString(), is("<w>my</w> <w>word</w>"));
   }
 
-  private class MyWordChannel extends RegexChannel<StringBuilder> {
+  private static class MyWordChannel extends RegexChannel<StringBuilder> {
 
     public MyWordChannel() {
       super("\\w++");
@@ -46,7 +46,7 @@ public class RegexChannelTest {
     }
   }
 
-  class BlackholeChannel extends Channel<StringBuilder> {
+  private static class BlackholeChannel extends Channel<StringBuilder> {
 
     @Override
     public boolean consume(CodeReader code, StringBuilder output) {