WebGUI Development

Project Management

VCS Repositories

Please refer to the wiki page  VCSRepositories.

Trac

The Kieker Trac provides a Wiki, a ticket system etc.

In order to request an account, please contact André.

Bug Tracker

We use the ticket system provided by the Kieker Trac for managing bugs and other issues.

Coding Style

We use the  Eclipse Coding Conventions with some minor modifications. First, we allow 160 characters per line. And second, parameters of methods are declared final as long as they are not modified inside the method.

To setup these coding styles in Eclipse is explained in Kieker Coding Conventions Setup.

Build and Development Environment

Java

Kieker's WebGUI is built using JDK 1.6.

Maven Build

Maven is used as the build tool for Kieker's WebGUI. The important maven goals included in the pom.xml file are:

  • package: This is the goal that compiles the artifacts of Kieker's WebGUI, creates the corresponding war file in the target/ directory and creates the WebGUI's releases files.
  • test: This goal executes the JUnit tests, as well as Checkstyle, Findbugs and PMD. Reports are created for all four.

IDE-Specific Project Configuration

This section describes how to create a project for developing with the Kieker's WebGUI sources in Eclipse and/or NetBeans. Make sure that the IDE is already configured to support Maven applications.

Eclipse

Kieker's WebGUI includes Eclipse project files (.project, .classpath etc.) allowing the project to be imported easily:

  1. Open the import wizard by selecting File -> Import.
    1. Choose General -> Existing Projects into Workspace.
    2. Select the WebGUI's working directory from your filesystem.
    3. Simply click Finish to import the project.
    4. Kieker's WebGUI should now appear in the list of projects.

NetBeans

Kieker's WebGUI can be opened with NetBeans as well:

  1. Open the wizard by selecting File -> Open Project.
    1. Select the WebGUI's working directory from your filesystem.
    2. Simply click Open Project to open the project.
    3. Kieker's WebGUI should now appear in the list of projects.

Continuous Integration

 Our Jenkins server includes the following two jobs:

Creating a Release of the WebGUI

Checklist for creating a release version

  1. Release branch:
    1. Create a branch for the release:
       git checkout -b 1.6
      
    2. Set the final release version number in the pom.xml file
    3. Set Kieker's final version number in the pom.xml file
    4. Rename the license file for Kieker
    5. Remove the Sonatype repository from the pom.xml file
    6. Modify the HISTORY file
    7. Commit the changes
    8. Push the branch
       git push -u origin 1.6
      
  2. Jenkins Release Jobs
    1. Configure the Kieker Jenkins jobs  kieker-webgui-RC and  kieker-webgui-RC-release to use the release branch
    2. Trigger a build of the Jenkins job  kieker-webgui-RC. After a successful build, the release archives can be downloaded from  job/kieker-webgui-RC-release/lastSuccessfulBuild/artifact/
  3. Publish release files
  4. Jenkins cleanup:
    1. Disable the jobs  kieker-webgui-RC and  kieker-webgui-RC-release
  5. Git cleanup:
    1. Merge the branche's changes (if such) back to master
      $ git checkout master
      $ git merge 1.7
      
    2. Create a tag <version-number> (e.g., with gitk) and push it git push --tags
    3. Remove remote branch for this version git push origin :refs/heads/1.7
      • Caution (hint by jwa): Be careful, not to readd deleted tags, that only exist locally on your branch but no longer on the server (I removed them again). There is a command to remove all local tags not present on the server.
    4. Update version number in pom.xml
    5. Update Kieker's version number in pom.xml
    6. Rename the license file for Kieker
    7. Add the Sonatype repository ( https://oss.sonatype.org/content/repositories/snapshots/) to the pom.xml
    8. Commmit changes

Documentation

Javadoc API

  • Use the @since tag for new classes, interfaces, enums and annotations. Use the tag also for all methods within interfaces.
  • Use the @author tag if you create a new class, enum, interface or annotation.
  • Setter and getter methods don't have to be commented.
  • If you create a new class, interface, enum or annotation: Add a meaningful comments which describes what the component does and why it exists.
  • Do not mix javadoc and TODO comments. TODO comments should always be located outside of javadoc blocks.

Comments

  • Use // for "normal" (non-javadoc) comments
  • If you use //NOCS or //NOPMD add the reason in brackets behind the comment.

Further Recommendations and Hints

  • Use Eclipse to work with the Java part of the project and NetBeans for the web part.