Copyright © 2010 OW2 Consortium
This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license,visit http://creativecommons.org/licenses/by-sa/2.0/deed.en or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
This guide explains how to contribute to camel-jonas5.
Anyone can check out source code from the SVN server using the following command (for GUI SVN client use, configuration values are the same as for command line use):
svn checkout svn://svn.forge.objectweb.org/svnroot/jonas/sub-projects/camel-jonas5/trunk
It is also possible to retrieve a particular branch or a particular tag. For example:
svn checkout svn://svn.forge.objectweb.org/svnroot/jonas/sub-projects/camel-jonas5/tags/camel-jonas5-1.6.2
Access for developers is available using :
svn checkout svn+ssh://developername@svn.forge.objectweb.org/svnroot/jonas/sub-projects/camel-jonas5/trunk
A Java SE 5 is required to build the project. Make sure that the JDK used to build camel-jonas5 is compliant with the new Java 5 features.
The maven tool is used with pom.xml
files.
This tool is available at http://maven.apache.org. The
2.0.7 or later version is recommanded
The camel-jonas5 project provides .project and .classpath for Eclipse 3.1 or greater. A project is ready to use once the source has been imported using the Eclipse tool. Eclipse tool is available at http://www.eclipse.org.
The eclipse-checkstyle plugin(version 4 or greater) is used to check the javadoc of camel-jonas5 project. A warning will print if the camel-jonas5 coding convention is not used.
This plugin is available at
As part of the coding convention, the use of tabulation characters is disallowed. Files should contain only spaces. The AnyEdit plugin allows tabs to be converted to spaces when saving the file. Also, trailing spaces can be removed automatically.
This plugin is available at http://andrei.gmxhome.de/anyedit/.
To compile camel-jonas5 under eclipse, use m2eclipse plugin available at http://m2eclipse.codehaus.org/.
camel-jonas5 uses subversion as revision control system. The use of stable version of Subversive is advised. This plugin is available at http://www.polarion.org/index.php?page=overview&project=subversive.
To compile camel-jonas5, launch the command mvn in the root directory of the project.
Note | |
---|---|
The default maven goal is install if not specified. |
Once the command has been run successfully, the maven artifacts
generated by maven are available in the maven local repository. The
target
directories contain the
generated jars or assemblies.
mvn clean install is used to clean and regenerate classes.
camel-jonas5 generates a ready to use JOnAS assembly extended
with everything needed for Camel integration(bundles, configuration files,
...), in package-with-jonas/target
folder.
Most modules of camel-jonas5 contain unit tests. Integration
tests are also avaible incamel-service-itests
Contributions should follow the camel-jonas5 code convention. A good document to begin with is Java code convention. Other conventions are also listed in this document.
In addition, camel-jonas5 uses tools to check the compliance: the checkstyle plugin and the eclipse checkstyle plugin. The configuration settings are available on JOnAS SVN.
All files should have a header that contains the LGPL and the date.
If a file is modified, the modification year should be appended to the existing year, which is the year it was initially created. For example, if the create date is '1999' or '2004' it should be edited to '1999-2006' or '2004-2006', respectively.
Also, the tag $Id: code_convention.xml 314 2006-04-04 09:39:43Z pinheirg $ should be added. The following is a header example:
/** * JOnAS: Java(TM) Open Application Server * Copyright (C) 2010 Bull S.A.S. * Contact: jonas-team@ow2.org * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or any later version. * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * -------------------------------------------------------------------------- * $Id: code_convention.xml 19620 2010-04-01 14:13:01Z eyindanga $ * -------------------------------------------------------------------------- */
Imports should reference a valid class name, instead of using wildcard imports. Wildcard imports are not authorized.
For example, if the interface and class List and ArrayList are used, the imports should not be as follows:
import java.util.*;
The imports should have each class as follow:
import java.util.List; import java.util.ArrayList;
The classes should not have an unused import.
Note | |
---|---|
The Eclipse IDE provides facilities to do this job. There is the option Organize Imports (Shift+Ctrl+O) in the menu Source that correctly inserts the imports and removes the unused imports. However, this option does not work well with 'import static'. |
The class and interface names should begin with an uppercase letter. Also, each class and interface has an @author tag in the comment. For example:
/** * This is an example that shows a class/interface declaration. * @author Loris Bouzonnet * @author Stephane Zeng */ public class ClassExample implements InterfaceExample { }
The space character is used instead of the tab character. The number of spaces for an indent is 4 spaces.
Wrapping a single source line into multiple lines should follow the Java code convention.
Any trailing spaces should be removed. Eclipse provides a plugin that removes the trailing spaces and converts the tab into spaces. The plugin is AnyEdit.
Use whitespaces in for() loop, while(), when concatenating strings. One space should be added before the operator and another after the operator. For example, the correct syntax is:
for (int i = 0; i < arTest.length; i++) { String strResult = "The element " + i + " has the value " + arTest[i]; }
The following code does not adhere to the convention:
for (int i = 0; i< arTest.length; i++) { String strResult = "The element "+ i+" has the value "+arTest[i]; }
All methods and attributes (including protected and private) must have a comment. The parameters, the exceptions thrown, and the method return should have a comment in the method comment. For example:
/** * This is an example that is used in the JOnAS Code Convention. */ private int intValue; /** * This is an example method to show a class comment. * @param a an example of parameter. * @param b other example of parameter. * @return the method result. * @throws Exception the exception thrown by the method. */ public int add(final int a, final int b) throws Exception { return a + b; }
Braces must be used in the if/else blocks, even if there is a single statement. To illustrate:
if (true) { doThis(); }
The following is not allowed:
if (true) doThis();
The position of the braces should be the same as in the first example. The following format is incorrect:
if (true) { test1(); test2(); }
All exceptions require a statement; no silent catching is allowed. For example:
try { doThis(); } catch (Exception e) { // should not occur }
A logger can be used:
try { doThis(); } catch (Exception e) { logger.logDebug("Exception while doing .....", e); }
Declarations are static final, not final static. This is a JLS recommendation.
Constants should be static and final, and should adhere to the following:
'^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'
Constants must be used in the code and magic number must be avoided. For example, the following is not allowed:
private int myAttribute = 5;
The correct format is:
/* Default value */ private static final int DEFAULT_VALUE = 5; /* This attribute is initialized with the default value */ private int myAttribute = DEFAULT_VALUE;
Developers wanting to contribute information about camel-jonas5 can share their thoughts via the JOnAS mailing list.
The steps necessary for subscribing to the list are described here.
Mailing lists for JOnAS are available here.
There are many ways to contribute to camel-jonas5. New ideas are also welcome.
The following is a list of some of the ways to make contributions:
Documentation: Improve or add to the existing documentation, create new chapters, translate, etc.
Code: Bug fix, improvements, new features.
Tests: Add new tests to the current test suite.