diff --git a/apps/newoptical/src/main/java/org/onosproject/newoptical/PacketLinkRealizedByOptical.java b/apps/newoptical/src/main/java/org/onosproject/newoptical/PacketLinkRealizedByOptical.java
index 52728fa..3425d36 100644
--- a/apps/newoptical/src/main/java/org/onosproject/newoptical/PacketLinkRealizedByOptical.java
+++ b/apps/newoptical/src/main/java/org/onosproject/newoptical/PacketLinkRealizedByOptical.java
@@ -57,7 +57,7 @@
      * @param src source connect point
      * @param dst destination connect point
      * @param intent OpticalCircuitIntent that realizes packet link between src and dst
-     * @return
+     * @return PacketLinkRealizedByOptical instance with specified connect points and OpticalCircuitIntent
      */
     public static PacketLinkRealizedByOptical create(ConnectPoint src, ConnectPoint dst,
                                                      OpticalCircuitIntent intent) {
@@ -76,7 +76,7 @@
      * @param src source connect point
      * @param dst destination connect point
      * @param intent OpticalConnectivityIntent that realizes packet link between src and dst
-     * @return
+     * @return PacketLinkRealizedByOptical instance with specified connect points and OpticalConnectivityIntent
      */
     public static PacketLinkRealizedByOptical create(ConnectPoint src, ConnectPoint dst,
                                                      OpticalConnectivityIntent intent) {
diff --git a/apps/newoptical/src/main/java/org/onosproject/newoptical/api/OpticalPathEvent.java b/apps/newoptical/src/main/java/org/onosproject/newoptical/api/OpticalPathEvent.java
index 95b87e6..a853d33 100644
--- a/apps/newoptical/src/main/java/org/onosproject/newoptical/api/OpticalPathEvent.java
+++ b/apps/newoptical/src/main/java/org/onosproject/newoptical/api/OpticalPathEvent.java
@@ -30,8 +30,9 @@
 
     /**
      * Creates OpticalPathEvent object with specified type and subject.
-     * @param type
-     * @param subject
+     *
+     * @param type type of event
+     * @param subject subject of the event
      */
     public OpticalPathEvent(Type type, OpticalConnectivityId subject) {
         super(type, subject);
diff --git a/apps/optical-model/src/main/java/org/onosproject/net/optical/device/OduCltPortHelper.java b/apps/optical-model/src/main/java/org/onosproject/net/optical/device/OduCltPortHelper.java
index 380b8fe..b3d2905 100644
--- a/apps/optical-model/src/main/java/org/onosproject/net/optical/device/OduCltPortHelper.java
+++ b/apps/optical-model/src/main/java/org/onosproject/net/optical/device/OduCltPortHelper.java
@@ -55,6 +55,7 @@
      * @param number        port number
      * @param isEnabled     port enabled state
      * @param signalType    ODU client signal type
+     * @return              port description
      */
     public static PortDescription oduCltPortDescription(PortNumber number,
                                         boolean isEnabled,
@@ -69,6 +70,7 @@
      * @param isEnabled     port enabled state
      * @param signalType    ODU client signal type
      * @param annotations   key/value annotations map
+     * @return              port description
      */
     public static PortDescription oduCltPortDescription(PortNumber number,
                                                         boolean isEnabled,
@@ -93,6 +95,7 @@
      * @param base          PortDescription to get basic information from
      * @param signalType    ODU client signal type
      * @param annotations   key/value annotations map
+     * @return              port description
      */
     public static PortDescription oduCltPortDescription(PortDescription base,
                                                         CltSignalType signalType,
diff --git a/apps/optical-model/src/main/java/org/onosproject/net/optical/device/OmsPortHelper.java b/apps/optical-model/src/main/java/org/onosproject/net/optical/device/OmsPortHelper.java
index f0d878d..2d83aa2 100644
--- a/apps/optical-model/src/main/java/org/onosproject/net/optical/device/OmsPortHelper.java
+++ b/apps/optical-model/src/main/java/org/onosproject/net/optical/device/OmsPortHelper.java
@@ -66,6 +66,7 @@
      * @param maxFrequency  maximum frequency
      * @param grid          grid spacing frequency
      * @param annotations   key/value annotations map
+     * @return              port description
      */
     public static PortDescription omsPortDescription(PortNumber number,
                                               boolean isEnabled,
@@ -93,6 +94,7 @@
      * @param minFrequency  minimum frequency
      * @param maxFrequency  maximum frequency
      * @param grid          grid spacing frequency
+     * @return              port description
      */
     public static PortDescription omsPortDescription(PortNumber number,
                                               boolean isEnabled,
@@ -110,6 +112,7 @@
      * @param maxFrequency  maximum frequency
      * @param grid          grid spacing frequency
      * @param annotations   key/value annotations map
+     * @return              port description
      */
     public static PortDescription omsPortDescription(PortDescription base,
                                               Frequency minFrequency,
diff --git a/apps/optical-model/src/main/java/org/onosproject/net/optical/device/OtuPortHelper.java b/apps/optical-model/src/main/java/org/onosproject/net/optical/device/OtuPortHelper.java
index 968dd6b..80263d4 100644
--- a/apps/optical-model/src/main/java/org/onosproject/net/optical/device/OtuPortHelper.java
+++ b/apps/optical-model/src/main/java/org/onosproject/net/optical/device/OtuPortHelper.java
@@ -55,6 +55,7 @@
      * @param number        port number
      * @param isEnabled     port enabled state
      * @param signalType    OTU client signal type
+     * @return              port description
      */
     public static PortDescription otuPortDescription(PortNumber number,
                                                      boolean isEnabled,
@@ -69,6 +70,7 @@
      * @param isEnabled     port enabled state
      * @param signalType    OTU client signal type
      * @param annotations   key/value annotations map
+     * @return              port description
      */
     public static PortDescription otuPortDescription(PortNumber number,
                                                      boolean isEnabled,
@@ -93,6 +95,7 @@
      * @param base          PortDescription to get basic information from
      * @param signalType    OTU client signal type
      * @param annotations   key/value annotations map
+     * @return              port description
      */
     public static PortDescription otuPortDescription(PortDescription base,
                                                      OtuSignalType signalType,
diff --git a/apps/optical-model/src/main/java/org/onosproject/net/optical/device/port/PortMapper.java b/apps/optical-model/src/main/java/org/onosproject/net/optical/device/port/PortMapper.java
index 90da7ae..f2a15781 100644
--- a/apps/optical-model/src/main/java/org/onosproject/net/optical/device/port/PortMapper.java
+++ b/apps/optical-model/src/main/java/org/onosproject/net/optical/device/port/PortMapper.java
@@ -32,6 +32,9 @@
 
     /**
      * Returns true if this port is capable of being projected as {@code <P>}.
+     *
+     * @param port port
+     * @return true if this port can be projected as the given type
      */
     boolean is(Port port);
 
diff --git a/apps/optical-model/src/main/java/org/onosproject/net/optical/json/OchSignalCodec.java b/apps/optical-model/src/main/java/org/onosproject/net/optical/json/OchSignalCodec.java
index 0fba4fa..08d4155 100644
--- a/apps/optical-model/src/main/java/org/onosproject/net/optical/json/OchSignalCodec.java
+++ b/apps/optical-model/src/main/java/org/onosproject/net/optical/json/OchSignalCodec.java
@@ -76,6 +76,7 @@
     /**
      * Returns a JSON Object representation of this instance.
      *
+     * @param j Och signal object
      * @return JSON Object representing OchSignal
      */
     public static ObjectNode encode(OchSignal j) {
diff --git a/apps/xosclient/src/main/java/org/onosproject/xosclient/api/VtnPortApi.java b/apps/xosclient/src/main/java/org/onosproject/xosclient/api/VtnPortApi.java
index e4e56d3..56835f4 100644
--- a/apps/xosclient/src/main/java/org/onosproject/xosclient/api/VtnPortApi.java
+++ b/apps/xosclient/src/main/java/org/onosproject/xosclient/api/VtnPortApi.java
@@ -49,6 +49,7 @@
      * Returns port information from OpenStack with port id.
      *
      * @param portId port id
+     * @param osAccess OpenStack address for OS access
      * @return vtn port; null if it fails to get port information
      */
     // TODO remove this when XOS provides port information
@@ -58,6 +59,7 @@
      * Returns port information from OpenStack with port name.
      *
      * @param portName port name
+     * @param osAccess OpenStack address for OS access
      * @return vtn port; null if it fails to get port information
      */
     // TODO remove this when XOS provides port information
diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java b/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java
index a06ea23..7b6fd92 100644
--- a/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java
@@ -185,6 +185,7 @@
         /**
          * Returns tunnel interface description builder with a tunnel key.
          *
+         * @param tunnelKey tunnel key
          * @return tunnel description builder
          */
         Builder key(TunnelKey tunnelKey);
diff --git a/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java b/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java
index d1d280f..26c11b8 100644
--- a/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java
+++ b/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java
@@ -182,6 +182,7 @@
      * Clears the  configuration including queued based on the subject.
      * If does not exists this call has no effect.
      *
+     * @param <S>               type of subject
      * @param subject           configuration subject
      */
     <S> void removeConfig(S subject);
@@ -190,6 +191,7 @@
      * Clears the complete configuration including queued.
      * If does not exists this call has no effect.
      *
+     * @param <S>               type of subject
      */
     <S> void removeConfig();
 }
diff --git a/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java b/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java
index 62c3ffa..b3d4ae1 100644
--- a/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java
+++ b/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java
@@ -155,6 +155,7 @@
      * Clears the  configuration based on the subject including queued.
      * If does not exists this call has no effect.
      *
+     * @param <S>               type of subject
      * @param subject   configuration subject
      */
     <S> void clearConfig(S subject);
@@ -163,6 +164,7 @@
      * Clears the complete configuration including queued.
      * If does not exists this call has no effect.
      *
+     * @param <S>               type of subject
      */
     <S> void clearConfig();
 
diff --git a/core/api/src/main/java/org/onosproject/net/driver/BehaviourClassResolver.java b/core/api/src/main/java/org/onosproject/net/driver/BehaviourClassResolver.java
index a5474f0..b49e439 100644
--- a/core/api/src/main/java/org/onosproject/net/driver/BehaviourClassResolver.java
+++ b/core/api/src/main/java/org/onosproject/net/driver/BehaviourClassResolver.java
@@ -24,7 +24,7 @@
     /**
      * Returns the class corresponding to the specified class name.
      * @param className class className
-     * @return
+     * @return class for the resolver
      */
     Class<? extends Behaviour> getBehaviourClass(String className);
 
diff --git a/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java b/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java
index 1511d21..c56abbf 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java
@@ -71,6 +71,7 @@
     /**
      * Returns the time this flow rule has been applied.
      *
+     * @param unit time unit the result will be converted to
      * @return time in the requested {@link TimeUnit}
      */
     long life(TimeUnit unit);
diff --git a/core/api/src/main/java/org/onosproject/net/link/ProbedLinkProvider.java b/core/api/src/main/java/org/onosproject/net/link/ProbedLinkProvider.java
index 6a04f83..3b633ac 100644
--- a/core/api/src/main/java/org/onosproject/net/link/ProbedLinkProvider.java
+++ b/core/api/src/main/java/org/onosproject/net/link/ProbedLinkProvider.java
@@ -36,6 +36,9 @@
     /**
      * Build a stringified MAC address using the ClusterMetadata hash for uniqueness.
      * Form of MAC is "02:eb" followed by four bytes of clusterMetadata hash.
+     *
+     * @param cm cluster metadata
+     * @return stringified mac address
      */
     static String fingerprintMac(ClusterMetadata cm) {
         if (cm == null) {
diff --git a/core/api/src/main/java/org/onosproject/net/resource/ResourceConsumerId.java b/core/api/src/main/java/org/onosproject/net/resource/ResourceConsumerId.java
index 630c845..6bc6261 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/ResourceConsumerId.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/ResourceConsumerId.java
@@ -94,6 +94,7 @@
     /**
      * Creates ResourceConsumerId from given value and class.
      *
+     * @param <T> resource consumer class type
      * @param value ID value unique within the given class
      * @param cls class of ResourceConsumer implementation
      * @return created ResourceConsumerId object
@@ -105,6 +106,7 @@
     /**
      * Creates ResourceConsumerId instance from Identifier object.
      *
+     * @param <T> resource consumer class type
      * @param id identifier object backed by Long value
      * @return created ResourceConsumerId object
      */
diff --git a/core/api/src/main/java/org/onosproject/net/utils/ForwardingPort.java b/core/api/src/main/java/org/onosproject/net/utils/ForwardingPort.java
index 7485b1e..8d48d47 100644
--- a/core/api/src/main/java/org/onosproject/net/utils/ForwardingPort.java
+++ b/core/api/src/main/java/org/onosproject/net/utils/ForwardingPort.java
@@ -59,6 +59,9 @@
      * call {@code super.toEqualsBuilder(..)} and append fields.
      * To remove field from comparison, override this method
      * or manually implement equals().
+     *
+     * @param that object to compare to
+     * @return builder object
      */
     protected EqualsBuilder toEqualsBuilder(Port that) {
         if (that == null) {
diff --git a/core/api/src/main/java/org/onosproject/store/primitives/DistributedPrimitiveCreator.java b/core/api/src/main/java/org/onosproject/store/primitives/DistributedPrimitiveCreator.java
index 768aa0b..5080b82 100644
--- a/core/api/src/main/java/org/onosproject/store/primitives/DistributedPrimitiveCreator.java
+++ b/core/api/src/main/java/org/onosproject/store/primitives/DistributedPrimitiveCreator.java
@@ -80,6 +80,7 @@
     /**
      * Creates a new {@code WorkQueue}.
      *
+     * @param <E> work element type
      * @param name work queue name
      * @param serializer serializer
      * @return work queue
@@ -103,4 +104,4 @@
      * @return set of {@code WorkQueue} names
      */
     Set<String> getWorkQueueNames();
-}
\ No newline at end of file
+}
diff --git a/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMultimap.java b/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMultimap.java
index 99d6274..8f35c33 100644
--- a/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMultimap.java
+++ b/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMultimap.java
@@ -77,6 +77,9 @@
     /**
      * Returns true if this map contains at least one key-value pair with key
      * and value specified.
+     *
+     * @param key key
+     * @param value value
      * @return a future whose value will be true if there is a key-value pair
      * with the specified key and value,
      * false otherwise.
@@ -89,6 +92,7 @@
      * returns true, if the key-value pair already exists then behavior is
      * implementation specific with some implementations allowing duplicates
      * and others ignoring put requests for existing entries.
+     *
      * @param key the key to add
      * @param value the value to add
      * @return a future whose value will be true if the map has changed because
@@ -100,6 +104,7 @@
      * Removes the key-value pair with the specified values if it exists. In
      * implementations that allow duplicates which matching entry will be
      * removed is undefined.
+     *
      * @param key the key of the pair to be removed
      * @param value the value of the pair to be removed
      * @return a future whose value will be true if the map changed because of
@@ -113,6 +118,7 @@
      * will remove one matching entry, which one is not defined. Equivalent to
      * repeated calls to {@code remove()} for each key value pair but more
      * efficient.
+     *
      * @param key the key of the pair to be removed
      * @param values the set of values to be removed
      * @return a future whose value will be true if the map changes because of
@@ -124,6 +130,7 @@
     /**
      * Removes all values associated with the specified key as well as the key
      * itself.
+     *
      * @param key the key whose key-value pairs will be removed
      * @return a future whose value is the set of values that were removed,
      * which may be empty, if the values did not exist the version will be
@@ -136,6 +143,7 @@
      * values in the iterable if each key-value pair does not already exist,
      * if the pair does exist the behavior is implementation specific.
      * (Same as repeated puts but with efficiency gains.)
+     *
      * @param key the key to use for all pairs to be added
      * @param values the set of values to be added in pairs with the key
      * @return a future whose value will be true if any change in the map
@@ -148,6 +156,7 @@
      * Stores all the values in values associated with the key specified,
      * removes all preexisting values and returns a collection of the removed
      * values which may be empty if the entry did not exist.
+     *
      * @param key the key for all entries to be added
      * @param values the values to be associated with the key
      * @return a future whose value will be the collection of removed values,
@@ -158,6 +167,7 @@
 
     /**
      * Removes all key-value pairs, after which it will be empty.
+     *
      * @return a future whose value is irrelevant, simply used to determine if
      * the call has completed
      */
@@ -166,6 +176,7 @@
     /**
      * Returns a collection of values associated with the specified key, if the
      * key is not in the map it will return an empty collection.
+     *
      * @param key the key whose associated values will be returned
      * @return a future whose value will be the collection of the values
      * associated with the specified key, the collection may be empty
@@ -175,6 +186,7 @@
     /**
      * Returns a set of the keys contained in this multimap with one or more
      * associated values.
+     *
      * @return a future whose value will be the collection of all keys with one
      * or more associated values, this may be empty
      */
@@ -184,6 +196,7 @@
      * Returns a multiset of the keys present in this multimap with one or more
      * associated values each. Keys will appear once for each key-value pair
      * in which they participate.
+     *
      * @return a future whose value will be a multiset of the keys, this may
      * be empty
      */
@@ -193,6 +206,7 @@
      * Returns a collection of values in the set with duplicates permitted, the
      * size of this collection will equal the size of the map at the time of
      * creation.
+     *
      * @return a future whose value will be a collection of values, this may be
      * empty
      */
@@ -200,6 +214,7 @@
 
     /**
      * Returns a collection of each key-value pair in this map.
+     *
      * @return a future whose value will be a collection of all entries in the
      * map, this may be empty
      */
@@ -209,6 +224,7 @@
      * Returns a map of keys to collections of values that reflect the set of
      * key-value pairs contained in the multimap, where the key value pairs
      * would be the key paired with each of the values in the collection.
+     *
      * @return a future whose value will be a map of keys to collections of
      * values, the returned map may be empty.
      */
diff --git a/core/api/src/main/java/org/onosproject/store/service/StorageService.java b/core/api/src/main/java/org/onosproject/store/service/StorageService.java
index 53830c2..1e006eb 100644
--- a/core/api/src/main/java/org/onosproject/store/service/StorageService.java
+++ b/core/api/src/main/java/org/onosproject/store/service/StorageService.java
@@ -102,6 +102,8 @@
 
     /**
      * Returns an instance of {@code WorkQueue} with specified name.
+     *
+     * @param <E> work element type
      * @param name work queue name
      * @param serializer serializer
      *
diff --git a/core/api/src/main/java/org/onosproject/store/service/Task.java b/core/api/src/main/java/org/onosproject/store/service/Task.java
index a8ff07b..678c63e 100644
--- a/core/api/src/main/java/org/onosproject/store/service/Task.java
+++ b/core/api/src/main/java/org/onosproject/store/service/Task.java
@@ -61,6 +61,8 @@
 
     /**
      * Maps task from one payload type to another.
+     *
+     * @param <F> future type
      * @param mapper type mapper.
      * @return mapped task.
      */
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentTreeMapCommands.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentTreeMapCommands.java
index 5fdcf3a..2d560c4 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentTreeMapCommands.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentTreeMapCommands.java
@@ -499,7 +499,8 @@
 
     /**
      * Returns the smallest key larger than or equal to the specified key.
-     * @param <K>
+     *
+     * @param <K> key type
      */
     @SuppressWarnings("serial")
     public static class CeilingKey<K> extends KeyQuery<K> {
diff --git a/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/behaviour/VoltOnuOperConfig.java b/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/behaviour/VoltOnuOperConfig.java
index 996d5ca..60cdbb2 100644
--- a/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/behaviour/VoltOnuOperConfig.java
+++ b/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/behaviour/VoltOnuOperConfig.java
@@ -28,6 +28,7 @@
      * Reboot an ONU in the device.
      *
      * @param target input data in string
+     * @return response string
      */
     String rebootOnu(String target);
 
@@ -35,6 +36,7 @@
      * Operate/release loopback on Ethernet port an ONU in the device.
      *
      * @param target input data in string
+     * @return response string
      */
     String loopbackEthOnu(String target);
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/faultmanagement/alarm/AlarmEvent.java b/incubator/api/src/main/java/org/onosproject/incubator/net/faultmanagement/alarm/AlarmEvent.java
index f93d76f..9481b01 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/faultmanagement/alarm/AlarmEvent.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/faultmanagement/alarm/AlarmEvent.java
@@ -41,6 +41,7 @@
     /**
      * Creates an event due to one alarm.
      *
+     * @param type alarm type
      * @param alarm the alarm related to the event.
      */
     public AlarmEvent(AlarmEvent.Type type, Alarm alarm) {
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/faultmanagement/alarm/AlarmTranslator.java b/incubator/api/src/main/java/org/onosproject/incubator/net/faultmanagement/alarm/AlarmTranslator.java
index 9fbcc35..3f6564b 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/faultmanagement/alarm/AlarmTranslator.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/faultmanagement/alarm/AlarmTranslator.java
@@ -30,6 +30,7 @@
      * Translates message from device into an alarm with appropriate
      * information.
      *
+     * @param deviceId device
      * @param message message from device to translate to alarm
      * @return Alarm with information determined by given message
      */
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/flowspec/BgpFlowSpecNlri.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/flowspec/BgpFlowSpecNlri.java
index fa40149..f4c86dc 100644
--- a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/flowspec/BgpFlowSpecNlri.java
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/flowspec/BgpFlowSpecNlri.java
@@ -224,6 +224,7 @@
      * Update buffer with identical flow types.
      *
      * @param cb channel buffer
+     * @param bgpFlowSpecNlri flow specification
      */
     public static void updateBufferIdenticalFlowTypes(ChannelBuffer cb, BgpFlowSpecNlri bgpFlowSpecNlri) {
 
@@ -256,6 +257,7 @@
      * Update buffer with non-identical flow types.
      *
      * @param cb channel buffer
+     * @param bgpFlowSpecNlri flow specification
      */
     public static void updateBufferNonIdenticalFlowTypes(ChannelBuffer cb, BgpFlowSpecNlri bgpFlowSpecNlri) {
         ChannelBuffer flowSpecTmpBuff = ChannelBuffers.dynamicBuffer();
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/WideCommunityAttrHeader.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/WideCommunityAttrHeader.java
index e49ef71..af88863 100644
--- a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/WideCommunityAttrHeader.java
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/WideCommunityAttrHeader.java
@@ -171,6 +171,7 @@
      *
      * @param c ChannelBuffer
      * @return object of WideCommunityAttrHeader
+     * @throws BgpParseException if a parsing error occurs
      */
     public static WideCommunityAttrHeader read(ChannelBuffer c) throws BgpParseException {
 
@@ -206,4 +207,4 @@
         // TODO Auto-generated method stub
         return 0;
     }
-}
\ No newline at end of file
+}
diff --git a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/WideCommunity.java b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/WideCommunity.java
index 1867959..f797f5b 100644
--- a/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/WideCommunity.java
+++ b/protocols/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/WideCommunity.java
@@ -81,6 +81,7 @@
     /**
      * Returns object of this class with specified values.
      *
+     * @param wideCommunityHeader community header
      * @param community wide community
      * @param localAsn local ASN number
      * @param contextAsn context ASN number
diff --git a/protocols/rest/api/src/main/java/org/onosproject/protocol/rest/RestSBController.java b/protocols/rest/api/src/main/java/org/onosproject/protocol/rest/RestSBController.java
index ed79fd9..b51b12f 100644
--- a/protocols/rest/api/src/main/java/org/onosproject/protocol/rest/RestSBController.java
+++ b/protocols/rest/api/src/main/java/org/onosproject/protocol/rest/RestSBController.java
@@ -80,6 +80,7 @@
     /**
      * Does a REST POST request with specified parameters to the device.
      *
+     * @param <T>           post return type
      * @param device        device to make the request to
      * @param request       url of the request
      * @param payload       payload of the request as an InputStream
diff --git a/utils/misc/src/main/java/org/onlab/util/HexString.java b/utils/misc/src/main/java/org/onlab/util/HexString.java
index b04dd04..95317ab 100644
--- a/utils/misc/src/main/java/org/onlab/util/HexString.java
+++ b/utils/misc/src/main/java/org/onlab/util/HexString.java
@@ -117,6 +117,7 @@
      * If separator is the empty string or null, then no separator will be considered.
      *
      * @param values hex string to be converted
+     * @param separator regex for separator
      * @return converted byte array
      * @throws NumberFormatException if input hex string cannot be parsed
      */
diff --git a/utils/misc/src/main/java/org/onlab/util/ImmutableByteSequence.java b/utils/misc/src/main/java/org/onlab/util/ImmutableByteSequence.java
index 284abac..c274e6a 100644
--- a/utils/misc/src/main/java/org/onlab/util/ImmutableByteSequence.java
+++ b/utils/misc/src/main/java/org/onlab/util/ImmutableByteSequence.java
@@ -76,6 +76,8 @@
      * the passed byte array, from/to the given indexes (inclusive).
      *
      * @param original a byte array value
+     * @param fromIdx starting index
+     * @param toIdx ending index
      * @return a new immutable byte sequence
      */
     public static ImmutableByteSequence copyFrom(byte[] original, int fromIdx, int toIdx) {
@@ -239,4 +241,4 @@
     public String toString() {
         return HexString.toHexString(value.array());
     }
-}
\ No newline at end of file
+}
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java
index 42e9590..a11ce09 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java
@@ -103,6 +103,7 @@
      * Criteria description:
      * https://wiki.onosproject.org/display/ONOS/Flow+Rule+Criteria
      *
+     * @param appId application id
      * @param stream flow rules JSON
      * @return status of the request - CREATED if the JSON is correct,
      * BAD_REQUEST if the JSON is invalid
