uinverse 4922c077c07a cached
102 files
100.8 KB
28.9k tokens
237 symbols
1 requests
Download .txt
Repository: EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
Branch: uinverse
Commit: 4922c077c07a
Files: 102
Total size: 100.8 KB

Directory structure:
gitextract_0n90tvug/

├── .gitattributes
├── .gitignore
├── .travis.yml
├── CONTRIBUTING.md
├── README.md
├── build.gradle
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── pom.xml
├── resources/
│   └── assets/
│       └── configuration/
│           └── spring/
│               └── dependencyinjection/
│                   └── configuration/
│                       └── spring.xml
├── settings.gradle
└── src/
    ├── main/
    │   └── java/
    │       └── com/
    │           └── seriouscompany/
    │               └── business/
    │                   └── java/
    │                       └── fizzbuzz/
    │                           └── packagenamingpackage/
    │                               ├── impl/
    │                               │   ├── ApplicationContextHolder.java
    │                               │   ├── Constants.java
    │                               │   ├── Main.java
    │                               │   ├── StandardFizzBuzz.java
    │                               │   ├── factories/
    │                               │   │   ├── BuzzStrategyFactory.java
    │                               │   │   ├── BuzzStringPrinterFactory.java
    │                               │   │   ├── BuzzStringReturnerFactory.java
    │                               │   │   ├── EnterpriseGradeFizzBuzzSolutionStrategyFactory.java
    │                               │   │   ├── FizzBuzzOutputGenerationContextVisitorFactory.java
    │                               │   │   ├── FizzStrategyFactory.java
    │                               │   │   ├── FizzStringPrinterFactory.java
    │                               │   │   ├── FizzStringReturnerFactory.java
    │                               │   │   ├── IntegerIntegerPrinterFactory.java
    │                               │   │   ├── IntegerIntegerStringReturnerFactory.java
    │                               │   │   ├── LoopComponentFactory.java
    │                               │   │   ├── NewLineStringPrinterFactory.java
    │                               │   │   ├── NewLineStringReturnerFactory.java
    │                               │   │   ├── NoFizzNoBuzzStrategyFactory.java
    │                               │   │   └── SystemOutFizzBuzzOutputStrategyFactory.java
    │                               │   ├── loop/
    │                               │   │   ├── LoopCondition.java
    │                               │   │   ├── LoopContext.java
    │                               │   │   ├── LoopFinalizer.java
    │                               │   │   ├── LoopInitializer.java
    │                               │   │   ├── LoopRunner.java
    │                               │   │   └── LoopStep.java
    │                               │   ├── math/
    │                               │   │   └── arithmetics/
    │                               │   │       ├── IntegerDivider.java
    │                               │   │       └── NumberIsMultipleOfAnotherNumberVerifier.java
    │                               │   ├── parameters/
    │                               │   │   └── DefaultFizzBuzzUpperLimitParameter.java
    │                               │   ├── printers/
    │                               │   │   ├── BuzzPrinter.java
    │                               │   │   ├── BuzzStringPrinter.java
    │                               │   │   ├── FizzPrinter.java
    │                               │   │   ├── FizzStringPrinter.java
    │                               │   │   ├── IntegerIntegerPrinter.java
    │                               │   │   ├── IntegerPrinter.java
    │                               │   │   ├── NewLinePrinter.java
    │                               │   │   └── NewLineStringPrinter.java
    │                               │   ├── strategies/
    │                               │   │   ├── BuzzStrategy.java
    │                               │   │   ├── EnterpriseGradeFizzBuzzSolutionStrategy.java
    │                               │   │   ├── FizzStrategy.java
    │                               │   │   ├── NoFizzNoBuzzStrategy.java
    │                               │   │   ├── SingleStepOutputGenerationStrategy.java
    │                               │   │   ├── SingleStepPayload.java
    │                               │   │   ├── SystemOutFizzBuzzOutputStrategy.java
    │                               │   │   ├── adapters/
    │                               │   │   │   ├── FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter.java
    │                               │   │   │   └── LoopContextStateRetrievalToSingleStepOutputGenerationAdapter.java
    │                               │   │   ├── comparators/
    │                               │   │   │   ├── doublecomparator/
    │                               │   │   │   │   ├── FirstIsLargerThanSecondDoubleComparator.java
    │                               │   │   │   │   └── FirstIsSmallerThanSecondDoubleComparator.java
    │                               │   │   │   └── integercomparator/
    │                               │   │   │       ├── IntegerForEqualityComparator.java
    │                               │   │   │       ├── ThreeWayIntegerComparator.java
    │                               │   │   │       └── ThreeWayIntegerComparisonResult.java
    │                               │   │   ├── constants/
    │                               │   │   │   ├── BuzzStrategyConstants.java
    │                               │   │   │   ├── FizzStrategyConstants.java
    │                               │   │   │   └── NoFizzNoBuzzStrategyConstants.java
    │                               │   │   └── converters/
    │                               │   │       └── primitivetypesconverters/
    │                               │   │           ├── DoubleToIntConverter.java
    │                               │   │           └── IntToDoubleConverter.java
    │                               │   ├── stringreturners/
    │                               │   │   ├── BuzzStringReturner.java
    │                               │   │   ├── FizzStringReturner.java
    │                               │   │   ├── IntegerIntegerStringReturner.java
    │                               │   │   └── NewLineStringReturner.java
    │                               │   └── visitors/
    │                               │       ├── FizzBuzzOutputGenerationContext.java
    │                               │       └── FizzBuzzOutputGenerationContextVisitor.java
    │                               └── interfaces/
    │                                   ├── FizzBuzz.java
    │                                   ├── factories/
    │                                   │   ├── FizzBuzzOutputStrategyFactory.java
    │                                   │   ├── FizzBuzzSolutionStrategyFactory.java
    │                                   │   ├── IntegerPrinterFactory.java
    │                                   │   ├── IntegerStringReturnerFactory.java
    │                                   │   ├── IsEvenlyDivisibleStrategyFactory.java
    │                                   │   ├── OutputGenerationContextVisitorFactory.java
    │                                   │   ├── StringPrinterFactory.java
    │                                   │   └── StringStringReturnerFactory.java
    │                                   ├── loop/
    │                                   │   ├── LoopContextStateManipulation.java
    │                                   │   ├── LoopContextStateRetrieval.java
    │                                   │   └── LoopPayloadExecution.java
    │                                   ├── parameters/
    │                                   │   └── FizzBuzzUpperLimitParameter.java
    │                                   ├── printers/
    │                                   │   ├── DataPrinter.java
    │                                   │   ├── IntegerPrinter.java
    │                                   │   └── StringPrinter.java
    │                                   ├── strategies/
    │                                   │   ├── FizzBuzzExceptionSafeOutputStrategy.java
    │                                   │   ├── FizzBuzzOutputStrategy.java
    │                                   │   ├── FizzBuzzSolutionStrategy.java
    │                                   │   ├── IsEvenlyDivisibleStrategy.java
    │                                   │   ├── OutputGenerationStrategy.java
    │                                   │   └── SingleStepOutputGenerationParameter.java
    │                                   ├── stringreturners/
    │                                   │   ├── IntegerStringReturner.java
    │                                   │   └── StringStringReturner.java
    │                                   └── visitors/
    │                                       ├── OutputGenerationContext.java
    │                                       └── OutputGenerationContextVisitor.java
    └── test/
        └── java/
            ├── FizzBuzzTest.java
            └── TestConstants.java

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto

# Custom for Visual Studio
*.cs     diff=csharp
*.sln    merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union

# Standard to msysgit
*.doc	 diff=astextplain
*.DOC	 diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot  diff=astextplain
*.DOT  diff=astextplain
*.pdf  diff=astextplain
*.PDF	 diff=astextplain
*.rtf	 diff=astextplain
*.RTF	 diff=astextplain


================================================
FILE: .gitignore
================================================
#################
## Eclipse
#################

*.pydevproject
.project
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath
*.class

# External tool builders
.externalToolBuilders/

# Locally stored "Eclipse launch configurations"
*.launch

# CDT-specific
.cproject

# PDT-specific
.buildpath

#################
## IDEA
#################
.idea/
*.iml

#################
## Visual Studio
#################

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.sln.docstates

# Build results
[Dd]ebug/
[Rr]elease/
*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.vspscc
.builds
*.dotCover

## TODO: If you have NuGet Package Restore enabled, uncomment this
#packages/

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf

# Visual Studio profiler
*.psess
*.vsp

# ReSharper is a .NET coding add-in
_ReSharper*

# Installshield output folder
[Ee]xpress

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish

# Others
[Bb]in
[Oo]bj
sql
TestResults
*.Cache
ClientBin
stylecop.*
~$*
*.dbmdl
Generated_Code #added for RIA/Silverlight projects

# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML



############
## Windows
############

# Windows image file caches
Thumbs.db

# Folder config file
Desktop.ini

#############
## Mac OS
#############
.DS_Store

#############
## Python
#############

*.py[co]

# Packages
*.egg
*.egg-info
dist
build
eggs
parts
bin
var
sdist
develop-eggs
.installed.cfg

# Installer logs
pip-log.txt

# Unit test / coverage reports
.coverage
.tox

#Translations
*.mo

#Mr Developer
.mr.developer.cfg

# Mac crap
.DS_Store

#############
## Java
#############

.class
target/


================================================
FILE: .travis.yml
================================================
language: java
before_install: sudo pip install codecov
after_success: codecov

jdk:
  - oraclejdk7
  - openjdk7


================================================
FILE: CONTRIBUTING.md
================================================
# Contributor Code of Conduct

As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.

We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.

Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.

This code of conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.

This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.1.0, available at [http://contributor-covenant.org/version/1/1/0/](http://contributor-covenant.org/version/1/1/0/)


================================================
FILE: README.md
================================================
# FizzBuzzEnterpriseEdition

[![Build status][Build status image]][Build status URL] [![codecov.io](https://codecov.io/github/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition/coverage.svg?branch=master)](https://codecov.io/github/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition?branch=master)

[Build status image]: https://secure.travis-ci.org/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition.png?branch=master
[Build status URL]: http://travis-ci.org/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition

Enterprise software marks a special high-grade class of software that makes
careful use of relevant software architecture design principles to build
particularly customizable and extensible solutions to real problems. This
project is an example of how the popular FizzBuzz game might be built were it
subject to the high quality standards of enterprise software.

## FizzBuzz

FizzBuzz is a game that has gained in popularity as a programming assignment to
weed out non-programmers during job interviews. The object of the assignment is
less about solving it correctly according to the below rules and more about
showing the programmer understands basic, necessary tools such as
`if`-/`else`-statements and loops. The rules of FizzBuzz are as follows:

For numbers 1 through 100,

* if the number is divisible by 3 print Fizz;
* if the number is divisible by 5 print Buzz;
* if the number is divisible by 3 and 5 (15) print FizzBuzz;
* else, print the number.

## Contributing

Although this project is intended as satire, we take openness and inclusivity
very seriously. To that end we have adopted the following code of conduct.

[Contributor Code of Conduct](CONTRIBUTING.md)


================================================
FILE: build.gradle
================================================
apply plugin: 'java'
apply plugin: 'application'

repositories {
    jcenter()
}

sourceSets {
    main {
        java {
            srcDir 'src/main/java'
        }
        resources {
            srcDir 'resources/assets/configuration/spring/dependencyinjection/configuration/'
        }
    }
}

dependencies {
    compile 'org.springframework:spring-aop:3.2.13.RELEASE',
            'org.springframework:spring-beans:3.2.13.RELEASE',
            'org.springframework:spring-context:3.2.13.RELEASE',
            'org.springframework:spring-core:3.2.13.RELEASE',
            'org.springframework:spring-expression:3.2.13.RELEASE'

    testCompile 'junit:junit:4.8.2'
}

mainClassName = 'com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Main'

================================================
FILE: gradle/wrapper/gradle-wrapper.properties
================================================
#Fri Oct 30 12:59:42 CET 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-bin.zip


================================================
FILE: gradlew
================================================
#!/usr/bin/env bash

##############################################################################
##
##  Gradle start up script for UN*X
##
##############################################################################

# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""

APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"

warn ( ) {
    echo "$*"
}

die ( ) {
    echo
    echo "$*"
    echo
    exit 1
}

# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
case "`uname`" in
  CYGWIN* )
    cygwin=true
    ;;
  Darwin* )
    darwin=true
    ;;
  MINGW* )
    msys=true
    ;;
esac

# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
        PRG="$link"
    else
        PRG=`dirname "$PRG"`"/$link"
    fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null

CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar

# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
        # IBM's JDK on AIX uses strange locations for the executables
        JAVACMD="$JAVA_HOME/jre/sh/java"
    else
        JAVACMD="$JAVA_HOME/bin/java"
    fi
    if [ ! -x "$JAVACMD" ] ; then
        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
    fi
else
    JAVACMD="java"
    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi

# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
    MAX_FD_LIMIT=`ulimit -H -n`
    if [ $? -eq 0 ] ; then
        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
            MAX_FD="$MAX_FD_LIMIT"
        fi
        ulimit -n $MAX_FD
        if [ $? -ne 0 ] ; then
            warn "Could not set maximum file descriptor limit: $MAX_FD"
        fi
    else
        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
    fi
fi

# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi

# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
    JAVACMD=`cygpath --unix "$JAVACMD"`

    # We build the pattern for arguments to be converted via cygpath
    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
    SEP=""
    for dir in $ROOTDIRSRAW ; do
        ROOTDIRS="$ROOTDIRS$SEP$dir"
        SEP="|"
    done
    OURCYGPATTERN="(^($ROOTDIRS))"
    # Add a user-defined pattern to the cygpath arguments
    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
    fi
    # Now convert the arguments - kludge to limit ourselves to /bin/sh
    i=0
    for arg in "$@" ; do
        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option

        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
        else
            eval `echo args$i`="\"$arg\""
        fi
        i=$((i+1))
    done
    case $i in
        (0) set -- ;;
        (1) set -- "$args0" ;;
        (2) set -- "$args0" "$args1" ;;
        (3) set -- "$args0" "$args1" "$args2" ;;
        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
    esac
fi

# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
    JVM_OPTS=("$@")
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"

exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"


================================================
FILE: gradlew.bat
================================================
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem  Gradle startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=

set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init

echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto init

echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:init
@rem Get command-line arguments, handling Windowz variants

if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args

:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2

:win9xME_args_slurp
if "x%~1" == "x" goto execute

set CMD_LINE_ARGS=%*
goto execute

:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$

:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd

:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1

:mainEnd
if "%OS%"=="Windows_NT" endlocal

:omega


================================================
FILE: pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.seriouscompany.business.java.fizzbuzz</groupId>
  <artifactId>FizzBuzzEnterpriseEdition</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>FizzBuzz Enterprise Edition</name>
  <url>https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>3.2.13.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>3.2.13.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.2.13.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.2.13.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>3.2.13.RELEASE</version>
    </dependency>
  </dependencies>

  <build>
    <resources>
	  <resource>
	    <directory>resources/assets/configuration/spring/dependencyinjection/configuration</directory>
	    <filtering>true</filtering>
	  </resource>
    </resources>
    <plugins>
      <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>2.3</version>
          <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <archive>
            <manifest>
              <mainClass>com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Main</mainClass>
            </manifest>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.5.8.201207111220</version>
        <executions>
          <execution>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
          <execution>
            <id>report</id>
            <phase>test</phase>
            <goals>
              <goal>report</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

</project>


================================================
FILE: resources/assets/configuration/spring/dependencyinjection/configuration/spring.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    
    <context:component-scan base-package="com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl"/>
    <context:component-scan base-package="com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces"/>
    
</beans>

================================================
FILE: settings.gradle
================================================
rootProject.name = 'FizzBuzzEnterpriseEdition'


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/ApplicationContextHolder.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Service;

/**
 * Holder for Application Context
 */
@Service
public class ApplicationContextHolder implements ApplicationContextAware {

	private static ApplicationContext applicationContext;

	/**
	 * Updater for ApplicationContextReference
	 */
	private static class ApplicationContextReferenceUpdater {
		void updateApplicationContextReference(final ApplicationContext applicationContext) {
			ApplicationContextHolder.applicationContext = applicationContext;
		}
	}

	/**
	 * Holder for ApplicationContextReferenceUpdater
	 */
	private static class ApplicationContextReferenceUpdaterHolder {
		static ApplicationContextReferenceUpdater INSTANCE = new ApplicationContextReferenceUpdater();
	}

	private ApplicationContextHolder() {
		super();
	}

	/**
	 * @param applicationContext
	 * @throws BeansException
	 */
	@Override
	public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException {
		ApplicationContextReferenceUpdaterHolder.INSTANCE.updateApplicationContextReference(applicationContext);
	}

	/**
	 * @return
	 */
	public static ApplicationContext getApplicationContext() {
		return ApplicationContextHolder.applicationContext;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/Constants.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl;

/**
 * Constants
 */
public class Constants {

	public static final String AN_ATTEMPT_WAS_MADE_TO_DIVIDE_BY_ZERO = "An attempt was made to divide by zero.";
	public static final String BUZZ = "Buzz";
	public static final String COM_SERIOUSCOMPANY_BUSINESS_JAVA_FIZZBUZZ_PACKAGENAMINGPACKAGE_IMPL_PRINTERS_INTEGER_INTEGER_PRINTER_PRINT = "com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers.IntegerIntegerPrinter.print()";
	public static final String FIZZ = "Fizz";
	public static final String LINE_SEPARATOR = "line.separator";
	public static final String LOOP_COMPONENT_FACTORY = "loopComponentFactory";
	public static final String SPRING_XML = "spring.xml";
	public static final String STANDARD_FIZZ_BUZZ = "standardFizzBuzz";
	public static final String THE_INTEGERS_COULD_NOT_BE_COMPARED = "The integers could not be compared.";
	public static final int DEFAULT_FIZZ_BUZZ_UPPER_LIMIT_PARAMETER_VALUE = 100;
	public static final int INTEGER_DIVIDE_ZERO_VALUE = 0;
	public static final int INTEGER_ORIGIN_ZERO_VALUE = 0;
	public static final int LOOP_INC_VALUE = 1;
	public static final int LOOP_INIT_VALUE = 1;

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/Main.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl;

import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.parameters.DefaultFizzBuzzUpperLimitParameter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.FizzBuzz;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.parameters.FizzBuzzUpperLimitParameter;

/**
 * Main
 */
public final class Main {

	/**
	 * @param args
	 */
	public static void main(final String[] args) {
		final ApplicationContext context = new ClassPathXmlApplicationContext(Constants.SPRING_XML);
		final FizzBuzz myFizzBuzz = (FizzBuzz) context.getBean(Constants.STANDARD_FIZZ_BUZZ);
		final FizzBuzzUpperLimitParameter fizzBuzzUpperLimit = new DefaultFizzBuzzUpperLimitParameter();
		myFizzBuzz.fizzBuzz(fizzBuzzUpperLimit.obtainUpperLimitValue());

		((ConfigurableApplicationContext) context).close();

	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/StandardFizzBuzz.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.FizzBuzz;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.FizzBuzzSolutionStrategyFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzSolutionStrategy;

/**
 * Standard FizzBuzz
 */
@Service
public class StandardFizzBuzz implements FizzBuzz {

	private final FizzBuzzSolutionStrategyFactory _fizzBuzzSolutionStrategyFactory;

	/**
	 * @param _fizzBuzzSolutionStrategyFactory
	 */
	@Autowired
	public StandardFizzBuzz(final FizzBuzzSolutionStrategyFactory _fizzBuzzSolutionStrategyFactory) {
		super();
		this._fizzBuzzSolutionStrategyFactory = _fizzBuzzSolutionStrategyFactory;
	}

	/**
	 * @param nFizzBuzzUpperLimit
	 */
	public void fizzBuzz(final int nFizzBuzzUpperLimit) {
		final FizzBuzzSolutionStrategy mySolutionStrategy =
				this._fizzBuzzSolutionStrategyFactory.createFizzBuzzSolutionStrategy();
		mySolutionStrategy.runSolution(nFizzBuzzUpperLimit);
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStrategyFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.BuzzStrategy;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.IsEvenlyDivisibleStrategyFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;

/**
 * Factory for BuzzStrategy
 */
@Service
public class BuzzStrategyFactory implements IsEvenlyDivisibleStrategyFactory {

	private final BuzzStrategy _buzzStrategy;

	/**
	 * @param _buzzStrategy BuzzStrategy
	 */
	@Autowired
	public BuzzStrategyFactory(final BuzzStrategy _buzzStrategy) {
		super();
		this._buzzStrategy = _buzzStrategy;
	}

	/**
	 * @return void
	 */
	@Override
	public IsEvenlyDivisibleStrategy createIsEvenlyDivisibleStrategy() {
		return this._buzzStrategy;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStringPrinterFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers.BuzzStringPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.StringPrinterFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;

/**
 * Factory for BuzzStringPrinter
 */
@Service
public class BuzzStringPrinterFactory implements StringPrinterFactory {

	private final BuzzStringPrinter _buzzStringPrinter;

	/**
	 * @param _buzzStringPrinter BuzzStringPrinter
	 */
	@Autowired
	public BuzzStringPrinterFactory(final BuzzStringPrinter _buzzStringPrinter) {
		super();
		this._buzzStringPrinter = _buzzStringPrinter;
	}

	/**
	 * @return StringPrinter
	 */
	@Override
	public StringPrinter createStringPrinter() {
		return this._buzzStringPrinter;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStringReturnerFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners.BuzzStringReturner;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.StringStringReturnerFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;

/**
 * Factory for BuzzStringReturner
 */
@Service
public class BuzzStringReturnerFactory implements StringStringReturnerFactory {

	private final BuzzStringReturner _myBuzzStringReturner;

	/**
	 * @param _myBuzzStringReturner BuzzStringReturner
	 */
	@Autowired
	public BuzzStringReturnerFactory(final BuzzStringReturner _myBuzzStringReturner) {
		super();
		this._myBuzzStringReturner = _myBuzzStringReturner;
	}

	/**
	 * @return StringStringReturner
	 */
	@Override
	public StringStringReturner createStringStringReturner() {
		return this._myBuzzStringReturner;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/EnterpriseGradeFizzBuzzSolutionStrategyFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.FizzBuzzSolutionStrategyFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzSolutionStrategy;

/**
 * Factory for EnterpriseGradeFizzBuzzSolutionStrategy
 */
@Service
public class EnterpriseGradeFizzBuzzSolutionStrategyFactory implements FizzBuzzSolutionStrategyFactory {

	private final FizzBuzzSolutionStrategy _fizzBuzzSolutionStrategy;

	/**
	 * @param _fizzBuzzSolutionStrategy FizzBuzzSolutionStrategy
	 */
	@Autowired
	public EnterpriseGradeFizzBuzzSolutionStrategyFactory(final FizzBuzzSolutionStrategy _fizzBuzzSolutionStrategy) {
		super();
		this._fizzBuzzSolutionStrategy = _fizzBuzzSolutionStrategy;
	}

	/**
	 * @return FizzBuzzSolutionStrategy
	 */
	@Override
	public FizzBuzzSolutionStrategy createFizzBuzzSolutionStrategy() {
		return this._fizzBuzzSolutionStrategy;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzBuzzOutputGenerationContextVisitorFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.visitors.FizzBuzzOutputGenerationContextVisitor;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.OutputGenerationContextVisitorFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors.OutputGenerationContextVisitor;

/**
 * Factory for FizzBuzzOutputGenerationContextVisitor
 */
@Service
public class FizzBuzzOutputGenerationContextVisitorFactory implements
		OutputGenerationContextVisitorFactory {

	private final FizzBuzzOutputGenerationContextVisitor _fizzBuzzOutputGenerationContextVisitor;

	/**
	 * @param _fizzBuzzOutputGenerationContextVisitor FizzBuzzOutputGenerationContextVisitor
	 */
	@Autowired
	public FizzBuzzOutputGenerationContextVisitorFactory(
			final FizzBuzzOutputGenerationContextVisitor _fizzBuzzOutputGenerationContextVisitor) {
		super();
		this._fizzBuzzOutputGenerationContextVisitor = _fizzBuzzOutputGenerationContextVisitor;
	}

	/**
	 * @return OutputGenerationContextVisitor
	 */
	@Override
	public OutputGenerationContextVisitor createVisitor() {
		return this._fizzBuzzOutputGenerationContextVisitor;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStrategyFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.FizzStrategy;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.IsEvenlyDivisibleStrategyFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;

/**
 * Factory for FizzStrategy
 */
@Service
public class FizzStrategyFactory implements IsEvenlyDivisibleStrategyFactory {

	private final FizzStrategy _fizzStrategy;

	/**
	 * @param _fizzStrategy FizzStrategy
	 */
	@Autowired
	public FizzStrategyFactory(final FizzStrategy _fizzStrategy) {
		super();
		this._fizzStrategy = _fizzStrategy;
	}

	/**
	 * @return IsEvenlyDivisibleStrategy
	 */
	@Override
	public IsEvenlyDivisibleStrategy createIsEvenlyDivisibleStrategy() {
		return this._fizzStrategy;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStringPrinterFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers.FizzStringPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.StringPrinterFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;

/**
 * Factory for FizzStringPrinter
 */
@Service
public class FizzStringPrinterFactory implements StringPrinterFactory {

	private final FizzStringPrinter _fizzStringPrinter;

	/**
	 * @param _fizzStringPrinter FizzStringPrinter
	 */
	@Autowired
	public FizzStringPrinterFactory(final FizzStringPrinter _fizzStringPrinter) {
		super();
		this._fizzStringPrinter = _fizzStringPrinter;
	}

	/**
	 * @return StringPrinter
	 */
	@Override
	public StringPrinter createStringPrinter() {
		return this._fizzStringPrinter;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStringReturnerFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners.FizzStringReturner;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.StringStringReturnerFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;

/**
 * Factory for FizzStringReturner
 */
@Service
public class FizzStringReturnerFactory implements StringStringReturnerFactory {

	private final FizzStringReturner _fizzStringReturner;

	/**
	 * @param _fizzStringReturner FizzStringReturner
	 */
	@Autowired
	public FizzStringReturnerFactory(final FizzStringReturner _fizzStringReturner) {
		super();
		this._fizzStringReturner = _fizzStringReturner;
	}

	/**
	 * @return StringStringReturner
	 */
	@Override
	public StringStringReturner createStringStringReturner() {
		return this._fizzStringReturner;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/IntegerIntegerPrinterFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers.IntegerIntegerPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.IntegerPrinterFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.IntegerPrinter;

/**
 * Factory for IntegerIntegerPrinterFactory
 */
@Service
public class IntegerIntegerPrinterFactory implements IntegerPrinterFactory {

	private final IntegerIntegerPrinter _integerIntegerPrinter;

	/**
	 * @param _integerIntegerPrinter IntegerIntegerPrinter
	 */
	@Autowired
	public IntegerIntegerPrinterFactory(final IntegerIntegerPrinter _integerIntegerPrinter) {
		super();
		this._integerIntegerPrinter = _integerIntegerPrinter;
	}

	/**
	 * @return IntegerPrinter
	 */
	@Override
	public IntegerPrinter createPrinter() {
		return this._integerIntegerPrinter;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/IntegerIntegerStringReturnerFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners.IntegerIntegerStringReturner;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.IntegerStringReturnerFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.IntegerStringReturner;

/**
 * Factory for IntegerIntegerStringReturner
 */
@Service
public class IntegerIntegerStringReturnerFactory implements
		IntegerStringReturnerFactory {

	private final IntegerIntegerStringReturner _integerIntegerStringReturner;

	/**
	 * @param _integerIntegerStringReturner IntegerIntegerStringReturner
	 */
	@Autowired
	public IntegerIntegerStringReturnerFactory(final IntegerIntegerStringReturner _integerIntegerStringReturner) {
		super();
		this._integerIntegerStringReturner = _integerIntegerStringReturner;
	}

	/**
	 * @return IntegerStringReturner
	 */
	@Override
	public IntegerStringReturner createIntegerStringReturner() {
		return this._integerIntegerStringReturner;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/LoopComponentFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop.LoopCondition;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop.LoopFinalizer;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop.LoopInitializer;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop.LoopStep;

/**
 * Factory for LoopComponent
 */
@Service
public class LoopComponentFactory {

	private final LoopCondition _loopCondition;

	private final LoopInitializer _loopInitializer;

	private final LoopStep _loopStep;

	/**
	 * @param _loopCondition LoopCondition
	 * @param _loopInitializer LoopInitializer
	 * @param _loopStep LoopStep
	 */
	@Autowired
	public LoopComponentFactory(final LoopCondition _loopCondition, final LoopInitializer _loopInitializer,
			final LoopStep _loopStep) {
		super();
		this._loopCondition = _loopCondition;
		this._loopInitializer = _loopInitializer;
		this._loopStep = _loopStep;
	}

	/**
	 * @return LoopCondition
	 */
	public LoopCondition createLoopCondition() {
		return this._loopCondition;
	}

	/**
	 * @return LoopInitializer
	 */
	public LoopInitializer createLoopInitializer() {
		return this._loopInitializer;
	}

	/**
	 * @param nLoopFinalValue int
	 * @return LoopFinalizer
	 */
	public LoopFinalizer createLoopFinalizer(final int nLoopFinalValue) {
		final LoopFinalizer myLoopFinalizer = new LoopFinalizer(nLoopFinalValue);
		return myLoopFinalizer;
	}

	/**
	 * @return LoopStep
	 */
	public LoopStep createLoopStep() {
		return this._loopStep;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NewLineStringPrinterFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers.NewLineStringPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.StringPrinterFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;

/**
 * Factory for NewLineStringPrinter
 */
@Service
public class NewLineStringPrinterFactory implements StringPrinterFactory {

	private final NewLineStringPrinter _newLineStringPrinter;

	/**
	 * @param _newLineStringPrinter NewLineStringPrinter
	 */
	@Autowired
	public NewLineStringPrinterFactory(final NewLineStringPrinter _newLineStringPrinter) {
		super();
		this._newLineStringPrinter = _newLineStringPrinter;
	}

	/**
	 * @return StringPrinter
	 */
	@Override
	public StringPrinter createStringPrinter() {
		return this._newLineStringPrinter;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NewLineStringReturnerFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners.NewLineStringReturner;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.StringStringReturnerFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;

/**
 * Factory for NewLineStringReturner
 */
@Service
public class NewLineStringReturnerFactory implements
		StringStringReturnerFactory {

	private final NewLineStringReturner _newlineStringReturner;

	/**
	 * @param _newlineStringReturner NewLineStringReturner
	 */
	@Autowired
	public NewLineStringReturnerFactory(final NewLineStringReturner _newlineStringReturner) {
		super();
		this._newlineStringReturner = _newlineStringReturner;
	}

	/**
	 * @return StringStringReturner
	 */
	@Override
	public StringStringReturner createStringStringReturner() {
		return this._newlineStringReturner;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NoFizzNoBuzzStrategyFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.NoFizzNoBuzzStrategy;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.IsEvenlyDivisibleStrategyFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;

/**
 * Factory for NoFizzNoBuzzStrategy
 */
@Service
public class NoFizzNoBuzzStrategyFactory implements
		IsEvenlyDivisibleStrategyFactory {

	private final NoFizzNoBuzzStrategy _noFizzNoBuzzStrategy;

	/**
	 * @param _noFizzNoBuzzStrategy NoFizzNoBuzzStrategy
	 */
	@Autowired
	public NoFizzNoBuzzStrategyFactory(final NoFizzNoBuzzStrategy _noFizzNoBuzzStrategy) {
		super();
		this._noFizzNoBuzzStrategy = _noFizzNoBuzzStrategy;
	}

	/**
	 * @return IsEvenlyDivisibleStrategy
	 */
	@Override
	public IsEvenlyDivisibleStrategy createIsEvenlyDivisibleStrategy() {
		return this._noFizzNoBuzzStrategy;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/SystemOutFizzBuzzOutputStrategyFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.SystemOutFizzBuzzOutputStrategy;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.FizzBuzzOutputStrategyFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzOutputStrategy;

/**
 * Factory for SystemOutFizzBuzzOutputStrategy
 */
@Service
public class SystemOutFizzBuzzOutputStrategyFactory implements
		FizzBuzzOutputStrategyFactory {

	private final SystemOutFizzBuzzOutputStrategy _systemOutFizzBuzzOutputStrategy;

	/**
	 * @param _systemOutFizzBuzzOutputStrategy SystemOutFizzBuzzOutputStrategy
	 */
	@Autowired
	public SystemOutFizzBuzzOutputStrategyFactory(final SystemOutFizzBuzzOutputStrategy _systemOutFizzBuzzOutputStrategy) {
		super();
		this._systemOutFizzBuzzOutputStrategy = _systemOutFizzBuzzOutputStrategy;
	}

	/**
	 * @return FizzBuzzOutputStrategy
	 */
	@Override
	public FizzBuzzOutputStrategy createOutputStrategy() {
		return this._systemOutFizzBuzzOutputStrategy;
	}
}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopCondition.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;

import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.ThreeWayIntegerComparator;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.ThreeWayIntegerComparisonResult;

/**
 * LoopCondition
 */
@Service
public class LoopCondition {

	/**
	 * @param nCurrentNumber int
	 * @param nTotalCount int
	 * @return boolean
	 */
	public boolean evaluateLoop(final int nCurrentNumber, final int nTotalCount) {
		final ThreeWayIntegerComparisonResult comparisonResult = ThreeWayIntegerComparator.Compare(nCurrentNumber,
				nTotalCount);
		if (ThreeWayIntegerComparisonResult.FirstIsLessThanSecond == comparisonResult) {
			return true;
		} else if (ThreeWayIntegerComparisonResult.FirstEqualsSecond == comparisonResult) {
			return true;
		} else {
			return false;
		}
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopContext.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;

import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.LoopComponentFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopContextStateManipulation;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopContextStateRetrieval;

/**
 * LoopContext
 */
public final class LoopContext implements LoopContextStateManipulation, LoopContextStateRetrieval {

	private final LoopInitializer myLoopInitializer;
	private final LoopFinalizer myLoopFinalizer;
	private final LoopCondition myLoopCondition;
	private final LoopStep myLoopStep;
	private int myCurrentControlParameterValue;

	/**
	 * @param nLoopControlParameterFinalValue int
	 */
	public LoopContext(final int nLoopControlParameterFinalValue) {
		super();
		final ApplicationContext context = new ClassPathXmlApplicationContext(Constants.SPRING_XML);
		final LoopComponentFactory myLoopComponentFactory = context.getBean(Constants.LOOP_COMPONENT_FACTORY,
				LoopComponentFactory.class);
		this.myLoopInitializer = myLoopComponentFactory.createLoopInitializer();
		this.myLoopFinalizer = myLoopComponentFactory.createLoopFinalizer(nLoopControlParameterFinalValue);
		this.myLoopCondition = myLoopComponentFactory.createLoopCondition();
		this.myLoopStep = myLoopComponentFactory.createLoopStep();
		((ConfigurableApplicationContext) context).close();
	}

	/**
	 * @return void
	 */
	@Override
	public void start() {
		this.myCurrentControlParameterValue =
				this.myLoopInitializer.getLoopInitializationPoint();
	}

	/**
	 * @return boolean
	 */
	@Override
	public boolean shouldProceed() {
		return this.myLoopCondition.evaluateLoop(this.myCurrentControlParameterValue,
				this.myLoopFinalizer.getLoopFinalizationPoint());
	}

	/**
	 * @return void
	 */
	@Override
	public void proceed() {
		this.myCurrentControlParameterValue =
				this.myLoopStep.stepLoop(this.myCurrentControlParameterValue);
	}

	/**
	 * @return int
	 */
	@Override
	public int getControlParameter() {
		return this.myCurrentControlParameterValue;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopFinalizer.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;

/**
 * LoopFinalizer
 */
public final class LoopFinalizer {

	private final int nStoredLoopFinalValue;

	/**
	 * @param nLoopFinalValue int
	 */
	public LoopFinalizer(final int nLoopFinalValue) {
		super();
		this.nStoredLoopFinalValue = nLoopFinalValue;
	}

	/**
	 * @return int
	 */
	public int getLoopFinalizationPoint() {
		return this.nStoredLoopFinalValue;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopInitializer.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;

import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants;

/**
 * LoopInitializer
 */
@Service
public class LoopInitializer {
	
	/**
	 * @return int
	 */
	public int getLoopInitializationPoint() {
		return Constants.LOOP_INIT_VALUE;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopRunner.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopContextStateManipulation;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopContextStateRetrieval;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopPayloadExecution;

/**
 * LoopRunner
 */
public final class LoopRunner {

	private final LoopContextStateManipulation myStateManipulation;
	private final LoopContextStateRetrieval myStateRetrieval;
	private final LoopPayloadExecution myPayload;

	/**
	 * @param stateManipulation LoopContextStateManipulation
	 * @param stateRetrieval LoopContextStateRetrieval
	 * @param payload LoopPayloadExecution
	 */
	public LoopRunner(final LoopContextStateManipulation stateManipulation,
			final LoopContextStateRetrieval stateRetrieval, final LoopPayloadExecution payload) {
		super();
		this.myStateManipulation = stateManipulation;
		this.myStateRetrieval = stateRetrieval;
		this.myPayload = payload;
	}

	/**
	 * @return
	 */
	public void runLoop() {
		for (this.myStateManipulation.start(); this.myStateManipulation.shouldProceed(); this.myStateManipulation.proceed()) {
			this.myPayload.runLoopPayload(this.myStateRetrieval);
		}
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopStep.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;

import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants;

/**
 * LoopStep
 */
@Service
public class LoopStep {

	/**
	 * @param nCurrentNumber int
	 * @return int
	 */
	public int stepLoop(final int nCurrentNumber) {
		return nCurrentNumber + Constants.LOOP_INC_VALUE;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/math/arithmetics/IntegerDivider.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.math.arithmetics;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator.FirstIsLargerThanSecondDoubleComparator;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator.FirstIsSmallerThanSecondDoubleComparator;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.IntegerForEqualityComparator;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.converters.primitivetypesconverters.DoubleToIntConverter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.converters.primitivetypesconverters.IntToDoubleConverter;

/**
 * IntegerDivider
 */
@Service
public class IntegerDivider {

	private final FirstIsSmallerThanSecondDoubleComparator firstIsSmallerThanSecondDoubleComparator;
	private final FirstIsLargerThanSecondDoubleComparator firstIsLargerThanSecondDoubleComparator;

	/**
	 * @param firstIsLargerThanSecondDoubleComparator FirstIsLargerThanSecondDoubleComparator
	 * @param firstIsSmallerThanSecondDoubleComparator FirstIsSmallerThanSecondDoubleComparator
	 */
	@Autowired
	public IntegerDivider(final FirstIsLargerThanSecondDoubleComparator firstIsLargerThanSecondDoubleComparator,
			final FirstIsSmallerThanSecondDoubleComparator firstIsSmallerThanSecondDoubleComparator) {
		super();
		this.firstIsLargerThanSecondDoubleComparator = firstIsLargerThanSecondDoubleComparator;
		this.firstIsSmallerThanSecondDoubleComparator = firstIsSmallerThanSecondDoubleComparator;
	}

	/**
	 * @param nFirstInteger int
	 * @param nSecondInteger int
	 * @return int
	 */
	public int divide(final int nFirstInteger, final int nSecondInteger) {
		final boolean denominatorEqualsZero =
				IntegerForEqualityComparator.areTwoIntegersEqual(nSecondInteger, Constants.INTEGER_DIVIDE_ZERO_VALUE);
		if (denominatorEqualsZero) {
			throw new ArithmeticException(Constants.AN_ATTEMPT_WAS_MADE_TO_DIVIDE_BY_ZERO);
		} else {
			final double dbFirstNumber = IntToDoubleConverter.Convert(nFirstInteger);
			final double dbSecondNumber = IntToDoubleConverter.Convert(nSecondInteger);
			final double dbQuotient = dbFirstNumber / dbSecondNumber;
			double dbRoundedQuotient = (double) Constants.INTEGER_ORIGIN_ZERO_VALUE;
			if (this.firstIsSmallerThanSecondDoubleComparator.FirstIsSmallerThanSecond(dbQuotient,
					(double) Constants.INTEGER_ORIGIN_ZERO_VALUE)) {
				dbRoundedQuotient = Math.ceil(dbQuotient);
			} else if (this.firstIsLargerThanSecondDoubleComparator.FirstIsLargerThanSecond(dbQuotient,
					(double) Constants.INTEGER_ORIGIN_ZERO_VALUE)) {
				dbRoundedQuotient = Math.floor(dbQuotient);
			}
			final int nIntegerQuotient = DoubleToIntConverter.Convert(dbRoundedQuotient);
			return nIntegerQuotient;
		}
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/math/arithmetics/NumberIsMultipleOfAnotherNumberVerifier.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.math.arithmetics;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.ApplicationContextHolder;
import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.IntegerForEqualityComparator;

/**
 * NumberIsMultipleOfAnotherNumberVerifier
 */
@Service
public class NumberIsMultipleOfAnotherNumberVerifier {

	private static IntegerDivider integerDivider;

	@Autowired
	private ApplicationContextHolder applicationContextHolder;

	/**
	 * @return
	 */
	@PostConstruct
	public void init() {
		final ApplicationContext applicationContext = applicationContextHolder.getApplicationContext();

		this.integerDivider = applicationContext.getBean(IntegerDivider.class);
	}

	/**
	 * @param nFirstNumber
	 * @param nSecondNumber
	 * @return
	 */
	public static boolean numberIsMultipleOfAnotherNumber(final int nFirstNumber, final int nSecondNumber) {
		try {
			final int nDivideFirstIntegerBySecondIntegerResult =
					(NumberIsMultipleOfAnotherNumberVerifier.integerDivider.divide(nFirstNumber, nSecondNumber));
			final int nMultiplyDivisionResultBySecondIntegerResult =
					nDivideFirstIntegerBySecondIntegerResult * nSecondNumber;
			if (IntegerForEqualityComparator.areTwoIntegersEqual(nMultiplyDivisionResultBySecondIntegerResult,
					nFirstNumber)) {
				return true;
			} else {
				return false;
			}
		} catch (final ArithmeticException ae) {
			return false;
		}
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/parameters/DefaultFizzBuzzUpperLimitParameter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.parameters;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.parameters.FizzBuzzUpperLimitParameter;

/**
 * Parameter for DefaultFizzBuzzUpperLimit
 */
public final class DefaultFizzBuzzUpperLimitParameter implements FizzBuzzUpperLimitParameter {

	private final int fizzBuzzUpperLimitParameterValue;

	/**
	 *
	 */
	public DefaultFizzBuzzUpperLimitParameter() {
		super();
		this.fizzBuzzUpperLimitParameterValue = Constants.DEFAULT_FIZZ_BUZZ_UPPER_LIMIT_PARAMETER_VALUE;
	}

	/**
	 * @param fizzBuzzUpperLimitParameterValue int
	 */
	public DefaultFizzBuzzUpperLimitParameter(final int fizzBuzzUpperLimitParameterValue) {
		super();
		this.fizzBuzzUpperLimitParameterValue = fizzBuzzUpperLimitParameterValue;
	}

	/**
	 * @return int
	 */
	public int obtainUpperLimitValue() {
		return this.fizzBuzzUpperLimitParameterValue;
	}
}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/BuzzPrinter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;

/**
 * Printer for Buzz
 */
@Service
public class BuzzPrinter {

	private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;

	/**
	 * @param _systemOutFizzBuzzOutputStrategyFactory
	 */
	@Autowired
	public BuzzPrinter(final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
		super();
		this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/BuzzStringPrinter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.BuzzStringReturnerFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;

/**
 * Printer for BuzzString
 */
@Service
public class BuzzStringPrinter implements StringPrinter {

	private final SystemOutFizzBuzzOutputStrategyFactory _outputStrategyFactory;

	private final BuzzStringReturnerFactory _buzzStringReturnerFactory;

	/**
	 * @param _buzzStringReturnerFactory
	 * @param _outputStrategyFactory
	 */
	@Autowired
	public BuzzStringPrinter(final BuzzStringReturnerFactory _buzzStringReturnerFactory,
			final SystemOutFizzBuzzOutputStrategyFactory _outputStrategyFactory) {
		super();
		this._buzzStringReturnerFactory = _buzzStringReturnerFactory;
		this._outputStrategyFactory = _outputStrategyFactory;
	}

	/**
	 * @return void
	 */
	public void print() {
		final StringStringReturner myBuzzStringReturner = this._buzzStringReturnerFactory
			.createStringStringReturner();
		final FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter myOutputAdapter =
				new FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(
						this._outputStrategyFactory.createOutputStrategy());

		myOutputAdapter.output(myBuzzStringReturner.getReturnString());
	}

	/**
	 * @param value
	 * @return
	 */
	@Override
	public void printValue(final Object value) {
		this.print();
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/FizzPrinter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;

/**
 * Printer for Fizz
 */
@Service
public class FizzPrinter {

	private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;

	/**
	 * @param _systemOutFizzBuzzOutputStrategyFactory
	 */
	@Autowired
	public FizzPrinter(final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
		super();
		this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/FizzStringPrinter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.FizzStringReturnerFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;

/**
 * Printer for FizzString
 */
@Service
public class FizzStringPrinter implements StringPrinter {

	private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;

	private final FizzStringReturnerFactory _fizzStringReturnerFactory;

	/**
	 * @param _fizzStringReturnerFactory FizzStringReturnerFactory
	 * @param _systemOutFizzBuzzOutputStrategyFactory SystemOutFizzBuzzOutputStrategyFactory
	 */
	@Autowired
	public FizzStringPrinter(final FizzStringReturnerFactory _fizzStringReturnerFactory,
			final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
		super();
		this._fizzStringReturnerFactory = _fizzStringReturnerFactory;
		this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
	}

	/**
	 * @return void
	 */
	public void print() {
		final StringStringReturner myFizzStringReturner = this._fizzStringReturnerFactory
			.createStringStringReturner();
		final FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter myOutputAdapter =
				new FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(
						this._systemOutFizzBuzzOutputStrategyFactory.createOutputStrategy());

		myOutputAdapter.output(myFizzStringReturner.getReturnString());
	}

	/**
	 * @param value
	 */
	@Override
	public void printValue(final Object value) {
		this.print();
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/IntegerIntegerPrinter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.IntegerIntegerStringReturnerFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.IntegerPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.IntegerStringReturner;

/**
 * Printer for IntegerInteger
 */
@Service
public class IntegerIntegerPrinter implements IntegerPrinter {

	private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;

	private final IntegerIntegerStringReturnerFactory _integerIntegerStringReturnerFactory;

	/**
	 * @param _integerIntegerStringReturnerFactory IntegerIntegerStringReturnerFactory
	 * @param _systemOutFizzBuzzOutputStrategyFactory SystemOutFizzBuzzOutputStrategyFactory
	 */
	@Autowired
	public IntegerIntegerPrinter(final IntegerIntegerStringReturnerFactory _integerIntegerStringReturnerFactory,
			final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
		super();
		this._integerIntegerStringReturnerFactory = _integerIntegerStringReturnerFactory;
		this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
	}

	/**
	 * @param theInteger
	 */
	public void printInteger(final int theInteger) {
		final IntegerStringReturner myIntegerStringReturner =
				this._integerIntegerStringReturnerFactory.createIntegerStringReturner();
		final String myIntegerString = myIntegerStringReturner.getIntegerReturnString(theInteger);
		final FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter myOutputAdapter =
				new FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(
						this._systemOutFizzBuzzOutputStrategyFactory.createOutputStrategy());

		myOutputAdapter.output(myIntegerString);
	}

	/**
	 * @return void
	 */
	@Override
	public void print() {
		throw new UnsupportedOperationException(
				com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants.COM_SERIOUSCOMPANY_BUSINESS_JAVA_FIZZBUZZ_PACKAGENAMINGPACKAGE_IMPL_PRINTERS_INTEGER_INTEGER_PRINTER_PRINT);
	}

	/**
	 * @param value
	 */
	@Override
	public void printValue(final Object value) {
		this.printInteger((Integer) value);
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/IntegerPrinter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;

/**
 * Printer for Integers
 */
@Service
public class IntegerPrinter {

	private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;

	/**
	 * @param _systemOutFizzBuzzOutputStrategyFactory
	 */
	@Autowired
	public IntegerPrinter(final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
		super();
		this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/NewLinePrinter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;

/**
 * Printer for New Line
 */
@Service
public class NewLinePrinter {

	private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;

	/**
	 * @param _systemOutFizzBuzzOutputStrategyFactory
	 */
	@Autowired
	public NewLinePrinter(final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
		super();
		this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/NewLineStringPrinter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.NewLineStringReturnerFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;

/**
 * Printer for NewLineString
 */
@Service
public class NewLineStringPrinter implements StringPrinter {

	private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;

	private final NewLineStringReturnerFactory _newLineStringReturnerFactory;

	/**
	 * @param _newLineStringReturnerFactory NewLineStringReturnerFactory
	 * @param _systemOutFizzBuzzOutputStrategyFactory SystemOutFizzBuzzOutputStrategyFactory
	 */
	@Autowired
	public NewLineStringPrinter(final NewLineStringReturnerFactory _newLineStringReturnerFactory,
			final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
		super();
		this._newLineStringReturnerFactory = _newLineStringReturnerFactory;
		this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
	}

	/**
	 * @return void
	 */
	public void print() {
		final StringStringReturner myNewLineStringReturner = this._newLineStringReturnerFactory
			.createStringStringReturner();
		final String myNewLineString = myNewLineStringReturner.getReturnString();
		final FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter myOutputAdapter =
				new FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(
						this._systemOutFizzBuzzOutputStrategyFactory.createOutputStrategy());

		myOutputAdapter.output(myNewLineString);
	}

	/**
	 * @param value Object
	 */
	@Override
	public void printValue(final Object value) {
		this.print();
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/BuzzStrategy.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;

import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants.BuzzStrategyConstants;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.math.arithmetics.NumberIsMultipleOfAnotherNumberVerifier;

/**
 * Strategy for Buzz
 */
@Service
public class BuzzStrategy implements IsEvenlyDivisibleStrategy {

	/**
	 * @param theInteger int
	 * @return boolean
	 */
	public boolean isEvenlyDivisible(final int theInteger) {
		if (NumberIsMultipleOfAnotherNumberVerifier.numberIsMultipleOfAnotherNumber(theInteger,
				BuzzStrategyConstants.BUZZ_INTEGER_CONSTANT_VALUE)) {
			return true;
		} else {
			return false;
		}
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/EnterpriseGradeFizzBuzzSolutionStrategy.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop.LoopContext;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop.LoopRunner;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopPayloadExecution;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzSolutionStrategy;

/**
 * Strategy for EnterpriseGradeFizzBuzzSolution
 */
@Service
public class EnterpriseGradeFizzBuzzSolutionStrategy implements FizzBuzzSolutionStrategy {

	private final LoopPayloadExecution _loopPayloadExecution;

	/**
	 * @param _loopPayloadExecution LoopPayloadExecution
	 */
	@Autowired
	public EnterpriseGradeFizzBuzzSolutionStrategy(final LoopPayloadExecution _loopPayloadExecution) {
		super();
		this._loopPayloadExecution = _loopPayloadExecution;
	}

	/**
	 * @param nFizzBuzzUpperLimit int
	 * @return void
	 */
	@Override
	public void runSolution(final int nFizzBuzzUpperLimit) {
		final LoopContext loopContext = new LoopContext(nFizzBuzzUpperLimit);
		final LoopRunner loopRunner = new LoopRunner(loopContext, loopContext, this._loopPayloadExecution);
		loopRunner.runLoop();
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/FizzStrategy.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;

import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants.FizzStrategyConstants;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.math.arithmetics.NumberIsMultipleOfAnotherNumberVerifier;

/**
 * Strategy for Fizz
 */
@Service
public class FizzStrategy implements IsEvenlyDivisibleStrategy {

	/**
	 * @param theInteger int
	 * @return boolean
	 */
	public boolean isEvenlyDivisible(final int theInteger) {
		if (NumberIsMultipleOfAnotherNumberVerifier.numberIsMultipleOfAnotherNumber(theInteger,
				FizzStrategyConstants.FIZZ_INTEGER_CONSTANT_VALUE)) {
			return true;
		} else {
			return false;
		}
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/NoFizzNoBuzzStrategy.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;

import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants.NoFizzNoBuzzStrategyConstants;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.math.arithmetics.NumberIsMultipleOfAnotherNumberVerifier;

/**
 * Strategy for NoFizzNoBuzz
 */
@Service
public class NoFizzNoBuzzStrategy implements IsEvenlyDivisibleStrategy {

	/**
	 * @param theInteger int
	 * @return boolean
	 */
	public boolean isEvenlyDivisible(final int theInteger) {
		if (!NumberIsMultipleOfAnotherNumberVerifier.numberIsMultipleOfAnotherNumber(theInteger,
				NoFizzNoBuzzStrategyConstants.NO_FIZZ_INTEGER_CONSTANT_VALUE)) {
			if (!NumberIsMultipleOfAnotherNumberVerifier.numberIsMultipleOfAnotherNumber(theInteger,
					NoFizzNoBuzzStrategyConstants.NO_BUZZ_INTEGER_CONSTANT_VALUE)) {
				return true;
			} else {
				return false;
			}
		} else if (!NumberIsMultipleOfAnotherNumberVerifier.numberIsMultipleOfAnotherNumber(theInteger,
				NoFizzNoBuzzStrategyConstants.NO_BUZZ_INTEGER_CONSTANT_VALUE)) {
			if (!NumberIsMultipleOfAnotherNumberVerifier.numberIsMultipleOfAnotherNumber(theInteger,
					NoFizzNoBuzzStrategyConstants.NO_FIZZ_INTEGER_CONSTANT_VALUE)) {
				return true;
			} else {
				return false;
			}
		} else {
			return false;
		}
	}
}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SingleStepOutputGenerationStrategy.java
================================================
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;

/**
 * Strategy for SingleStepOutputGeneration
 */
@Service
public class SingleStepOutputGenerationStrategy implements OutputGenerationStrategy {

	private final List<OutputGenerationContext> contexts;
	private final OutputGenerationContextVisitor contextVisitor;
	private final StringPrinter myNewLinePrinter;

	/**
	 * @param fizzBuzzOutputGenerationContextVisitorFactory FizzBuzzOutputGenerationContextVisitorFactory
	 * @param fizzStrategyFactory FizzStrategyFactory
	 * @param fizzStringPrinterFactory FizzStringPrinterFactory
	 * @param buzzStrategyFactory BuzzStrategyFactory
	 * @param buzzStringPrinterFactory BuzzStringPrinterFactory
	 * @param noFizzNoBuzzStrategyFactory NoFizzNoBuzzStrategyFactory
	 * @param integerIntegerPrinterFactory IntegerIntegerPrinterFactory
	 * @param newLineStringPrinterFactory NewLineStringPrinterFactory
	 */
	@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();
	}

	/**
	 * @param generationParameter SingleStepOutputGenerationParameter
	 * @return void
	 */
	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();
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SingleStepPayload.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.LoopContextStateRetrievalToSingleStepOutputGenerationAdapter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopContextStateRetrieval;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopPayloadExecution;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.OutputGenerationStrategy;

/**
 * Payload for SingleStep
 */
@Service
public class SingleStepPayload implements LoopPayloadExecution {

	private final OutputGenerationStrategy _outputGenerationStrategy;

	/**
	 * @param _outputGenerationStrategy
	 */
	@Autowired
	public SingleStepPayload(final OutputGenerationStrategy _outputGenerationStrategy) {
		super();
		this._outputGenerationStrategy = _outputGenerationStrategy;
	}

	/**
	 * @param stateRetrieval LoopContextStateRetrieval
	 * @return void
	 */
	@Override
	public void runLoopPayload(final LoopContextStateRetrieval stateRetrieval) {
		final LoopContextStateRetrievalToSingleStepOutputGenerationAdapter adapter =
				new LoopContextStateRetrievalToSingleStepOutputGenerationAdapter(stateRetrieval);
		this._outputGenerationStrategy.performGenerationForCurrentStep(adapter);
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SystemOutFizzBuzzOutputStrategy.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;

import java.io.IOException;

import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzOutputStrategy;

/**
 * Strategy for SystemOutFizzBuzzOutput
 */
@Service
public class SystemOutFizzBuzzOutputStrategy implements FizzBuzzOutputStrategy {

	/**
	 * @param output String
	 * @throws IOException
	 * @return void
	 */
	@Override
	public void output(final String output) throws IOException {
		System.out.write(output.getBytes());
		System.out.flush();
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/adapters/FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzOutputStrategy;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzExceptionSafeOutputStrategy;

/**
 * Adapter for FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategy
 */
public final class FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter implements FizzBuzzExceptionSafeOutputStrategy {

	private  final FizzBuzzOutputStrategy _fizzBuzzOutputStrategy;

	/**
	 * @param fizzBuzzOutputStrategy FizzBuzzOutputStrategy
	 */
	public FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(final FizzBuzzOutputStrategy fizzBuzzOutputStrategy) {
		this._fizzBuzzOutputStrategy = fizzBuzzOutputStrategy;
	}

	/**
	 * @param outputStringToOutput String
	 * @return void
	 */
	@Override
	public void output(final String outputStringToOutput) {
		try {
			this._fizzBuzzOutputStrategy.output(outputStringToOutput);
		} catch (final Exception exceptionFromDoingOutput) {
			// We're the enterprise...we don't get exceptions!
		} catch (final Throwable throwableFromDoingOutput) {
			// We're the enterprise...we don't get throwables either!
		}
	}
}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/adapters/LoopContextStateRetrievalToSingleStepOutputGenerationAdapter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopContextStateRetrieval;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.SingleStepOutputGenerationParameter;

/**
 * Adapter for LoopContextStateRetrievalToSingleStepOutputGeneration
 */
public final class LoopContextStateRetrievalToSingleStepOutputGenerationAdapter implements SingleStepOutputGenerationParameter {

	private final LoopContextStateRetrieval _retrievalObjectToAdapt;

	/**
	 * @param retrievalObjectToAdapt LoopContextStateRetrieval
	 */
	public LoopContextStateRetrievalToSingleStepOutputGenerationAdapter(final LoopContextStateRetrieval retrievalObjectToAdapt) {
		super();
		this._retrievalObjectToAdapt = retrievalObjectToAdapt;

	}

	/**
	 * @return int
	 */
	@Override
	public int retrieveIntegerValue() {
		return this._retrievalObjectToAdapt.getControlParameter();
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/doublecomparator/FirstIsLargerThanSecondDoubleComparator.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator;

import org.springframework.stereotype.Service;

/**
 * Comparator for FirstIsLargerThanSecondDouble
 */
@Service
public class FirstIsLargerThanSecondDoubleComparator {

	/**
	 * @param dbFirstDoubleToCompare double
	 * @param dbSecondDoubleToCompare double
	 * @return boolean
	 */
	public  boolean FirstIsLargerThanSecond(final double dbFirstDoubleToCompare, final double dbSecondDoubleToCompare) {
		if (dbFirstDoubleToCompare > dbSecondDoubleToCompare) {
			return true;
		} else {
			return false;
		}
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/doublecomparator/FirstIsSmallerThanSecondDoubleComparator.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator;

import org.springframework.stereotype.Service;

/**
 * Comparator for FirstIsSmallerThanSecondDouble
 */
@Service
public class FirstIsSmallerThanSecondDoubleComparator {

	/**
	 * @param dbFirstDoubleToCompare double
	 * @param dbSecondDoubleToCompare double
	 * @return boolean
	 */
	public  boolean FirstIsSmallerThanSecond(final double dbFirstDoubleToCompare, final double dbSecondDoubleToCompare) {
		if (dbFirstDoubleToCompare < dbSecondDoubleToCompare) {
			return true;
		} else {
			return false;
		}
	}
}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/IntegerForEqualityComparator.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator;

import org.springframework.stereotype.Service;

/**
 * Comparator for IntegerForEquality
 */
@Service
public final class IntegerForEqualityComparator {

	private IntegerForEqualityComparator() {}

	/**
	 * @param nFirstInteger int
	 * @param nSecondInteger int
	 * @return boolean
	 */
	public static boolean areTwoIntegersEqual(final int nFirstInteger, final int nSecondInteger) {
		final ThreeWayIntegerComparisonResult comparisonResult =
				ThreeWayIntegerComparator.Compare(nFirstInteger, nSecondInteger);
		if (ThreeWayIntegerComparisonResult.FirstEqualsSecond == comparisonResult) {
			return true;
		} else {
			return false;
		}
	}
}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/ThreeWayIntegerComparator.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator;

import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants;

/**
 * Comparator for ThreeWayInteger
 */
@Service
public final class ThreeWayIntegerComparator {

	private ThreeWayIntegerComparator() {}

	/**
	 * @param nFirstInteger int
	 * @param nSecondInteger int
	 * @return ThreeWayIntegerComparisonResult
	 */
	public static ThreeWayIntegerComparisonResult Compare(final int nFirstInteger, final int nSecondInteger) {
		if (nFirstInteger == nSecondInteger) {
			return ThreeWayIntegerComparisonResult.FirstEqualsSecond;
		} else if (nFirstInteger < nSecondInteger) {
			return ThreeWayIntegerComparisonResult.FirstIsLessThanSecond;
		} else if (nFirstInteger > nSecondInteger) {
			return ThreeWayIntegerComparisonResult.FirstIsGreaterThanSecond;
		} else {
			// If the integers cannot be compared, then something is seriously wrong with the numbers.
			throw new UnsupportedOperationException(Constants.THE_INTEGERS_COULD_NOT_BE_COMPARED);
		}
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/ThreeWayIntegerComparisonResult.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator;

/**
 * ThreeWayIntegerComparisonResult
 */
public enum ThreeWayIntegerComparisonResult {
	FirstIsLessThanSecond,
	FirstEqualsSecond,
	FirstIsGreaterThanSecond
}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/BuzzStrategyConstants.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants;

import org.springframework.stereotype.Service;

/**
 * Constants for BuzzStrategy
 */
@Service
public final class BuzzStrategyConstants {

	private BuzzStrategyConstants() {}

	public static final int BUZZ_INTEGER_CONSTANT_VALUE = 5;

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/FizzStrategyConstants.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants;

import org.springframework.stereotype.Service;

/**
 * Constants for FizzStrategy
 */
@Service
public final class FizzStrategyConstants {

	private FizzStrategyConstants() {}

	public static final int FIZZ_INTEGER_CONSTANT_VALUE = 3;

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/NoFizzNoBuzzStrategyConstants.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants;

import org.springframework.stereotype.Service;

/**
 * Constants for NoFizzNoBuzzStrategy
 */
@Service
public final class NoFizzNoBuzzStrategyConstants {

	private NoFizzNoBuzzStrategyConstants() {}

	public static final int NO_BUZZ_INTEGER_CONSTANT_VALUE = BuzzStrategyConstants.BUZZ_INTEGER_CONSTANT_VALUE;
	public static final int NO_FIZZ_INTEGER_CONSTANT_VALUE = FizzStrategyConstants.FIZZ_INTEGER_CONSTANT_VALUE;

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/converters/primitivetypesconverters/DoubleToIntConverter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.converters.primitivetypesconverters;

import org.springframework.stereotype.Service;

/**
 * Converter for DoubleToInt
 */
@Service
public final class DoubleToIntConverter {

	private DoubleToIntConverter() {}

	/**
	 * @param dbDoubleToConvert double
	 * @return int
	 */
	public static int Convert(final double dbDoubleToConvert) {
		final int nConversionResult = (int) dbDoubleToConvert;
		return nConversionResult;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/converters/primitivetypesconverters/IntToDoubleConverter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.converters.primitivetypesconverters;

import org.springframework.stereotype.Service;

/**
 * Converter for IntToDouble
 */
@Service
public final class IntToDoubleConverter {

	private IntToDoubleConverter() {}

	/**
	 * @param nIntegerToConvert int
	 * @return double
	 */
	public static double Convert(final int nIntegerToConvert) {
		final double dbConversionResult = (double) nIntegerToConvert;
		return dbConversionResult;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/BuzzStringReturner.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;

import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;

/**
 * Returner for BuzzString
 */
@Service
public class BuzzStringReturner implements StringStringReturner {

	/**
	 * @return String
	 */
	public String getReturnString() {
		final StringBuilder myStringBuilder = new StringBuilder(
				com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants.BUZZ);
		final String myString = myStringBuilder.toString();
		return new String(myString);
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/FizzStringReturner.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;

import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;

/**
 * Returner for FizzString
 */
@Service
public class FizzStringReturner implements StringStringReturner {

	/**
	 * @return String
	 */
	public String getReturnString() {
		final StringBuilder myStringBuilder = new StringBuilder(
				com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants.FIZZ);
		final String myString = myStringBuilder.toString();
		final char[] myCharacters = myString.toCharArray();
		return new String(myCharacters, 0, myCharacters.length);
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/IntegerIntegerStringReturner.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;

import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.IntegerStringReturner;

/**
 * Returner for IntegerIntegerString
 */
@Service
public class IntegerIntegerStringReturner implements IntegerStringReturner {

	/**
	 * @param theInteger ing
	 * @return String
	 */
	public String getIntegerReturnString(final int theInteger) {
		final Integer myIntegerToBeConvertedToString = new Integer(theInteger);
		final StringBuilder myStringBuilder = new StringBuilder(myIntegerToBeConvertedToString.toString());
		final String myResultingStringFromIntegerToStringConversion = myStringBuilder.toString();
		return new String(myResultingStringFromIntegerToStringConversion);
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/NewLineStringReturner.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;

import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;

/**
 * Returner for NewLineString
 */
@Service
public class NewLineStringReturner implements StringStringReturner {

	/**
	 * @return
	 */
	public String getReturnString() {
		final String systemDefaultNewLineString = System.getProperty(
				com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants.LINE_SEPARATOR);
		final StringBuilder myStringBuilder = new StringBuilder(systemDefaultNewLineString);
		final String myString = myStringBuilder.toString();
		return new String(myString);
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/visitors/FizzBuzzOutputGenerationContext.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.visitors;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.DataPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors.OutputGenerationContext;

/**
 * Context for FizzBuzzOutputGeneration
 */
public final class FizzBuzzOutputGenerationContext implements OutputGenerationContext {

	private final DataPrinter printer;
	private final IsEvenlyDivisibleStrategy strategy;

	/**
	 * @param strategy IsEvenlyDivisibleStrategy
	 * @param printer DataPrinter
	 */
	public FizzBuzzOutputGenerationContext(final IsEvenlyDivisibleStrategy strategy,
			final DataPrinter printer) {
		super();
		this.strategy = strategy;
		this.printer = printer;
	}

	/**
	 * @return
	 */
	@Override
	public DataPrinter getPrinter() {
		return this.printer;
	}

	/**
	 * @return
	 */
	@Override
	public IsEvenlyDivisibleStrategy getStrategy() {
		return this.strategy;
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/visitors/FizzBuzzOutputGenerationContextVisitor.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.visitors;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.DataPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
import org.springframework.stereotype.Service;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors.OutputGenerationContext;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors.OutputGenerationContextVisitor;

/**
 * Visitor for FizzBuzzOutputGenerationContext
 */
@Service
public class FizzBuzzOutputGenerationContextVisitor implements
		OutputGenerationContextVisitor {

	/**
	 * @param context OutputGenerationContext
	 * @param nGenerationParameter int
	 */
	@Override
	public void visit(final OutputGenerationContext context, final int nGenerationParameter) {
		final IsEvenlyDivisibleStrategy strategy = context.getStrategy();
		if (strategy.isEvenlyDivisible(nGenerationParameter)) {
			final DataPrinter printer = context.getPrinter();
			printer.printValue(new Integer(nGenerationParameter));
		}
	}

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/FizzBuzz.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces;

/**
 * FizzBuzz
 */
public interface FizzBuzz {

	/**
	 * @param nFizzBuzzUpperLimit
	 */
	void fizzBuzz(int nFizzBuzzUpperLimit);

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/FizzBuzzOutputStrategyFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzOutputStrategy;

/**
 * Factory for FizzBuzzOutputStrategy
 */
public interface FizzBuzzOutputStrategyFactory {

	/**
	 * @return
	 */
	public FizzBuzzOutputStrategy createOutputStrategy();

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/FizzBuzzSolutionStrategyFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzSolutionStrategy;

/**
 * Factory for FizzBuzzSolutionStrategy
 */
public interface FizzBuzzSolutionStrategyFactory {

	/**
	 * @return
	 */
	public FizzBuzzSolutionStrategy createFizzBuzzSolutionStrategy();

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IntegerPrinterFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.IntegerPrinter;

/**
 * Factory for IntegerPrinter
 */
public interface IntegerPrinterFactory {

	/**
	 * @return
	 */
	public IntegerPrinter createPrinter();

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IntegerStringReturnerFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.IntegerStringReturner;

/**
 * Factory for IntegerStringReturner
 */
public interface IntegerStringReturnerFactory {

	/**
	 * @return
	 */
	public IntegerStringReturner createIntegerStringReturner();

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IsEvenlyDivisibleStrategyFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;

/**
 * Factory for IsEvenlyDivisibleStrategy
 */
public interface IsEvenlyDivisibleStrategyFactory {

	/**
	 * @return
	 */
	public IsEvenlyDivisibleStrategy createIsEvenlyDivisibleStrategy();

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/OutputGenerationContextVisitorFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors.OutputGenerationContextVisitor;

/**
 * Factory for OutputGenerationContextVisitor
 */
public interface OutputGenerationContextVisitorFactory {

	/**
	 * @return
	 */
	public OutputGenerationContextVisitor createVisitor();

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/StringPrinterFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;

/**
 * Factory for StringPrinter
 */
public interface StringPrinterFactory {

	/**
	 * @return
	 */
	public StringPrinter createStringPrinter();

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/StringStringReturnerFactory.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;

/**
 * Factory for StringStringReturner
 */
public interface StringStringReturnerFactory {

	/**
	 * @return
	 */
	public StringStringReturner createStringStringReturner();

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopContextStateManipulation.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop;

/**
 * Manipulation for LoopContextState
 */
public interface LoopContextStateManipulation {

	/**
	 * @return
	 */
	public void start();

	/**
	 * @return
	 */
	public boolean shouldProceed();

	/**
	 * @return
	 */
	public void proceed();

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopContextStateRetrieval.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop;

/**
 * Retrieval for LoopContextState
 */
public interface LoopContextStateRetrieval {

	/**
	 * @return
	 */
	public int getControlParameter();

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopPayloadExecution.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop;

/**
 * Execution for LoopPayload
 */
public interface LoopPayloadExecution {

	/**
	 * @param stateRetrieval
	 */
	public void runLoopPayload(LoopContextStateRetrieval stateRetrieval);

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/parameters/FizzBuzzUpperLimitParameter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.parameters;

/**
 * Parameter for FizzBuzzUpperLimit
 */
public interface FizzBuzzUpperLimitParameter {

	/**
	 * @return
	 */
	public int obtainUpperLimitValue();

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/DataPrinter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers;

/**
 * Printer for Data
 */
public interface DataPrinter {

	/**
	 * @return
	 */
	public void print();

	/**
	 * @param value
	 */
	public void printValue(Object value);

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/IntegerPrinter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers;

/**
 * Printer for Integer
 */
public interface IntegerPrinter extends DataPrinter {

	/**
	 * @param theInteger
	 */
	public void printInteger(int theInteger);

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/StringPrinter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers;

/**
 * Printer for String
 */
public interface StringPrinter extends DataPrinter {

	/**
	 *
	 */
	public void print();

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzExceptionSafeOutputStrategy.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;

/**
 * Strategy for FizzBuzzExceptionSafeOutput
 */
public interface FizzBuzzExceptionSafeOutputStrategy {

	/**
	 * @param output
	 */
	public void output(String output);

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzOutputStrategy.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;

import java.io.IOException;

/**
 * Strategy for FizzBuzzOutput
 */
public interface FizzBuzzOutputStrategy {

	/**
	 * @param output
	 * @throws IOException
	 */
	public void output(String output) throws IOException;

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzSolutionStrategy.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;

/**
 * Strategy for FizzBuzzSolution
 */
public interface FizzBuzzSolutionStrategy {

	/**
	 * @param nFizzBuzzUpperLimit
	 */
	public void runSolution(int nFizzBuzzUpperLimit);

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/IsEvenlyDivisibleStrategy.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;

/**
 * Strategy for IsEvenlyDivisible
 */
public interface IsEvenlyDivisibleStrategy {

	/**
	 * @param theInteger
	 * @return
	 */
	public boolean isEvenlyDivisible(int theInteger);

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/OutputGenerationStrategy.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;

/**
 * Strategy for OutputGeneration
 */
public interface OutputGenerationStrategy {

	/**
	 * @param generationParameter
	 */
	void performGenerationForCurrentStep(SingleStepOutputGenerationParameter generationParameter);

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/SingleStepOutputGenerationParameter.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;

/**
 * Parameter for SingleStepOutputGeneration
 */
public interface SingleStepOutputGenerationParameter {

	/**
	 * @return
	 */
	public int retrieveIntegerValue();

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/stringreturners/IntegerStringReturner.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners;

/**
 * Returner for IntegerString
 */
public interface IntegerStringReturner {

	/**
	 * @param theInteger
	 * @return
	 */
	public String getIntegerReturnString(int theInteger);

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/stringreturners/StringStringReturner.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners;

/**
 * Returner for StringString
 */
public interface StringStringReturner {

	/**
	 * @return
	 */
	public String getReturnString();

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/visitors/OutputGenerationContext.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.DataPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;

/**
 * Context for OutputGeneration
 */
public interface OutputGenerationContext {

	/**
	 * @return
	 */
	public IsEvenlyDivisibleStrategy getStrategy();

	/**
	 * @return
	 */
	public DataPrinter getPrinter();

}


================================================
FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/visitors/OutputGenerationContextVisitor.java
================================================
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors;

/**
 * Visitor for OutputGenerationContext
 */
public interface OutputGenerationContextVisitor {

	/**
	 * @param context
	 * @param nGenerationParameter
	 */
	public void visit(OutputGenerationContext context, int nGenerationParameter);

}


================================================
FILE: src/test/java/FizzBuzzTest.java
================================================
import static org.junit.Assert.assertEquals;

import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintStream;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.FizzBuzz;

/**
 * Tests for FizzBuzz
 */
public class FizzBuzzTest {

	private PrintStream out;
	private FizzBuzz fb;

	/**
	 * @return void
	 */
	@Before
	public void setUp() {
		final ApplicationContext context = new ClassPathXmlApplicationContext(TestConstants.SPRING_XML);
		this.fb = (FizzBuzz) context.getBean(TestConstants.STANDARD_FIZZ_BUZZ);
		this.out = System.out;
		((ConfigurableApplicationContext) context).close();
	}

	/**
	 * @return void
	 */
	@After
	public void tearDown() {
		System.setOut(this.out);
	}

	/**
	 * @param n int
	 * @param s String
	 * @throws IOException
	 */
	private void doFizzBuzz(final int n, final String s) throws IOException {
		final ByteArrayOutputStream baos = new ByteArrayOutputStream();
		final BufferedOutputStream bos = new BufferedOutputStream(baos);
		System.setOut(new PrintStream(bos));

		this.fb.fizzBuzz(n);

		System.out.flush();
		String platformDependentExpectedResult = s.replaceAll("\\n", System.getProperty("line.separator"));
		assertEquals(platformDependentExpectedResult, baos.toString());
	}

	/**
	 * @throws IOException
	 * @return void
	 */
	@Test
	public void testFizzBuzz() throws IOException {
		this.doFizzBuzz(TestConstants.INT_1, TestConstants._1_);
		this.doFizzBuzz(TestConstants.INT_2, TestConstants._1_2_);
		this.doFizzBuzz(TestConstants.INT_3, TestConstants._1_2_FIZZ);
		this.doFizzBuzz(TestConstants.INT_4, TestConstants._1_2_FIZZ_4);
		this.doFizzBuzz(TestConstants.INT_5, TestConstants._1_2_FIZZ_4_BUZZ);
		this.doFizzBuzz(TestConstants.INT_6, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ);
		this.doFizzBuzz(TestConstants.INT_7, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7);
		this.doFizzBuzz(TestConstants.INT_8, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8);
		this.doFizzBuzz(TestConstants.INT_9, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ);
		this.doFizzBuzz(TestConstants.INT_10, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ);
		this.doFizzBuzz(TestConstants.INT_11, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11);
		this.doFizzBuzz(TestConstants.INT_12, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ);
		this.doFizzBuzz(TestConstants.INT_13, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13);
		this.doFizzBuzz(TestConstants.INT_14, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13_14);
		this.doFizzBuzz(TestConstants.INT_15,
				TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13_14_FIZZ_BUZZ);
		this.doFizzBuzz(TestConstants.INT_16,
				TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13_14_FIZZ_BUZZ_16);
	}

}


================================================
FILE: src/test/java/TestConstants.java
================================================
/**
 * Constants for FizzBuzz tests
 */
public class TestConstants {

	private TestConstants() {
		super();
	}

	static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13_14_FIZZ_BUZZ_16 = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n14\nFizzBuzz\n16\n";
	static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13_14_FIZZ_BUZZ = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n14\nFizzBuzz\n";
	static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13_14 = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n14\n";
	static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13 = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n";
	static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n";
	static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11 = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\n";
	static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n";
	static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\n";
	static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8 = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\n";
	static final String _1_2_FIZZ_4_BUZZ_FIZZ_7 = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n";
	static final String _1_2_FIZZ_4_BUZZ_FIZZ = "1\n2\nFizz\n4\nBuzz\nFizz\n";
	static final String _1_2_FIZZ_4_BUZZ = "1\n2\nFizz\n4\nBuzz\n";
	static final String _1_2_FIZZ_4 = "1\n2\nFizz\n4\n";
	static final String _1_2_FIZZ = "1\n2\nFizz\n";
	static final String _1_2_ = "1\n2\n";
	static final String _1_ = "1\n";
	static final String STANDARD_FIZZ_BUZZ = "standardFizzBuzz";
	static final String SPRING_XML = "spring.xml";
	static final int INT_1 = 1;
	static final int INT_2 = 2;
	static final int INT_3 = 3;
	static final int INT_4 = 4;
	static final int INT_5 = 5;
	static final int INT_6 = 6;
	static final int INT_7 = 7;
	static final int INT_8 = 8;
	static final int INT_9 = 9;
	static final int INT_10 = 10;
	static final int INT_11 = 11;
	static final int INT_12 = 12;
	static final int INT_13 = 13;
	static final int INT_14 = 14;
	static final int INT_15 = 15;
	static final int INT_16 = 16;

}
Download .txt
gitextract_0n90tvug/

├── .gitattributes
├── .gitignore
├── .travis.yml
├── CONTRIBUTING.md
├── README.md
├── build.gradle
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── pom.xml
├── resources/
│   └── assets/
│       └── configuration/
│           └── spring/
│               └── dependencyinjection/
│                   └── configuration/
│                       └── spring.xml
├── settings.gradle
└── src/
    ├── main/
    │   └── java/
    │       └── com/
    │           └── seriouscompany/
    │               └── business/
    │                   └── java/
    │                       └── fizzbuzz/
    │                           └── packagenamingpackage/
    │                               ├── impl/
    │                               │   ├── ApplicationContextHolder.java
    │                               │   ├── Constants.java
    │                               │   ├── Main.java
    │                               │   ├── StandardFizzBuzz.java
    │                               │   ├── factories/
    │                               │   │   ├── BuzzStrategyFactory.java
    │                               │   │   ├── BuzzStringPrinterFactory.java
    │                               │   │   ├── BuzzStringReturnerFactory.java
    │                               │   │   ├── EnterpriseGradeFizzBuzzSolutionStrategyFactory.java
    │                               │   │   ├── FizzBuzzOutputGenerationContextVisitorFactory.java
    │                               │   │   ├── FizzStrategyFactory.java
    │                               │   │   ├── FizzStringPrinterFactory.java
    │                               │   │   ├── FizzStringReturnerFactory.java
    │                               │   │   ├── IntegerIntegerPrinterFactory.java
    │                               │   │   ├── IntegerIntegerStringReturnerFactory.java
    │                               │   │   ├── LoopComponentFactory.java
    │                               │   │   ├── NewLineStringPrinterFactory.java
    │                               │   │   ├── NewLineStringReturnerFactory.java
    │                               │   │   ├── NoFizzNoBuzzStrategyFactory.java
    │                               │   │   └── SystemOutFizzBuzzOutputStrategyFactory.java
    │                               │   ├── loop/
    │                               │   │   ├── LoopCondition.java
    │                               │   │   ├── LoopContext.java
    │                               │   │   ├── LoopFinalizer.java
    │                               │   │   ├── LoopInitializer.java
    │                               │   │   ├── LoopRunner.java
    │                               │   │   └── LoopStep.java
    │                               │   ├── math/
    │                               │   │   └── arithmetics/
    │                               │   │       ├── IntegerDivider.java
    │                               │   │       └── NumberIsMultipleOfAnotherNumberVerifier.java
    │                               │   ├── parameters/
    │                               │   │   └── DefaultFizzBuzzUpperLimitParameter.java
    │                               │   ├── printers/
    │                               │   │   ├── BuzzPrinter.java
    │                               │   │   ├── BuzzStringPrinter.java
    │                               │   │   ├── FizzPrinter.java
    │                               │   │   ├── FizzStringPrinter.java
    │                               │   │   ├── IntegerIntegerPrinter.java
    │                               │   │   ├── IntegerPrinter.java
    │                               │   │   ├── NewLinePrinter.java
    │                               │   │   └── NewLineStringPrinter.java
    │                               │   ├── strategies/
    │                               │   │   ├── BuzzStrategy.java
    │                               │   │   ├── EnterpriseGradeFizzBuzzSolutionStrategy.java
    │                               │   │   ├── FizzStrategy.java
    │                               │   │   ├── NoFizzNoBuzzStrategy.java
    │                               │   │   ├── SingleStepOutputGenerationStrategy.java
    │                               │   │   ├── SingleStepPayload.java
    │                               │   │   ├── SystemOutFizzBuzzOutputStrategy.java
    │                               │   │   ├── adapters/
    │                               │   │   │   ├── FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter.java
    │                               │   │   │   └── LoopContextStateRetrievalToSingleStepOutputGenerationAdapter.java
    │                               │   │   ├── comparators/
    │                               │   │   │   ├── doublecomparator/
    │                               │   │   │   │   ├── FirstIsLargerThanSecondDoubleComparator.java
    │                               │   │   │   │   └── FirstIsSmallerThanSecondDoubleComparator.java
    │                               │   │   │   └── integercomparator/
    │                               │   │   │       ├── IntegerForEqualityComparator.java
    │                               │   │   │       ├── ThreeWayIntegerComparator.java
    │                               │   │   │       └── ThreeWayIntegerComparisonResult.java
    │                               │   │   ├── constants/
    │                               │   │   │   ├── BuzzStrategyConstants.java
    │                               │   │   │   ├── FizzStrategyConstants.java
    │                               │   │   │   └── NoFizzNoBuzzStrategyConstants.java
    │                               │   │   └── converters/
    │                               │   │       └── primitivetypesconverters/
    │                               │   │           ├── DoubleToIntConverter.java
    │                               │   │           └── IntToDoubleConverter.java
    │                               │   ├── stringreturners/
    │                               │   │   ├── BuzzStringReturner.java
    │                               │   │   ├── FizzStringReturner.java
    │                               │   │   ├── IntegerIntegerStringReturner.java
    │                               │   │   └── NewLineStringReturner.java
    │                               │   └── visitors/
    │                               │       ├── FizzBuzzOutputGenerationContext.java
    │                               │       └── FizzBuzzOutputGenerationContextVisitor.java
    │                               └── interfaces/
    │                                   ├── FizzBuzz.java
    │                                   ├── factories/
    │                                   │   ├── FizzBuzzOutputStrategyFactory.java
    │                                   │   ├── FizzBuzzSolutionStrategyFactory.java
    │                                   │   ├── IntegerPrinterFactory.java
    │                                   │   ├── IntegerStringReturnerFactory.java
    │                                   │   ├── IsEvenlyDivisibleStrategyFactory.java
    │                                   │   ├── OutputGenerationContextVisitorFactory.java
    │                                   │   ├── StringPrinterFactory.java
    │                                   │   └── StringStringReturnerFactory.java
    │                                   ├── loop/
    │                                   │   ├── LoopContextStateManipulation.java
    │                                   │   ├── LoopContextStateRetrieval.java
    │                                   │   └── LoopPayloadExecution.java
    │                                   ├── parameters/
    │                                   │   └── FizzBuzzUpperLimitParameter.java
    │                                   ├── printers/
    │                                   │   ├── DataPrinter.java
    │                                   │   ├── IntegerPrinter.java
    │                                   │   └── StringPrinter.java
    │                                   ├── strategies/
    │                                   │   ├── FizzBuzzExceptionSafeOutputStrategy.java
    │                                   │   ├── FizzBuzzOutputStrategy.java
    │                                   │   ├── FizzBuzzSolutionStrategy.java
    │                                   │   ├── IsEvenlyDivisibleStrategy.java
    │                                   │   ├── OutputGenerationStrategy.java
    │                                   │   └── SingleStepOutputGenerationParameter.java
    │                                   ├── stringreturners/
    │                                   │   ├── IntegerStringReturner.java
    │                                   │   └── StringStringReturner.java
    │                                   └── visitors/
    │                                       ├── OutputGenerationContext.java
    │                                       └── OutputGenerationContextVisitor.java
    └── test/
        └── java/
            ├── FizzBuzzTest.java
            └── TestConstants.java
Download .txt
SYMBOL INDEX (237 symbols across 89 files)

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/ApplicationContextHolder.java
  class ApplicationContextHolder (line 11) | @Service
    class ApplicationContextReferenceUpdater (line 19) | private static class ApplicationContextReferenceUpdater {
      method updateApplicationContextReference (line 20) | void updateApplicationContextReference(final ApplicationContext appl...
    class ApplicationContextReferenceUpdaterHolder (line 28) | private static class ApplicationContextReferenceUpdaterHolder {
    method ApplicationContextHolder (line 32) | private ApplicationContextHolder() {
    method setApplicationContext (line 40) | @Override
    method getApplicationContext (line 48) | public static ApplicationContext getApplicationContext() {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/Constants.java
  class Constants (line 6) | public class Constants {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/Main.java
  class Main (line 14) | public final class Main {
    method main (line 19) | public static void main(final String[] args) {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/StandardFizzBuzz.java
  class StandardFizzBuzz (line 13) | @Service
    method StandardFizzBuzz (line 21) | @Autowired
    method fizzBuzz (line 30) | public void fizzBuzz(final int nFizzBuzzUpperLimit) {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStrategyFactory.java
  class BuzzStrategyFactory (line 13) | @Service
    method BuzzStrategyFactory (line 21) | @Autowired
    method createIsEvenlyDivisibleStrategy (line 30) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStringPrinterFactory.java
  class BuzzStringPrinterFactory (line 13) | @Service
    method BuzzStringPrinterFactory (line 21) | @Autowired
    method createStringPrinter (line 30) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStringReturnerFactory.java
  class BuzzStringReturnerFactory (line 13) | @Service
    method BuzzStringReturnerFactory (line 21) | @Autowired
    method createStringStringReturner (line 30) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/EnterpriseGradeFizzBuzzSolutionStrategyFactory.java
  class EnterpriseGradeFizzBuzzSolutionStrategyFactory (line 12) | @Service
    method EnterpriseGradeFizzBuzzSolutionStrategyFactory (line 20) | @Autowired
    method createFizzBuzzSolutionStrategy (line 29) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzBuzzOutputGenerationContextVisitorFactory.java
  class FizzBuzzOutputGenerationContextVisitorFactory (line 13) | @Service
    method FizzBuzzOutputGenerationContextVisitorFactory (line 22) | @Autowired
    method createVisitor (line 32) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStrategyFactory.java
  class FizzStrategyFactory (line 13) | @Service
    method FizzStrategyFactory (line 21) | @Autowired
    method createIsEvenlyDivisibleStrategy (line 30) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStringPrinterFactory.java
  class FizzStringPrinterFactory (line 13) | @Service
    method FizzStringPrinterFactory (line 21) | @Autowired
    method createStringPrinter (line 30) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStringReturnerFactory.java
  class FizzStringReturnerFactory (line 13) | @Service
    method FizzStringReturnerFactory (line 21) | @Autowired
    method createStringStringReturner (line 30) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/IntegerIntegerPrinterFactory.java
  class IntegerIntegerPrinterFactory (line 13) | @Service
    method IntegerIntegerPrinterFactory (line 21) | @Autowired
    method createPrinter (line 30) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/IntegerIntegerStringReturnerFactory.java
  class IntegerIntegerStringReturnerFactory (line 13) | @Service
    method IntegerIntegerStringReturnerFactory (line 22) | @Autowired
    method createIntegerStringReturner (line 31) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/LoopComponentFactory.java
  class LoopComponentFactory (line 14) | @Service
    method LoopComponentFactory (line 28) | @Autowired
    method createLoopCondition (line 40) | public LoopCondition createLoopCondition() {
    method createLoopInitializer (line 47) | public LoopInitializer createLoopInitializer() {
    method createLoopFinalizer (line 55) | public LoopFinalizer createLoopFinalizer(final int nLoopFinalValue) {
    method createLoopStep (line 63) | public LoopStep createLoopStep() {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NewLineStringPrinterFactory.java
  class NewLineStringPrinterFactory (line 13) | @Service
    method NewLineStringPrinterFactory (line 21) | @Autowired
    method createStringPrinter (line 30) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NewLineStringReturnerFactory.java
  class NewLineStringReturnerFactory (line 13) | @Service
    method NewLineStringReturnerFactory (line 22) | @Autowired
    method createStringStringReturner (line 31) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NoFizzNoBuzzStrategyFactory.java
  class NoFizzNoBuzzStrategyFactory (line 13) | @Service
    method NoFizzNoBuzzStrategyFactory (line 22) | @Autowired
    method createIsEvenlyDivisibleStrategy (line 31) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/SystemOutFizzBuzzOutputStrategyFactory.java
  class SystemOutFizzBuzzOutputStrategyFactory (line 13) | @Service
    method SystemOutFizzBuzzOutputStrategyFactory (line 22) | @Autowired
    method createOutputStrategy (line 31) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopCondition.java
  class LoopCondition (line 11) | @Service
    method evaluateLoop (line 19) | public boolean evaluateLoop(final int nCurrentNumber, final int nTotal...

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopContext.java
  class LoopContext (line 15) | public final class LoopContext implements LoopContextStateManipulation, ...
    method LoopContext (line 26) | public LoopContext(final int nLoopControlParameterFinalValue) {
    method start (line 41) | @Override
    method shouldProceed (line 50) | @Override
    method proceed (line 59) | @Override
    method getControlParameter (line 68) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopFinalizer.java
  class LoopFinalizer (line 6) | public final class LoopFinalizer {
    method LoopFinalizer (line 13) | public LoopFinalizer(final int nLoopFinalValue) {
    method getLoopFinalizationPoint (line 21) | public int getLoopFinalizationPoint() {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopInitializer.java
  class LoopInitializer (line 10) | @Service
    method getLoopInitializationPoint (line 16) | public int getLoopInitializationPoint() {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopRunner.java
  class LoopRunner (line 10) | public final class LoopRunner {
    method LoopRunner (line 21) | public LoopRunner(final LoopContextStateManipulation stateManipulation,
    method runLoop (line 32) | public void runLoop() {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopStep.java
  class LoopStep (line 10) | @Service
    method stepLoop (line 17) | public int stepLoop(final int nCurrentNumber) {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/math/arithmetics/IntegerDivider.java
  class IntegerDivider (line 16) | @Service
    method IntegerDivider (line 26) | @Autowired
    method divide (line 39) | public int divide(final int nFirstInteger, final int nSecondInteger) {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/math/arithmetics/NumberIsMultipleOfAnotherNumberVerifier.java
  class NumberIsMultipleOfAnotherNumberVerifier (line 15) | @Service
    method init (line 26) | @PostConstruct
    method numberIsMultipleOfAnotherNumber (line 38) | public static boolean numberIsMultipleOfAnotherNumber(final int nFirst...

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/parameters/DefaultFizzBuzzUpperLimitParameter.java
  class DefaultFizzBuzzUpperLimitParameter (line 9) | public final class DefaultFizzBuzzUpperLimitParameter implements FizzBuz...
    method DefaultFizzBuzzUpperLimitParameter (line 16) | public DefaultFizzBuzzUpperLimitParameter() {
    method DefaultFizzBuzzUpperLimitParameter (line 24) | public DefaultFizzBuzzUpperLimitParameter(final int fizzBuzzUpperLimit...
    method obtainUpperLimitValue (line 32) | public int obtainUpperLimitValue() {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/BuzzPrinter.java
  class BuzzPrinter (line 11) | @Service
    method BuzzPrinter (line 19) | @Autowired

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/BuzzStringPrinter.java
  class BuzzStringPrinter (line 15) | @Service
    method BuzzStringPrinter (line 26) | @Autowired
    method print (line 37) | public void print() {
    method printValue (line 51) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/FizzPrinter.java
  class FizzPrinter (line 11) | @Service
    method FizzPrinter (line 19) | @Autowired

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/FizzStringPrinter.java
  class FizzStringPrinter (line 15) | @Service
    method FizzStringPrinter (line 26) | @Autowired
    method print (line 37) | public void print() {
    method printValue (line 50) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/IntegerIntegerPrinter.java
  class IntegerIntegerPrinter (line 15) | @Service
    method IntegerIntegerPrinter (line 26) | @Autowired
    method printInteger (line 37) | public void printInteger(final int theInteger) {
    method print (line 51) | @Override
    method printValue (line 60) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/IntegerPrinter.java
  class IntegerPrinter (line 11) | @Service
    method IntegerPrinter (line 19) | @Autowired

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/NewLinePrinter.java
  class NewLinePrinter (line 11) | @Service
    method NewLinePrinter (line 19) | @Autowired

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/NewLineStringPrinter.java
  class NewLineStringPrinter (line 15) | @Service
    method NewLineStringPrinter (line 26) | @Autowired
    method print (line 37) | public void print() {
    method printValue (line 51) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/BuzzStrategy.java
  class BuzzStrategy (line 12) | @Service
    method isEvenlyDivisible (line 19) | public boolean isEvenlyDivisible(final int theInteger) {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/EnterpriseGradeFizzBuzzSolutionStrategy.java
  class EnterpriseGradeFizzBuzzSolutionStrategy (line 14) | @Service
    method EnterpriseGradeFizzBuzzSolutionStrategy (line 22) | @Autowired
    method runSolution (line 32) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/FizzStrategy.java
  class FizzStrategy (line 12) | @Service
    method isEvenlyDivisible (line 19) | public boolean isEvenlyDivisible(final int theInteger) {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/NoFizzNoBuzzStrategy.java
  class NoFizzNoBuzzStrategy (line 12) | @Service
    method isEvenlyDivisible (line 19) | public boolean isEvenlyDivisible(final int theInteger) {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SingleStepOutputGenerationStrategy.java
  class SingleStepOutputGenerationStrategy (line 21) | @Service
    method SingleStepOutputGenerationStrategy (line 38) | @Autowired
    method performGenerationForCurrentStep (line 66) | public void performGenerationForCurrentStep(final SingleStepOutputGene...

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SingleStepPayload.java
  class SingleStepPayload (line 14) | @Service
    method SingleStepPayload (line 22) | @Autowired
    method runLoopPayload (line 32) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SystemOutFizzBuzzOutputStrategy.java
  class SystemOutFizzBuzzOutputStrategy (line 12) | @Service
    method output (line 20) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/adapters/FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter.java
  class FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter (line 9) | public final class FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputSt...
    method FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter (line 16) | public FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdap...
    method output (line 24) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/adapters/LoopContextStateRetrievalToSingleStepOutputGenerationAdapter.java
  class LoopContextStateRetrievalToSingleStepOutputGenerationAdapter (line 9) | public final class LoopContextStateRetrievalToSingleStepOutputGeneration...
    method LoopContextStateRetrievalToSingleStepOutputGenerationAdapter (line 16) | public LoopContextStateRetrievalToSingleStepOutputGenerationAdapter(fi...
    method retrieveIntegerValue (line 25) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/doublecomparator/FirstIsLargerThanSecondDoubleComparator.java
  class FirstIsLargerThanSecondDoubleComparator (line 8) | @Service
    method FirstIsLargerThanSecond (line 16) | public  boolean FirstIsLargerThanSecond(final double dbFirstDoubleToCo...

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/doublecomparator/FirstIsSmallerThanSecondDoubleComparator.java
  class FirstIsSmallerThanSecondDoubleComparator (line 8) | @Service
    method FirstIsSmallerThanSecond (line 16) | public  boolean FirstIsSmallerThanSecond(final double dbFirstDoubleToC...

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/IntegerForEqualityComparator.java
  class IntegerForEqualityComparator (line 8) | @Service
    method IntegerForEqualityComparator (line 11) | private IntegerForEqualityComparator() {}
    method areTwoIntegersEqual (line 18) | public static boolean areTwoIntegersEqual(final int nFirstInteger, fin...

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/ThreeWayIntegerComparator.java
  class ThreeWayIntegerComparator (line 10) | @Service
    method ThreeWayIntegerComparator (line 13) | private ThreeWayIntegerComparator() {}
    method Compare (line 20) | public static ThreeWayIntegerComparisonResult Compare(final int nFirst...

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/ThreeWayIntegerComparisonResult.java
  type ThreeWayIntegerComparisonResult (line 6) | public enum ThreeWayIntegerComparisonResult {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/BuzzStrategyConstants.java
  class BuzzStrategyConstants (line 8) | @Service
    method BuzzStrategyConstants (line 11) | private BuzzStrategyConstants() {}

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/FizzStrategyConstants.java
  class FizzStrategyConstants (line 8) | @Service
    method FizzStrategyConstants (line 11) | private FizzStrategyConstants() {}

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/NoFizzNoBuzzStrategyConstants.java
  class NoFizzNoBuzzStrategyConstants (line 8) | @Service
    method NoFizzNoBuzzStrategyConstants (line 11) | private NoFizzNoBuzzStrategyConstants() {}

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/converters/primitivetypesconverters/DoubleToIntConverter.java
  class DoubleToIntConverter (line 8) | @Service
    method DoubleToIntConverter (line 11) | private DoubleToIntConverter() {}
    method Convert (line 17) | public static int Convert(final double dbDoubleToConvert) {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/converters/primitivetypesconverters/IntToDoubleConverter.java
  class IntToDoubleConverter (line 8) | @Service
    method IntToDoubleConverter (line 11) | private IntToDoubleConverter() {}
    method Convert (line 17) | public static double Convert(final int nIntegerToConvert) {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/BuzzStringReturner.java
  class BuzzStringReturner (line 10) | @Service
    method getReturnString (line 16) | public String getReturnString() {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/FizzStringReturner.java
  class FizzStringReturner (line 10) | @Service
    method getReturnString (line 16) | public String getReturnString() {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/IntegerIntegerStringReturner.java
  class IntegerIntegerStringReturner (line 10) | @Service
    method getIntegerReturnString (line 17) | public String getIntegerReturnString(final int theInteger) {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/NewLineStringReturner.java
  class NewLineStringReturner (line 10) | @Service
    method getReturnString (line 16) | public String getReturnString() {

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/visitors/FizzBuzzOutputGenerationContext.java
  class FizzBuzzOutputGenerationContext (line 10) | public final class FizzBuzzOutputGenerationContext implements OutputGene...
    method FizzBuzzOutputGenerationContext (line 19) | public FizzBuzzOutputGenerationContext(final IsEvenlyDivisibleStrategy...
    method getPrinter (line 29) | @Override
    method getStrategy (line 37) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/visitors/FizzBuzzOutputGenerationContextVisitor.java
  class FizzBuzzOutputGenerationContextVisitor (line 13) | @Service
    method visit (line 21) | @Override

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/FizzBuzz.java
  type FizzBuzz (line 6) | public interface FizzBuzz {
    method fizzBuzz (line 11) | void fizzBuzz(int nFizzBuzzUpperLimit);

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/FizzBuzzOutputStrategyFactory.java
  type FizzBuzzOutputStrategyFactory (line 8) | public interface FizzBuzzOutputStrategyFactory {
    method createOutputStrategy (line 13) | public FizzBuzzOutputStrategy createOutputStrategy();

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/FizzBuzzSolutionStrategyFactory.java
  type FizzBuzzSolutionStrategyFactory (line 8) | public interface FizzBuzzSolutionStrategyFactory {
    method createFizzBuzzSolutionStrategy (line 13) | public FizzBuzzSolutionStrategy createFizzBuzzSolutionStrategy();

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IntegerPrinterFactory.java
  type IntegerPrinterFactory (line 8) | public interface IntegerPrinterFactory {
    method createPrinter (line 13) | public IntegerPrinter createPrinter();

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IntegerStringReturnerFactory.java
  type IntegerStringReturnerFactory (line 8) | public interface IntegerStringReturnerFactory {
    method createIntegerStringReturner (line 13) | public IntegerStringReturner createIntegerStringReturner();

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IsEvenlyDivisibleStrategyFactory.java
  type IsEvenlyDivisibleStrategyFactory (line 8) | public interface IsEvenlyDivisibleStrategyFactory {
    method createIsEvenlyDivisibleStrategy (line 13) | public IsEvenlyDivisibleStrategy createIsEvenlyDivisibleStrategy();

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/OutputGenerationContextVisitorFactory.java
  type OutputGenerationContextVisitorFactory (line 8) | public interface OutputGenerationContextVisitorFactory {
    method createVisitor (line 13) | public OutputGenerationContextVisitor createVisitor();

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/StringPrinterFactory.java
  type StringPrinterFactory (line 8) | public interface StringPrinterFactory {
    method createStringPrinter (line 13) | public StringPrinter createStringPrinter();

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/StringStringReturnerFactory.java
  type StringStringReturnerFactory (line 8) | public interface StringStringReturnerFactory {
    method createStringStringReturner (line 13) | public StringStringReturner createStringStringReturner();

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopContextStateManipulation.java
  type LoopContextStateManipulation (line 6) | public interface LoopContextStateManipulation {
    method start (line 11) | public void start();
    method shouldProceed (line 16) | public boolean shouldProceed();
    method proceed (line 21) | public void proceed();

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopContextStateRetrieval.java
  type LoopContextStateRetrieval (line 6) | public interface LoopContextStateRetrieval {
    method getControlParameter (line 11) | public int getControlParameter();

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopPayloadExecution.java
  type LoopPayloadExecution (line 6) | public interface LoopPayloadExecution {
    method runLoopPayload (line 11) | public void runLoopPayload(LoopContextStateRetrieval stateRetrieval);

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/parameters/FizzBuzzUpperLimitParameter.java
  type FizzBuzzUpperLimitParameter (line 6) | public interface FizzBuzzUpperLimitParameter {
    method obtainUpperLimitValue (line 11) | public int obtainUpperLimitValue();

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/DataPrinter.java
  type DataPrinter (line 6) | public interface DataPrinter {
    method print (line 11) | public void print();
    method printValue (line 16) | public void printValue(Object value);

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/IntegerPrinter.java
  type IntegerPrinter (line 6) | public interface IntegerPrinter extends DataPrinter {
    method printInteger (line 11) | public void printInteger(int theInteger);

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/StringPrinter.java
  type StringPrinter (line 6) | public interface StringPrinter extends DataPrinter {
    method print (line 11) | public void print();

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzExceptionSafeOutputStrategy.java
  type FizzBuzzExceptionSafeOutputStrategy (line 6) | public interface FizzBuzzExceptionSafeOutputStrategy {
    method output (line 11) | public void output(String output);

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzOutputStrategy.java
  type FizzBuzzOutputStrategy (line 8) | public interface FizzBuzzOutputStrategy {
    method output (line 14) | public void output(String output) throws IOException;

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzSolutionStrategy.java
  type FizzBuzzSolutionStrategy (line 6) | public interface FizzBuzzSolutionStrategy {
    method runSolution (line 11) | public void runSolution(int nFizzBuzzUpperLimit);

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/IsEvenlyDivisibleStrategy.java
  type IsEvenlyDivisibleStrategy (line 6) | public interface IsEvenlyDivisibleStrategy {
    method isEvenlyDivisible (line 12) | public boolean isEvenlyDivisible(int theInteger);

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/OutputGenerationStrategy.java
  type OutputGenerationStrategy (line 6) | public interface OutputGenerationStrategy {
    method performGenerationForCurrentStep (line 11) | void performGenerationForCurrentStep(SingleStepOutputGenerationParamet...

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/SingleStepOutputGenerationParameter.java
  type SingleStepOutputGenerationParameter (line 6) | public interface SingleStepOutputGenerationParameter {
    method retrieveIntegerValue (line 11) | public int retrieveIntegerValue();

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/stringreturners/IntegerStringReturner.java
  type IntegerStringReturner (line 6) | public interface IntegerStringReturner {
    method getIntegerReturnString (line 12) | public String getIntegerReturnString(int theInteger);

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/stringreturners/StringStringReturner.java
  type StringStringReturner (line 6) | public interface StringStringReturner {
    method getReturnString (line 11) | public String getReturnString();

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/visitors/OutputGenerationContext.java
  type OutputGenerationContext (line 9) | public interface OutputGenerationContext {
    method getStrategy (line 14) | public IsEvenlyDivisibleStrategy getStrategy();
    method getPrinter (line 19) | public DataPrinter getPrinter();

FILE: src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/visitors/OutputGenerationContextVisitor.java
  type OutputGenerationContextVisitor (line 6) | public interface OutputGenerationContextVisitor {
    method visit (line 12) | public void visit(OutputGenerationContext context, int nGenerationPara...

FILE: src/test/java/FizzBuzzTest.java
  class FizzBuzzTest (line 20) | public class FizzBuzzTest {
    method setUp (line 28) | @Before
    method tearDown (line 39) | @After
    method doFizzBuzz (line 49) | private void doFizzBuzz(final int n, final String s) throws IOException {
    method testFizzBuzz (line 65) | @Test

FILE: src/test/java/TestConstants.java
  class TestConstants (line 4) | public class TestConstants {
    method TestConstants (line 6) | private TestConstants() {
Condensed preview — 102 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (123K chars).
[
  {
    "path": ".gitattributes",
    "chars": 483,
    "preview": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs     diff=csharp\n*.sln"
  },
  {
    "path": ".gitignore",
    "chars": 2136,
    "preview": "#################\n## Eclipse\n#################\n\n*.pydevproject\n.project\n.metadata\nbin/\ntmp/\n*.tmp\n*.bak\n*.swp\n*~.nib\nloc"
  },
  {
    "path": ".travis.yml",
    "chars": 113,
    "preview": "language: java\nbefore_install: sudo pip install codecov\nafter_success: codecov\n\njdk:\n  - oraclejdk7\n  - openjdk7\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1577,
    "preview": "# Contributor Code of Conduct\n\nAs contributors and maintainers of this project, we pledge to respect all people who cont"
  },
  {
    "path": "README.md",
    "chars": 1687,
    "preview": "# FizzBuzzEnterpriseEdition\n\n[![Build status][Build status image]][Build status URL] [![codecov.io](https://codecov.io/g"
  },
  {
    "path": "build.gradle",
    "chars": 762,
    "preview": "apply plugin: 'java'\napply plugin: 'application'\n\nrepositories {\n    jcenter()\n}\n\nsourceSets {\n    main {\n        java {"
  },
  {
    "path": "gradle/wrapper/gradle-wrapper.properties",
    "chars": 230,
    "preview": "#Fri Oct 30 12:59:42 CET 2015\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_"
  },
  {
    "path": "gradlew",
    "chars": 4971,
    "preview": "#!/usr/bin/env bash\n\n##############################################################################\n##\n##  Gradle start "
  },
  {
    "path": "gradlew.bat",
    "chars": 2314,
    "preview": "@if \"%DEBUG%\" == \"\" @echo off\n@rem ##########################################################################\n@rem\n@rem "
  },
  {
    "path": "pom.xml",
    "chars": 3124,
    "preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLoc"
  },
  {
    "path": "resources/assets/configuration/spring/dependencyinjection/configuration/spring.xml",
    "chars": 734,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n    xmlns:xsi=\"http://"
  },
  {
    "path": "settings.gradle",
    "chars": 47,
    "preview": "rootProject.name = 'FizzBuzzEnterpriseEdition'\n"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/ApplicationContextHolder.java",
    "chars": 1465,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl;\n\nimport org.springframework.beans.BeansExce"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/Constants.java",
    "chars": 1220,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl;\n\n/**\n * Constants\n */\npublic class Constant"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/Main.java",
    "chars": 1139,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl;\n\nimport org.springframework.context.Applica"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/StandardFizzBuzz.java",
    "chars": 1239,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl;\n\nimport org.springframework.beans.factory.a"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStrategyFactory.java",
    "chars": 1033,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;\n\nimport org.springframework.beans"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStringPrinterFactory.java",
    "chars": 1043,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;\n\nimport org.springframework.beans"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStringReturnerFactory.java",
    "chars": 1124,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;\n\nimport org.springframework.beans"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/EnterpriseGradeFizzBuzzSolutionStrategyFactory.java",
    "chars": 1137,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;\n\nimport org.springframework.beans"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzBuzzOutputGenerationContextVisitorFactory.java",
    "chars": 1401,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;\n\nimport org.springframework.beans"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStrategyFactory.java",
    "chars": 1054,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;\n\nimport org.springframework.beans"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStringPrinterFactory.java",
    "chars": 1043,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;\n\nimport org.springframework.beans"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStringReturnerFactory.java",
    "chars": 1112,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;\n\nimport org.springframework.beans"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/IntegerIntegerPrinterFactory.java",
    "chars": 1101,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;\n\nimport org.springframework.beans"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/IntegerIntegerStringReturnerFactory.java",
    "chars": 1250,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;\n\nimport org.springframework.beans"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/LoopComponentFactory.java",
    "chars": 1775,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;\n\nimport org.springframework.beans"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NewLineStringPrinterFactory.java",
    "chars": 1082,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;\n\nimport org.springframework.beans"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NewLineStringReturnerFactory.java",
    "chars": 1153,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;\n\nimport org.springframework.beans"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NoFizzNoBuzzStrategyFactory.java",
    "chars": 1160,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;\n\nimport org.springframework.beans"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/SystemOutFizzBuzzOutputStrategyFactory.java",
    "chars": 1276,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;\n\nimport org.springframework.beans"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopCondition.java",
    "chars": 1021,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;\n\nimport org.springframework.stereotype"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopContext.java",
    "chars": 2458,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;\n\nimport org.springframework.context.Ap"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopFinalizer.java",
    "chars": 452,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;\n\n/**\n * LoopFinalizer\n */\npublic final"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopInitializer.java",
    "chars": 398,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;\n\nimport org.springframework.stereotype"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopRunner.java",
    "chars": 1338,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;\n\nimport com.seriouscompany.business.ja"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopStep.java",
    "chars": 435,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;\n\nimport org.springframework.stereotype"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/math/arithmetics/IntegerDivider.java",
    "chars": 3142,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.math.arithmetics;\n\nimport org.springframewor"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/math/arithmetics/NumberIsMultipleOfAnotherNumberVerifier.java",
    "chars": 1732,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.math.arithmetics;\n\nimport com.seriouscompany"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/parameters/DefaultFizzBuzzUpperLimitParameter.java",
    "chars": 1028,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.parameters;\n\nimport com.seriouscompany.busin"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/BuzzPrinter.java",
    "chars": 773,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;\n\nimport org.springframework.beans."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/BuzzStringPrinter.java",
    "chars": 2048,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;\n\nimport org.springframework.beans."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/FizzPrinter.java",
    "chars": 773,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;\n\nimport org.springframework.beans."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/FizzStringPrinter.java",
    "chars": 2203,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;\n\nimport org.springframework.beans."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/IntegerIntegerPrinter.java",
    "chars": 2746,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;\n\nimport org.springframework.beans."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/IntegerPrinter.java",
    "chars": 783,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;\n\nimport org.springframework.beans."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/NewLinePrinter.java",
    "chars": 783,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;\n\nimport org.springframework.beans."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/NewLineStringPrinter.java",
    "chars": 2305,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;\n\nimport org.springframework.beans."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/BuzzStrategy.java",
    "chars": 929,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;\n\nimport org.springframework.ster"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/EnterpriseGradeFizzBuzzSolutionStrategy.java",
    "chars": 1409,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;\n\nimport org.springframework.bean"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/FizzStrategy.java",
    "chars": 929,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;\n\nimport org.springframework.ster"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/NoFizzNoBuzzStrategy.java",
    "chars": 1543,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;\n\nimport org.springframework.ster"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SingleStepOutputGenerationStrategy.java",
    "chars": 3809,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;\n\nimport java.util.ArrayList;\nimp"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SingleStepPayload.java",
    "chars": 1510,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;\n\nimport org.springframework.bean"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SystemOutFizzBuzzOutputStrategy.java",
    "chars": 638,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;\n\nimport java.io.IOException;\n\nim"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/adapters/FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter.java",
    "chars": 1324,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters;\n\nimport com.seriouscomp"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/adapters/LoopContextStateRetrievalToSingleStepOutputGenerationAdapter.java",
    "chars": 1026,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters;\n\nimport com.seriouscomp"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/doublecomparator/FirstIsLargerThanSecondDoubleComparator.java",
    "chars": 630,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator;\n\nim"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/doublecomparator/FirstIsSmallerThanSecondDoubleComparator.java",
    "chars": 632,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator;\n\nim"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/IntegerForEqualityComparator.java",
    "chars": 762,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator;\n\ni"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/ThreeWayIntegerComparator.java",
    "chars": 1149,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator;\n\ni"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/ThreeWayIntegerComparisonResult.java",
    "chars": 280,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator;\n\n/"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/BuzzStrategyConstants.java",
    "chars": 336,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants;\n\nimport org.springfram"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/FizzStrategyConstants.java",
    "chars": 336,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants;\n\nimport org.springfram"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/NoFizzNoBuzzStrategyConstants.java",
    "chars": 520,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants;\n\nimport org.springfram"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/converters/primitivetypesconverters/DoubleToIntConverter.java",
    "chars": 512,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.converters.primitivetypesconverte"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/converters/primitivetypesconverters/IntToDoubleConverter.java",
    "chars": 520,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.converters.primitivetypesconverte"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/BuzzStringReturner.java",
    "chars": 676,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;\n\nimport org.springframework"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/FizzStringReturner.java",
    "chars": 758,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;\n\nimport org.springframework"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/IntegerIntegerStringReturner.java",
    "chars": 855,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;\n\nimport org.springframework"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/NewLineStringReturner.java",
    "chars": 777,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;\n\nimport org.springframework"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/visitors/FizzBuzzOutputGenerationContext.java",
    "chars": 1128,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.visitors;\n\nimport com.seriouscompany.busines"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/visitors/FizzBuzzOutputGenerationContextVisitor.java",
    "chars": 1197,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.visitors;\n\nimport com.seriouscompany.busines"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/FizzBuzz.java",
    "chars": 218,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces;\n\n/**\n * FizzBuzz\n */\npublic interface"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/FizzBuzzOutputStrategyFactory.java",
    "chars": 387,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;\n\nimport com.seriouscompany."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/FizzBuzzSolutionStrategyFactory.java",
    "chars": 405,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;\n\nimport com.seriouscompany."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IntegerPrinterFactory.java",
    "chars": 346,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;\n\nimport com.seriouscompany."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IntegerStringReturnerFactory.java",
    "chars": 395,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;\n\nimport com.seriouscompany."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IsEvenlyDivisibleStrategyFactory.java",
    "chars": 410,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;\n\nimport com.seriouscompany."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/OutputGenerationContextVisitorFactory.java",
    "chars": 410,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;\n\nimport com.seriouscompany."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/StringPrinterFactory.java",
    "chars": 348,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;\n\nimport com.seriouscompany."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/StringStringReturnerFactory.java",
    "chars": 390,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;\n\nimport com.seriouscompany."
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopContextStateManipulation.java",
    "chars": 333,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop;\n\n/**\n * Manipulation for LoopCon"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopContextStateRetrieval.java",
    "chars": 237,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop;\n\n/**\n * Retrieval for LoopContex"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopPayloadExecution.java",
    "chars": 277,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop;\n\n/**\n * Execution for LoopPayloa"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/parameters/FizzBuzzUpperLimitParameter.java",
    "chars": 249,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.parameters;\n\n/**\n * Parameter for Fizz"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/DataPrinter.java",
    "chars": 267,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers;\n\n/**\n * Printer for Data\n */"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/IntegerPrinter.java",
    "chars": 257,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers;\n\n/**\n * Printer for Integer\n"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/StringPrinter.java",
    "chars": 216,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers;\n\n/**\n * Printer for String\n "
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzExceptionSafeOutputStrategy.java",
    "chars": 270,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;\n\n/**\n * Strategy for FizzB"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzOutputStrategy.java",
    "chars": 316,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;\n\nimport java.io.IOExceptio"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzSolutionStrategy.java",
    "chars": 276,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;\n\n/**\n * Strategy for FizzB"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/IsEvenlyDivisibleStrategy.java",
    "chars": 281,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;\n\n/**\n * Strategy for IsEve"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/OutputGenerationStrategy.java",
    "chars": 321,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;\n\n/**\n * Strategy for Outpu"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/SingleStepOutputGenerationParameter.java",
    "chars": 264,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;\n\n/**\n * Parameter for Sing"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/stringreturners/IntegerStringReturner.java",
    "chars": 282,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners;\n\n/**\n * Returner for "
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/stringreturners/StringStringReturner.java",
    "chars": 237,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners;\n\n/**\n * Returner for "
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/visitors/OutputGenerationContext.java",
    "chars": 531,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors;\n\nimport com.seriouscompany.b"
  },
  {
    "path": "src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/visitors/OutputGenerationContextVisitor.java",
    "chars": 334,
    "preview": "package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors;\n\n/**\n * Visitor for OutputGe"
  },
  {
    "path": "src/test/java/FizzBuzzTest.java",
    "chars": 3091,
    "preview": "import static org.junit.Assert.assertEquals;\n\nimport java.io.BufferedOutputStream;\nimport java.io.ByteArrayOutputStream;"
  },
  {
    "path": "src/test/java/TestConstants.java",
    "chars": 2233,
    "preview": "/**\n * Constants for FizzBuzz tests\n */\npublic class TestConstants {\n\n\tprivate TestConstants() {\n\t\tsuper();\n\t}\n\n\tstatic "
  }
]

// ... and 1 more files (download for full content)

About this extraction

This page contains the full source code of the EnterpriseQualityCoding/FizzBuzzEnterpriseEdition GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 102 files (100.8 KB), approximately 28.9k tokens, and a symbol index with 237 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!