Overview

Basically the ONAP rules are all to consider. See ONAP rules: Java code style

Extentions for SDN-R code in "ccsdk/features"/sdnr

The verfication is done by SonarCloud. Figures are here:   ccsdk/features sdnr/wt https://sonarcloud.io/code?id=onap_ccsdk-features&selected=onap_ccsdk-features%3Asdnr%2Fwt

Configure eclipse workspace settings

Steps to load template

  • Download preference file onap-project-workspace-prefs.epf
  • Menu ⇒ File ⇒ Import ⇒ General ⇒ Preferences
  • Select file and check the “Import all” checkbox
  • Click finish and restart

Features

  • imports will automatically be organized on save
  • trailing spaces and empty lines will be cleared on save
  • CTRL+SHIFT+F for autoformat to ONAP codestyle (4 space indention, ...)
  • only javadoc comments will be formatted (not the lic header)
  • xml autoformat also with 4 space indention
  • comments in xml files won't be formatted on autoformat
  • provide javaclass template

TODO

  • include a correct and only available (in gerrit) checkstyle formatter compliant with license header

Hints

Deactivate auto format for longer concatenated multi line string sections

Use formatter on/of setting in eclipse for section with formatted strings, to keep them readable.

// @formatter:off 
    String something = "{ \"Stringxy\"" + parameter 
		+ "Some further text" + parameter2 ;
        :
// @formatter:on

Eclipse setting for XML

POM

for all pom.xml files:

  • mvn tidy:pom
  • <name>ccsdk-features :: ${project.artifactId}</name>
  • Indent: 4 Spaces, not tab

Java class template


{license header}
package {package name}

{imports}

/**
 * @author {your name here}
 * 
 * { short description of class }
 */
public class {className} {

	// constants
	private static final ...
	// end of constants

	// variables
	private ...
	private final ...
	// end of variables

	// constructors
	public {className} {}
	// end of constructors

	// getters and setters
	public void set...
    public int get...
	// end of getters and setters

	// private methods
	private void ...
	// end of private methods

	// public methods
	public void ...
	// end of public methods

	// static methods
	private static void ... {}
	public static void ... {}
	// end of static methods
	
    // private classes
	private class internalClass {}
	// end of private classes
	
    
	
}

License header

License Header Text

As placeholder and for examples the company name "highstreet technologies" is used. 

============LICENSE_START=======================================================
ONAP : ccsdk features
================================================================================
Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
All rights reserved.
================================================================================
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.
============LICENSE_END=========================================================

Note:
If a license pre-exists for other Organization, then add your organization with Update / Modification rights.
Example:

============LICENSE_START=======================================================
ONAP : ccsdk features
================================================================================
Copyright (C) 2020 Linux Foundation. All rights reserved.
================================================================================
Update Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
All rights reserved.
================================================================================
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.
============LICENSE_END=========================================================

Examples

Example Java, JS

Copyright Header goes on top, before Package declaration, keeping an empty line after the header

/*
 * ============LICENSE_START=======================================================
 * ONAP : ccsdk features
 * ================================================================================
 * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
 * All rights reserved.
 * ================================================================================
 * 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.
 * ============LICENSE_END=========================================================
 *
 */

Example XML

Copyright Header goes on top, after XML declaration tag, keeping an empty line after the header

<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ ============LICENSE_START=======================================================
  ~ ONAP : ccsdk features
  ~ ================================================================================
  ~ Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
  ~ All rights reserved.
  ~ ================================================================================
  ~ 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.
  ~ ============LICENSE_END=======================================================
  ~
  -->

Example Python,Helm Charts

Copyright Header goes on top, before Package/Field declaration, keeping an empty line after the header

# ============LICENSE_START=======================================================
# ONAP : ntmgr
# ================================================================================
# Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
# All rights reserved.
# ================================================================================
# 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.
# ============LICENSE_END=========================================================


  • No labels