* 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.core.source;
import java.io.BufferedReader;
/**
* @since 3.6
*/
-public class CharactersReader {
+class CharactersReader {
- public static final int END_OF_STREAM = -1;
- public static final char[] SPECIAL_CHARS = {'<', '>'};
+ static final int END_OF_STREAM = -1;
private final BufferedReader stringBuffer;
private final Deque<String> openTags;
this.openTags = new ArrayDeque<String>();
}
- public boolean readNextChar() throws IOException {
+ boolean readNextChar() throws IOException {
previousValue = currentValue;
currentValue = stringBuffer.read();
currentIndex++;
return currentValue != END_OF_STREAM;
}
- public int getCurrentValue() {
+ int getCurrentValue() {
return currentValue;
}
- public int getPreviousValue() {
+ int getPreviousValue() {
return previousValue;
}
- public int getCurrentIndex() {
+ int getCurrentIndex() {
return currentIndex;
}
- public void registerOpenTag(String textType) {
+ void registerOpenTag(String textType) {
openTags.push(textType);
}
- public void removeLastOpenTag() {
+ void removeLastOpenTag() {
openTags.remove();
}
- public Deque<String> getOpenTags() {
+ Deque<String> getOpenTags() {
return openTags;
}
}
* 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.core.source;
import com.google.common.collect.Lists;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
-public class DecorationDataHolder {
+class DecorationDataHolder {
private static final String ENTITY_SEPARATOR = ";";
private static final String FIELD_SEPARATOR = ",";
private List<Integer> closingTagsOffsets;
private int closingTagsIndex;
- public DecorationDataHolder() {
+ DecorationDataHolder() {
openingTagsEntries = Lists.newArrayList();
closingTagsOffsets = Lists.newArrayList();
}
- public void loadSymbolReferences(String symbolsReferences) {
+ void loadSymbolReferences(String symbolsReferences) {
String[] symbols = symbolsReferences.split(ENTITY_SEPARATOR);
- for (int i = 0; i < symbols.length; i++) {
- String[] symbolFields = symbols[i].split(FIELD_SEPARATOR);
+ for (String symbol : symbols) {
+ String[] symbolFields = symbol.split(FIELD_SEPARATOR);
int declarationStartOffset = Integer.parseInt(symbolFields[0]);
int declarationEndOffset = Integer.parseInt(symbolFields[1]);
int symbolLength = declarationEndOffset - declarationStartOffset;
}
}
- public void loadSyntaxHighlightingData(String syntaxHighlightingRules) {
+ void loadSyntaxHighlightingData(String syntaxHighlightingRules) {
String[] rules = syntaxHighlightingRules.split(ENTITY_SEPARATOR);
- for (int i = 0; i < rules.length; i++) {
- String[] ruleFields = rules[i].split(FIELD_SEPARATOR);
+ for (String rule : rules) {
+ String[] ruleFields = rule.split(FIELD_SEPARATOR);
insertAndPreserveOrder(new TagEntry(Integer.parseInt(ruleFields[0]), ruleFields[2]), openingTagsEntries);
insertAndPreserveOrder(Integer.parseInt(ruleFields[1]), closingTagsOffsets);
}
}
- public List<TagEntry> getOpeningTagsEntries() {
+ List<TagEntry> getOpeningTagsEntries() {
return openingTagsEntries;
}
- public TagEntry getCurrentOpeningTagEntry() {
+ TagEntry getCurrentOpeningTagEntry() {
return openingTagsIndex < openingTagsEntries.size() ? openingTagsEntries.get(openingTagsIndex) : null;
}
- public void nextOpeningTagEntry() {
+ void nextOpeningTagEntry() {
openingTagsIndex++;
}
- public List<Integer> getClosingTagsOffsets() {
+ List<Integer> getClosingTagsOffsets() {
return closingTagsOffsets;
}
- public int getCurrentClosingTagOffset() {
+ int getCurrentClosingTagOffset() {
return closingTagsIndex < closingTagsOffsets.size() ? closingTagsOffsets.get(closingTagsIndex) : -1;
}
- public void nextClosingTagOffset() {
+ void nextClosingTagOffset() {
closingTagsIndex++;
}
private void insertAndPreserveOrder(TagEntry newEntry, List<TagEntry> orderedEntries) {
int insertionIndex = 0;
Iterator<TagEntry> entriesIterator = orderedEntries.iterator();
- while(entriesIterator.hasNext() && entriesIterator.next().getStartOffset() <= newEntry.getStartOffset()) {
+ while (entriesIterator.hasNext() && entriesIterator.next().getStartOffset() <= newEntry.getStartOffset()) {
insertionIndex++;
}
orderedEntries.add(insertionIndex, newEntry);
private void insertAndPreserveOrder(int newOffset, List<Integer> orderedOffsets) {
int insertionIndex = 0;
Iterator<Integer> entriesIterator = orderedOffsets.iterator();
- while(entriesIterator.hasNext() && entriesIterator.next() <= newOffset) {
+ while (entriesIterator.hasNext() && entriesIterator.next() <= newOffset) {
insertionIndex++;
}
orderedOffsets.add(insertionIndex, newOffset);
* 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.core.source;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Strings;
+import org.sonar.api.ServerComponent;
import org.sonar.core.persistence.MyBatis;
import org.sonar.core.source.jdbc.SnapshotDataDao;
import org.sonar.core.source.jdbc.SnapshotDataDto;
/**
* @since 3.6
*/
-public class HtmlSourceDecorator {
+public class HtmlSourceDecorator implements ServerComponent {
private final SnapshotSourceDao snapshotSourceDao;
private final SnapshotDataDao snapshotDataDao;
* 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.core.source;
import com.google.common.collect.Lists;
/**
* @since 3.6
*/
-public class HtmlTextDecorator {
+class HtmlTextDecorator {
- public static final char CR_END_OF_LINE = '\r';
- public static final char LF_END_OF_LINE = '\n';
- public static final char HTML_OPENING = '<';
- public static final char HTML_CLOSING = '>';
- public static final char AMPERSAND = '&';
- public static final String ENCODED_HTML_OPENING = "<";
- public static final String ENCODED_HTML_CLOSING = ">";
- public static final String ENCODED_AMPERSAND = "&";
+ static final char CR_END_OF_LINE = '\r';
+ static final char LF_END_OF_LINE = '\n';
+ static final char HTML_OPENING = '<';
+ static final char HTML_CLOSING = '>';
+ static final char AMPERSAND = '&';
+ static final String ENCODED_HTML_OPENING = "<";
+ static final String ENCODED_HTML_CLOSING = ">";
+ static final String ENCODED_AMPERSAND = "&";
- public List<String> decorateTextWithHtml(String text, DecorationDataHolder decorationDataHolder) {
+ List<String> decorateTextWithHtml(String text, DecorationDataHolder decorationDataHolder) {
StringBuilder currentHtmlLine = new StringBuilder();
List<String> decoratedHtmlLines = Lists.newArrayList();
private char[] normalize(char currentChar) {
char[] normalizedChars;
- if(currentChar == HTML_OPENING) {
+ if (currentChar == HTML_OPENING) {
normalizedChars = ENCODED_HTML_OPENING.toCharArray();
- } else if(currentChar == HTML_CLOSING) {
+ } else if (currentChar == HTML_CLOSING) {
normalizedChars = ENCODED_HTML_CLOSING.toCharArray();
- } else if(currentChar == AMPERSAND) {
+ } else if (currentChar == AMPERSAND) {
normalizedChars = ENCODED_AMPERSAND.toCharArray();
} else {
normalizedChars = new char[]{currentChar};
private int getNumberOfTagsToClose(int currentIndex, DecorationDataHolder dataHolder) {
int numberOfTagsToClose = 0;
- while(currentIndex == dataHolder.getCurrentClosingTagOffset()) {
+ while (currentIndex == dataHolder.getCurrentClosingTagOffset()) {
numberOfTagsToClose++;
dataHolder.nextClosingTagOffset();
}
private Collection<String> getTagsToOpen(int currentIndex, DecorationDataHolder dataHolder) {
Collection<String> tagsToOpen = Lists.newArrayList();
- while(dataHolder.getCurrentOpeningTagEntry() != null && currentIndex == dataHolder.getCurrentOpeningTagEntry().getStartOffset()) {
+ while (dataHolder.getCurrentOpeningTagEntry() != null && currentIndex == dataHolder.getCurrentOpeningTagEntry().getStartOffset()) {
tagsToOpen.add(dataHolder.getCurrentOpeningTagEntry().getCssClass());
dataHolder.nextOpeningTagEntry();
}
private boolean shouldClosePendingTags(CharactersReader charactersReader) {
return charactersReader.getCurrentValue() == CR_END_OF_LINE
- || (charactersReader.getCurrentValue() == LF_END_OF_LINE && charactersReader.getPreviousValue() != CR_END_OF_LINE)
- || (charactersReader.getCurrentValue() == END_OF_STREAM && charactersReader.getPreviousValue() != LF_END_OF_LINE);
+ || (charactersReader.getCurrentValue() == LF_END_OF_LINE && charactersReader.getPreviousValue() != CR_END_OF_LINE)
+ || (charactersReader.getCurrentValue() == END_OF_STREAM && charactersReader.getPreviousValue() != LF_END_OF_LINE);
}
private boolean shouldReopenPendingTags(CharactersReader charactersReader) {
return (charactersReader.getPreviousValue() == LF_END_OF_LINE && charactersReader.getCurrentValue() != LF_END_OF_LINE)
- || (charactersReader.getPreviousValue() == CR_END_OF_LINE && charactersReader.getCurrentValue() != CR_END_OF_LINE
- && charactersReader.getCurrentValue() != LF_END_OF_LINE
+ || (charactersReader.getPreviousValue() == CR_END_OF_LINE && charactersReader.getCurrentValue() != CR_END_OF_LINE
+ && charactersReader.getCurrentValue() != LF_END_OF_LINE
);
}
private boolean shouldStartNewLine(CharactersReader charactersReader) {
return charactersReader.getPreviousValue() == LF_END_OF_LINE
- || (charactersReader.getPreviousValue() == CR_END_OF_LINE && charactersReader.getCurrentValue() != LF_END_OF_LINE);
+ || (charactersReader.getPreviousValue() == CR_END_OF_LINE && charactersReader.getCurrentValue() != LF_END_OF_LINE);
}
private void closeCompletedTags(CharactersReader charactersReader, int numberOfTagsToClose,
* 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.core.source;
-public class TagEntry {
+class TagEntry {
private final int startOffset;
private final String cssClass;
- public TagEntry(int startOffset, String cssClass) {
+ TagEntry(int startOffset, String cssClass) {
this.startOffset = startOffset;
this.cssClass = cssClass;
}
- public int getStartOffset() {
+ int getStartOffset() {
return startOffset;
}
- public String getCssClass() {
+ String getCssClass() {
return cssClass;
}
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
TagEntry tagEntry = (TagEntry) o;
-
- if (startOffset != tagEntry.startOffset) return false;
- if (cssClass != null ? !cssClass.equals(tagEntry.cssClass) : tagEntry.cssClass != null) return false;
-
+ if (startOffset != tagEntry.startOffset) {
+ return false;
+ }
+ if (cssClass != null ? !cssClass.equals(tagEntry.cssClass) : tagEntry.cssClass != null) {
+ return false;
+ }
return true;
}