From fc48504605170d4d37346738602de388daa36f25 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 16 Jun 2015 21:23:21 +0200 Subject: [PATCH] Make constants really constant This triggers a major sonar warning, and is insecure as these fields could get modified by anyone, throwing the system out of whack. Also optimize comparison and make sure the netconf QNameModule is cached. Also prevent unneeded QName instantiation. Also use an immutable list to hold arguments, preventing a copy in builders. Change-Id: I74647c444ec273066fc4727618b35c92386ba77c Signed-off-by: Robert Varga --- .../util/NetconfMessageTransformUtil.java | 78 +++++++++---------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/util/NetconfMessageTransformUtil.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/util/NetconfMessageTransformUtil.java index 9dc455c051..f1586b1e49 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/util/NetconfMessageTransformUtil.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/util/NetconfMessageTransformUtil.java @@ -9,8 +9,8 @@ package org.opendaylight.controller.sal.connect.netconf.util; import com.google.common.base.Optional; import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Lists; import java.io.IOException; import java.net.URI; import java.util.AbstractMap; @@ -87,45 +87,46 @@ public class NetconfMessageTransformUtil { public static final QName IETF_NETCONF_NOTIFICATIONS = QName.create(NetconfCapabilityChange.QNAME, "ietf-netconf-notifications"); - public static URI NETCONF_URI = URI.create("urn:ietf:params:xml:ns:netconf:base:1.0"); - public static QName NETCONF_QNAME = QName.create(NETCONF_URI.toString(), "2011-06-01", "netconf"); - public static QName NETCONF_DATA_QNAME = QName.create(NETCONF_QNAME, "data"); - public static QName NETCONF_RPC_REPLY_QNAME = QName.create(NETCONF_QNAME, "rpc-reply"); - public static QName NETCONF_OK_QNAME = QName.create(NETCONF_QNAME, "ok"); - public static QName NETCONF_ERROR_OPTION_QNAME = QName.create(NETCONF_QNAME, "error-option"); - public static QName NETCONF_RUNNING_QNAME = QName.create(NETCONF_QNAME, "running"); - public static QName NETCONF_SOURCE_QNAME = QName.create(NETCONF_QNAME, "source"); - public static QName NETCONF_CANDIDATE_QNAME = QName.create(NETCONF_QNAME, "candidate"); - public static QName NETCONF_TARGET_QNAME = QName.create(NETCONF_QNAME, "target"); - public static QName NETCONF_CONFIG_QNAME = QName.create(NETCONF_QNAME, "config"); - public static QName NETCONF_COMMIT_QNAME = QName.create(NETCONF_QNAME, "commit"); - public static QName NETCONF_VALIDATE_QNAME = QName.create(NETCONF_QNAME, "validate"); - public static QName NETCONF_COPY_CONFIG_QNAME = QName.create(NETCONF_QNAME, "copy-config"); - public static QName NETCONF_OPERATION_QNAME = QName.create(NETCONF_QNAME, "operation"); - public static QName NETCONF_DEFAULT_OPERATION_QNAME = QName.create(NETCONF_OPERATION_QNAME, "default-operation"); - public static QName NETCONF_EDIT_CONFIG_QNAME = QName.create(NETCONF_QNAME, "edit-config"); - public static QName NETCONF_GET_CONFIG_QNAME = QName.create(NETCONF_QNAME, "get-config"); - public static QName NETCONF_DISCARD_CHANGES_QNAME = QName.create(NETCONF_QNAME, "discard-changes"); - public static QName NETCONF_TYPE_QNAME = QName.create(NETCONF_QNAME, "type"); - public static QName NETCONF_FILTER_QNAME = QName.create(NETCONF_QNAME, "filter"); - public static QName NETCONF_GET_QNAME = QName.create(NETCONF_QNAME, "get"); - public static QName NETCONF_RPC_QNAME = QName.create(NETCONF_QNAME, "rpc"); - - public static URI NETCONF_ROLLBACK_ON_ERROR_URI = URI + public static final QName NETCONF_QNAME = QName.cachedReference(QName.create("urn:ietf:params:xml:ns:netconf:base:1.0", "2011-06-01", "netconf")); + public static final URI NETCONF_URI = NETCONF_QNAME.getNamespace(); + + public static final QName NETCONF_DATA_QNAME = QName.create(NETCONF_QNAME, "data"); + public static final QName NETCONF_RPC_REPLY_QNAME = QName.create(NETCONF_QNAME, "rpc-reply"); + public static final QName NETCONF_OK_QNAME = QName.create(NETCONF_QNAME, "ok"); + public static final QName NETCONF_ERROR_OPTION_QNAME = QName.create(NETCONF_QNAME, "error-option"); + public static final QName NETCONF_RUNNING_QNAME = QName.create(NETCONF_QNAME, "running"); + public static final QName NETCONF_SOURCE_QNAME = QName.create(NETCONF_QNAME, "source"); + public static final QName NETCONF_CANDIDATE_QNAME = QName.create(NETCONF_QNAME, "candidate"); + public static final QName NETCONF_TARGET_QNAME = QName.create(NETCONF_QNAME, "target"); + public static final QName NETCONF_CONFIG_QNAME = QName.create(NETCONF_QNAME, "config"); + public static final QName NETCONF_COMMIT_QNAME = QName.create(NETCONF_QNAME, "commit"); + public static final QName NETCONF_VALIDATE_QNAME = QName.create(NETCONF_QNAME, "validate"); + public static final QName NETCONF_COPY_CONFIG_QNAME = QName.create(NETCONF_QNAME, "copy-config"); + public static final QName NETCONF_OPERATION_QNAME = QName.create(NETCONF_QNAME, "operation"); + public static final QName NETCONF_DEFAULT_OPERATION_QNAME = QName.create(NETCONF_OPERATION_QNAME, "default-operation"); + public static final QName NETCONF_EDIT_CONFIG_QNAME = QName.create(NETCONF_QNAME, "edit-config"); + public static final QName NETCONF_GET_CONFIG_QNAME = QName.create(NETCONF_QNAME, "get-config"); + public static final QName NETCONF_DISCARD_CHANGES_QNAME = QName.create(NETCONF_QNAME, "discard-changes"); + public static final QName NETCONF_TYPE_QNAME = QName.create(NETCONF_QNAME, "type"); + public static final QName NETCONF_FILTER_QNAME = QName.create(NETCONF_QNAME, "filter"); + public static final QName NETCONF_GET_QNAME = QName.create(NETCONF_QNAME, "get"); + public static final QName NETCONF_RPC_QNAME = QName.create(NETCONF_QNAME, "rpc"); + + public static final URI NETCONF_ROLLBACK_ON_ERROR_URI = URI .create("urn:ietf:params:netconf:capability:rollback-on-error:1.0"); - public static String ROLLBACK_ON_ERROR_OPTION = "rollback-on-error"; + public static final String ROLLBACK_ON_ERROR_OPTION = "rollback-on-error"; - public static URI NETCONF_CANDIDATE_URI = URI + public static final URI NETCONF_CANDIDATE_URI = URI .create("urn:ietf:params:netconf:capability:candidate:1.0"); - public static URI NETCONF_NOTIFICATONS_URI = URI + public static final URI NETCONF_NOTIFICATONS_URI = URI .create("urn:ietf:params:netconf:capability:notification:1.0"); - public static URI NETCONF_RUNNING_WRITABLE_URI = URI + public static final URI NETCONF_RUNNING_WRITABLE_URI = URI .create("urn:ietf:params:netconf:capability:writable-running:1.0"); - public static QName NETCONF_LOCK_QNAME = QName.create(NETCONF_QNAME, "lock"); - public static QName NETCONF_UNLOCK_QNAME = QName.create(NETCONF_QNAME, "unlock"); + public static final QName NETCONF_LOCK_QNAME = QName.create(NETCONF_QNAME, "lock"); + public static final QName NETCONF_UNLOCK_QNAME = QName.create(NETCONF_QNAME, "unlock"); // Discard changes message public static final ContainerNode DISCARD_CHANGES_RPC_CONTENT = @@ -222,7 +223,7 @@ public class NetconfMessageTransformUtil { } private static ErrorSeverity toRpcErrorSeverity( final NetconfDocumentedException.ErrorSeverity severity ) { - switch( severity ) { + switch (severity) { case warning: return RpcError.ErrorSeverity.WARNING; default: @@ -231,7 +232,7 @@ public class NetconfMessageTransformUtil { } private static RpcError.ErrorType toRpcErrorType(final NetconfDocumentedException.ErrorType type) { - switch( type ) { + switch (type) { case protocol: return RpcError.ErrorType.PROTOCOL; case rpc: @@ -257,13 +258,12 @@ public class NetconfMessageTransformUtil { public static boolean isDataRetrievalOperation(final QName rpc) { return NETCONF_URI.equals(rpc.getNamespace()) - && (rpc.getLocalName().equals(NETCONF_GET_CONFIG_QNAME.getLocalName()) || rpc.getLocalName().equals( - NETCONF_GET_QNAME.getLocalName())); + && (NETCONF_GET_CONFIG_QNAME.getLocalName().equals(rpc.getLocalName()) + || NETCONF_GET_QNAME.getLocalName().equals(rpc.getLocalName())); } public static ContainerSchemaNode createSchemaForDataRead(final SchemaContext schemaContext) { - final QName config = QName.create(NETCONF_EDIT_CONFIG_QNAME, "data"); - return new NodeContainerProxy(config, schemaContext.getChildNodes()); + return new NodeContainerProxy(NETCONF_DATA_QNAME, schemaContext.getChildNodes()); } public static ContainerSchemaNode createSchemaForNotification(final NotificationDefinition next) { @@ -271,7 +271,7 @@ public class NetconfMessageTransformUtil { } public static ContainerNode wrap(final QName name, final DataContainerChild... node) { - return Builders.containerBuilder().withNodeIdentifier(toId(name)).withValue(Lists.newArrayList(node)).build(); + return Builders.containerBuilder().withNodeIdentifier(toId(name)).withValue(ImmutableList.copyOf(node)).build(); } public static DataContainerChild createEditConfigStructure(final SchemaContext ctx, final YangInstanceIdentifier dataPath, -- 2.36.6