BBCode output incorrect
I'm testing 3.53 and BBCode output, and I think it's not working properly.
I have this code:
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.*;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.visitors.FizzBuzzOutputGenerationContext;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.OutputGenerationStrategy;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.SingleStepOutputGenerationParameter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors.OutputGenerationContext;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors.OutputGenerationContextVisitor;
@Service
public class SingleStepOutputGenerationStrategy implements OutputGenerationStrategy {
private final List<OutputGenerationContext> contexts;
private final OutputGenerationContextVisitor contextVisitor;
private final StringPrinter myNewLinePrinter;
@Autowired
public SingleStepOutputGenerationStrategy(
final FizzBuzzOutputGenerationContextVisitorFactory fizzBuzzOutputGenerationContextVisitorFactory,
final FizzStrategyFactory fizzStrategyFactory,
final FizzStringPrinterFactory fizzStringPrinterFactory,
final BuzzStrategyFactory buzzStrategyFactory,
final BuzzStringPrinterFactory buzzStringPrinterFactory,
final NoFizzNoBuzzStrategyFactory noFizzNoBuzzStrategyFactory,
final IntegerIntegerPrinterFactory integerIntegerPrinterFactory,
final NewLineStringPrinterFactory newLineStringPrinterFactory) {
super();
this.contextVisitor = fizzBuzzOutputGenerationContextVisitorFactory.createVisitor();
this.contexts = new ArrayList<OutputGenerationContext>();
this.contexts.add(new FizzBuzzOutputGenerationContext(fizzStrategyFactory.createIsEvenlyDivisibleStrategy(),
fizzStringPrinterFactory.createStringPrinter()));
this.contexts.add(new FizzBuzzOutputGenerationContext(buzzStrategyFactory.createIsEvenlyDivisibleStrategy(),
buzzStringPrinterFactory.createStringPrinter()));
this.contexts.add(new FizzBuzzOutputGenerationContext(
noFizzNoBuzzStrategyFactory.createIsEvenlyDivisibleStrategy(),
integerIntegerPrinterFactory.createPrinter()));
this.myNewLinePrinter = newLineStringPrinterFactory.createStringPrinter();
}
public void performGenerationForCurrentStep(final SingleStepOutputGenerationParameter generationParameter) {
final int nGenerationParameter = generationParameter.retrieveIntegerValue();
final Iterator<OutputGenerationContext> iterator = this.contexts.iterator();
while (iterator.hasNext()) {
final OutputGenerationContext context = iterator.next();
this.contextVisitor.visit(context, nGenerationParameter);
}
this.myNewLinePrinter.print();
}
}
And I'm using this configuration:
Note that this is a custom theme, but the only thing that has been changed is the default color (set to #000000
). I'd expect the output to colorize all the strings that are not considered operators, keywords, etc...
But the output is:
[size=10][color=#a59f85]01 [/color][color=#ae81ff][b]package[/b][/color] com[color=#000000].[/color]seriouscompany[color=#000000].[/color]business[color=#000000].[/color]java[color=#000000].[/color]fizzbuzz[color=#000000].[/color]packagenamingpackage[color=#000000].[/color]impl[color=#000000].[/color]strategies[color=#000000];[/color]
[color=#a59f85]02 [/color]
[color=#a59f85]03 [/color][color=#ae81ff][b]import[/b][/color] java[color=#000000].[/color]util[color=#000000].[/color]ArrayList[color=#000000];[/color]
[color=#a59f85]04 [/color][color=#ae81ff][b]import[/b][/color] java[color=#000000].[/color]util[color=#000000].[/color]Iterator[color=#000000];[/color]
[color=#a59f85]05 [/color][color=#ae81ff][b]import[/b][/color] java[color=#000000].[/color]util[color=#000000].[/color]List[color=#000000];[/color]
[color=#a59f85]06 [/color]
[color=#a59f85]07 [/color][color=#ae81ff][b]import[/b][/color] org[color=#000000].[/color]springframework[color=#000000].[/color]beans[color=#000000].[/color]factory[color=#000000].[/color]annotation[color=#000000].[/color]Autowired[color=#000000];[/color]
[color=#a59f85]08 [/color][color=#ae81ff][b]import[/b][/color] org[color=#000000].[/color]springframework[color=#000000].[/color]stereotype[color=#000000].[/color]Service[color=#000000];[/color]
[color=#a59f85]09 [/color]
[color=#a59f85]10 [/color][color=#ae81ff][b]import[/b][/color] com[color=#000000].[/color]seriouscompany[color=#000000].[/color]business[color=#000000].[/color]java[color=#000000].[/color]fizzbuzz[color=#000000].[/color]packagenamingpackage[color=#000000].[/color]impl[color=#000000].[/color]factories[color=#000000].*;[/color]
[color=#a59f85]11 [/color][color=#ae81ff][b]import[/b][/color] com[color=#000000].[/color]seriouscompany[color=#000000].[/color]business[color=#000000].[/color]java[color=#000000].[/color]fizzbuzz[color=#000000].[/color]packagenamingpackage[color=#000000].[/color]impl[color=#000000].[/color]visitors[color=#000000].[/color]FizzBuzzOutputGenerationContext[color=#000000];[/color]
[color=#a59f85]12 [/color][color=#ae81ff][b]import[/b][/color] com[color=#000000].[/color]seriouscompany[color=#000000].[/color]business[color=#000000].[/color]java[color=#000000].[/color]fizzbuzz[color=#000000].[/color]packagenamingpackage[color=#000000].[/color]interfaces[color=#000000].[/color]printers[color=#000000].[/color]StringPrinter[color=#000000];[/color]
[color=#a59f85]13 [/color][color=#ae81ff][b]import[/b][/color] com[color=#000000].[/color]seriouscompany[color=#000000].[/color]business[color=#000000].[/color]java[color=#000000].[/color]fizzbuzz[color=#000000].[/color]packagenamingpackage[color=#000000].[/color]interfaces[color=#000000].[/color]strategies[color=#000000].[/color]OutputGenerationStrategy[color=#000000];[/color]
[color=#a59f85]14 [/color][color=#ae81ff][b]import[/b][/color] com[color=#000000].[/color]seriouscompany[color=#000000].[/color]business[color=#000000].[/color]java[color=#000000].[/color]fizzbuzz[color=#000000].[/color]packagenamingpackage[color=#000000].[/color]interfaces[color=#000000].[/color]strategies[color=#000000].[/color]SingleStepOutputGenerationParameter[color=#000000];[/color]
[color=#a59f85]15 [/color][color=#ae81ff][b]import[/b][/color] com[color=#000000].[/color]seriouscompany[color=#000000].[/color]business[color=#000000].[/color]java[color=#000000].[/color]fizzbuzz[color=#000000].[/color]packagenamingpackage[color=#000000].[/color]interfaces[color=#000000].[/color]visitors[color=#000000].[/color]OutputGenerationContext[color=#000000];[/color]
[color=#a59f85]16 [/color][color=#ae81ff][b]import[/b][/color] com[color=#000000].[/color]seriouscompany[color=#000000].[/color]business[color=#000000].[/color]java[color=#000000].[/color]fizzbuzz[color=#000000].[/color]packagenamingpackage[color=#000000].[/color]interfaces[color=#000000].[/color]visitors[color=#000000].[/color]OutputGenerationContextVisitor[color=#000000];[/color]
[color=#a59f85]17 [/color]
[color=#a59f85]18 [/color][color=#f92672][b]@Service[/b][/color]
[color=#a59f85]19 [/color][color=#ae81ff][b]public class[/b][/color] SingleStepOutputGenerationStrategy [color=#ae81ff][b]implements[/b][/color] OutputGenerationStrategy
[color=#a59f85]20 [/color][color=#000000]{[/color]
[color=#a59f85]21 [/color]
[color=#a59f85]22 [/color] [color=#ae81ff][b]private final[/b][/color] List[color=#000000]<[/color]OutputGenerationContext[color=#000000]>[/color] contexts[color=#000000];[/color]
[color=#a59f85]23 [/color] [color=#ae81ff][b]private final[/b][/color] OutputGenerationContextVisitor contextVisitor[color=#000000];[/color]
[color=#a59f85]24 [/color] [color=#ae81ff][b]private final[/b][/color] StringPrinter myNewLinePrinter[color=#000000];[/color]
[color=#a59f85]25 [/color]
[color=#a59f85]26 [/color] [color=#f92672][b]@Autowired[/b][/color]
[color=#a59f85]27 [/color] [color=#ae81ff][b]public[/b][/color] [color=#f4bf75][b]SingleStepOutputGenerationStrategy[/b][/color][color=#000000]([/color]
[color=#a59f85]28 [/color] [color=#ae81ff][b]final[/b][/color] FizzBuzzOutputGenerationContextVisitorFactory fizzBuzzOutputGenerationContextVisitorFactory[color=#000000],[/color]
[color=#a59f85]29 [/color] [color=#ae81ff][b]final[/b][/color] FizzStrategyFactory fizzStrategyFactory[color=#000000],[/color]
[color=#a59f85]30 [/color] [color=#ae81ff][b]final[/b][/color] FizzStringPrinterFactory fizzStringPrinterFactory[color=#000000],[/color]
[color=#a59f85]31 [/color] [color=#ae81ff][b]final[/b][/color] BuzzStrategyFactory buzzStrategyFactory[color=#000000],[/color]
[color=#a59f85]32 [/color] [color=#ae81ff][b]final[/b][/color] BuzzStringPrinterFactory buzzStringPrinterFactory[color=#000000],[/color]
[color=#a59f85]33 [/color] [color=#ae81ff][b]final[/b][/color] NoFizzNoBuzzStrategyFactory noFizzNoBuzzStrategyFactory[color=#000000],[/color]
[color=#a59f85]34 [/color] [color=#ae81ff][b]final[/b][/color] IntegerIntegerPrinterFactory integerIntegerPrinterFactory[color=#000000],[/color]
[color=#a59f85]35 [/color] [color=#ae81ff][b]final[/b][/color] NewLineStringPrinterFactory newLineStringPrinterFactory[color=#000000])[/color]
[color=#a59f85]36 [/color] [color=#000000]{[/color]
[color=#a59f85]37 [/color] [color=#ae81ff][b]super[/b][/color][color=#000000]();[/color]
[color=#a59f85]38 [/color] [color=#ae81ff][b]this[/b][/color][color=#000000].[/color]contextVisitor [color=#000000]=[/color] fizzBuzzOutputGenerationContextVisitorFactory[color=#000000].[/color][color=#f4bf75][b]createVisitor[/b][/color][color=#000000]();[/color]
[color=#a59f85]39 [/color] [color=#ae81ff][b]this[/b][/color][color=#000000].[/color]contexts [color=#000000]=[/color] [color=#ae81ff][b]new[/b][/color] ArrayList[color=#000000]<[/color]OutputGenerationContext[color=#000000]>();[/color]
[color=#a59f85]40 [/color] [color=#ae81ff][b]this[/b][/color][color=#000000].[/color]contexts[color=#000000].[/color][color=#f4bf75][b]add[/b][/color][color=#000000]([/color][color=#ae81ff][b]new[/b][/color] [color=#f4bf75][b]FizzBuzzOutputGenerationContext[/b][/color][color=#000000]([/color]fizzStrategyFactory[color=#000000].[/color][color=#f4bf75][b]createIsEvenlyDivisibleStrategy[/b][/color][color=#000000](),[/color]
[color=#a59f85]41 [/color] fizzStringPrinterFactory[color=#000000].[/color][color=#f4bf75][b]createStringPrinter[/b][/color][color=#000000]()));[/color]
[color=#a59f85]42 [/color] [color=#ae81ff][b]this[/b][/color][color=#000000].[/color]contexts[color=#000000].[/color][color=#f4bf75][b]add[/b][/color][color=#000000]([/color][color=#ae81ff][b]new[/b][/color] [color=#f4bf75][b]FizzBuzzOutputGenerationContext[/b][/color][color=#000000]([/color]buzzStrategyFactory[color=#000000].[/color][color=#f4bf75][b]createIsEvenlyDivisibleStrategy[/b][/color][color=#000000](),[/color]
[color=#a59f85]43 [/color] buzzStringPrinterFactory[color=#000000].[/color][color=#f4bf75][b]createStringPrinter[/b][/color][color=#000000]()));[/color]
[color=#a59f85]44 [/color] [color=#ae81ff][b]this[/b][/color][color=#000000].[/color]contexts[color=#000000].[/color][color=#f4bf75][b]add[/b][/color][color=#000000]([/color][color=#ae81ff][b]new[/b][/color] [color=#f4bf75][b]FizzBuzzOutputGenerationContext[/b][/color][color=#000000]([/color]
[color=#a59f85]45 [/color] noFizzNoBuzzStrategyFactory[color=#000000].[/color][color=#f4bf75][b]createIsEvenlyDivisibleStrategy[/b][/color][color=#000000](),[/color]
[color=#a59f85]46 [/color] integerIntegerPrinterFactory[color=#000000].[/color][color=#f4bf75][b]createPrinter[/b][/color][color=#000000]()));[/color]
[color=#a59f85]47 [/color]
[color=#a59f85]48 [/color] [color=#ae81ff][b]this[/b][/color][color=#000000].[/color]myNewLinePrinter [color=#000000]=[/color] newLineStringPrinterFactory[color=#000000].[/color][color=#f4bf75][b]createStringPrinter[/b][/color][color=#000000]();[/color]
[color=#a59f85]49 [/color] [color=#000000]}[/color]
[color=#a59f85]50 [/color]
[color=#a59f85]51 [/color] [color=#ae81ff][b]public void[/b][/color] [color=#f4bf75][b]performGenerationForCurrentStep[/b][/color][color=#000000]([/color][color=#ae81ff][b]final[/b][/color] SingleStepOutputGenerationParameter generationParameter[color=#000000])[/color]
[color=#a59f85]52 [/color] [color=#000000]{[/color]
[color=#a59f85]53 [/color] [color=#ae81ff][b]final int[/b][/color] nGenerationParameter [color=#000000]=[/color] generationParameter[color=#000000].[/color][color=#f4bf75][b]retrieveIntegerValue[/b][/color][color=#000000]();[/color]
[color=#a59f85]54 [/color] [color=#ae81ff][b]final[/b][/color] Iterator[color=#000000]<[/color]OutputGenerationContext[color=#000000]>[/color] iterator [color=#000000]=[/color] [color=#ae81ff][b]this[/b][/color][color=#000000].[/color]contexts[color=#000000].[/color][color=#f4bf75][b]iterator[/b][/color][color=#000000]();[/color]
[color=#a59f85]55 [/color] [color=#ae81ff][b]while[/b][/color] [color=#000000]([/color]iterator[color=#000000].[/color][color=#f4bf75][b]hasNext[/b][/color][color=#000000]())[/color]
[color=#a59f85]56 [/color] [color=#000000]{[/color]
[color=#a59f85]57 [/color] [color=#ae81ff][b]final[/b][/color] OutputGenerationContext context [color=#000000]=[/color] iterator[color=#000000].[/color][color=#f4bf75][b]next[/b][/color][color=#000000]();[/color]
[color=#a59f85]58 [/color] [color=#ae81ff][b]this[/b][/color][color=#000000].[/color]contextVisitor[color=#000000].[/color][color=#f4bf75][b]visit[/b][/color][color=#000000]([/color]context[color=#000000],[/color] nGenerationParameter[color=#000000]);[/color]
[color=#a59f85]59 [/color] [color=#000000]}[/color]
[color=#a59f85]60 [/color] [color=#ae81ff][b]this[/b][/color][color=#000000].[/color]myNewLinePrinter[color=#000000].[/color][color=#f4bf75][b]print[/b][/color][color=#000000]();[/color]
[color=#a59f85]61 [/color] [color=#000000]}[/color]
[color=#a59f85]62 [/color]
[color=#a59f85]63 [/color][color=#000000]}[/color]
[/size]
Note that all the text that is black in my screenshots in not surrounded by any [color]
tag.
Initially I thought that this might be a corder case related to the use of the black color (because that's the default color of text), so I tried changing to another color and restarting the app to make sure all changes are applied, but the result was the same. The app isn't surrounding text in color tags.