Source code conventions

Classes and interfaces name conventions

Base package for all classes is org.openhubframework.openhub.

There are the following name conventions for classes and interfaces:

...RouteRoute implementation
...ConverterConverter implementation


Service implementation


DAO interfaces




MVC controller


Class that creates another classes


Test class


Class with useful static methods


Helper class, usually for local use



Method name conventions

There are the following name conventions for methods:


sets value or reference



gets value or reference

Method always returns not-null value or object, never null. It throws exception instead of null.


adds value/reference



data/state change



data removal



new object creation



existence check

It returns true or false.


common check

It returns true or false.


validates input values or internal object state



finds all possible values

Never returns null, only empty collection.

findBy... or findXyzBy...

finds value(s) by specified input parameters

If method returns only one value then it can be null.


test method, usually annotated by @Test



Demarcation of transactions - there is expected readonly transaction for methods which have the following prefixes: get, exists, check, findAll, find.

Syntax rules

Adhere to basic Java Code Conventions from Sun/Oracle.

Common syntax rules:

  • Basic unit of indentation is 4 spaces. Tab should be converted to spaces.
  • Line length is 120 characters.
  • Maximum size of one class shouldn't exceed 700 lines.
  • Use English language exclusively - for class, interface and method names, in comments, GUI, etc.
  • Use UTF-8 character set in all source code files.

Java imports

Use fully qualified class names in JavaDoc: If not already imported 

Class count to use static import with 5.

Names count to use static import with 5.

Import layout:

import static all other imports
<blank line>
import static org.openhubframework.openhub.*
<blank line>
import java.*
import javax.*
<blank line>
import all other imports
<blank line>
import org.openhubframework.openhub.*
<blank line>

How to use TODO?

TODO uses developer for himself, it's not tool for assigning work to anybody else. Never use TODO without username.

Use TODO in the following format where TO_WHOM is developer's username, for example PJUZA, THANUS.



JavaDoc and comments in general are very useful - it's not easy to find balance between many comments without meaningful information and no comments at all. There are few rules which are good to adhere: How to Write Doc Comments for the Javadoc Tool

Use file for every package. 


We have to adhere backward compatibility and sometimes there is no other possibility then leave old code for deprecation and create new one for next releases.

If any class or method is deprecated then it's necessary to:

  • use @Deprecated annotation
  • add @deprecated into JavaDoc with information what to use instead


     * Helper method which creates input route for asynch. messages.
     * @param route               the route where we want to create asynch. input routing
     * @param routeId             the input route ID
     * @param inUri               the from URI of this route
     * @deprecated Use {@link AsynchRouteBuilder} instead.
    public static RouteDefinition createAsynchInRoute(RouteBuilder route, String routeId, String inUri,

Methods or classes marked as deprecated will be removed in next major version.

License header

Use the following Apache license header in all Java classes.

 * Copyright 2016 the original author or authors.
 * 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
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * See the License for the specific language governing permissions and
 * limitations under the License.
package org.openhubframework.openhub.spi.alerts;