Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • teetime/teetime
  • nts/teetime
  • mne/teetime
3 results
Show changes
Commits on Source (1102)
Showing
with 869 additions and 1305 deletions
<?xml version="1.0" encoding="UTF-8"?>
<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false">
<local-check-config name="TeeTime" location="conf/quality-config/cs-conf.xml" type="project" description="">
<local-check-config name="teetime-cs" location="conf/quality-config/cs-conf.xml" type="project" description="">
<additional-data name="protect-config-file" value="false"/>
</local-check-config>
<local-check-config name="maven-checkstyle-plugin default" location="file:/C:/Users/chw/Repositories/teetime/conf/quality-config/cs-conf.xml" type="remote" description="maven-checkstyle-plugin configuration default">
<property name="checkstyle.cache.file" value="${project_loc}/target/checkstyle-cachefile"/>
<property name="checkstyle.header.file" value="C:\Users\chw\Repositories\teetime\target\checkstyle-header-default.txt"/>
</local-check-config>
<fileset name="all" enabled="true" check-config-name="TeeTime" local="true">
<fileset name="all" enabled="true" check-config-name="teetime-cs" local="true">
<file-match-pattern match-pattern="." include-pattern="true"/>
</fileset>
<filter name="WriteProtectedFiles" enabled="true"/>
</fileset-config>
......@@ -12,17 +12,31 @@
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/integration-test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry including="**/*.java" kind="src" path="src/main/resources"/>
<classpathentry including="**/*.java" kind="src" path="src/test/resources"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
/bin
/target
# Mac OS
.DS_Store
.AppleDouble
.LSOverride
# TeeTime specific
src/test/resources/data/output.txt
teetime.log
src/main/resources/hugetext.txt
# Java
*.class
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.war
*.ear
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
# Maven
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
*.pydevproject
.metadata
.gradle
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
/.checkstyle
[submodule "src/site/markdown/wiki"]
path = src/site/markdown/wiki
url = gitlab@build.se.informatik.uni-kiel.de:chw/teetime.wiki.git
......@@ -11,12 +11,17 @@
</arguments>
</buildCommand>
<buildCommand>
<name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>
<name>net.sourceforge.pmd.eclipse.plugin.pmdBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>net.sourceforge.pmd.eclipse.plugin.pmdBuilder</name>
<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>net.sourceforge.metrics.builder</name>
<arguments>
</arguments>
</buildCommand>
......@@ -27,9 +32,10 @@
</buildCommand>
</buildSpec>
<natures>
<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
<nature>net.sourceforge.pmd.eclipse.plugin.pmdNature</nature>
<nature>net.sourceforge.metrics.nature</nature>
</natures>
</projectDescription>
#FindBugs User Preferences
#Mon May 04 12:38:24 CEST 2015
detector_threshold=3
#Thu Dec 14 15:34:10 CET 2017
cloud_id=edu.umd.cs.findbugs.cloud.doNothingCloud
detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true
detectorAtomicityProblem=AtomicityProblem|true
detectorBadAppletConstructor=BadAppletConstructor|false
detectorBadResultSetAccess=BadResultSetAccess|true
detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true
detectorBadUseOfReturnValue=BadUseOfReturnValue|true
detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true
detectorBooleanReturnNull=BooleanReturnNull|true
detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false
detectorCheckExpectedWarnings=CheckExpectedWarnings|false
detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true
detectorCheckRelaxingNullnessAnnotation=CheckRelaxingNullnessAnnotation|true
detectorCheckTypeQualifiers=CheckTypeQualifiers|true
detectorCloneIdiom=CloneIdiom|true
detectorComparatorIdiom=ComparatorIdiom|true
detectorConfusedInheritance=ConfusedInheritance|true
detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true
detectorCovariantArrayAssignment=CovariantArrayAssignment|false
detectorCrossSiteScripting=CrossSiteScripting|true
detectorDefaultEncodingDetector=DefaultEncodingDetector|true
detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true
detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true
detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true
detectorDontUseEnum=DontUseEnum|true
detectorDroppedException=DroppedException|true
detectorDumbMethodInvocations=DumbMethodInvocations|true
detectorDumbMethods=DumbMethods|true
detectorDuplicateBranches=DuplicateBranches|true
detectorEmptyZipFileEntry=EmptyZipFileEntry|false
detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true
detectorExplicitSerialization=ExplicitSerialization|true
detectorFinalizerNullsFields=FinalizerNullsFields|true
detectorFindBadCast2=FindBadCast2|true
detectorFindBadForLoop=FindBadForLoop|true
detectorFindCircularDependencies=FindCircularDependencies|false
detectorFindComparatorProblems=FindComparatorProblems|true
detectorFindDeadLocalStores=FindDeadLocalStores|true
detectorFindDoubleCheck=FindDoubleCheck|true
detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true
detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true
detectorFindFinalizeInvocations=FindFinalizeInvocations|true
detectorFindFloatEquality=FindFloatEquality|true
detectorFindHEmismatch=FindHEmismatch|true
detectorFindInconsistentSync2=FindInconsistentSync2|true
detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true
detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true
detectorFindMaskedFields=FindMaskedFields|true
detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true
detectorFindNakedNotify=FindNakedNotify|true
detectorFindNonShortCircuit=FindNonShortCircuit|true
detectorFindNullDeref=FindNullDeref|true
detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true
detectorFindOpenStream=FindOpenStream|true
detectorFindPuzzlers=FindPuzzlers|true
detectorFindRefComparison=FindRefComparison|true
detectorFindReturnRef=FindReturnRef|true
detectorFindRoughConstants=FindRoughConstants|true
detectorFindRunInvocations=FindRunInvocations|true
detectorFindSelfComparison=FindSelfComparison|true
detectorFindSelfComparison2=FindSelfComparison2|true
detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true
detectorFindSpinLoop=FindSpinLoop|true
detectorFindSqlInjection=FindSqlInjection|true
detectorFindTwoLockWait=FindTwoLockWait|true
detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true
detectorFindUnconditionalWait=FindUnconditionalWait|true
detectorFindUninitializedGet=FindUninitializedGet|true
detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true
detectorFindUnreleasedLock=FindUnreleasedLock|true
detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true
detectorFindUnsyncGet=FindUnsyncGet|true
detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true
detectorFindUselessControlFlow=FindUselessControlFlow|true
detectorFindUselessObjects=FindUselessObjects|true
detectorFormatStringChecker=FormatStringChecker|true
detectorHugeSharedStringConstants=HugeSharedStringConstants|true
detectorIDivResultCastToDouble=IDivResultCastToDouble|true
detectorIncompatMask=IncompatMask|true
detectorInconsistentAnnotations=InconsistentAnnotations|true
detectorInefficientIndexOf=InefficientIndexOf|false
detectorInefficientInitializationInsideLoop=InefficientInitializationInsideLoop|false
detectorInefficientMemberAccess=InefficientMemberAccess|false
detectorInefficientToArray=InefficientToArray|false
detectorInfiniteLoop=InfiniteLoop|true
detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true
detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true
detectorInitializationChain=InitializationChain|true
detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true
detectorInstantiateStaticClass=InstantiateStaticClass|true
detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true
detectorInvalidJUnitTest=InvalidJUnitTest|true
detectorIteratorIdioms=IteratorIdioms|true
detectorLazyInit=LazyInit|true
detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true
detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true
detectorMethodReturnCheck=MethodReturnCheck|true
detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true
detectorMutableEnum=MutableEnum|true
detectorMutableLock=MutableLock|true
detectorMutableStaticFields=MutableStaticFields|true
detectorNaming=Naming|true
detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true
detectorNumberConstructor=NumberConstructor|true
detectorOptionalReturnNull=OptionalReturnNull|true
detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true
detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true
detectorPublicSemaphores=PublicSemaphores|false
detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true
detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true
detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true
detectorRedundantConditions=RedundantConditions|true
detectorRedundantInterfaces=RedundantInterfaces|true
detectorRepeatedConditionals=RepeatedConditionals|true
detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true
detectorSerializableIdiom=SerializableIdiom|true
detectorStartInConstructor=StartInConstructor|true
detectorStaticCalendarDetector=StaticCalendarDetector|true
detectorStringConcatenation=StringConcatenation|true
detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true
detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true
detectorSwitchFallthrough=SwitchFallthrough|true
detectorSynchronizationOnSharedBuiltinConstant=SynchronizationOnSharedBuiltinConstant|true
detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true
detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true
detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true
detectorURLProblems=URLProblems|true
detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true
detectorUnnecessaryMath=UnnecessaryMath|true
detectorUnreadFields=UnreadFields|true
detectorUselessSubclassMethod=UselessSubclassMethod|false
detectorVarArgsProblems=VarArgsProblems|true
detectorVolatileUsage=VolatileUsage|true
detectorWaitInLoop=WaitInLoop|true
detectorWrongMapIterator=WrongMapIterator|true
detectorXMLFactoryBypass=XMLFactoryBypass|true
detector_threshold=2
effort=max
excludefilter0=.fbExcludeFilterFile|true
filter_settings=Low|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|15
filter_settings=Medium|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|15
filter_settings_neg=NOISE|
run_at_full_build=true
eclipse.preferences.version=1
encoding//src/integration-test/java=UTF-8
encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8
encoding//src/test/java=UTF-8
......
......@@ -7,9 +7,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
......@@ -97,7 +97,7 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.source=1.6
org.eclipse.jdt.core.compiler.source=1.8
org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL,LOW
org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,BETTER
......
......@@ -63,8 +63,8 @@ formatter_profile=_TeeTime - Formatter
formatter_settings_version=12
org.eclipse.jdt.ui.ignorelowercasenames=true
org.eclipse.jdt.ui.importorder=java;javax;junit;org;com;kieker;kieker.test;
org.eclipse.jdt.ui.ondemandthreshold=99
org.eclipse.jdt.ui.staticondemandthreshold=99
org.eclipse.jdt.ui.ondemandthreshold=5
org.eclipse.jdt.ui.staticondemandthreshold=1
sp_cleanup.add_default_serial_version_id=true
sp_cleanup.add_generated_serial_version_id=false
sp_cleanup.add_missing_annotations=true
......
language: java
branches:
except:
- gh-pages
\ No newline at end of file
<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.aspectj.org/dtd/aspectj_1_5_0.dtd">
<aspectj>
<weaver options="-showWeaveInfo"> <!-- options="-verbose -showWeaveInfo -Xjoinpoints:synchronization" -->
<!--
Use the exclude/include directives to specify which classes are (not) to be considered for weaving.
Some examples are given below. Please refer to the AspectJ documentation to learn more on the
allowed patterns, including wildcards.
-->
<!--
Use * to consider all classes in all packages. In this case, you typically need some additional excludes.
-->
<include within="teetime.stage..*"/>
<!--
Include/exclude examples for specific libraries:
-->
<!--
Important: The logger library that is configured to be used by Kieker must always be excluded!
(Particularly important when using the include-all directive from above.)
-->
<exclude within="org.apache.commons.logging..*" />
<exclude within="org.slf4j..*" />
<exclude within="java.util.logging..*" />
<exclude within="org.apache.log4j..*" />
<!-- Instrument all kieker.tests: -->
<!-- <include within="kieker.tests..*" /> -->
<!-- Example instrumentation for the iBATIS JPetStore -->
<!-- <include within="com.ibatis.jpetstore..*"/> -->
<!-- <include within="org.apache.struts.action.ActionServlet" /> -->
<!-- Include this to enable javac compilation (instead of ajc) of the probes: -->
<!-- <include within="kieker.monitoring.probe.aspectj..*"/> -->
</weaver>
<aspects>
<!--
Aspects are configured in this section of the AspectJ configuration file.
Specific examples for Kieker monitoring aspects are given below.
Usually, only one aspect should be active at a time.
-->
<!-- 1. STATE-BASED MONITORING (OPERATION EXECUTIONS)
The following directives enable aspects for monitoring operation executions. These aspects intercept
an execution of a software operation resulting in a single Kieker monitoring record of type
OperationExecutionRecord.
Depending on the used directives, i. all, ii. only annotated (@OperationExecutionMonitoringProbe),
or ii. only specific methods are monitored. Note that the noGetterAndSetter aspects also exclude
is..() methods for boolean getters. The Servlet aspects additionally extract session information
from Servlet entry point methods (do* with HttpServletRequest and HttpServletResponse parameters.)
-->
<!-- <aspect name="kieker.monitoring.probe.aspectj.operationExecution.OperationExecutionAspectAnnotation"/> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.operationExecution.OperationExecutionAspectAnnotationServlet"/> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.operationExecution.OperationExecutionAspectFull"/> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.operationExecution.OperationExecutionAspectFullNoGetterAndSetter"/> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.operationExecution.OperationExecutionAspectFullServlet"/> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.operationExecution.OperationExecutionAspectFullNoGetterAndSetterServlet"/> -->
<!-- 2. EVENT-BASED MONITORING
The following directives enable aspects for monitoring control flow events, resulting in different
types of monitoring records to be found in the kieker.common.record.flow package.
Depending on the used directives, i. all, ii. only annotated, or iii. only specific methods are
monitored. Again, the noGetterAndSetter aspects also exclude is.. for boolean getters.
-->
<!-- Concurrency (beta stated): -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.concurrency.ThreadingAspect" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.concurrency.SynchronizedAspect" /> -->
<!-- Constructors and constructor calls: -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.construction.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.construction.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorExecution.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorExecution.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorExecutionObject.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorExecutionObject.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorExecutionObjectInterface.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorExecutionObjectInterface.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorCall.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorCall.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorCallObject.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.constructorCallObject.Annotation" /> -->
<!-- Method executions and method calls: -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecution.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecution.FullInstrumentationNoGetterAndSetter" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecution.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecutionObject.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecutionObject.FullInstrumentationNoGetterAndSetter" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecutionObject.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecutionObjectInterface.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecutionObjectInterface.FullInstrumentationNoGetterAndSetter" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationExecutionObjectInterface.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationCall.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationCall.FullInstrumentationNoGetterAndSetter" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationCall.Annotation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationCallObject.FullInstrumentation" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationCallObject.FullInstrumentationNoGetterAndSetter" /> -->
<!-- <aspect name="kieker.monitoring.probe.aspectj.flow.operationCallObject.Annotation" /> -->
<!--
Definition of additional targeted aspects (example for a single additional getter).
Use these directives to create additional aspects without the need to actually implement them. -->
<!--<concrete-aspect name="kieker.monitoring.probe.aspectj.flow.operationExecution.TargetedAspect" extends="kieker.monitoring.probe.aspectj.flow.operationExecution.AbstractAspect">-->
<concrete-aspect name="MyTargetedAspect" extends="kieker.monitoring.probe.aspectj.beforeafter.onlycallee.AbstractAspect">
<!-- <pointcut name="monitoredOperation" expression="execution(* teetime.framework.Stage+.execute())" /> -->
<!-- <pointcut name="monitoredOperation" expression="call(* teetime.framework.OutputPort.send(..))" /> -->
<!--<pointcut name="a" expression="execution(* teetime.stage.string.Tokenizer.execute(..))" />-->
<pointcut name="a" expression="execution(* teetime.stage.io.ByteArrayFileWriter.execute(..))" />
<pointcut name="b" expression="execution(* teetime.stage.ZipByteArray.execute(..))" />
<pointcut name="c" expression="execution(* teetime.stage.MappingCounter.execute(..))" />
<pointcut name="monitoredOperation" expression="a() || b() || c()" />
</concrete-aspect>
</aspects>
</aspectj>
## In order to use a custom Kieker.Monitoring configuration, create a copy of
## this file and modify it according to your needs.
##
## The location of the file is passed to Kieker.Monitoring via the JVM parameter
## kieker.monitoring.configuration. For example, with a configuration file named
## my.kieker.monitoring.properties in the folder META-INF you would pass this location
## to the JVM when starting your application:
##
## java -Dkieker.monitoring.configuration=META-INF/my.kieker.monitoring.properties [...]
##
## If no configuration file is passed, Kieker tries to use a configuration file in
## META-INF/kieker.monitoring.properties
## If this also fails, a default configuration is being used according to the values in
## this default file.
## The name of the Kieker instance.
kieker.monitoring.name=KIEKER
## Whether a debug mode is activated.
## This changes a few internal id generation mechanisms to enable
## easier debugging. Additionally, it is possible to enable debug
## logging in the settings of the used logger.
## This setting should usually not be set to true.
kieker.monitoring.debug=false
## Enable/disable monitoring after startup (true|false; default: true)
## If monitoring is disabled, the MonitoringController simply pauses.
## Furthermore, probes should stop collecting new data and monitoring
## writers stop should stop writing existing data.
kieker.monitoring.enabled=true
## The name of the VM running Kieker. If empty the name will be determined
## automatically, else it will be set to the given value.
kieker.monitoring.hostname=
## The initial ID associated with all experiments. (currently not used)
kieker.monitoring.initialExperimentId=1
## Automatically add a metadata record to the monitoring log when writing
## the first monitoring record. The metadata record contains infromation
## on the configuration of the monitoring controller.
kieker.monitoring.metadata=true
## Enables/disable the automatic assignment of each record's logging timestamp.
## (true|false; default: true)
kieker.monitoring.setLoggingTimestamp=true
## Whether a shutdown hook should be registered.
## This ensures that necessary cleanup steps are finished and no
## information is lost due to asynchronous writers.
## This should usually not be set to false.
kieker.monitoring.useShutdownHook=true
## Whether any JMX functionality is available
kieker.monitoring.jmx=false
kieker.monitoring.jmx.domain=kieker.monitoring
## Enable/Disable the MonitoringController MBean
kieker.monitoring.jmx.MonitoringController=true
kieker.monitoring.jmx.MonitoringController.name=MonitoringController
## Controls JMX remote access
kieker.monitoring.jmx.remote=false
kieker.monitoring.jmx.remote.port=59999
kieker.monitoring.jmx.remote.name=JMXServer
## If the SUN-JMX Bootstrap class is not available, a fallback to the
## default implementation can be used. The fallback solution prevents
## the VM from terminating.
## A graceful shutdown is done by connecting to the JMXServer, there to
## kieker.monitoring.JMXServer and using the operation stop()
kieker.monitoring.jmx.remote.fallback=true
## These properties will be forwarded to configure the JMX server
com.sun.management.jmxremote.local.only=false
com.sun.management.jmxremote.authenticate=false
com.sun.management.jmxremote.ssl=false
## The size of the thread pool used to execute registered periodic sensor jobs.
## The thread pool is also used to periodically read the config file for adaptive
## monitoring.
## Set to 0 to deactivate scheduling.
kieker.monitoring.periodicSensorsExecutorPoolSize=1
## Enable or disable adaptive monitoring.
kieker.monitoring.adaptiveMonitoring.enabled=false
#
## Default location of the adaptive monitoring configuration File
kieker.monitoring.adaptiveMonitoring.configFile=META-INF/kieker.monitoring.adaptiveMonitoring.conf
#
## Enable/disable the updating of the pattern file by activating or deactivating
## probes through the api.
kieker.monitoring.adaptiveMonitoring.updateConfigFile=false
#
## The delay in seconds in which the pattern file is checked for changes.
## Requires kieker.monitoring.periodicSensorsExecutorPoolSize > 0.
## Set to 0 to disable the observation.
kieker.monitoring.adaptiveMonitoring.readInterval=30
#
## The maximal size of the signature cache. This is a weak limit, as the cache can exceed this size
## slightly in practical application.
## Set to -1 for an unbounded cache.
kieker.monitoring.adaptiveMonitoring.maxCacheSize=-1
#
## The behaviour of the signature cache, if the maximal size is bounded.
## 0: The cache ignores entries once the maximal size is reached.
## 1: The cache removes a (semi)random entry from the cache once the maximal size is exceeded.
## 2: The cache is completely cleared once the maximal size is reached.
kieker.monitoring.adaptiveMonitoring.boundedCacheBehaviour=0
###########################
####### TIMER #######
###########################
## Selection of the timer used by Kieker (classname)
## The value must be a fully-qualified classname of a class implementing
## kieker.monitoring.timer.ITimeSource and providing a constructor that
## accepts a single Configuration.
kieker.monitoring.timer=kieker.monitoring.timer.SystemNanoTimer
####
#kieker.monitoring.timer=kieker.monitoring.timer.SystemMilliTimer
#
## A timer with millisecond precision.
#
## The offset of the timer. The time returned is since 1970-1-1
## minus this offset. If the offset is empty it is set to the current
## time.
## The offset must be specified in milliseconds.
kieker.monitoring.timer.SystemMilliTimer.offset=0
## The timeunit used to report the timestamp.
## Accepted values:
## 0 - nanoseconds
## 1 - microseconds
## 2 - milliseconds
## 3 - seconds
kieker.monitoring.timer.SystemMilliTimer.unit=0
####
#kieker.monitoring.timer=kieker.monitoring.timer.SystemNanoTimer
#
## A timer with nanosecond precision.
#
## The offset of the timer. The time returned is since 1970-1-1
## minus this offset. If the offset is empty it is set to the current
## time.
## The offset must be specified in milliseconds.
kieker.monitoring.timer.SystemNanoTimer.offset=0
## The timeunit used to report the timestamp.
## Accepted values:
## 0 - nanoseconds
## 1 - microseconds
## 2 - milliseconds
## 3 - seconds
kieker.monitoring.timer.SystemNanoTimer.unit=0
###########################
####### WRITER #######
###########################
## Selection of monitoring data writer (classname)
## The value must be a fully-qualified classname of a class implementing
## kieker.monitoring.writer.IMonitoringWriter and providing a constructor that
## accepts a single Configuration.
kieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsciiFileWriter
#####
#kieker.monitoring.writer=kieker.monitoring.writer.dump.DumpWriter
#
#####
#kieker.monitoring.writer=kieker.monitoring.writer.PrintStreamWriter
#
## The PrintStream used to print the monitoring records.
## Either STDOUT or STDERR.
## Other values are used as a filenames for a target log file.
## You should use another writer instead of this writer for logging to files!
kieker.monitoring.writer.PrintStreamWriter.Stream=STDOUT
#####
#kieker.monitoring.writer=kieker.monitoring.writer.namedRecordPipe.PipeWriter
#
## The name of the pipe used (must not be empty).
kieker.monitoring.writer.namedRecordPipe.PipeWriter.pipeName=kieker-pipe
#####
#kieker.monitoring.writer=kieker.monitoring.writer.jms.JmsWriter
#
## The url of the jndi provider that knows the jms service
## - ActiveMQ: tcp://127.0.0.1:61616/
## - HornetQ: jnp://localhost:1099/
## - OpenJMS: tcp://127.0.0.1:3035/
kieker.monitoring.writer.jms.JmsWriter.ProviderUrl=tcp://127.0.0.1:61616/
#
## The topic at the jms server which is used in the publisher/subscribe communication.
kieker.monitoring.writer.jms.JmsWriter.Topic=queue1
#
## The type of the jms factory implementation, e.g.
## - ActiveMQ: org.apache.activemq.jndi.ActiveMQInitialContextFactory
## - HornetQ: org.jnp.interfaces.NamingContextFactory
## - OpenJMS: org.exolab.jms.jndi.InitialContextFactory
kieker.monitoring.writer.jms.JmsWriter.ContextFactoryType=org.apache.activemq.jndi.ActiveMQInitialContextFactory
#
## The service name for the jms connection factory.
kieker.monitoring.writer.jms.JmsWriter.FactoryLookupName=ConnectionFactory
#
## The time that a jms message will be kept alive at the jms server before
## it is automatically deleted.
kieker.monitoring.writer.jms.JmsWriter.MessageTimeToLive=10000
#####
#kieker.monitoring.writer=kieker.monitoring.writer.jmx.JMXWriter
#
## The domain used to register the MonitoringLog. If empty, the value
## of "kieker.monitoring.jmx.domain" will be used.
kieker.monitoring.writer.jmx.JMXWriter.domain=
#
## The name of the MonitoringLog in the domain.
kieker.monitoring.writer.jmx.JMXWriter.logname=MonitoringLog
#####
#kieker.monitoring.writer=kieker.monitoring.writer.tcp.TCPWriter
#
## The hostname the TCPWriter connects to.
kieker.monitoring.writer.tcp.TCPWriter.hostname=localhost
#
## The ports the TCPWriter connects to.
kieker.monitoring.writer.tcp.TCPWriter.port1=10133
kieker.monitoring.writer.tcp.TCPWriter.port2=10134
#
## The size of the buffer used by the TCPWriter in bytes.
## Should be large enough to fit at least single string records (> 1KiB).
kieker.monitoring.writer.tcp.TCPWriter.bufferSize=65535
#
## Should each record be immediately sent?
kieker.monitoring.writer.tcp.TCPWriter.flush=false
#####
#kieker.monitoring.writer=kieker.monitoring.writer.tcp.DualSocketTcpWriter
#
## The hostname the DualSocketTcpWriter connects to.
kieker.monitoring.writer.tcp.DualSocketTcpWriter.hostname=localhost
#
## The ports the DualSocketTcpWriter connects to.
kieker.monitoring.writer.tcp.DualSocketTcpWriter.port1=10133
kieker.monitoring.writer.tcp.DualSocketTcpWriter.port2=10134
#
## The size of the buffer used by the DualSocketTcpWriter in bytes.
## Should be large enough to fit at least single string records (> 1KiB).
kieker.monitoring.writer.tcp.DualSocketTcpWriter.bufferSize=65535
#
## Should each record be immediately sent?
kieker.monitoring.writer.tcp.DualSocketTcpWriter.flush=false
#####
#kieker.monitoring.writer=kieker.monitoring.writer.tcp.SingleSocketTcpWriter
#
## The hostname the SingleSocketTcpWriter connects to.
kieker.monitoring.writer.tcp.SingleSocketTcpWriter.hostname=localhost
#
## The ports the SingleSocketTcpWriter connects to.
kieker.monitoring.writer.tcp.SingleSocketTcpWriter.port=10133
#
## The size of the buffer used by the SingleSocketTcpWriter in bytes.
## Should be large enough to fit at least single string records (> 1KiB).
kieker.monitoring.writer.tcp.SingleSocketTcpWriter.bufferSize=65535
#
## Should each record be immediately sent?
kieker.monitoring.writer.tcp.SingleSocketTcpWriter.flush=false
#####
#kieker.monitoring.writer=kieker.monitoring.writer.explorviz.ExplorVizTcpWriter
#
## The hostname the ExplorVizExportWriter connects to.
kieker.monitoring.writer.explorviz.ExplorVizTcpWriter.hostname=localhost
#
## The ports the TCPWriter connects to.
kieker.monitoring.writer.explorviz.ExplorVizTcpWriter.port=10133
#
## The size of the buffer used by the TCPWriter in bytes.
## Should be large enough to fit at least single string records (> 1KiB).
kieker.monitoring.writer.explorviz.ExplorVizTcpWriter.bufferSize=65535
#
## Should each record be immediately sent?
kieker.monitoring.writer.explorviz.ExplorVizTcpWriter.flush=false
#
## The internal synchronized queue implementation to use.
## It must provide a constructor with a single int parameter which represents the queue's (initial) capacity.
## org.jctools.queues.MpscArrayQueue
## java.util.concurrent.LinkedBlockingQueue
## java.util.concurrent.ArrayBlockingQueue
kieker.monitoring.core.controller.WriterController.RecordQueueFQN=org.jctools.queues.MpscArrayQueue
#
## This parameter defines the synchronized queue's (initial) capacity in terms of the number of records.
## Note that the actual capacity can be increased depending on the used queue implementation.
kieker.monitoring.core.controller.WriterController.RecordQueueSize=10000
#
## 0: terminate Monitoring with an error (default)
## 1: writer blocks until queue capacity is available
## 2: writer discards new records until space is available
## Be careful when using the value '1' since then, the asynchronous writer
## is no longer decoupled from the monitored application.
kieker.monitoring.core.controller.WriterController.RecordQueueInsertBehavior=1
kieker.monitoring.writer.filesystem.AsciiFileWriter.customStoragePath=target
#
## The maximal number of entries (records) per created file.
## Must be greater than zero.
kieker.monitoring.writer.filesystem.AsciiFileWriter.maxEntriesInFile=25000
#
## The maximal file size of the generated monitoring log. Older files will be
## deleted if this file size is exceeded. Given in MiB.
## At least one file will always remain, regardless of size!
## Use -1 to ignore this functionality.
kieker.monitoring.writer.filesystem.AsciiFileWriter.maxLogSize=-1
#
## The maximal number of log files generated. Older files will be
## deleted if this number is exceeded.
## At least one file will always remain, regardless of size!
## Use -1 to ignore this functionality.
kieker.monitoring.writer.filesystem.AsciiFileWriter.maxLogFiles=-1
#
## When flushing is disabled, it could require a lot of records before
## finally any writing to the log file(s) is done.
kieker.monitoring.writer.filesystem.AsciiFileWriter.flush=true
#
## When flushing is disabled, it could require a lot of records before
## finally any writing to the map file is done.
kieker.monitoring.writer.filesystem.AsciiFileWriter.flushMapfile=true
#
## When compression is enabled, each log file is written as zipped ASCII file.
kieker.monitoring.writer.filesystem.AsciiFileWriter.shouldCompress=false
#
## Sets the compression level. The only valid values are:
## -1: default compression
## 0: no compression
## 1-9: from best speed to best compression
#kieker.monitoring.writer.filesystem.AsciiFileWriter.compressionLevel=-1
#
## The maximal number of entries (records) per created file.
## Must be greater than zero.
kieker.monitoring.writer.filesystem.BinaryFileWriter.maxEntriesInFile=25000
#
## The maximal file size of the generated monitoring log. Older files will be
## deleted if this file size is exceeded. Given in MiB.
## At least one file will always remain, regardless of size!
## Use -1 to ignore this functionality.
kieker.monitoring.writer.filesystem.BinaryFileWriter.maxLogSize=-1
#
## The maximal number of log files generated. Older files will be
## deleted if this number is exceeded.
## At least one file will always remain, regardless of size!
## Use -1 to ignore this functionality.
kieker.monitoring.writer.filesystem.BinaryFileWriter.maxLogFiles=-1
#
## When flushing is disabled, it could require a lot of records before
## finally any writing to the log file(s) is done.
kieker.monitoring.writer.filesystem.BinaryFileWriter.flush=false
#
## When flushing is disabled, it could require a lot of records before
## finally any writing to the map file is done.
kieker.monitoring.writer.filesystem.BinaryFileWriter.flushMapfile=true
#
## When flushing is disabled, records are buffered in memory before written.
## This setting configures the size of the used buffer in bytes.
kieker.monitoring.writer.filesystem.BinaryFileWriter.bufferSize=8192
#
## When compression is enabled, each log file is written as zipped binary file.
kieker.monitoring.writer.filesystem.BinaryFileWriter.shouldCompress=false
#
## Sets the compression level. The only valid values are:
## -1: default compression
## 0: no compression
## 1-9: from best speed to best compression
#kieker.monitoring.writer.filesystem.AsciiFileWriter.compressionLevel=-1
java ^
-javaagent:kieker-1.13-SNAPSHOT-aspectj.jar ^
-cp ".;target\*;target\dependency\*;" ^
teetime.examples.cipher.CipherTest ^
4 1 target\classes\hugetext.txt
rem teetime.examples.wordcounter.WordCounterTest
\ No newline at end of file
[![GitHub license](https://img.shields.io/github/license/teetime-framework/TeeTime.svg)](https://github.com/teetime-framework/TeeTime/blob/master/LICENSE.txt)
[![Javadocs](https://javadoc.io/badge/net.sourceforge.teetime/teetime.svg?color=blue)](https://javadoc.io/doc/net.sourceforge.teetime/teetime)
# TeeTime
This project contains the Java reference implementation of the Pipe-and-Filter framework TeeTime.
Informations on how to use it can be found on http://teetime-framework.github.io.
## Getting Started
- [Wiki](https://teetime-framework.github.io/wiki/home.html)
- [Source Code Examples](https://github.com/teetime-framework/TeeTime/tree/master/src/test/java/teetime/examples)
## How to Add TeeTime as Dependency to Your Project?
Please visit the download section on our website: http://teetime-framework.github.io/download.html
## Build TeeTime by Yourself
TeeTime requires an existing Maven and JDK installation.
Simply execute "mvn install" and you are good to go!
refactored
This diff is collapsed.
......@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
<description>This ruleset checks my code for bad stuff</description>
<exclude-pattern>.*/target/.*</exclude-pattern>
<!-- warning: if you reference a pmd rulesets xml file more than once, only
the first rule is applied; so check for duplicates -->
......@@ -16,7 +16,7 @@
<rule ref="rulesets/java/codesize.xml" />
<!-- <rule ref="rulesets/java/comments.xml" /> -->
<!-- <rule ref="rulesets/java/controversial.xml" /> -->
<rule ref="rulesets/java/coupling.xml" />
<!-- <rule ref="rulesets/java/coupling.xml" /> -->
<rule ref="rulesets/java/design.xml" />
<rule ref="rulesets/java/empty.xml" />
<rule ref="rulesets/java/finalizers.xml" />
......@@ -28,7 +28,7 @@
<rule ref="rulesets/java/logging-java.xml" />
<rule ref="rulesets/java/migrating.xml" />
<rule ref="rulesets/java/naming.xml" />
<!-- <rule ref="rulesets/java/naming.xml" /> -->
<!-- <rule ref="rulesets/java/optimizations.xml" /> -->
<rule ref="rulesets/java/strictexception.xml" />
<rule ref="rulesets/java/strings.xml" />
......@@ -37,31 +37,37 @@
<rule ref="rulesets/java/unnecessary.xml" />
<rule ref="rulesets/java/unusedcode.xml" />
<rule ref="rulesets/ecmascript/basic.xml" />
<rule ref="rulesets/ecmascript/braces.xml" />
<rule ref="rulesets/jsp/basic-jsf.xml" />
<rule ref="rulesets/jsp/basic.xml" />
<!-- <rule ref="rulesets/vm/basic.xml" /> -->
<!-- <rule ref="rulesets/xml/basic.xml" /> -->
<!-- <rule ref="rulesets/xsl/xpath.xml" /> -->
<!-- custom adaptations -->
<rule ref="rulesets/java/basic.xml/EmptyCatchBlock" message="Throw at least an IllegalStateException(e)">
<rule ref="rulesets/java/empty.xml/EmptyCatchBlock" message="Throw at least an IllegalStateException(e)">
<priority>1</priority>
</rule>
<rule ref="rulesets/java/comments.xml">
<exclude name="CommentRequired" />
<exclude name="CommentSize" />
</rule>
<rule ref="rulesets/java/controversial.xml">
<exclude name="AtLeastOneConstructor" />
<exclude name="AvoidUsingVolatile" />
<exclude name="CallSuperInConstructor" />
<exclude name="DefaultPackage" />
<exclude name="UseConcurrentHashMap" />
</rule>
<!-- UR means "undefined reference" which is already detected by the compiler.
so we deactivate it. -->
<rule ref="rulesets/java/controversial.xml/DataflowAnomalyAnalysis">
<properties>
<property name="violationSuppressRegex" value="^Found 'UR'-anomaly.*" />
</properties>
</rule>
<rule ref="rulesets/java/coupling.xml">
<exclude name="LawOfDemeter" />
<exclude name="LoosePackageCoupling" />
</rule>
<rule ref="rulesets/java/j2ee.xml">
......@@ -72,6 +78,11 @@
<exclude name="BeanMembersShouldSerialize" />
</rule>
<rule ref="rulesets/java/naming.xml">
<exclude name="LongVariable" />
<exclude name="PackageCase"/>
</rule>
<rule ref="rulesets/java/naming.xml/VariableNamingConventions">
<priority>5</priority>
</rule>
......@@ -80,7 +91,15 @@
<exclude name="LocalVariableCouldBeFinal" />
<exclude name="SimplifyStartsWith" />
</rule>
<rule ref="rulesets/chw/basic.xml" />
</ruleset>
\ No newline at end of file
<rule ref="rulesets/chw/basic.xml">
<exclude name="NonHeaderCommentSize"/>
</rule>
<!-- <rule ref="rulesets/chw/basic.xml/NonHeaderCommentSize"> -->
<!-- <properties> -->
<!-- <property name="maxLineLength" value="100" /> -->
<!-- </properties> -->
<!-- </rule> -->
</ruleset>
File deleted
File added
<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.teetime</groupId>
<artifactId>teetime</artifactId>
<name>teetime</name>
<version>1.0-SNAPSHOT</version>
<url>http://maven.apache.org</url>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.1</version>
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<finalName>${project.artifactId}-${project.version}</finalName>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>sonatype.oss.snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>