Add internal modifiers to comply with new HvVesCustomRule 05/85305/4
authorIzabela Zawadzka <izabela.zawadzka@nokia.com>
Mon, 15 Apr 2019 11:03:45 +0000 (13:03 +0200)
committerIzabela Zawadzka <izabela.zawadzka@nokia.com>
Tue, 16 Apr 2019 07:18:12 +0000 (09:18 +0200)
Change-Id: I33ad24179d05ded58f6784544be9bbdd56210720
Signed-off-by: Izabela Zawadzka <izabela.zawadzka@nokia.com>
Issue-ID: DCAEGEN2-1438

23 files changed:
build/hv-collector-analysis/src/main/kotlin/org/onap/dcae/collectors/veshv/analysis/PublicModifiersInImpl.kt
build/hv-collector-analysis/src/main/resources/onap-detekt-config.yml
sources/hv-collector-core/src/main/kotlin/org/onap/dcae/collectors/veshv/impl/HeaderValidator.kt
sources/hv-collector-core/src/main/kotlin/org/onap/dcae/collectors/veshv/impl/Router.kt
sources/hv-collector-core/src/main/kotlin/org/onap/dcae/collectors/veshv/impl/ValidationError.kt
sources/hv-collector-core/src/main/kotlin/org/onap/dcae/collectors/veshv/impl/adapters/HttpAdapter.kt
sources/hv-collector-core/src/main/kotlin/org/onap/dcae/collectors/veshv/impl/adapters/kafka/ProtobufSerializer.kt
sources/hv-collector-core/src/main/kotlin/org/onap/dcae/collectors/veshv/impl/adapters/kafka/VesMessageSerializer.kt
sources/hv-collector-core/src/main/kotlin/org/onap/dcae/collectors/veshv/impl/wire/WireFrameException.kt
sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/DcaeAppSimulator.kt
sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/MessageStreamValidation.kt
sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/adapters/DcaeAppApiServer.kt
sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/adapters/KafkaSource.kt
sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/config/ArgDcaeAppSimConfiguration.kt
sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/config/DcaeAppSimConfiguration.kt
sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/consumer.kt
sources/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/XnfSimulator.kt
sources/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/adapters/HvVesClient.kt
sources/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/config/ClientConfiguration.kt
sources/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/config/SimulatorConfiguration.kt
sources/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/config/SslUtils.kt
sources/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/factory/ClientFactory.kt
sources/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/simulations.kt

index 027cade..45e8006 100644 (file)
@@ -25,25 +25,32 @@ import org.jetbrains.kotlin.psi.psiUtil.isPublic
 
 class PublicModifiersInImpl(config: Config = Config.empty) : Rule(config) {
     override val issue: Issue = Issue(javaClass.simpleName, Severity.Maintainability,
-            ISSUE_DESCRIPTION, Debt(mins=10))
+            ISSUE_DESCRIPTION, Debt(mins = 10))
 
     override fun visitKtFile(file: KtFile) {
         super.visitKtFile(file)
 
-        if(file.packageFqName.toString().contains("impl")) {
-            ImplVisitor.also {
-                file.accept(it)
-                if(it.publicDeclarations.isNotEmpty()){
-                    for(entity in it.publicDeclarations)
-                        report(CodeSmell(issue, entity, REPORT_MESSAGE))
-                    it.publicDeclarations.clear()
-                }
-            }
+        if (file.packageFqName.toString().contains("impl")) {
+            checkAccessModifiers(file)
         }
     }
 
+    private fun checkAccessModifiers(file: KtFile) {
+        val implVisitor = ImplVisitor()
+
+        file.accept(implVisitor)
+        if (implVisitor.publicDeclarations.isNotEmpty()) {
+            reportCodeSmells(implVisitor)
+        }
+    }
+
+    private fun reportCodeSmells(it: ImplVisitor) {
+        for (entity in it.publicDeclarations)
+            report(CodeSmell(issue, entity, REPORT_MESSAGE))
+    }
+
     companion object {
-        private val REPORT_MESSAGE =  """
+        private val REPORT_MESSAGE = """
                                 Implementation package members cannot have public declarations.
                                 Please, add `internal` modifier for this element to disallow usage outside of module
                             """.trimIndent()
@@ -51,22 +58,22 @@ class PublicModifiersInImpl(config: Config = Config.empty) : Rule(config) {
     }
 }
 
-private object ImplVisitor: DetektVisitor(){
+private class ImplVisitor : DetektVisitor() {
     var publicDeclarations = mutableListOf<Entity>()
 
     override fun visitClassOrObject(classOrObject: KtClassOrObject) {
-        if(classOrObject.isTopLevel() && classOrObject.isPublic){
+        if (classOrObject.isTopLevel() && classOrObject.isPublic) {
             publicDeclarations.add(Entity.from(classOrObject))
         }
     }
 
     override fun visitNamedFunction(function: KtNamedFunction) {
-        if(function.isTopLevel && function.isPublic){
+        if (function.isTopLevel && function.isPublic) {
             publicDeclarations.add(Entity.from(function))
         }
     }
 
     override fun visitProperty(property: KtProperty) {
-        if(property.isTopLevel && property.isPublic) publicDeclarations.add(Entity.from(property))
+        if (property.isTopLevel && property.isPublic) publicDeclarations.add(Entity.from(property))
     }
 }
\ No newline at end of file
index b45f6b6..a5dd275 100644 (file)
@@ -480,4 +480,4 @@ HvVesCustomRules:
   SuboptimalLoggerUsage:
     active: false
   PublicModifiersInImpl:
-    active: false
+    active: true
index 9d8acca..b88fe7f 100644 (file)
@@ -28,9 +28,9 @@ import org.onap.dcae.collectors.veshv.domain.headerRequiredFieldDescriptors
 import org.onap.dcae.collectors.veshv.domain.vesEventListenerVersionRegex
 import org.onap.ves.VesEventOuterClass.CommonEventHeader
 
-typealias Validator = (CommonEventHeader) -> List<ValidationError>
+internal typealias Validator = (CommonEventHeader) -> List<ValidationError>
 
-object HeaderValidator {
+internal object HeaderValidator {
     private val validators = (listOf(validateEventListenerVersion()) +
             headerRequiredFieldDescriptors.map { fieldDescriptor ->
                 validateRequiredField(fieldDescriptor)
index 2190eba..c4e877b 100644 (file)
@@ -35,7 +35,7 @@ import org.onap.dcae.collectors.veshv.utils.logging.Logger
 import org.onap.ves.VesEventOuterClass.CommonEventHeader
 import reactor.core.publisher.Flux
 
-class Router internal constructor(private val routing: Routing,
+internal class Router internal constructor(private val routing: Routing,
                                   private val messageSinks: Map<String, Lazy<Sink>>,
                                   private val ctx: ClientContext,
                                   private val metrics: Metrics) {
index 56a77f4..5724fed 100644 (file)
@@ -21,7 +21,7 @@ package org.onap.dcae.collectors.veshv.impl
 
 import org.onap.dcae.collectors.veshv.domain.vesEventListenerVersionRegex
 
-sealed class ValidationError(val errorMessage: String) {
+internal sealed class ValidationError(val errorMessage: String) {
     class MissingField<A>(field: A) : ValidationError(
         "Invalid header - missing $field field"
     )
index 8f66de2..51eec02 100644 (file)
@@ -30,7 +30,7 @@ import java.util.*
  * @author Jakub Dudycz <jakub.dudycz@nokia.com>
  * @since May 2018
  */
-open class HttpAdapter(private val httpClient: HttpClient) {
+internal open class HttpAdapter(private val httpClient: HttpClient) {
 
     open fun get(url: String, invocationId: UUID, queryParams: Map<String, Any> = emptyMap()): Mono<String> =
             httpClient
index 4e9932c..8fc960d 100644 (file)
@@ -26,7 +26,7 @@ import org.apache.kafka.common.serialization.Serializer
  * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
  * @since June 2018
  */
-class ProtobufSerializer : Serializer<MessageLite> {
+internal class ProtobufSerializer : Serializer<MessageLite> {
     override fun configure(configs: MutableMap<String, *>?, isKey: Boolean) {
         // no configuration
     }
index a5f8070..084b337 100644 (file)
@@ -26,7 +26,7 @@ import org.onap.dcae.collectors.veshv.domain.VesMessage
  * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
  * @since June 2018
  */
-class VesMessageSerializer : Serializer<VesMessage> {
+internal class VesMessageSerializer : Serializer<VesMessage> {
     override fun configure(configs: MutableMap<String, *>?, isKey: Boolean) {
         // not needed
     }
index 8184540..4dd2659 100644 (file)
@@ -25,5 +25,5 @@ import org.onap.dcae.collectors.veshv.domain.WireFrameDecodingError
  * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
  * @since June 2018
  */
-class WireFrameException(val error: WireFrameDecodingError)
+internal class WireFrameException(val error: WireFrameDecodingError)
     : Exception("${error::class.simpleName}: ${error.message}")
index 33e9a37..122d9bf 100644 (file)
@@ -28,7 +28,7 @@ import java.util.Collections.synchronizedMap
  * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
  * @since August 2018
  */
-class DcaeAppSimulator(private val consumerFactory: ConsumerFactory,
+internal class DcaeAppSimulator(private val consumerFactory: ConsumerFactory,
                        private val messageStreamValidation: MessageStreamValidation) {
     private val consumerState: MutableMap<String, ConsumerStateProvider> = synchronizedMap(mutableMapOf())
 
@@ -85,4 +85,4 @@ class DcaeAppSimulator(private val consumerFactory: ConsumerFactory,
     }
 }
 
-class MissingConsumerException(message: String) : Throwable(message)
+internal class MissingConsumerException(message: String) : Throwable(message)
index 144aab0..06a8d74 100644 (file)
@@ -31,7 +31,7 @@ import reactor.core.publisher.Mono
 import java.io.InputStream
 import javax.json.Json
 
-class MessageStreamValidation(
+internal class MessageStreamValidation(
         private val messageGenerator: VesEventGenerator,
         private val messageParametersParser: MessageParametersParser = MessageParametersParser.INSTANCE) {
 
index 6a09be9..2458b20 100644 (file)
@@ -41,7 +41,7 @@ import java.net.InetSocketAddress
  * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
  * @since May 2018
  */
-class DcaeAppApiServer(private val simulator: DcaeAppSimulator) {
+internal class DcaeAppApiServer(private val simulator: DcaeAppSimulator) {
 
     fun start(socketAddress: InetSocketAddress, kafkaTopics: Set<String>): Mono<ServerHandle> =
             Mono.defer {
index 0fd3bb1..b91e7a1 100644 (file)
@@ -31,7 +31,7 @@ import reactor.kafka.receiver.ReceiverRecord
  * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
  * @since May 2018
  */
-class KafkaSource(private val receiver: KafkaReceiver<ByteArray, ByteArray>) {
+internal class KafkaSource(private val receiver: KafkaReceiver<ByteArray, ByteArray>) {
 
     fun start(): Flux<ReceiverRecord<ByteArray, ByteArray>> =
             receiver.receive()
index f6d1eab..fb0e61f 100644 (file)
@@ -34,7 +34,7 @@ import org.onap.dcae.collectors.veshv.domain.WireFrameMessage
 import org.onap.dcae.collectors.veshv.utils.arrow.OptionUtils.binding
 import java.net.InetSocketAddress
 
-class ArgDcaeAppSimConfiguration : ArgBasedConfiguration<DcaeAppSimConfiguration>(DefaultParser()) {
+internal class ArgDcaeAppSimConfiguration : ArgBasedConfiguration<DcaeAppSimConfiguration>(DefaultParser()) {
     override val cmdLineOptionsList: List<CommandLineOption> = listOf(
             LISTEN_PORT,
             MAXIMUM_PAYLOAD_SIZE_BYTES,
index 2b0382a..a503e5b 100644 (file)
@@ -21,7 +21,7 @@ package org.onap.dcae.collectors.veshv.simulators.dcaeapp.impl.config
 
 import java.net.InetSocketAddress
 
-data class DcaeAppSimConfiguration(
+internal data class DcaeAppSimConfiguration(
         val apiAddress: InetSocketAddress,
         val maxPayloadSizeBytes: Int,
         val kafkaBootstrapServers: String,
index a6d1edd..2de89aa 100644 (file)
@@ -28,7 +28,7 @@ import java.util.concurrent.ConcurrentLinkedQueue
  * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
  * @since June 2018
  */
-class ConsumerState(private val messages: ConcurrentLinkedQueue<ByteArray>) {
+internal class ConsumerState(private val messages: ConcurrentLinkedQueue<ByteArray>) {
     val messagesCount: Int by lazy {
         messages.size
     }
@@ -38,12 +38,12 @@ class ConsumerState(private val messages: ConcurrentLinkedQueue<ByteArray>) {
     }
 }
 
-interface ConsumerStateProvider {
+internal interface ConsumerStateProvider {
     fun currentState(): ConsumerState
     fun reset()
 }
 
-class Consumer : ConsumerStateProvider {
+internal class Consumer : ConsumerStateProvider {
 
     private var consumedMessages: ConcurrentLinkedQueue<ByteArray> = ConcurrentLinkedQueue()
 
@@ -61,7 +61,7 @@ class Consumer : ConsumerStateProvider {
     }
 }
 
-class ConsumerFactory(private val kafkaBootstrapServers: String) {
+internal class ConsumerFactory(private val kafkaBootstrapServers: String) {
     fun createConsumersForTopics(kafkaTopics: Set<String>): Map<String, Consumer> =
             KafkaSource.create(kafkaBootstrapServers, kafkaTopics).let { kafkaSource ->
                 val topicToConsumer = kafkaTopics.associate { it to Consumer() }
index 49d6a47..98f33b7 100644 (file)
@@ -47,7 +47,7 @@ import javax.json.JsonArray
  * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
  * @since August 2018
  */
-class XnfSimulator(
+internal class XnfSimulator(
         private val clientFactory: ClientFactory,
         private val generatorFactory: MessageGeneratorFactory,
         private val messageParametersParser: MessageParametersParser = MessageParametersParser.INSTANCE) {
index e50f1e7..63585c6 100644 (file)
@@ -31,7 +31,7 @@ import java.nio.ByteBuffer
  * @author Jakub Dudycz <jakub.dudycz@nokia.com>
  * @since June 2018
  */
-class HvVesClient(private val producer: HvVesProducer) {
+internal class HvVesClient(private val producer: HvVesProducer) {
 
     fun sendRawPayload(messages: Flux<ByteBuffer>, payloadType: PayloadType = PayloadType.UNDEFINED): Mono<Unit> =
             producer.sendRaw(messages, payloadType)
index 55a1831..a09a7c9 100644 (file)
@@ -27,5 +27,5 @@ import java.net.InetSocketAddress
  * @author Jakub Dudycz <jakub.dudycz@nokia.com>
  * @since February 2019
  */
-data class ClientConfiguration(val collectorAddresses: Set<InetSocketAddress>,
+internal data class ClientConfiguration(val collectorAddresses: Set<InetSocketAddress>,
                                val securityProvider: () -> SecurityConfiguration)
index 751985c..46e1d29 100644 (file)
@@ -26,7 +26,7 @@ import java.net.InetSocketAddress
  * @author Jakub Dudycz <jakub.dudycz@nokia.com>
  * @since June 2018
  */
-data class SimulatorConfiguration(
+internal data class SimulatorConfiguration(
         val listenAddress: InetSocketAddress,
         val healthCheckApiListenAddress: InetSocketAddress,
         val hvVesAddress: InetSocketAddress,
index 7678fdb..f440da6 100644 (file)
@@ -38,12 +38,12 @@ import java.nio.file.Paths
  * @since September 2018
  */
 
-const val KEY_STORE_FILE = "/etc/ves-hv/server.p12"
-const val KEY_STORE_PASSWORD_FILE = "/etc/ves-hv/server.pass"
-const val TRUST_STORE_FILE = "/etc/ves-hv/trust.p12"
-const val TRUST_STORE_PASSWORD_FILE = "/etc/ves-hv/trust.pass"
+internal const val KEY_STORE_FILE = "/etc/ves-hv/server.p12"
+internal const val KEY_STORE_PASSWORD_FILE = "/etc/ves-hv/server.pass"
+internal const val TRUST_STORE_FILE = "/etc/ves-hv/trust.p12"
+internal const val TRUST_STORE_PASSWORD_FILE = "/etc/ves-hv/trust.pass"
 
-fun createSecurityConfigurationProvider(cmdLine: CommandLine): Try<() -> SecurityConfiguration> =
+internal fun createSecurityConfigurationProvider(cmdLine: CommandLine): Try<() -> SecurityConfiguration> =
         if (shouldDisableSsl(cmdLine))
             Try { { disabledSecurityConfiguration() } }
         else
index 72a1165..94334c0 100644 (file)
@@ -29,7 +29,7 @@ import org.onap.dcaegen2.services.sdk.services.hvves.client.producer.api.options
  * @author Jakub Dudycz <jakub.dudycz@nokia.com>
  * @since February 2019
  */
-class ClientFactory(private val configuration: ClientConfiguration) {
+internal class ClientFactory(private val configuration: ClientConfiguration) {
 
     fun create() = hvVesClient(partialConfiguration().build())
 
index 3f43ebe..e36cfc8 100644 (file)
@@ -34,7 +34,7 @@ import java.util.concurrent.ConcurrentHashMap
  * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
  * @since August 2018
  */
-class OngoingSimulations(private val scheduler: Scheduler = Schedulers.elastic(),
+internal class OngoingSimulations(private val scheduler: Scheduler = Schedulers.elastic(),
                          private val healthState: HealthState = HealthState.INSTANCE) {
     private val simulations = ConcurrentHashMap<UUID, Status>()
 
@@ -76,11 +76,11 @@ class OngoingSimulations(private val scheduler: Scheduler = Schedulers.elastic()
     }
 }
 
-sealed class Status(val message: String) {
+internal sealed class Status(val message: String) {
     override fun toString() = this::class.simpleName ?: "null"
 }
 
-object StatusNotFound : Status("not found")
-object StatusOngoing : Status("ongoing")
-object StatusSuccess : Status("success")
-data class StatusFailure(val cause: Throwable) : Status("Error ${cause.message}")
+internal object StatusNotFound : Status("not found")
+internal object StatusOngoing : Status("ongoing")
+internal object StatusSuccess : Status("success")
+internal data class StatusFailure(val cause: Throwable) : Status("Error ${cause.message}")