Skip to content
Snippets Groups Projects
Commit 79aab89a authored by Nils Christian Ehmke's avatar Nils Christian Ehmke
Browse files

Added an overview diagram; Added configuration files for findbugs, checkstyle...

Added an overview diagram; Added configuration files for findbugs, checkstyle and pmd; Added maven-plugins to support these quality-tools; Moved some code; Modified some code for checkstyle; Added the kieker-header within the files.
parent 9795a198
No related branches found
No related tags found
No related merge requests found
Showing
with 2314 additions and 662 deletions
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<classpath> <classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java"/> <classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
<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.6"/>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/> <classpathentry kind="output" path="target/classes"/>
......
#Sat Jan 21 18:45:36 CET 2012 #Fri Feb 03 16:06:50 CET 2012
eclipse.preferences.version=1 eclipse.preferences.version=1
encoding//src/main/java=UTF-8 encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8
encoding/<project>=UTF-8 encoding/<project>=UTF-8
File added
...@@ -51,6 +51,21 @@ ...@@ -51,6 +51,21 @@
<artifactId>org.eclipse.emf.ecore</artifactId> <artifactId>org.eclipse.emf.ecore</artifactId>
<version>2.6.0.v20100614-1136</version> <version>2.6.0.v20100614-1136</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.8</version>
</dependency>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>2.6</version>
</dependency>
<dependency> <dependency>
<groupId>javax</groupId> <groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId> <artifactId>javaee-web-api</artifactId>
...@@ -243,6 +258,32 @@ ...@@ -243,6 +258,32 @@
<build> <build>
<plugins> <plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.8</version>
<configuration>
<configLocation>quality-config/cs-conf.xml</configLocation>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.4.0</version>
<configuration>
<effort>Max</effort>
<threshold>Low</threshold>
<includeFilterFile>quality-config/fb-filter.xml</includeFilterFile>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>2.6</version>
<configuration>
<rulesets>quality-config/pmdrules.xml</rulesets>
</configuration>
</plugin>
<plugin> <plugin>
<groupId>org.mortbay.jetty</groupId> <groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId> <artifactId>jetty-maven-plugin</artifactId>
...@@ -288,4 +329,5 @@ ...@@ -288,4 +329,5 @@
</plugins> </plugins>
</build> </build>
</project> </project>
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.1//EN" "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">
<module name="Checker">
<!-- KIEKER default is warning instead of error -->
<property name="severity" value="warning"/>
<!-- KIEKER Filter -->
<module name="SuppressWithNearbyCommentFilter">
<property name="commentFormat" value="NOCS"/>
<property name="checkFormat" value=".*"/>
<property name="influenceFormat" value="0"/>
</module>
<!--
<property name="basedir" value=""/>
<property name="localeCountry" value=""/> JVM locale country
<property name="localeLanguage" value=""/> JVM locale language
<property name="charset" value=""/> JVM file.encoding property
!-->
<!--
!________________________________________________________________________________________
!
! D U P L I C A T E S
!________________________________________________________________________________________
!-->
<!-- Performs a line-by-line comparison of all code lines and reports duplicate code. !-->
<!-- See http://checkstyle.sf.net/config_duplicates.html !-->
<!-- KIEKER Does not work with headers!!
<module name="StrictDuplicateCode">
<property name="min" value="12"/>
<property name="fileExtensions" value=""/>
</module>
-->
<!--
!________________________________________________________________________________________
!
! H E A D E R S
!________________________________________________________________________________________
!-->
<!-- NOTE: You may enable zero or one of these header checks, but not both. !-->
<!-- Checks that a source file begins with a specified header. !-->
<!-- See http://checkstyle.sf.net/config_header.html !-->
<!-- KIEKER !-->
<module name="Header">
<!--<property name="headerFile" value="lib/checkstyle-5.4/header.txt"/>-->
<!--<property name="charset" value=""/>-->
<property name="header" value="/***************************************************************************\n * Copyright 2011 by\n * + Christian-Albrechts-University of Kiel\n * + Department of Computer Science\n * + Software Engineering Group \n * and others.\n *\n * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n"/>
<property name="ignoreLines" value="2"/>
<property name="fileExtensions" value="java"/>
</module>
<!-- Checks the header of a source file against a header file that contains a regular expression !-->
<!-- for each line of the source header. !-->
<!-- See http://checkstyle.sf.net/config_header.html !-->
<!-- Default: OFF
<module name="RegexpHeader">
<property name="headerFile" value=""/>
<property name="charset" value=""/>
<property name="header" value=""/>
<property name="multiLines" value=""/>
<property name="fileExtensions" value=""/>
</module>
!-->
<!--
!________________________________________________________________________________________
!
! J A V A D O C S
!________________________________________________________________________________________
!-->
<!-- Checks that each Java package has a Javadoc file used for commenting. !-->
<!-- See http://checkstyle.sourceforge.net/config_javadoc.html#JavadocPackage !-->
<module name="JavadocPackage">
<property name="severity" value="info"/>
<property name="allowLegacy" value="false"/>
</module>
<!--
!________________________________________________________________________________________
!
! R E G E X P
!________________________________________________________________________________________
!-->
<!-- A check for detecting that matches across multiple lines. Works with any file type. !-->
<!-- See http://checkstyle.sourceforge.net/config_regexp.html#RegexpMultiline !-->
<!-- Default: OFF
<module name="RegexpMultiline">
<property name="format" value=""/>
<property name="message" value=""/>
<property name="ignoreCase" value="false"/>
<property name="minimum" value="0"/>
<property name="maximum" value="0"/>
<property name="fileExtensions" value=""/>
</module>
!-->
<!-- A check for detecting single lines that match a supplied regular expression. Works with any file type. !-->
<!-- See http://checkstyle.sourceforge.net/config_regexp.html#RegexpSingleline !-->
<!-- Default: OFF
<module name="RegexpSingleline">
<property name="format" value=""/>
<property name="message" value=""/>
<property name="ignoreCase" value="false"/>
<property name="minimum" value="0"/>
<property name="maximum" value="0"/>
<property name="fileExtensions" value=""/>
</module>
!-->
<!--
!________________________________________________________________________________________
!
! M I S C E L L A N E O U S
!________________________________________________________________________________________
!-->
<!-- Checks whether files end with a new line. !-->
<!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile !-->
<module name="NewlineAtEndOfFile">
<property name="lineSeparator" value="system"/>
<property name="fileExtensions" value="*.*"/>
</module>
<!-- Checks that property files contain the same keys. !-->
<!-- See http://checkstyle.sf.net/config_misc.html#Translation !-->
<module name="Translation">
<property name="fileExtensions" value="properties"/>
</module>
<!--
!________________________________________________________________________________________
!
! S I Z E V I O L A T I O N S
!________________________________________________________________________________________
!-->
<!-- Checks for long source files. !-->
<!-- See http://checkstyle.sf.net/config_sizes.html !-->
<module name="FileLength">
<property name="max" value="2000"/>
<property name="fileExtensions" value=""/>
</module>
<!--
!________________________________________________________________________________________
!
! W H I T E S P A C E
!________________________________________________________________________________________
!-->
<!-- Checks that there are no tab characters ('\t') in the source code. !-->
<!-- See http://checkstyle.sourceforge.net/config_whitespace.html#FileTabCharacter !-->
<!-- KIEKER we use TABs
<module name="FileTabCharacter">
<property name="eachLine" value="false"/>
<property name="fileExtensions" value=""/>
</module>
-->
<module name="TreeWalker">
<!-- KIEKER -->
<property name="tabWidth" value="4"/>
<module name="FileContentsHolder"/>
<!--
!________________________________________________________________________________________
!
! A N N O T A T I O N S
!________________________________________________________________________________________
!-->
<!-- This check controls the usage style of annotations. !-->
<!-- See http://checkstyle.sourceforge.net/config_annotation.html#AnnotationUseStyle !-->
<module name ="AnnotationUseStyle">
<property name="elementStyle" value="compact_no_array"/>
<property name="closingParens" value="never"/>
<property name="trailingArrayComma" value="never"/>
</module>
<!-- Verifies that both the java.lang.Deprecated import is present and the @deprecated Javadoc tag is present when either is present. !-->
<!-- See http://checkstyle.sourceforge.net/config_annotation.html#MissingDeprecated !-->
<!-- KIEKER -->
<module name="MissingDeprecated">
<property name="severity" value="info"/>
</module>
<!-- Verifies that the java.lang.Override annotation is present when the {@inheritDoc} javadoc tag is present. !-->
<!-- See http://checkstyle.sourceforge.net/config_annotation.html#MissingOverride !-->
<module name="MissingOverride">
<property name="javaFiveCompatibility" value="false"/>
</module>
<!-- This check makes sure that all package annotations are in the package-info.java file. !-->
<!-- See http://checkstyle.sourceforge.net/config_annotation.html#PackageAnnotation !-->
<module name="PackageAnnotation"/>
<!-- This check allows you to specify what warnings that SuppressWarnings is not allowed to suppress. !-->
<!-- You can also specify a list of TokenTypes that the configured warning(s) cannot be suppressed on. !-->
<!-- See http://checkstyle.sourceforge.net/config_annotation.html#SuppressWarnings !-->
<module name="SuppressWarnings">
<property name="format" value="^$|^\s+$"/>
<property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, ANNOTATION_DEF,
ANNOTATION_FIELD_DEF, ENUM_CONSTANT_DEF, PARAMETER_DEF,
VARIABLE_DEF, METHOD_DEF, CTOR_DEF"/>
</module>
<!--
!________________________________________________________________________________________
!
! B L O C K S
!________________________________________________________________________________________
!-->
<!-- Finds nested blocks, i.e. blocks that are used freely in the code. !-->
<!-- See http://checkstyle.sf.net/config_blocks.html !-->
<!-- KIEKER allowInSwitchCase !-->
<module name="AvoidNestedBlocks">
<property name="allowInSwitchCase" value="true"/>
</module>
<!-- Checks for empty blocks. !-->
<!-- See http://checkstyle.sf.net/config_blocks.html !-->
<!-- KIEKER removed LITERAL_CATCH !-->
<module name="EmptyBlock">
<property name="option" value="stmt"/>
<property name="tokens" value="LITERAL_DO,
LITERAL_ELSE, LITERAL_FINALLY, LITERAL_IF, LITERAL_FOR,
LITERAL_TRY, LITERAL_WHILE, INSTANCE_INIT, STATIC_INIT"/>
</module>
<!-- Checks for the placement of left curly braces ('{') for code blocks. !-->
<!-- See http://checkstyle.sf.net/config_blocks.html !-->
<module name="LeftCurly">
<property name="option" value="eol"/>
<property name="maxLineLength" value="165"/>
<property name="tokens" value="CLASS_DEF, CTOR_DEF,
INTERFACE_DEF, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,
LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_SWITCH,
LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE,
METHOD_DEF"/>
</module>
<!-- Checks for braces around code blocks. !-->
<!-- See http://checkstyle.sf.net/config_blocks.html !-->
<module name="NeedBraces">
<property name="tokens" value="LITERAL_DO, LITERAL_ELSE, LITERAL_IF, LITERAL_FOR, LITERAL_WHILE"/>
</module>
<!-- Checks the placement of right curly braces ('}') for else, try, and catch tokens. !-->
<!-- See http://checkstyle.sf.net/config_blocks.html !-->
<module name="RightCurly">
<property name="option" value="same"/>
<property name="tokens" value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE"/>
<property name="shouldStartLine" value="true"/>
</module>
<!--
!________________________________________________________________________________________
!
! C L A S S D E S I G N
!________________________________________________________________________________________
!-->
<!-- Checks that classes are designed for extension. !-->
<!-- See http://checkstyle.sf.net/config_design.html !-->
<!-- Default: OFF
<module name="DesignForExtension"/>
!-->
<!-- Checks that a class which has only private constructors is declared as final. !-->
<!-- See http://checkstyle.sf.net/config_design.html !-->
<module name="FinalClass"/>
<!-- Make sure that utility classes (classes that contain only static methods) do not have a public constructor. !-->
<!-- See http://checkstyle.sf.net/config_design.html !-->
<module name="HideUtilityClassConstructor"/>
<!-- Check nested (internal) classes/interfaces are declared at the bottom of the class after all method and field declarations. !-->
<!-- See http://checkstyle.sourceforge.net/config_design.html#InnerTypeLast !-->
<module name="InnerTypeLast"/>
<!-- Implements Bloch, Effective Java, Item 17 - Use Interfaces only to define types. !-->
<!-- See http://checkstyle.sf.net/config_design.html !-->
<module name="InterfaceIsType">
<property name="allowMarkerInterfaces" value="true"/>
</module>
<!-- Ensures that exceptions (defined as any class name conforming to some regular expression) are immutable. !-->
<!-- That is, have only final fields. !-->
<!-- See http://checkstyle.sf.net/config_design.html !-->
<module name="MutableException">
<property name="format" value="^.*Exception$|^.*Error$"/>
</module>
<!-- Restricts throws statements to a specified count. !-->
<!-- See http://checkstyle.sf.net/config_design.html !-->
<!-- KIEKER off
<module name="ThrowsCount">
<property name="max" value="1"/>
</module>
!-->
<!-- Checks visibility of class members. !-->
<!-- See http://checkstyle.sf.net/config_design.html !-->
<module name="VisibilityModifier">
<property name="packageAllowed" value="false"/>
<property name="protectedAllowed" value="true"/>
<property name="publicMemberPattern" value="^serialVersionUID$"/>
</module>
<!--
!________________________________________________________________________________________
!
! C O D I N G
!________________________________________________________________________________________
!-->
<!-- Checks that array initialization contains a trailing comma. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="ArrayTrailingComma"/>
<!-- Detects inline conditionals. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="AvoidInlineConditionals"/>
<!-- Checks that classes that define a covariant equals() method also override method equals(java.lang.Object). !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="CovariantEquals"/>
<!-- Checks declaration order according to Code Conventions for the Java Programming Language. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="DeclarationOrder">
<property name="ignoreConstructors" value="false"/>
<property name="ignoreMethods" value="false"/>
<property name="ignoreModifiers" value="false"/>
</module>
<!-- Check that the default is after all the cases in a switch statement. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="DefaultComesLast"/>
<!-- The "double-checked locking" idiom (DCL) tries to avoid the runtime cost of synchronization. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="DoubleCheckedLocking"/>
<!-- Detects empty statements (standalone ;). !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="EmptyStatement"/>
<!-- Checks that any combination of String literals with optional assignment is on the left side of an equals() comparison. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#EqualsAvoidNull !-->
<module name="EqualsAvoidNull"/>
<!-- Checks that classes that override equals() also override hashCode(). !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="EqualsHashCode"/>
<!-- Checks if any class or object member explicitly initialized to default for its type value. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<!-- KIEKER off
<module name="ExplicitInitialization"/>
!-->
<!-- Checks for fall through in switch statements Finds locations where a case contains Java code ... !-->
<!-- but lacks a break, return, throw or continue statement. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="FallThrough">
<property name="checkLastCaseGroup" value="false"/>
<property name="reliefPattern" value="fallthru|falls??through"/>
</module>
<!-- Checks that local variables that never have their values changed are declared final. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="FinalLocalVariable">
<property name="tokens" value="VARIABLE_DEF"/>
</module>
<!-- Checks that a local variable or a parameter does not shadow a field that is defined in the same class. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<!-- KIEKER ignoreConstructorParameter, ignoreSetter -->
<module name="HiddenField">
<property name="tokens" value="PARAMETER_DEF, VARIABLE_DEF"/>
<!--
<property name="ignoreFormat" value=""/>
!-->
<property name="ignoreConstructorParameter" value="true"/>
<property name="ignoreSetter" value="true"/>
<property name="ignoreAbstractMethods" value="false"/>
</module>
<!-- Catching java.lang.Exception, java.lang.Error or java.lang.RuntimeException is almost never acceptable. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="IllegalCatch">
<property name="illegalClassNames" value="java.lang.Exception, java.lang.Throwable, java.lang.RuntimeException"/>
</module>
<!-- Checks for illegal instantiations where a factory method is preferred. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<!-- KIEKER on for ??? !-->
<module name="IllegalInstantiation">
<property name="classes" value="java.lang.Boolean"/>
</module>
<!-- This check can be used to ensure that types are not declared to be thrown. !-->
<!-- Declaring to throw java.lang.Error or java.lang.RuntimeException is almost never acceptable. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#IllegalThrows !-->
<module name="IllegalThrows">
<property name="illegalClassNames" value="java.lang.Throwable, java.lang.Error, java.lang.RuntimeException"/>
</module>
<!-- Checks for illegal tokens. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<!-- KIEKER off
<module name="IllegalToken">
<property name="tokens" value="LITERAL_SWITCH, POST_INC, POST_DEC"/>
</module>
!-->
<!-- Checks for illegal token text. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<!-- Default: OFF
<module name="IllegalTokenText">
<property name="tokens" value=""/>
<property name="format" value=""/>
<property name="ignoreCase" value="false"/>
<property name="message" value=""/>
</module>
!-->
<!-- Checks that particular classes are never used as types in variable declarations, return values or parameters. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<!-- KIEKER removed format value="^(.*[\\.])?Abstract.*$" !-->
<module name="IllegalType">
<property name="tokens" value="PARAMETER_DEF, VARIABLE_DEF, METHOD_DEF"/>
<property name="illegalClassNames" value="java.util.GregorianCalendar, java.util.Hashtable,
java.util.HashSet, java.util.HashMap, java.util.ArrayList,
java.util.LinkedList, java.util.LinkedHashMap,
java.util.LinkedHashSet, java.util.TreeSet,
java.util.TreeMap, java.util.Vector"/>
<property name="legalAbstractClassNames" value=""/>
<property name="ignoredMethodNames" value="getInitialContext, getEnvironment"/>
<property name="format" value="XXX"/>
</module>
<!-- Checks for assignments in subexpressions, such as in String s = Integer.toString(i = 2);. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="InnerAssignment">
<property name="tokens" value="ASSIGN, BAND_ASSIGN, BOR_ASSIGN, BSR_ASSIGN, BXOR_ASSIGN,
DIV_ASSIGN, MINUS_ASSIGN, MOD_ASSIGN, PLUS_ASSIGN, SL_ASSIGN,
SR_ASSIGN, STAR_ASSIGN"/>
</module>
<!-- Ensures that the setUp(), tearDown()methods are named correctly, have no arguments, !-->
<!-- return void and are either public or protected. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="JUnitTestCase"/>
<!-- Checks that there are no "magic numbers", where a magic number is a numeric literal !-->
<!-- that is not defined as a constant. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="MagicNumber">
<property name="tokens" value="NUM_DOUBLE, NUM_FLOAT, NUM_INT, NUM_LONG"/>
<property name="ignoreNumbers" value="-1, 0, 1, 2"/>
<property name="ignoreHashCodeMethod" value="false"/>
</module>
<!-- Checks that classes (except abtract one) define a ctor and don't rely on the default one. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="MissingCtor"/>
<!-- Checks that switch statement has "default" clause. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="MissingSwitchDefault"/>
<!-- Check for ensuring that for loop control variables are not modified inside the for block. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#ModifiedControlVariable !-->
<module name="ModifiedControlVariable"/>
<!-- Checks for multiple occurrences of the same string literal within a single file. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#MultipleStringLiterals !-->
<!-- KIEKER off for now
<module name="MultipleStringLiterals">
<property name="allowedDuplicates" value="1"/>
<property name="ignoreStringsRegexp" value='^""$'/>
<property name="ignoreOccurrenceContext" value="ANNOTATION"/>
</module>
!-->
<!-- Checks that each variable declaration is in its own statement and on its own line. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="MultipleVariableDeclarations"/>
<!-- Restricts nested for blocks to a specified depth. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#NestedForDepth !-->
<module name="NestedForDepth">
<property name="max" value="1"/>
</module>
<!-- Restricts nested if-else blocks to a specified depth. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="NestedIfDepth">
<property name="max" value="1"/>
</module>
<!-- Restricts nested try-catch blocks to a specified depth. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="NestedTryDepth">
<property name="max" value="1"/>
</module>
<!-- Checks that the clone method is not overridden from the Object class. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#NoClone !-->
<module name="NoClone"/>
<!-- Verifies there are no finalize() methods defined in a class. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#NoFinalizer !-->
<module name="NoFinalizer"/>
<!-- Checks there is only one statement per line. !-->
<!-- See http://checkstyle.sourceforge.net/config_coding.html#OneStatementPerLine !-->
<module name="OneStatementPerLine"/>
<!-- Ensure a class has a package declaration. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="PackageDeclaration">
<property name="ignoreDirectoryName" value="false"/>
</module>
<!-- Disallow assignment of parameters. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="ParameterAssignment"/>
<!-- Checks for redundant exceptions declared in throws clause such as duplicates, !-->
<!-- unchecked exceptions or subclasses of another declared exception. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="RedundantThrows">
<property name="allowUnchecked" value="true"/>
<property name="allowSubclasses" value="false"/>
<property name="logLoadErrors" value="true"/>
<property name="suppressLoadErrors" value="false"/>
</module>
<!-- Checks that code doesn't rely on the "this." default. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="RequireThis">
<property name="checkFields" value="true"/>
<property name="checkMethods" value="true"/>
</module>
<!-- Restrict the number of return statements. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="ReturnCount">
<property name="max" value="2"/>
<property name="format" value=""/>
</module>
<!-- Checks for overly complicated boolean expressions. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="SimplifyBooleanExpression"/>
<!-- Checks for overly complicated boolean return statements. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="SimplifyBooleanReturn"/>
<!-- Checks that string literals are not used with == or !=. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="StringLiteralEquality"/>
<!-- Checks that an overriding clone() method invokes super.clone(). !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="SuperClone"/>
<!-- Checks that an overriding finalize() method invokes super.finalize(). !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="SuperFinalize"/>
<!-- Checks for the use of unnecessary parentheses. !-->
<!-- See http://checkstyle.sf.net/config_coding.html !-->
<module name="UnnecessaryParentheses"/>
<!--
!________________________________________________________________________________________
!
! I M P O R T S
!________________________________________________________________________________________
!-->
<!-- Checks that there are no import statements that use the * notation. !-->
<!-- See http://checkstyle.sf.net/config_import.html !-->
<module name="AvoidStarImport">
<property name="excludes" value=""/>
<property name="allowClassImports" value="false"/>
<property name="allowStaticMemberImports" value="false"/>
</module>
<!-- Checks that there are no static import statements. !-->
<!-- See http://checkstyle.sourceforge.net/config_imports.html#AvoidStaticImport !-->
<module name="AvoidStaticImport">
<property name="excludes" value=""/>
</module>
<!-- Checks for imports from a set of illegal packages. !-->
<!-- See http://checkstyle.sf.net/config_import.html !-->
<module name="IllegalImport">
<property name="illegalPkgs" value="sun"/>
<property name="illegalPkgs" value="org.apache.commons.logging"/>
</module>
<!-- Controls what can be imported in each package. Useful for ensuring that application layering rules !-->
<!-- are not violated, especially on large projects. !-->
<!-- See http://checkstyle.sourceforge.net/config_imports.html#ImportControl !-->
<!-- Default: OFF
<module name="ImportControl">
<property name="file" value=""/>
<property name="url" value=""/>
</module>
!-->
<!-- Checks the ordering/grouping of imports. !-->
<!-- See http://checkstyle.sf.net/config_import.html !-->
<module name="ImportOrder">
<property name="option" value="under"/>
<property name="groups" value=""/>
<property name="ordered" value="true"/>
<property name="separated" value="false"/>
<property name="caseSensitive" value="true"/>
</module>
<!-- Checks for redundant import statements. !-->
<!-- See http://checkstyle.sf.net/config_import.html !-->
<module name="RedundantImport"/>
<!-- Checks for unused import statements. !-->
<!-- See http://checkstyle.sf.net/config_import.html !-->
<module name="UnusedImports"/>
<!--
!________________________________________________________________________________________
!
! J A V A D O C S
!________________________________________________________________________________________
!-->
<!-- Checks to ensure that the javadoc tags exist (if required) !-->
<!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocMethod !-->
<module name="JavadocMethod">
<property name="severity" value="info"/>
<property name="scope" value="private"/>
<!--
<property name="excludeScope" value=""/>
!-->
<property name="allowUndeclaredRTE" value="false"/>
<property name="allowThrowsTagsForSubclasses" value="false"/>
<property name="allowMissingParamTags" value="false"/>
<property name="allowMissingThrowsTags" value="false"/>
<property name="allowMissingReturnTag" value="false"/>
<property name="allowMissingJavadoc" value="false"/>
<property name="allowMissingPropertyJavadoc" value="false"/>
<property name="logLoadErrors" value="true"/>
<property name="suppressLoadErrors" value="false"/>
<property name="tokens" value="METHOD_DEF, CTOR_DEF"/>
</module>
<!-- Validates Javadoc comments to help ensure they are well formed. !-->
<!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocStyle !-->
<module name="JavadocStyle">
<property name="severity" value="info"/>
<property name="scope" value="private"/>
<!--
<property name="excludeScope" value=""/>
!-->
<property name="checkFirstSentence" value="true"/>
<!--TODO: <property name="endOfSentenceFormat" value="([.?!][ \t\n\r\f<])|([.?!]$)"/> !-->
<property name="checkEmptyJavadoc" value="false"/>
<property name="checkHtml" value="true"/>
<property name="tokens" value="INTERFACE_DEF, CLASS_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
</module>
<!-- Checks Javadoc comments for class and interface definitions. !-->
<!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocType !-->
<module name="JavadocType">
<property name="severity" value="info"/>
<property name="scope" value="private"/>
<!--
<property name="excludeScope" value=""/>
!-->
<property name="authorFormat" value=""/>
<property name="versionFormat" value=""/>
<property name="allowMissingParamTags" value="false"/>
<property name="allowUnknownTags" value="false"/>
<property name="tokens" value="INTERFACE_DEF, CLASS_DEF"/>
</module>
<module name="JavadocType">
<property name="severity" value="warning"/>
<property name="scope" value="package"/>
<property name="authorFormat" value="\S"/>
</module>
<!-- Checks that variables have Javadoc comments. !-->
<!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocVariable !-->
<module name="JavadocVariable">
<property name="severity" value="info"/>
<property name="scope" value="private"/>
<!--
<property name="excludeScope" value=""/>
!-->
</module>
<!-- Outputs a JavaDoc tag as information. !-->
<!-- See http://checkstyle.sourceforge.net/config_javadoc.html#WriteTag !-->
<!-- KIEKER
<module name="WriteTag">
<property name="severity" value="info"/>
<property name="tag" value=""/>
<property name="tagFormat" value=""/>
<property name="tagSeverity" value="info"/>
</module>
-->
<!--
!________________________________________________________________________________________
!
! M E T R I C S
!________________________________________________________________________________________
!-->
<!-- Restrict the number of number of &&, || and ^ in an expression. !-->
<!-- See http://checkstyle.sf.net/config_metrics.html !-->
<module name="BooleanExpressionComplexity">
<property name="severity" value="info"/>
<property name="max" value="3"/>
<property name="tokens" value="LAND, BAND, LOR, BOR, BXOR"/>
</module>
<!-- This metric measures the number of instantiations of other classes within the given class. !-->
<!-- See http://checkstyle.sf.net/config_metrics.html !-->
<module name="ClassDataAbstractionCoupling">
<property name="severity" value="info"/>
<property name="max" value="7"/>
</module>
<!-- The number of other classes a given class relies on. !-->
<!-- See http://checkstyle.sf.net/config_metrics.html !-->
<module name="ClassFanOutComplexity">
<property name="severity" value="info"/>
<property name="max" value="20"/>
</module>
<!-- Checks cyclomatic complexity against a specified limit. !-->
<!-- See http://checkstyle.sf.net/config_metrics.html !-->
<module name="CyclomaticComplexity">
<property name="severity" value="info"/>
<property name="max" value="10"/>
</module>
<!-- Determines complexity of methods, classes and files by counting the Non Commenting Source Statements (NCSS). !-->
<!-- See http://checkstyle.sourceforge.net/config_metrics.html#JavaNCSS !-->
<module name="JavaNCSS">
<property name="severity" value="info"/>
<property name="methodMaximum" value="50"/>
<property name="classMaximum" value="1500"/>
<property name="fileMaximum" value="2000"/>
</module>
<!-- The NPATH metric computes the number of possible execution paths through a function. !-->
<!-- See http://checkstyle.sf.net/config_metrics.html !-->
<module name="NPathComplexity">
<property name="severity" value="info"/>
<property name="max" value="200"/>
</module>
<!--
!________________________________________________________________________________________
!
! M I S C E L L A N E O U S
!________________________________________________________________________________________
!-->
<!-- Checks the style of array type definitions. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<module name="ArrayTypeStyle">
<property name="javaStyle" value="true"/>
</module>
<!-- Checks for restricted tokens beneath other tokens. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<!-- Default: OFF
<module name="DescendantToken">
<property name="tokens" value=""/>
<property name="limitedTokens" value=""/>
<property name="minimumDepth" value="0"/>
<property name="maximumDepth" value="java.lang.Integer.MAX_VALUE"/>
<property name="minimumNumber" value="0"/>
<property name="maximumNumber" value="java.lang.Integer.MAX_VALUE"/>
<property name="sumTokenCounts" value="false"/>
<property name="minimumMessage" value="descendant.token.min"/>
<property name="maximumMessage" value="descendant.token.max"/>
</module>
!-->
<!-- Check that method/constructor parameters are final. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<module name="FinalParameters">
<property name="tokens" value="METHOD_DEF, CTOR_DEF"/>
</module>
<!-- A generic check for code problems - the user can search for any pattern. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<!-- Default: OFF
<module name="GenericIllegalRegexp">
<property name="format" value="\S\s+$"/>
<property name="message" value="Line has trailing spaces."/>
<property name="ignoreCase" value="false"/>
<property name="ignoreComments" value="false"/>
</module>
!-->
<!-- Checks correct indentation of Java Code. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<!-- KIEKER -->
<module name="Indentation">
<property name="severity" value="info"/>
<property name="basicOffset" value="4"/>
<property name="braceAdjustment" value="0"/>
<property name="caseIndent" value="0"/>
</module>
<!-- Checks that the outer type name and the file name match. !-->
<!-- See http://checkstyle.sourceforge.net/config_misc.html#OuterTypeFilename !-->
<module name="OuterTypeFilename"/>
<!-- A check for TODO: comments. Actually it is a generic regular expression matcher on Java comments. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<!-- Kieker !-->
<module name="TodoComment">
<property name="format" value="TODO"/>
</module>
<!-- The check to ensure that requires that comments be the only thing on a line. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<!-- KIEKER we use them
<module name="TrailingComment">
<property name="format" value="^[\\s\\}\\);]*$"/>
<property name="legalComment" value=""/>
</module>
-->
<!-- Checks for uncommented main() methods (debugging leftovers). !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<module name="UncommentedMain">
<property name="severity" value="info"/>
<property name="excludedClasses" value="Main$"/>
</module>
<!-- Checks that long constants are defined with an upper ell. That is 'L' and not 'l'. !-->
<!-- See http://checkstyle.sf.net/config_misc.html !-->
<module name="UpperEll"/>
<!--
!________________________________________________________________________________________
!
! M O D I F I E R S
!________________________________________________________________________________________
!-->
<!-- Checks that the order of modifiers conforms to the suggestions in the Java Language specification, !-->
<!-- sections 8.1.1, 8.3.1 and 8.4.3. !-->
<!-- See http://checkstyle.sf.net/config_modifiers.html !-->
<module name="ModifierOrder"/>
<!-- Checks that there are no redundant modifiers. !-->
<!-- See http://checkstyle.sf.net/config_modifiers.html !-->
<!-- KIEKER off
<module name="RedundantModifier">
<property name="tokens" value="METHOD_DEF, VARIABLE_DEF, ANNOTATION_FIELD_DEF"/>
</module>
!-->
<!--
!________________________________________________________________________________________
!
! N A M I N G C O N V E N T I O N S
!________________________________________________________________________________________
!-->
<!-- Checks for abstract class name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<!-- KIEKER removed |^.*Factory$ -->
<module name="AbstractClassName">
<property name="format" value="^Abstract.*$"/>
<property name="ignoreModifier" value="false"/>
<property name="ignoreName" value="false"/>
</module>
<!-- Checks for class type parameter name naming conventions. !-->
<!-- See http://checkstyle.sourceforge.net/config_naming.html#ClassTypeParameterName !-->
<module name="ClassTypeParameterName">
<property name="format" value="^[A-Z]$"/>
</module>
<!-- Checks for constant name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="ConstantName">
<property name="format" value="^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/>
<property name="applyToPublic" value="true"/>
<property name="applyToProtected" value="true"/>
<property name="applyToPackage" value="true"/>
<property name="applyToPrivate" value="true"/>
</module>
<!-- Checks for local final variable name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="LocalFinalVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
<property name="tokens" value="VARIABLE_DEF, PARAMETER_DEF"/>
</module>
<!-- Checks for local variable name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="LocalVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
<property name="tokens" value="PARAMETER_DEF"/>
</module>
<!-- Checks for member variable name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="MemberName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
<property name="applyToPublic" value="true"/>
<property name="applyToProtected" value="true"/>
<property name="applyToPackage" value="true"/>
<property name="applyToPrivate" value="true"/>
</module>
<!-- Checks for method name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="MethodName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<!-- Checks for method type parameter name naming conventions. !-->
<!-- See http://checkstyle.sourceforge.net/config_naming.html#MethodTypeParameterName !-->
<module name="MethodTypeParameterName">
<property name="format" value="^[A-Z]$"/>
</module>
<!-- Checks for package name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-zA-Z_][a-zA-Z0-9_]*)*$"/>
</module>
<!-- Checks for parameter name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="ParameterName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<!-- Checks for static variable name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<module name="StaticVariableName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
<property name="applyToPublic" value="true"/>
<property name="applyToProtected" value="true"/>
<property name="applyToPackage" value="true"/>
<property name="applyToPrivate" value="true"/>
</module>
<!-- Checks for type name naming conventions. !-->
<!-- See http://checkstyle.sf.net/config_naming.html !-->
<!-- KIEKER: modded -->
<module name="TypeName">
<property name="format" value="^[A-Z][a-zA-Z0-9]*$"/>
<property name="tokens" value="CLASS_DEF"/>
<property name="applyToPublic" value="true"/>
<property name="applyToProtected" value="true"/>
<property name="applyToPackage" value="true"/>
<property name="applyToPrivate" value="true"/>
</module>
<module name="TypeName">
<property name="format" value="^I[A-Z][a-zA-Z0-9]*$"/>
<property name="tokens" value="INTERFACE_DEF"/>
<property name="applyToPublic" value="true"/>
<property name="applyToProtected" value="true"/>
<property name="applyToPackage" value="true"/>
<property name="applyToPrivate" value="true"/>
</module>
<!--
!________________________________________________________________________________________
!
! R E G E X P
!________________________________________________________________________________________
!-->
<!-- A check that makes sure that a specified pattern exists, exists less than a set number of times, !-->
<!-- or does not exist in the file. !-->
<!-- See http://checkstyle.sourceforge.net/config_misc.html#Regexp !-->
<!-- Default: OFF
<module name="Regexp">
<property name="format" value=""/>
<property name="message" value=""/>
<property name="illegalPattern" value="false"/>
<property name="duplicateLimit" value="-1"/>
<property name="errorLimit" value="100"/>
<property name="ignoreComments" value="false"/>
</module>
!-->
<!-- This class is variation on RegexpSingleline for detecting single lines that match a !-->
<!-- supplied regular expression in Java files. It supports suppressing matches in Java comments. !-->
<!-- See http://checkstyle.sourceforge.net/config_regexp.html#RegexpSinglelineJava !-->
<!-- Default: OFF
<module name="RegexpSinglelineJava">
<property name="format" value=""/>
<property name="message" value=""/>
<property name="ignoreCase" value="false"/>
<property name="minimum" value="0"/>
<property name="maximum" value="0"/>
<property name="ignoreComments" value="false"/>
</module>
!-->
<!--
!________________________________________________________________________________________
!
! S I Z E V I O L A T I O N S
!________________________________________________________________________________________
!-->
<!-- Checks for long anonymous inner classes. !-->
<!-- See http://checkstyle.sf.net/config_sizes.html !-->
<module name="AnonInnerLength">
<property name="severity" value="info"/>
<property name="max" value="20"/>
</module>
<!-- Restricts the number of executable statements to a specified limit. !-->
<!-- See http://checkstyle.sf.net/config_sizes.html !-->
<!-- KIEKER off
<module name="ExecutableStatementCount">
<property name="severity" value="info"/>
<property name="max" value="30"/>
<property name="tokens" value="CTOR_DEF, METHOD_DEF, INSTANCE_INIT, STATIC_INIT"/>
</module>
!-->
<!-- See http://checkstyle.sf.net/config_sizes.html !-->
<!-- Checks for long lines. !-->
<module name="LineLength">
<property name="severity" value="info"/>
<property name="ignorePattern" value="^$"/>
<property name="max" value="165"/>
</module>
<!-- Checks the number of methods declared in each type. This includes the number of each scope !-->
<!-- (private, package, protected and public) as well as an overall total. !-->
<!-- See http://checkstyle.sourceforge.net/config_sizes.html#MethodCount !-->
<module name="MethodCount">
<property name="severity" value="info"/>
<property name="maxTotal" value="100"/>
<property name="maxPrivate" value="100"/>
<property name="maxPackage" value="100"/>
<property name="maxProtected" value="100"/>
<property name="maxPublic" value="100"/>
</module>
<!-- Checks for long methods and constructors. !-->
<!-- See http://checkstyle.sf.net/config_sizes.html !-->
<module name="MethodLength">
<property name="severity" value="info"/>
<property name="max" value="150"/>
<property name="countEmpty" value="true"/>
<property name="tokens" value="METHOD_DEF, CTOR_DEF"/>
</module>
<!-- Checks for the number of types declared at the outer (or root) level in a file. !-->
<!-- See http://checkstyle.sourceforge.net/config_sizes.html#OuterTypeNumber !-->
<!-- KIEKER 2 !-->
<module name="OuterTypeNumber">
<property name="max" value="2"/>
</module>
<!-- Checks the number of parameters of a method or constructor. !-->
<!-- See http://checkstyle.sf.net/config_sizes.html !-->
<!-- KIEKER off
<module name="ParameterNumber">
<property name="severity" value="info"/>
<property name="max" value="7"/>
<property name="tokens" value="METHOD_DEF, CTOR_DEF"/>
</module>
!-->
<!--
!________________________________________________________________________________________
!
! W H I T E S P A C E
!________________________________________________________________________________________
!-->
<!-- Checks the padding of an empty for initializer. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="EmptyForInitializerPad">
<property name="option" value="nospace"/>
</module>
<!-- Checks the padding of an empty for iterator. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="EmptyForIteratorPad">
<property name="option" value="nospace"/>
</module>
<!-- Checks that the whitespace around the Generic tokens < and > is correct to the typical convention. !-->
<!-- See http://checkstyle.sourceforge.net/config_whitespace.html#GenericWhitespace !-->
<module name="GenericWhitespace"/>
<!-- Checks the padding between the identifier of a method definition, !-->
<!-- constructor definition, method call, or constructor invocation; and the left parenthesis of the parameter list. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="MethodParamPad">
<property name="allowLineBreaks" value="false"/>
<property name="option" value="nospace"/>
<property name="tokens" value="CTOR_DEF, LITERAL_NEW, METHOD_CALL, METHOD_DEF, SUPER_CTOR_CALL "/>
</module>
<!-- Checks that there is no whitespace after a token. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<!-- KIEKER removed ARRAY_INIT !-->
<module name="NoWhitespaceAfter">
<property name="allowLineBreaks" value="true"/>
<property name="tokens" value="BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS, UNARY_PLUS"/>
</module>
<!-- Checks that there is no whitespace before a token. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="NoWhitespaceBefore">
<property name="allowLineBreaks" value="false"/>
<property name="tokens" value="SEMI, POST_DEC, POST_INC"/>
</module>
<!-- Checks the policy on how to wrap lines on operators. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="OperatorWrap">
<property name="option" value="nl"/>
<property name="tokens" value="ASSIGN, BAND, BOR, BSR, BXOR, COLON, DIV,
EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF,
LOR, LT, MINUS, MOD, NOT_EQUAL,
PLUS, QUESTION, SL, SR, STAR"/>
</module>
<!-- Checks the policy on the padding of parentheses. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="ParenPad">
<property name="option" value="nospace"/>
<property name="tokens" value="CTOR_CALL, LPAREN, METHOD_CALL, RPAREN, SUPER_CTOR_CALL"/>
</module>
<!-- Checks the policy on the padding of parentheses for typecasts. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="TypecastParenPad">
<property name="option" value="nospace"/>
<property name="tokens" value="TYPECAST, RPAREN"/>
</module>
<!-- Checks that a token is followed by whitespace. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="WhitespaceAfter">
<property name="tokens" value="COMMA, SEMI, TYPECAST"/>
</module>
<!-- Checks that a token is surrounded by whitespace. !-->
<!-- See http://checkstyle.sf.net/config_whitespace.html !-->
<module name="WhitespaceAround">
<property name="tokens" value="ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN,
BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND,
LCURLY, LE, LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,
LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,
LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT,
MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN,
QUESTION, RCURLY, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN, STAR, STAR_ASSIGN"/>
<property name="allowEmptyConstructors" value="true"/>
<property name="allowEmptyMethods" value="true"/>
</module>
</module>
</module>
<FindBugsFilter>
<!-- Example: http://findbugs.sourceforge.net/manual/filter.html#d0e2103 -->
<Match>
<Class name="kieker.analysis.reader.jmx.JMXReader" />
<Method name="read2" params="" returns="boolean" />
<Bug pattern="DE_MIGHT_IGNORE" />
</Match>
<Match>
<Class name="kieker.common.logging.LogFactory" />
<Bug pattern="DE_MIGHT_IGNORE" />
</Match>
<Match>
<Class name="kieker.analysis.reader.filesystem.FSReader" />
<Method name="read" params="" returns="boolean" />
<Bug pattern="NN_NAKED_NOTIFY" />
</Match>
<Match>
<Class name="kieker.analysis.reader.filesystem.FSReader" />
<Method name="newMonitoringRecord" params="kieker.common.record.IMonitoringRecord" returns="boolean" />
<Bug pattern="WA_NOT_IN_LOOP" />
</Match>
<Match>
<Class name="kieker.analysis.reader.filesystem.FSReader" />
<Method name="newMonitoringRecord" params="kieker.common.record.IMonitoringRecord" returns="boolean" />
<Bug pattern="UW_UNCOND_WAIT" />
</Match>
<Match>
<Class name="kieker.monitoring.core.registry.Registry" />
<Field name="eArrayCached" />
<Bug pattern="VO_VOLATILE_REFERENCE_TO_ARRAY" />
</Match>
<Match>
<Class name="org.apache.commons.logging.impl.Jdk14LoggerPatched" />
<Method name="getLog" params="java.lang.String" returns="org.apache.commons.logging.Log" />
<Bug pattern="REC_CATCH_EXCEPTION" />
</Match>
<Match>
<Class name="kieker.analysis.reader.filesystem.FSDirectoryReader" />
<Method name="processNormalInputFile" params="java.io.File" returns="void" />
<Bug pattern="REC_CATCH_EXCEPTION" />
</Match>
<Match>
<Class name="kieker.analysis.reader.filesystem.FSDirectoryReader" />
<Method name="processBinaryInputFile" params="java.io.File" returns="void" />
<Bug pattern="REC_CATCH_EXCEPTION" />
</Match>
<Match>
<Class name="kieker.monitoring.core.controller.JMXController" />
<Method name="&lt;init&gt;" params="kieker.common.configuration.Configuration" returns="void" />
<Bug pattern="REC_CATCH_EXCEPTION" />
</Match>
<Match>
<Class name="kieker.tools.traceAnalysis.TraceAnalysisTool" />
<Method name="dispatchTasks" params="" returns="boolean" />
<Bug pattern="REC_CATCH_EXCEPTION" />
</Match>
<Match>
<Bug pattern="SIC_INNER_SHOULD_BE_STATIC_ANON" />
</Match>
</FindBugsFilter>
\ No newline at end of file
<?xml version="1.0"?>
<ruleset name="Kieker PMD ruleset"
xmlns="http://pmd.sf.net/ruleset/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
<description>
This ruleset is checked for Kieker automatically.
</description>
<!-- We'll use the following rulesets -->
<rule ref="rulesets/basic.xml">
<exclude name="UnnecessaryFinalModifier"/>
</rule>
<rule ref="rulesets/braces.xml"/>
<rule ref="rulesets/clone.xml"/>
<!--<rule ref="rulesets/codesize.xml">-->
<rule ref="rulesets/controversial.xml">
<exclude name="AvoidFinalLocalVariable"/>
<exclude name="AvoidLiteralsInIfCondition"/>
<exclude name="AvoidUsingVolatile"/>
<exclude name="CallSuperInConstructor"/>
<exclude name="DataflowAnomalyAnalysis"/>
<exclude name="OnlyOneReturn"/>
<exclude name="UnusedModifier"/>
<exclude name="UnnecessaryConstructor"/>
</rule>
<!--<rule ref="rulesets/coupling.xml">-->
<rule ref="rulesets/design.xml">
<exclude name="ConfusingTernary"/>
</rule>
<rule ref="rulesets/finalizers.xml"/>
<rule ref="rulesets/imports.xml"/>
<rule ref="rulesets/junit.xml"/>
<rule ref="rulesets/logging-jakarta-commons.xml"/>
<rule ref="rulesets/migrating_to_13.xml"/>
<rule ref="rulesets/migrating_to_14.xml"/>
<rule ref="rulesets/migrating_to_15.xml"/>
<rule ref="rulesets/migrating_to_junit4.xml"/>
<rule ref="rulesets/naming.xml">
<exclude name="LongVariable"/>
<exclude name="PackageCase"/>
<exclude name="ShortVariable"/>
</rule>
<rule ref="rulesets/optimizations.xml"/>
<rule ref="rulesets/strictexception.xml">
<exclude name="AvoidCatchingNPE"/>
<exclude name="AvoidThrowingNullPointerException"/>
<exclude name="SignatureDeclareThrowsException"/>
</rule>
<rule ref="rulesets/strings.xml">
<exclude name="AvoidDuplicateLiterals"/>
</rule>
<rule ref="rulesets/strings.xml/AvoidDuplicateLiterals">
<properties>
<property name="skipAnnotations" value="true"/>
</properties>
</rule>
<rule ref="rulesets/sunsecure.xml"/>
<rule ref="rulesets/typeresolution.xml">
<exclude name="SignatureDeclareThrowsException"/>
</rule>
<rule ref="rulesets/unusedcode.xml"/>
</ruleset>
\ No newline at end of file
/***************************************************************************
* Copyright 2012 by
* + Christian-Albrechts-University of Kiel
* + Department of Computer Science
* + Software Engineering Group
* and others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package kieker.webgui.beans.application; package kieker.webgui.beans.application;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.faces.bean.ApplicationScoped; import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedBean;
import kieker.analysis.model.analysisMetaModel.MIDependency; import kieker.analysis.model.analysisMetaModel.MIDependency;
import kieker.analysis.model.analysisMetaModel.impl.MAnalysisMetaModelFactory;
import kieker.webgui.common.FileManager; import kieker.webgui.common.FileManager;
import org.primefaces.model.UploadedFile; import org.primefaces.model.UploadedFile;
@ManagedBean @ManagedBean
...@@ -16,11 +35,9 @@ import org.primefaces.model.UploadedFile; ...@@ -16,11 +35,9 @@ import org.primefaces.model.UploadedFile;
public class AvailableDependenciesBean { public class AvailableDependenciesBean {
private final List<MIDependency> dependencies; private final List<MIDependency> dependencies;
private final MAnalysisMetaModelFactory factory;
public AvailableDependenciesBean() { public AvailableDependenciesBean() {
this.dependencies = FileManager.getInstance().loadAllDependencies(); this.dependencies = FileManager.getInstance().loadAllDependencies();
factory = new MAnalysisMetaModelFactory();
} }
public List<MIDependency> getDependencies() { public List<MIDependency> getDependencies() {
...@@ -28,14 +45,16 @@ public class AvailableDependenciesBean { ...@@ -28,14 +45,16 @@ public class AvailableDependenciesBean {
} }
public void upload(final UploadedFile file) { public void upload(final UploadedFile file) {
FileManager.getInstance().uploadDependency(file); final MIDependency dependency = FileManager.getInstance().uploadDependency(file);
this.dependencies.clear(); if (dependency != null) {
this.dependencies.addAll(FileManager.getInstance().loadAllDependencies()); this.dependencies.add(dependency);
}
} }
public void delete(final MIDependency dependency) { public void delete(final MIDependency dependency) {
FileManager.getInstance().deleteDependency(dependency); final boolean result = FileManager.getInstance().deleteDependency(dependency);
this.dependencies.clear(); if (result) {
this.dependencies.addAll(FileManager.getInstance().loadAllDependencies()); this.dependencies.remove(dependency);
}
} }
} }
/**************************************************************************
* Copyright 2012 by + Christian-Albrechts-University of Kiel + Department of
* Computer Science + Software Engineering Group and others.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
**************************************************************************
*/
package kieker.webgui.beans.application; package kieker.webgui.beans.application;
import java.util.List; import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ApplicationScoped; import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext; import javax.faces.context.FacesContext;
...@@ -33,13 +49,20 @@ public class AvailableProjectsBean { ...@@ -33,13 +49,20 @@ public class AvailableProjectsBean {
} }
public synchronized void addProject(final String projectName) { public synchronized void addProject(final String projectName) {
/* Create a new project. */ /*
* Create a new project.
*/
final MIProject project = factory.createProject(); final MIProject project = factory.createProject();
project.setName(projectName); project.setName(projectName);
/* Try to save the project. */ /*
* Try to save the project.
*/
if (FileManager.getInstance().saveNewProject(project)) { if (FileManager.getInstance().saveNewProject(project)) {
/* Set the new project as the main project, if the current user doesn't have one. */ /*
* Set the new project as the main project, if the current user
* doesn't have one.
*/
FacesContext context = FacesContext.getCurrentInstance(); FacesContext context = FacesContext.getCurrentInstance();
SelectedProjectBean bean = (SelectedProjectBean) context.getApplication().evaluateExpressionGet(context, "#{selectedProjectBean}", SelectedProjectBean bean = (SelectedProjectBean) context.getApplication().evaluateExpressionGet(context, "#{selectedProjectBean}",
SelectedProjectBean.class); SelectedProjectBean.class);
...@@ -51,7 +74,7 @@ public class AvailableProjectsBean { ...@@ -51,7 +74,7 @@ public class AvailableProjectsBean {
} }
} }
@SuppressWarnings(value = { "unused" }) @SuppressWarnings("unused")
public synchronized TreeNode getProjectsRoot() { public synchronized TreeNode getProjectsRoot() {
TreeNode root = new DefaultTreeNode("Root", null); TreeNode root = new DefaultTreeNode("Root", null);
......
/***************************************************************************
* Copyright 2012 by
* + Christian-Albrechts-University of Kiel
* + Department of Computer Science
* + Software Engineering Group
* and others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package kieker.webgui.beans.application; package kieker.webgui.beans.application;
import java.util.Map; import java.util.Map;
......
/***************************************************************************
* Copyright 2012 by
* + Christian-Albrechts-University of Kiel
* + Department of Computer Science
* + Software Engineering Group
* and others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package kieker.webgui.beans.request; package kieker.webgui.beans.request;
import java.util.ArrayList; import java.util.ArrayList;
......
/***************************************************************************
* Copyright 2012 by
* + Christian-Albrechts-University of Kiel
* + Department of Computer Science
* + Software Engineering Group
* and others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package kieker.webgui.beans.request; package kieker.webgui.beans.request;
import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedBean;
......
package kieker.webgui.beans.session;
import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;
import org.primefaces.model.DefaultTreeNode;
import org.primefaces.model.TreeNode;
/**
* This bean can be used to store and read the currently available plugins for the current main project.
*
* @author Nils Christian Ehmke
*/
@ManagedBean
@SessionScoped
public class AvailablePluginsBean {
/**
* Delivers the available plugins.
*
* @return A tree with the available plugins.
*/
@SuppressWarnings(value = { "unused" })
public TreeNode getAvailablePluginsRoot() {
TreeNode root = new DefaultTreeNode("Root", null);
final TreeNode readerNode = new DefaultTreeNode("Reader", root);
final TreeNode analysisPluginsNode = new DefaultTreeNode("AnalysisPlugins", root);
return root;
}
}
/***************************************************************************
* Copyright 2012 by
* + Christian-Albrechts-University of Kiel
* + Department of Computer Science
* + Software Engineering Group
* and others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package kieker.webgui.beans.session; package kieker.webgui.beans.session;
import java.util.Map; import java.util.Map;
......
/***************************************************************************
* Copyright 2012 by
* + Christian-Albrechts-University of Kiel
* + Department of Computer Science
* + Software Engineering Group
* and others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package kieker.webgui.beans.session; package kieker.webgui.beans.session;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped; import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import kieker.webgui.common.FileManager; import kieker.webgui.common.FileManager;
......
/* /***************************************************************************
* To change this template, choose Tools | Templates * Copyright 2012 by
* and open the template in the editor. * + Christian-Albrechts-University of Kiel
*/ * + Department of Computer Science
* + Software Engineering Group
* and others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package kieker.webgui.beans.session; package kieker.webgui.beans.session;
import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped; import javax.faces.bean.SessionScoped;
import kieker.analysis.model.analysisMetaModel.MIProject; import kieker.analysis.model.analysisMetaModel.MIProject;
import org.primefaces.model.DefaultTreeNode;
import org.primefaces.model.TreeNode; import org.primefaces.model.TreeNode;
/** /**
* This bean can be used to store the currently selected project and the current main project for the user within a session. * This bean can be used to store the currently selected project and the current
* main project for the user within a session.
* *
* @author Nils Christian Ehmke * @author Nils Christian Ehmke
*/ */
...@@ -22,19 +40,40 @@ public class SelectedProjectBean { ...@@ -22,19 +40,40 @@ public class SelectedProjectBean {
private MIProject selectedProject; private MIProject selectedProject;
private MIProject mainProject; private MIProject mainProject;
/**
* Creates a new instance of this class.
*/
public SelectedProjectBean() {}
/**
* Delivers the main project of the current user. It can be null.
*
* @return The user's main project.
*/
public MIProject getMainProject() { public MIProject getMainProject() {
return mainProject; return mainProject;
} }
public void setMainProject(MIProject mainProject) { /**
* Sets the main project of the current user.
*
* @param mainProject
* The new main project of the current user.
*/
public void setMainProject(final MIProject mainProject) {
this.mainProject = mainProject; this.mainProject = mainProject;
} }
/**
* Delivers the project currently selected by the user. It can be null.
*
* @return The user's currently selected project.
*/
public MIProject getSelectedProject() { public MIProject getSelectedProject() {
return selectedProject; return selectedProject;
} }
public void setSelectedProject(MIProject selectedProject) { public void setSelectedProject(final MIProject selectedProject) {
this.selectedProject = selectedProject; this.selectedProject = selectedProject;
} }
...@@ -42,7 +81,7 @@ public class SelectedProjectBean { ...@@ -42,7 +81,7 @@ public class SelectedProjectBean {
return selectedNode; return selectedNode;
} }
public void setSelectedNode(TreeNode selectedNode) { public void setSelectedNode(final TreeNode selectedNode) {
this.selectedNode = selectedNode; this.selectedNode = selectedNode;
if (selectedNode != null && selectedNode.getData() instanceof MIProject) { if (selectedNode != null && selectedNode.getData() instanceof MIProject) {
setSelectedProject((MIProject) selectedNode.getData()); setSelectedProject((MIProject) selectedNode.getData());
...@@ -51,7 +90,21 @@ public class SelectedProjectBean { ...@@ -51,7 +90,21 @@ public class SelectedProjectBean {
} }
} }
public String getFontWeight(MIProject project) { public String getFontWeight(final MIProject project) {
return (project == mainProject) ? "bold" : "normal"; return (project == this.mainProject) ? "bold" : "normal";
}
/**
* Delivers the available plugins.
*
* @return A tree with the available plugins.
*/
public TreeNode getAvailablePluginsRoot() {
TreeNode root = new DefaultTreeNode("Root", null);
final TreeNode readerNode = new DefaultTreeNode("default", "Reader", root);
final TreeNode analysisPluginsNode = new DefaultTreeNode("default", "AnalysisPlugins", root);
return root;
} }
} }
/*************************************************************************
* Copyright 2012 by + Christian-Albrechts-University of Kiel + Department of
* Computer Science + Software Engineering Group and others.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
**************************************************************************
*/
package kieker.webgui.common; package kieker.webgui.common;
import java.io.File; import java.io.File;
...@@ -22,7 +39,8 @@ import kieker.common.logging.LogFactory; ...@@ -22,7 +39,8 @@ import kieker.common.logging.LogFactory;
* This is a singleton class for the access to the file system. It makes sure * This is a singleton class for the access to the file system. It makes sure
* that the necessary directories for the execution of the application exist. * that the necessary directories for the execution of the application exist.
* <b>Do not</b> remove directories created from this manager during runtime! * <b>Do not</b> remove directories created from this manager during runtime!
* Directories are created during first access to the class.<br> Currently * Directories are created during first access to the class.<br>
* Currently
* nearly all methods are synchronized. A fine grained synchronization should be * nearly all methods are synchronized. A fine grained synchronization should be
* implemented in the future. * implemented in the future.
* *
...@@ -38,9 +56,11 @@ public final class FileManager { ...@@ -38,9 +56,11 @@ public final class FileManager {
private static final String JAR_EXTENSION = ".jar"; private static final String JAR_EXTENSION = ".jar";
private static final int BUF_SIZE = 1024; private static final int BUF_SIZE = 1024;
private static final FileManager instance = new FileManager(); private static final FileManager instance = new FileManager();
private final MAnalysisMetaModelFactory factory;
private FileManager() { private FileManager() {
checkAndCreateDirectories(); checkAndCreateDirectories();
this.factory = new MAnalysisMetaModelFactory();
} }
private synchronized void checkAndCreateDirectories() { private synchronized void checkAndCreateDirectories() {
...@@ -67,7 +87,8 @@ public final class FileManager { ...@@ -67,7 +87,8 @@ public final class FileManager {
* This method saves a given project using the name of the project as the * This method saves a given project using the name of the project as the
* project-directory. The project-directory must already exist. * project-directory. The project-directory must already exist.
* *
* @param project The project to be stored. * @param project
* The project to be stored.
* @return true iff the project-directory does already exist and the storage * @return true iff the project-directory does already exist and the storage
* was successful. * was successful.
*/ */
...@@ -100,7 +121,8 @@ public final class FileManager { ...@@ -100,7 +121,8 @@ public final class FileManager {
* This method saves a given project using the name of the project as the * This method saves a given project using the name of the project as the
* project-directory. THe project-directory must not already exist. * project-directory. THe project-directory must not already exist.
* *
* @param project The project to be stored. * @param project
* The project to be stored.
* @return true iff the project-directory does not already exist and the * @return true iff the project-directory does not already exist and the
* storage was successful. * storage was successful.
*/ */
...@@ -135,7 +157,7 @@ public final class FileManager { ...@@ -135,7 +157,7 @@ public final class FileManager {
/* /*
* Try to get all directories within the project directory. * Try to get all directories within the project directory.
*/ */
final File directories[] = new File(PROJECT_DIR).listFiles(); final File[] directories = new File(PROJECT_DIR).listFiles();
if (directories != null) { if (directories != null) {
for (File directory : directories) { for (File directory : directories) {
if (directory.isDirectory()) { if (directory.isDirectory()) {
...@@ -169,10 +191,12 @@ public final class FileManager { ...@@ -169,10 +191,12 @@ public final class FileManager {
* within the lib-directory of this application. If a file with the same * within the lib-directory of this application. If a file with the same
* name does already exist, it will be replaces. * name does already exist, it will be replaces.
* *
* @param file The file to be uploaded. * @param file
* @return true iff the file has been uploaded successfully. * The file to be uploaded.
* @return The new dependency iff the uploading was sucesfull, null
* otherwise.
*/ */
public boolean uploadDependency(final UploadedFile file) { public MIDependency uploadDependency(final UploadedFile file) {
final File depFile = new File(LIB_DIR, file.getFileName()); final File depFile = new File(LIB_DIR, file.getFileName());
InputStream in = null; InputStream in = null;
...@@ -183,7 +207,7 @@ public final class FileManager { ...@@ -183,7 +207,7 @@ public final class FileManager {
*/ */
in = file.getInputstream(); in = file.getInputstream();
out = new FileOutputStream(depFile); out = new FileOutputStream(depFile);
final byte buf[] = new byte[BUF_SIZE]; final byte[] buf = new byte[BUF_SIZE];
int count; int count;
/* /*
...@@ -195,7 +219,7 @@ public final class FileManager { ...@@ -195,7 +219,7 @@ public final class FileManager {
} catch (final IOException ex) { } catch (final IOException ex) {
FileManager.LOG.error("Could not transfer file '" + file.getFileName() + "'"); FileManager.LOG.error("Could not transfer file '" + file.getFileName() + "'");
return false; return null;
} finally { } finally {
/* /*
* Try to make sure that the streams will be closed. * Try to make sure that the streams will be closed.
...@@ -211,8 +235,9 @@ public final class FileManager { ...@@ -211,8 +235,9 @@ public final class FileManager {
// Ignore // Ignore
} }
} }
final MIDependency dependency = factory.createDependency();
return true; dependency.setFilePath(depFile.getAbsolutePath());
return dependency;
} }
/** /**
...@@ -226,11 +251,10 @@ public final class FileManager { ...@@ -226,11 +251,10 @@ public final class FileManager {
public List<MIDependency> loadAllDependencies() { public List<MIDependency> loadAllDependencies() {
final List<MIDependency> resultList = new ArrayList<MIDependency>(); final List<MIDependency> resultList = new ArrayList<MIDependency>();
final MAnalysisMetaModelFactory factory = new MAnalysisMetaModelFactory();
/* /*
* Try to get all files within the library directory. * Try to get all files within the library directory.
*/ */
final File files[] = new File(LIB_DIR).listFiles(); final File[] files = new File(LIB_DIR).listFiles();
if (files != null) { if (files != null) {
for (File file : files) { for (File file : files) {
if (file.isFile()) { if (file.isFile()) {
...@@ -246,10 +270,11 @@ public final class FileManager { ...@@ -246,10 +270,11 @@ public final class FileManager {
return resultList; return resultList;
} }
public void deleteDependency(final MIDependency dependency) { public boolean deleteDependency(final MIDependency dependency) {
File file = new File(dependency.getFilePath()); File file = new File(dependency.getFilePath());
if (file.isFile()) { if (file.isFile()) {
file.delete(); return file.delete();
} }
return false;
} }
} }
/***************************************************************************
* Copyright 2012 by
* + Christian-Albrechts-University of Kiel
* + Department of Computer Science
* + Software Engineering Group
* and others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package kieker.webgui.common; package kieker.webgui.common;
import java.io.File; import java.io.File;
...@@ -20,7 +40,8 @@ public class PluginFinder { ...@@ -20,7 +40,8 @@ public class PluginFinder {
* This method delivers all classes which are available in the given jar and * This method delivers all classes which are available in the given jar and
* has the Plugin-Annotation from the Kieker framework. * has the Plugin-Annotation from the Kieker framework.
* *
* @param url The url for the jar. * @param url
* The url for the jar.
* @return A list containing all available plugin-classes or null, if an * @return A list containing all available plugin-classes or null, if an
* exception occured. * exception occured.
*/ */
......
/***************************************************************************
* Copyright 2012 by
* + Christian-Albrechts-University of Kiel
* + Department of Computer Science
* + Software Engineering Group
* and others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package kieker.webgui.converter; package kieker.webgui.converter;
import java.io.File; import java.io.File;
......
/**
* *************************************************************************
* Copyright 2012 by + Christian-Albrechts-University of Kiel + Department of
* Computer Science + Software Engineering Group and others.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
* *************************************************************************
*/
package kieker.webgui.converter; package kieker.webgui.converter;
import java.io.File; import java.io.File;
...@@ -19,15 +37,36 @@ public class MIDependencyToStringConverter implements Converter { ...@@ -19,15 +37,36 @@ public class MIDependencyToStringConverter implements Converter {
public static final String NAME = "kieker.webgui.converter.MIDependencyToStringConverter"; public static final String NAME = "kieker.webgui.converter.MIDependencyToStringConverter";
/** /**
* Delivers always null * This method delivers always null and should not be used.
*
* @param fc
* The faces context.
* @param uic
* The component.
* @param string
* The string to be converted.
* @return null
*/ */
@Override @Override
public Object getAsObject(FacesContext fc, UIComponent uic, String string) { public Object getAsObject(final FacesContext fc, final UIComponent uic, final String string) {
return null; return null;
} }
/**
* This method converts the given object (on condition that it is an
* instance of the class <code>MIDependency</code>) to a human readable string.
*
* @param fc
* The faces context.
* @param uic
* The component.
* @param o
* The object to be converted.
* @return A human readable represantation of the given object or null, of
* the object is from the wrong class.
*/
@Override @Override
public String getAsString(FacesContext fc, UIComponent uic, Object o) { public String getAsString(final FacesContext fc, final UIComponent uic, final Object o) {
return (o == null || !(o instanceof MIDependency)) ? null : (new File(((MIDependency) o).getFilePath()).getName()); return (o == null || !(o instanceof MIDependency)) ? null : (new File(((MIDependency) o).getFilePath()).getName());
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment