From 7a591bb2fafa33278526578390433ee899742950 Mon Sep 17 00:00:00 2001 From: Benjamin Reed Date: Wed, 12 Jul 2023 15:28:09 -0400 Subject: [PATCH] java:S2259: Null pointers should not be dereferenced --- .../org/opennms/core/network/IPAddress.java | 5 +- .../java/org/opennms/core/criteria/Alias.java | 35 ++++--------- .../jmx/connection/JmxConnectionConfig.java | 14 ++--- .../taglibs/standard/lang/jstl/Coercions.java | 11 ++-- .../lang/jstl/FunctionInvocation.java | 1 + .../protocols/snmp/SnmpResponseHandler.java | 9 ++-- .../org/opennms/core/test/xml/XmlTest.java | 1 + .../web/assets/impl/AssetLocatorImpl.java | 12 +++-- .../DefaultBusinessServiceStateMachine.java | 18 +++---- .../rrd/RrdPersistOperationBuilder.java | 12 ++--- .../service/impl/DeviceConfigServiceImpl.java | 9 +++- .../service/impl/NodeTopologyServiceImpl.java | 31 +++++------ .../syslogd/ParserStageSequenceBuilder.java | 2 + .../netmgt/syslogd/BufferParserTest.java | 6 +-- .../internal/value/IntegerValue.java | 9 ++-- .../ClassificationRestServiceImpl.java | 19 ++++--- .../newts/converter/NewtsConverter.java | 13 ++--- .../nrtg/web/internal/NrtController.java | 9 ++-- .../poller/monitors/CiscoPingMibMonitor.java | 15 ++++-- .../netmgt/poller/monitors/DhcpMonitor.java | 6 +-- .../poller/monitors/DominoIIOPMonitor.java | 6 +-- .../reporting/dao/LegacyLocalReportsDao.java | 9 ++-- .../jasper/LegacyLocalJasperReportsDao.java | 9 ++-- .../DefaultRemoteRepositoryConfigDao.java | 9 ++-- .../svclayer/JasperReportService.java | 8 ++- .../org/opennms/netmgt/rt/RequestTracker.java | 12 ++--- .../bmp/parser/proto/bmp/PeerHeader.java | 6 +-- .../netflow/parser/session/TcpSession.java | 5 +- .../ticketd/DroolsTicketerConfigDao.java | 12 +++-- .../api/browsers/OnmsVaadinContainer.java | 16 +++--- .../breadcrumbs/BreadcrumbCriteria.java | 6 +-- .../app/internal/AlarmSearchProvider.java | 13 +++-- .../app/internal/DefaultMapViewManager.java | 11 ++-- .../app/internal/IpLikeSearchProvider.java | 11 ++-- .../LegacyApplicationStatusProvider.java | 14 +++-- .../graphml/GraphMLMetaTopologyProvider.java | 8 +-- .../internal/GraphMLMetaTopologyFactory.java | 6 +-- .../linkd/internal/LinkdSearchProvider.java | 9 +++- .../extender/PaxVaadinBundleTracker.java | 20 +++---- .../ui/mbeans/AttributesTable.java | 52 +++++++++++-------- ...llanceViewConfigurationCategoryWindow.java | 9 +++- .../netmgt/poller/monitors/VmwareMonitor.java | 8 ++- .../protocols/vmware/VmwareConfigBuilder.java | 14 +++-- .../northbounder/snmptrap/VarbindMapping.java | 8 +-- .../netmgt/config/groups/Groupinfo.java | 12 +++-- .../netmgt/config/BasicScheduleUtils.java | 6 +-- .../config/DatabaseSchemaConfigFactory.java | 16 ++++-- .../config/EventTranslatorConfigFactory.java | 7 ++- .../netmgt/config/NotifdConfigManager.java | 40 +++++++------- .../detector/dhcp/client/DhcpClient.java | 7 ++- .../RequisitionMonitoredService.java | 33 +++--------- .../service/DefaultProvisionService.java | 14 ++++- .../dns/DnsRequisitionUrlConnection.java | 14 ++--- .../org/opennms/netmgt/collectd/Collectd.java | 7 +-- .../notifd/BroadcastEventProcessor.java | 16 +++--- .../notifd/XMPPNotificationManager.java | 6 +-- .../netmgt/provisiond/jmx/Provisiond.java | 2 +- .../pollable/PollableNetwork.java | 13 +++-- .../opennms/netmgt/tl1d/Tl1ClientImpl.java | 8 +-- .../org/opennms/web/charts/ChartUtils.java | 16 +++--- .../v2/NodeMonitoredServiceRestService.java | 7 +-- .../discovery/ActionDiscoveryServlet.java | 8 ++- .../nodeManagement/DeleteGetNodesServlet.java | 39 +++++--------- .../event/filter/AcknowledgedByFilter.java | 5 +- .../protocols/wmi/TestingNewStructure.java | 10 ++-- .../opennms/protocols/nsclient/CheckNsc.java | 5 +- .../protocols/nsclient/NsclientManager.java | 8 ++- .../radius/monitor/RadiusAuthMonitor.java | 8 +-- .../http/collector/HttpCollectionHandler.java | 5 +- .../AbstractOpenNMSSeleniumHelper.java | 3 ++ .../smoketest/ui/framework/TextInput.java | 11 ++-- .../smoketest/utils/TestContainerUtils.java | 17 +++--- .../snmp/PropertiesBackedManagedObject.java | 6 +-- 73 files changed, 472 insertions(+), 395 deletions(-) diff --git a/core/api/src/main/java/org/opennms/core/network/IPAddress.java b/core/api/src/main/java/org/opennms/core/network/IPAddress.java index 7510f5747fca..427b5a683295 100644 --- a/core/api/src/main/java/org/opennms/core/network/IPAddress.java +++ b/core/api/src/main/java/org/opennms/core/network/IPAddress.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2014-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -75,6 +75,7 @@ public byte[] toOctets() { @Override public boolean equals(final Object obj) { + if (obj == null) return false; if (obj instanceof IPAddress) { return Arrays.equals(m_inetAddress.getAddress(), ((IPAddress) obj).m_inetAddress.getAddress()); } diff --git a/core/criteria/src/main/java/org/opennms/core/criteria/Alias.java b/core/criteria/src/main/java/org/opennms/core/criteria/Alias.java index 32b389a944de..4e1099ea543e 100644 --- a/core/criteria/src/main/java/org/opennms/core/criteria/Alias.java +++ b/core/criteria/src/main/java/org/opennms/core/criteria/Alias.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2012-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2012-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -28,6 +28,8 @@ package org.opennms.core.criteria; +import java.util.Objects; + import org.opennms.core.criteria.restrictions.Restriction; public class Alias { @@ -90,13 +92,7 @@ public void setJoinCondition(Restriction joinCondition) { @Override public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((m_alias == null) ? 0 : m_alias.hashCode()); - result = prime * result + ((m_associationPath == null) ? 0 : m_associationPath.hashCode()); - result = prime * result + ((m_type == null) ? 0 : m_type.hashCode()); - result = prime * result + ((m_joinCondition == null) ? 0 : m_joinCondition.hashCode()); - return result; + return Objects.hash(m_alias, m_associationPath, m_type, m_joinCondition); } @Override @@ -104,22 +100,11 @@ public boolean equals(final Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Alias)) return false; - final Alias other = (Alias) obj; - if (m_alias == null) { - if (other.m_alias != null) return false; - } else if (!m_alias.equals(other.m_alias)) { - return false; - } - if (m_associationPath == null) { - if (other.m_associationPath != null) return false; - } else if (!m_associationPath.equals(other.m_associationPath)) { - return false; - } - if (m_type != other.m_type) return false; - if (m_joinCondition == null && other.m_joinCondition != null) return false; - if (m_joinCondition != null && other.m_joinCondition == null) return false; - if (!m_joinCondition.equals(other.m_joinCondition)) return false; - return true; + final Alias that = (Alias) obj; + return Objects.equals(this.m_alias, that.m_alias) + && Objects.equals(this.m_associationPath, that.m_associationPath) + && Objects.equals(this.m_type, that.m_type) + && Objects.equals(this.m_joinCondition, that.m_joinCondition); } @Override diff --git a/core/jmx/api/src/main/java/org/opennms/netmgt/jmx/connection/JmxConnectionConfig.java b/core/jmx/api/src/main/java/org/opennms/netmgt/jmx/connection/JmxConnectionConfig.java index 3bc4190a38ff..f30ece662951 100644 --- a/core/jmx/api/src/main/java/org/opennms/netmgt/jmx/connection/JmxConnectionConfig.java +++ b/core/jmx/api/src/main/java/org/opennms/netmgt/jmx/connection/JmxConnectionConfig.java @@ -62,18 +62,18 @@ public String getFactory() { } public boolean isLocalConnection() throws MalformedURLException { - Objects.requireNonNull(getIpAddress()); - Objects.requireNonNull(getPort()); + final var addr = Objects.requireNonNull(getIpAddress()); + final var jvmPort = Objects.requireNonNull(getPort()); // If we're trying to create a connection to a localhost address... - if (getIpAddress().isLoopbackAddress()) { + if (addr.isLoopbackAddress()) { final String jmxPort = System.getProperty(JMX_PORT_SYSTEM_PROPERTY); // returns null if REMOTE JMX is enabled // ... and if the port matches the port of the current JVM... - if (getPort().equals(jmxPort) || - // ... or if remote JMX RMI is disabled and we're attempting to connect - // to the default OpenNMS JMX port... - (jmxPort == null && DEFAULT_OPENNMS_JMX_PORT.equals(getPort()))) { + if (jvmPort.equals(jmxPort)) { + return true; + } + if (jmxPort == null && DEFAULT_OPENNMS_JMX_PORT.equals(jvmPort)) { return true; } } diff --git a/core/jstl-support/src/main/java/org/apache/taglibs/standard/lang/jstl/Coercions.java b/core/jstl-support/src/main/java/org/apache/taglibs/standard/lang/jstl/Coercions.java index 8349341da8f5..b3f63e9fb53b 100644 --- a/core/jstl-support/src/main/java/org/apache/taglibs/standard/lang/jstl/Coercions.java +++ b/core/jstl-support/src/main/java/org/apache/taglibs/standard/lang/jstl/Coercions.java @@ -847,12 +847,11 @@ else if (pRight instanceof Comparable) { } else { - if (pLogger.isLoggingError ()) { - pLogger.logError - (Constants.ARITH_OP_BAD_TYPE, - pOperator.getOperatorSymbol (), - pLeft.getClass ().getName (), - pRight.getClass ().getName ()); + if (pLogger.isLoggingError()) { + pLogger.logError(Constants.ARITH_OP_BAD_TYPE, + pOperator.getOperatorSymbol(), + pLeft == null? null : pLeft.getClass().getName(), + pRight == null? null : pRight.getClass().getName()); } return Boolean.FALSE; } diff --git a/core/jstl-support/src/main/java/org/apache/taglibs/standard/lang/jstl/FunctionInvocation.java b/core/jstl-support/src/main/java/org/apache/taglibs/standard/lang/jstl/FunctionInvocation.java index 35aa34f856c4..217aa2ba9cab 100644 --- a/core/jstl-support/src/main/java/org/apache/taglibs/standard/lang/jstl/FunctionInvocation.java +++ b/core/jstl-support/src/main/java/org/apache/taglibs/standard/lang/jstl/FunctionInvocation.java @@ -38,6 +38,7 @@ * @author Shawn Bayern (in the style of Nathan's other classes) **/ +@SuppressWarnings("java:S2259") // sonar doesn't recognize pLogger.logError() as short-circuiting null checks public class FunctionInvocation extends Expression { diff --git a/core/snmp/joesnmp/src/main/java/org/opennms/protocols/snmp/SnmpResponseHandler.java b/core/snmp/joesnmp/src/main/java/org/opennms/protocols/snmp/SnmpResponseHandler.java index 57ccb26d8515..699dbd69334c 100644 --- a/core/snmp/joesnmp/src/main/java/org/opennms/protocols/snmp/SnmpResponseHandler.java +++ b/core/snmp/joesnmp/src/main/java/org/opennms/protocols/snmp/SnmpResponseHandler.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2011-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2011-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -123,8 +123,9 @@ public String getFirstResponseString() { return getResponseString(0); } - public SnmpSyntax getResponseValue(int index) { - return getResponseVarBind(index).getValue(); + public SnmpSyntax getResponseValue(final int index) { + final var vb = getResponseVarBind(index); + return vb == null ? null : vb.getValue(); } public String getResponseString(int index) { diff --git a/core/test-api/xml/src/main/java/org/opennms/core/test/xml/XmlTest.java b/core/test-api/xml/src/main/java/org/opennms/core/test/xml/XmlTest.java index d3dc50e0bbd6..882728d4b64f 100644 --- a/core/test-api/xml/src/main/java/org/opennms/core/test/xml/XmlTest.java +++ b/core/test-api/xml/src/main/java/org/opennms/core/test/xml/XmlTest.java @@ -400,6 +400,7 @@ public static void assertDepthEquals(final Object expected, Object actual) { assertDepthEquals(0, "", expected, actual); } + @SuppressWarnings("java:S2259") // sonar doesn't know fail() short-circuits with an AssertionError, so it thinks expected or actual could be null private static void assertDepthEquals(final int depth, final String propertyName, final Object expected, Object actual) { if (expected == null && actual == null) { return; diff --git a/core/web-assets/src/main/java/org/opennms/web/assets/impl/AssetLocatorImpl.java b/core/web-assets/src/main/java/org/opennms/web/assets/impl/AssetLocatorImpl.java index 357c22dbb838..26a68f8ea5cc 100644 --- a/core/web-assets/src/main/java/org/opennms/web/assets/impl/AssetLocatorImpl.java +++ b/core/web-assets/src/main/java/org/opennms/web/assets/impl/AssetLocatorImpl.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2017-2022 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2022 The OpenNMS Group, Inc. + * Copyright (C) 2017-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -345,12 +345,14 @@ private boolean resourcesMatch(final Resource a, final Resource b) { return aPath.equals(bPath); } + @SuppressWarnings("java:S2259") // sonar doesn't know that StringUtils.hasText null-checks private String getPath(final Resource resource) { String ret = null; if (resource instanceof UrlResource) { try { ret = resource.getURL().toExternalForm(); } catch (final IOException e) { + return null; } } else if (resource instanceof ClassPathResource) { ret = ((ClassPathResource) resource).getPath(); @@ -361,9 +363,13 @@ private String getPath(final Resource resource) { try { ret = resource.getURL().getPath(); } catch (final IOException e) { + return null; } } - return StringUtils.hasText(ret)? ret.startsWith("/")? ret.substring(1) : ret : null; + if (StringUtils.hasText(ret)) { + return ret.startsWith("/")? ret.substring(1) : ret; + } + return null; } @Override diff --git a/features/bsm/service/impl/src/main/java/org/opennms/netmgt/bsm/service/internal/DefaultBusinessServiceStateMachine.java b/features/bsm/service/impl/src/main/java/org/opennms/netmgt/bsm/service/internal/DefaultBusinessServiceStateMachine.java index 1504982a59a4..32b03a96e121 100644 --- a/features/bsm/service/impl/src/main/java/org/opennms/netmgt/bsm/service/internal/DefaultBusinessServiceStateMachine.java +++ b/features/bsm/service/impl/src/main/java/org/opennms/netmgt/bsm/service/internal/DefaultBusinessServiceStateMachine.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2016 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2016 The OpenNMS Group, Inc. + * Copyright (C) 2016-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -119,13 +119,13 @@ public void setBusinessServices(List businessServices) { } } - if (m_alarmProvider == null && reductionsKeysToLookup.size() > 0) { - LOG.warn("There are one or more reduction keys to lookup, but no alarm provider is set."); - } else { - // Query the status of the reductions keys that were added - // We do this so that we can immediately reflect the state of the new - // graph without having to wait for calls to handleNewOrUpdatedAlarm() - if (reductionsKeysToLookup.size() > 0) { + if (!reductionsKeysToLookup.isEmpty()) { + if (m_alarmProvider == null) { + LOG.warn("There are one or more reduction keys to lookup, but no alarm provider is set."); + } else { + // Query the status of the reductions keys that were added + // We do this so that we can immediately reflect the state of the new + // graph without having to wait for calls to handleNewOrUpdatedAlarm() final Map lookup = m_alarmProvider.lookup(reductionsKeysToLookup); for (Entry eachEntry : lookup.entrySet()) { updateAndPropagateVertex(g, g.getVertexByReductionKey(eachEntry.getKey()), eachEntry.getValue().getStatus()); diff --git a/features/collection/persistence-rrd/src/main/java/org/opennms/netmgt/collection/persistence/rrd/RrdPersistOperationBuilder.java b/features/collection/persistence-rrd/src/main/java/org/opennms/netmgt/collection/persistence/rrd/RrdPersistOperationBuilder.java index a19fc72421ca..24352f3fa1cd 100644 --- a/features/collection/persistence-rrd/src/main/java/org/opennms/netmgt/collection/persistence/rrd/RrdPersistOperationBuilder.java +++ b/features/collection/persistence-rrd/src/main/java/org/opennms/netmgt/collection/persistence/rrd/RrdPersistOperationBuilder.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2006-2020 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2006-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -61,12 +61,6 @@ import org.slf4j.LoggerFactory; import org.springframework.util.Assert; -/** - *

PersistOperationBuilder class.

- * - * @author ranger - * @version $Id: $ - */ public class RrdPersistOperationBuilder implements PersistOperationBuilder { private static final Logger LOG = LoggerFactory.getLogger(RrdPersistOperationBuilder.class); @@ -287,7 +281,7 @@ private static boolean createRRD(RrdStrategy rrdStrategy, String creator, return true; } catch (Throwable e) { - String path = directory + File.separator + rrdName + rrdStrategy.getDefaultFileExtension(); + final var path = directory + File.separator + rrdName + (rrdStrategy == null? "" : rrdStrategy.getDefaultFileExtension()); LOG.error("createRRD: An error occurred creating rrdfile {}", path, e); throw new org.opennms.netmgt.rrd.RrdException("An error occurred creating rrdfile " + path + ": " + e, e); } diff --git a/features/device-config/service/src/main/java/org/opennms/features/deviceconfig/service/impl/DeviceConfigServiceImpl.java b/features/device-config/service/src/main/java/org/opennms/features/deviceconfig/service/impl/DeviceConfigServiceImpl.java index bd4d96dfdd35..1653d9f20210 100644 --- a/features/device-config/service/src/main/java/org/opennms/features/deviceconfig/service/impl/DeviceConfigServiceImpl.java +++ b/features/device-config/service/src/main/java/org/opennms/features/deviceconfig/service/impl/DeviceConfigServiceImpl.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2022 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2022 The OpenNMS Group, Inc. + * Copyright (C) 2022-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -35,6 +35,7 @@ import java.net.UnknownHostException; import java.util.AbstractMap; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.concurrent.CompletableFuture; @@ -129,6 +130,10 @@ public CompletableFuture getDeviceConfig(String ipAddress, String public List getRetrievalDefinitions(final String ipAddress, final String location) { final var iface = findMatchingInterface(ipAddress, location, null); + if (iface == null) { + return Collections.emptyList(); + } + return iface // Get all device config services defined for this interface .getMonitoredServices().stream() diff --git a/features/enlinkd/service/impl/src/main/java/org/opennms/netmgt/enlinkd/service/impl/NodeTopologyServiceImpl.java b/features/enlinkd/service/impl/src/main/java/org/opennms/netmgt/enlinkd/service/impl/NodeTopologyServiceImpl.java index 1dafa904e559..04a8bae52476 100644 --- a/features/enlinkd/service/impl/src/main/java/org/opennms/netmgt/enlinkd/service/impl/NodeTopologyServiceImpl.java +++ b/features/enlinkd/service/impl/src/main/java/org/opennms/netmgt/enlinkd/service/impl/NodeTopologyServiceImpl.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2014-2021 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2021 The OpenNMS Group, Inc. + * Copyright (C) 2014-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -129,21 +129,18 @@ public Set findAllLegalLoopbacks() { .collect(Collectors.toSet()); } - private SubNetwork getNextSubnetwork(final Set subNetworks) { + private static SubNetwork getNextSubnetwork(final Set subNetworks) { SubNetwork starting = null; - for (SubNetwork subnet : subNetworks) { + for (final var subnet : subNetworks) { if (starting == null) { starting=subnet; - continue; - } - if (starting.getNodeIds().size() < subnet.getNodeIds().size()) { - starting = subnet; - continue; - } - if (starting.getNodeIds().size() == subnet.getNodeIds().size() - && - InetAddressUtils.difference(starting.getNetwork(), subnet.getNetwork()).signum() > 0) { + } else if (starting.getNodeIds().size() < subnet.getNodeIds().size()) { starting = subnet; + } else { + if (starting.getNodeIds().size() == subnet.getNodeIds().size() + && InetAddressUtils.difference(starting.getNetwork(), subnet.getNetwork()).signum() > 0) { + starting = subnet; + } } } return starting; @@ -193,9 +190,13 @@ public Map getNodeidPriorityMap(ProtocolSupported protocol) { LOG.info("getNodeidPriorityMap: subnetworks.size: {}", allLegalSubnets.size()); int priority = 0; int loop = 0; - while (allLegalSubnets.size() > 0) { + while (!allLegalSubnets.isEmpty()) { loop++; - SubNetwork start = getNextSubnetwork(allLegalSubnets); + final var start = getNextSubnetwork(allLegalSubnets); + if (start == null) { + LOG.warn("List of legal subnets isn't completely processed, but we were unable to match next subnetwork. Stopping processing. remainder={}", allLegalSubnets); + break; + } allLegalSubnets.remove(start); LOG.info("getNodeidPriorityMap: loop-{}: start: {}", loop, start); LOG.info("getNodeidPriorityMap: loop-{}: priority: {}", loop, priority); diff --git a/features/events/syslog/src/main/java/org/opennms/netmgt/syslogd/ParserStageSequenceBuilder.java b/features/events/syslog/src/main/java/org/opennms/netmgt/syslogd/ParserStageSequenceBuilder.java index 3b31f887be27..9e10d0d8e8c6 100644 --- a/features/events/syslog/src/main/java/org/opennms/netmgt/syslogd/ParserStageSequenceBuilder.java +++ b/features/events/syslog/src/main/java/org/opennms/netmgt/syslogd/ParserStageSequenceBuilder.java @@ -963,6 +963,7 @@ public MatchIntegerUntil(BiConsumer consumer, String ends) public Integer getValue(ParserStageState state) { // Trim the leading zeros from this value String value = getAccumulatedValue(state); + if (value == null) return null; boolean trimmed = false; while (value.startsWith("0")) { value = value.substring(1); @@ -1020,6 +1021,7 @@ public Integer getValue(ParserStageState state) { * @param value * @return */ + @SuppressWarnings("java:S2259") // HOW exactly is trimmed nullable? it's a primitive! public static int trimAndConvert(String value) { if (value == null) { return 0; diff --git a/features/events/syslog/src/test/java/org/opennms/netmgt/syslogd/BufferParserTest.java b/features/events/syslog/src/test/java/org/opennms/netmgt/syslogd/BufferParserTest.java index 44b6b604b55b..c26abba858b6 100644 --- a/features/events/syslog/src/test/java/org/opennms/netmgt/syslogd/BufferParserTest.java +++ b/features/events/syslog/src/test/java/org/opennms/netmgt/syslogd/BufferParserTest.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2016-2016 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2016 The OpenNMS Group, Inc. + * Copyright (C) 2016-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -159,7 +159,7 @@ public void testDifferentImplementations() throws Exception { radixParser.teach(GrokParserStageSequenceBuilder.parseGrok("<%{INT:facilityPriority}>%{NOSPACE:messageId}: %{INT:year}-%{INT:month}-%{INT:day} %{STRING:hostname} %{STRING:message}").toArray(new ParserStage[0])); radixParser.teach(GrokParserStageSequenceBuilder.parseGrok("<%{INT:facilityPriority}> %{INT:year}-%{INT:month}-%{INT:day} %{STRING:hostname} %{STRING:message}").toArray(new ParserStage[0])); - final int iterations = 100000; + final int iterations = 1_000_000; { CompletableFuture event = null; diff --git a/features/flows/classification/engine/impl/src/main/java/org/opennms/netmgt/flows/classification/internal/value/IntegerValue.java b/features/flows/classification/engine/impl/src/main/java/org/opennms/netmgt/flows/classification/internal/value/IntegerValue.java index 683f0b1a7e31..1dd368fe6b33 100644 --- a/features/flows/classification/engine/impl/src/main/java/org/opennms/netmgt/flows/classification/internal/value/IntegerValue.java +++ b/features/flows/classification/engine/impl/src/main/java/org/opennms/netmgt/flows/classification/internal/value/IntegerValue.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2017-2017 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2017 The OpenNMS Group, Inc. + * Copyright (C) 2017-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -31,11 +31,12 @@ public class IntegerValue { private Integer value; - public IntegerValue(StringValue input) { + public IntegerValue(final StringValue input) { if (input == null || input.isNullOrEmpty()) { this.value = null; + } else { + this.value = Integer.parseInt(input.getValue()); } - this.value = Integer.parseInt(input.getValue()); } public boolean isNull() { diff --git a/features/flows/rest/impl/src/main/java/org/opennms/netmgt/flows/rest/internal/classification/ClassificationRestServiceImpl.java b/features/flows/rest/impl/src/main/java/org/opennms/netmgt/flows/rest/internal/classification/ClassificationRestServiceImpl.java index db85e5f187f8..dc8837cbcaf8 100644 --- a/features/flows/rest/impl/src/main/java/org/opennms/netmgt/flows/rest/internal/classification/ClassificationRestServiceImpl.java +++ b/features/flows/rest/impl/src/main/java/org/opennms/netmgt/flows/rest/internal/classification/ClassificationRestServiceImpl.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2010-2015 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2015 The OpenNMS Group, Inc. + * Copyright (C) 2010-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -64,11 +64,13 @@ import org.opennms.web.utils.QueryParametersBuilder; import org.opennms.web.utils.ResponseUtils; import org.opennms.web.utils.UriInfoUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.common.base.Strings; public class ClassificationRestServiceImpl implements ClassificationRestService { - + private static final Logger LOG = LoggerFactory.getLogger(ClassificationRestServiceImpl.class); private final ClassificationService classificationService; public ClassificationRestServiceImpl(ClassificationService classificationService) { @@ -132,6 +134,9 @@ public Response getRule(int id) { @Override public Response saveRule(RuleDTO ruleDTO) { final Rule rule = convert(ruleDTO); + if (rule == null) { + LOG.debug("attempted to save a null rule"); + } rule.setId(null); final int ruleId = classificationService.saveRule(rule); final UriBuilder builder = UriBuilder.fromResource(ClassificationRestService.class); @@ -166,8 +171,8 @@ public Response deleteRule(int id) { @Override public Response updateRule(int id, RuleDTO newValue) { // Update - final Rule rule = classificationService.getRule(id); - final Rule newRule = convert(newValue); + final Rule rule = Objects.requireNonNull(classificationService.getRule(id)); + final Rule newRule = Objects.requireNonNull(convert(newValue)); rule.setProtocol(newRule.getProtocol()); rule.setDstPort(newRule.getDstPort()); rule.setDstAddress(newRule.getDstAddress()); @@ -187,7 +192,7 @@ public Response updateRule(int id, RuleDTO newValue) { Integer newPosition = newValue.getPosition(); if(newPosition != null) { int oldPosition = rule.getPosition(); - int newComputedPosition = (newPosition > oldPosition) ? newPosition + 1 : newPosition; + int newComputedPosition = (newPosition > oldPosition) ? (newPosition + 1) : newPosition; rule.setPosition(newComputedPosition); } @@ -265,7 +270,7 @@ private Response getGroupAsJson(int groupId){ @Override public Response saveGroup(GroupDTO groupDTO) { - final Group group = convert(groupDTO); + final Group group = Objects.requireNonNull(convert(groupDTO)); group.setId(null); final int groupId = classificationService.saveGroup(group); final UriBuilder builder = UriBuilder.fromResource(ClassificationRestService.class); diff --git a/features/newts-repository-converter/src/main/java/org/opennms/features/newts/converter/NewtsConverter.java b/features/newts-repository-converter/src/main/java/org/opennms/features/newts/converter/NewtsConverter.java index 744b59807b25..8f6957fd3be8 100644 --- a/features/newts-repository-converter/src/main/java/org/opennms/features/newts/converter/NewtsConverter.java +++ b/features/newts-repository-converter/src/main/java/org/opennms/features/newts/converter/NewtsConverter.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2013-2015 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2015 The OpenNMS Group, Inc. + * Copyright (C) 2013-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -47,6 +47,7 @@ import org.joda.time.Period; import org.joda.time.format.PeriodFormatter; import org.joda.time.format.PeriodFormatterBuilder; +import org.jrobin.core.RrdException; import org.opennms.core.db.DataSourceFactory; import org.opennms.netmgt.model.ResourcePath; import org.opennms.netmgt.newts.support.NewtsUtils; @@ -514,10 +515,11 @@ private void processResource(final Path resourceDir, break; default: - file = null; + LOG.error("Unhandled storage type: {}", this.storageTool); + return; } - if (!Files.exists(file)) { + if (file == null || !Files.exists(file)) { LOG.error("File not found: {}", file); return; } @@ -536,8 +538,7 @@ private void processResource(final Path resourceDir, default: rrd = null; } - - } catch (final Exception e) { + } catch (final IOException|RrdException e) { LOG.error("Can't parse JRB/RRD file: {}", file, e); return; } diff --git a/features/nrtg/web/src/main/java/org/opennms/nrtg/web/internal/NrtController.java b/features/nrtg/web/src/main/java/org/opennms/nrtg/web/internal/NrtController.java index aa17b09ef02b..c52c885fd138 100644 --- a/features/nrtg/web/src/main/java/org/opennms/nrtg/web/internal/NrtController.java +++ b/features/nrtg/web/src/main/java/org/opennms/nrtg/web/internal/NrtController.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2012-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2012-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -131,7 +131,10 @@ public ModelAndView nrtStart(ResourceId resourceId, String report, HttpSession h List collectionJobs = createCollectionJobs(reportResource, prefabGraph, nrtCollectionTaskId); for (CollectionJob collectionJob : collectionJobs) { m_nrtBroker.publishCollectionJob(collectionJob); - getCollectionJobMap(httpSession, true).put(nrtCollectionTaskId, collectionJob); + final var jobMap = getCollectionJobMap(httpSession, true); + if (jobMap != null) { + jobMap.put(nrtCollectionTaskId, collectionJob); + } } ModelAndView modelAndView = new ModelAndView("nrt/realtime.json"); diff --git a/features/poller/monitors/core/src/main/java/org/opennms/netmgt/poller/monitors/CiscoPingMibMonitor.java b/features/poller/monitors/core/src/main/java/org/opennms/netmgt/poller/monitors/CiscoPingMibMonitor.java index 7d2b573d0a92..1ad0f354bff0 100644 --- a/features/poller/monitors/core/src/main/java/org/opennms/netmgt/poller/monitors/CiscoPingMibMonitor.java +++ b/features/poller/monitors/core/src/main/java/org/opennms/netmgt/poller/monitors/CiscoPingMibMonitor.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2011-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2011-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -490,9 +490,14 @@ public PollStatus poll(MonitoredService svc, Map parameters) { private void cleanupCurrentEntry(CiscoPingEntry pingEntry, InetAddress proxyIpAddr, SnmpAgentConfig agentConfig) { pingEntry.setCiscoPingEntryStatus(ROWSTATUS_DESTROY); - SnmpValue[] destroyValues = SnmpUtils.set(agentConfig, pingEntry.generateRowStatusOids(), pingEntry.generateRowStatusValues()); - if (destroyValues == null) LOG.warn("SNMP SET failed to delete just-used ciscoPingEntry on proxy interface {} with instance ID {}", proxyIpAddr, pingEntry.getCiscoPingSerialNumber()); - if (destroyValues[0].toInt() != ROWSTATUS_DESTROY) LOG.warn("SNMP SET to delete just-used ciscoPingEntry indicated row not deleted on proxy interface {} with instance ID {}", proxyIpAddr, pingEntry.getCiscoPingSerialNumber()); + final SnmpValue[] destroyValues = SnmpUtils.set(agentConfig, pingEntry.generateRowStatusOids(), pingEntry.generateRowStatusValues()); + if (destroyValues == null || destroyValues[0] == null) { + LOG.warn("SNMP SET failed to delete just-used ciscoPingEntry on proxy interface {} with instance ID {}", proxyIpAddr, pingEntry.getCiscoPingSerialNumber()); + return; + } + if (destroyValues[0].toInt() != ROWSTATUS_DESTROY) { + LOG.warn("SNMP SET to delete just-used ciscoPingEntry indicated row not deleted on proxy interface {} with instance ID {}", proxyIpAddr, pingEntry.getCiscoPingSerialNumber()); + } } private InetAddress determineTargetAddress(MonitoredService svc, Map parameters) { diff --git a/features/poller/monitors/core/src/main/java/org/opennms/netmgt/poller/monitors/DhcpMonitor.java b/features/poller/monitors/core/src/main/java/org/opennms/netmgt/poller/monitors/DhcpMonitor.java index b4b015358996..b6cecd33cc21 100644 --- a/features/poller/monitors/core/src/main/java/org/opennms/netmgt/poller/monitors/DhcpMonitor.java +++ b/features/poller/monitors/core/src/main/java/org/opennms/netmgt/poller/monitors/DhcpMonitor.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2002-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2002-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -94,7 +94,7 @@ public PollStatus poll(final MonitoredService svc, final Map par tracker.nextAttempt(); } - return transaction.isSuccess() ? + return (transaction != null && transaction.isSuccess()) ? PollStatus.available((double) transaction.getResponseTime()) : PollStatus.unavailable("DHCP service unavailable: " + "No response received from " + svc.getIpAddr() + " within " + timeout + " and " + retries + " attempt(s). " + diff --git a/features/poller/monitors/core/src/main/java/org/opennms/netmgt/poller/monitors/DominoIIOPMonitor.java b/features/poller/monitors/core/src/main/java/org/opennms/netmgt/poller/monitors/DominoIIOPMonitor.java index d0d43a1f932c..7bb962092093 100644 --- a/features/poller/monitors/core/src/main/java/org/opennms/netmgt/poller/monitors/DominoIIOPMonitor.java +++ b/features/poller/monitors/core/src/main/java/org/opennms/netmgt/poller/monitors/DominoIIOPMonitor.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2002-2015 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2015 The OpenNMS Group, Inc. + * Copyright (C) 2002-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -130,7 +130,7 @@ public PollStatus poll(MonitoredService svc, Map parameters) { PollStatus status = null; - for(tracker.reset(); tracker.shouldRetry() && !status.isAvailable(); tracker.nextAttempt()) { + for(tracker.reset(); tracker.shouldRetry() && (status == null || !status.isAvailable()); tracker.nextAttempt()) { Socket socket = null; try { // diff --git a/features/reporting/dao/src/main/java/org/opennms/features/reporting/dao/LegacyLocalReportsDao.java b/features/reporting/dao/src/main/java/org/opennms/features/reporting/dao/LegacyLocalReportsDao.java index 04c97f601894..6f741935f46f 100644 --- a/features/reporting/dao/src/main/java/org/opennms/features/reporting/dao/LegacyLocalReportsDao.java +++ b/features/reporting/dao/src/main/java/org/opennms/features/reporting/dao/LegacyLocalReportsDao.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2012-2017 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2017 The OpenNMS Group, Inc. + * Copyright (C) 2012-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -91,13 +91,14 @@ public void loadConfiguration() throws Exception { file = m_configResource.getFile(); Assert.notNull(file, "config file must be sot to a non-null value"); } catch (IOException e) { - logger.error("Resource '{}' does not seem to have an underlying File object.", m_configResource); + logger.error("Resource '{}' does not seem to have an underlying File object.", m_configResource, e); + return; } setLegacyLocalReportsDefinition(JaxbUtils.unmarshal(LegacyLocalReportsDefinition.class, file)); Assert.notNull(m_legacyLocalReportsDefinition, "unmarshall config file returned a null value."); logger.debug("Unmarshalling config file '{}'", file.getAbsolutePath()); - logger.debug("Local report definitions assigned: '{}'", m_legacyLocalReportsDefinition.toString()); + logger.debug("Local report definitions assigned: '{}'", m_legacyLocalReportsDefinition); } /** diff --git a/features/reporting/dao/src/main/java/org/opennms/features/reporting/dao/jasper/LegacyLocalJasperReportsDao.java b/features/reporting/dao/src/main/java/org/opennms/features/reporting/dao/jasper/LegacyLocalJasperReportsDao.java index 78fa627016f6..998db7a1ff3e 100644 --- a/features/reporting/dao/src/main/java/org/opennms/features/reporting/dao/jasper/LegacyLocalJasperReportsDao.java +++ b/features/reporting/dao/src/main/java/org/opennms/features/reporting/dao/jasper/LegacyLocalJasperReportsDao.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2012-2017 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2017 The OpenNMS Group, Inc. + * Copyright (C) 2012-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -98,13 +98,14 @@ public void loadConfiguration() throws Exception { try { file = m_configResource.getFile(); } catch (IOException e) { - logger.error("Resource '{}' does not seem to have an underlying File object.", m_configResource); + logger.error("Resource '{}' does not seem to have an underlying File object.", m_configResource, e); + return; } setLocalJasperReports(JaxbUtils.unmarshal(LocalJasperReports.class, file)); Assert.notNull(m_LocalJasperReports, "unmarshall config file returned a null value."); logger.debug("Unmarshalling config file '{}'", file.getAbsolutePath()); - logger.debug("Local report definitions assigned: '{}'", m_LocalJasperReports.toString()); + logger.debug("Local report definitions assigned: '{}'", m_LocalJasperReports); } /** diff --git a/features/reporting/dao/src/main/java/org/opennms/features/reporting/dao/remoterepository/DefaultRemoteRepositoryConfigDao.java b/features/reporting/dao/src/main/java/org/opennms/features/reporting/dao/remoterepository/DefaultRemoteRepositoryConfigDao.java index 5c5b285b94a9..86527808780e 100644 --- a/features/reporting/dao/src/main/java/org/opennms/features/reporting/dao/remoterepository/DefaultRemoteRepositoryConfigDao.java +++ b/features/reporting/dao/src/main/java/org/opennms/features/reporting/dao/remoterepository/DefaultRemoteRepositoryConfigDao.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2012-2017 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2017 The OpenNMS Group, Inc. + * Copyright (C) 2012-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -101,13 +101,14 @@ public void loadConfiguration() throws Exception { file = m_configResource.getFile(); Assert.notNull(file, "config file must be set to a non-null value"); } catch (IOException e) { - logger.error("Resource '{}' does not seem to have an underlying File object.", m_configResource); + logger.error("Resource '{}' does not seem to have an underlying File object.", m_configResource, e); + return; } setRemoteRepositoryConfig(JaxbUtils.unmarshal(RemoteRepositoryConfig.class, file)); Assert.notNull(m_remoteRepositoryConfig, "unmarshall config file returned a null value."); logger.debug("Unmarshalling config file '{}'", file.getAbsolutePath()); - logger.debug("Remote repository configuration assigned: '{}'", m_remoteRepositoryConfig.toString()); + logger.debug("Remote repository configuration assigned: '{}'", m_remoteRepositoryConfig); //TODO indigo: The jasper report version should be configured here? setJasperReportsVersion(m_remoteRepositoryConfig.getJasperReportsVersion()); diff --git a/features/reporting/jasper-reports/src/main/java/org/opennms/reporting/jasperreports/svclayer/JasperReportService.java b/features/reporting/jasper-reports/src/main/java/org/opennms/reporting/jasperreports/svclayer/JasperReportService.java index 35a9c0a08b6b..bc5f5eb1eeba 100644 --- a/features/reporting/jasper-reports/src/main/java/org/opennms/reporting/jasperreports/svclayer/JasperReportService.java +++ b/features/reporting/jasper-reports/src/main/java/org/opennms/reporting/jasperreports/svclayer/JasperReportService.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2010-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2010-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -636,6 +636,10 @@ private void compileSubreportsRecursively(JasperReport report) { @Override public void visitSubreport(JRSubreport subreport) { final String compiledSubreportName = evaluateToString(report, subreport.getExpression()); + if (compiledSubreportName == null) { + LOG.debug("Unable to determine sebreport name: {}, {}", report == null? null : report.getName(), subreport.getExpression()); + return; + } final String sourceSubreportName = compiledSubreportName.replace(".jasper", ".jrxml"); final File compiledSubreportFile = new File(compiledSubreportName); final File sourceSubreportFile = new File(sourceSubreportName); diff --git a/features/request-tracker/src/main/java/org/opennms/netmgt/rt/RequestTracker.java b/features/request-tracker/src/main/java/org/opennms/netmgt/rt/RequestTracker.java index 0bf97f0c71a5..b245e08fcb29 100644 --- a/features/request-tracker/src/main/java/org/opennms/netmgt/rt/RequestTracker.java +++ b/features/request-tracker/src/main/java/org/opennms/netmgt/rt/RequestTracker.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2010-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2010-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -215,15 +215,15 @@ public RTTicket getTicket(final Long ticketId, boolean getTextAttachment) throws LOG.trace("unhandled RT ticket attributes: {}", attributes.entrySet()); } - if (ticket.getText() == null || ticket.getText().equals("") && getTextAttachment) { + if ((ticket.getText() == null || ticket.getText().isBlank()) && getTextAttachment) { attributes = getTicketAttributes(ticketId + "/attachments"); - if (attributes.containsKey("attachments")) { + if (attributes != null && attributes.containsKey("attachments")) { final Matcher matcher = IN_TOKENS_PATTERN.matcher(attributes.get("attachments")); matcher.find(); final String attachmentId = matcher.group(1); - if (attachmentId != null && !"".equals(attachmentId)) { + if (attachmentId != null && !attachmentId.isBlank()) { attributes = getTicketAttributes(ticketId + "/attachments/" + attachmentId); - if (attributes.containsKey("content")) { + if (attributes != null && attributes.containsKey("content")) { ticket.setText(attributes.remove("content")); } } diff --git a/features/telemetry/protocols/bmp/parser/src/main/java/org/opennms/netmgt/telemetry/protocols/bmp/parser/proto/bmp/PeerHeader.java b/features/telemetry/protocols/bmp/parser/src/main/java/org/opennms/netmgt/telemetry/protocols/bmp/parser/proto/bmp/PeerHeader.java index b871f54899ae..25cba9942026 100644 --- a/features/telemetry/protocols/bmp/parser/src/main/java/org/opennms/netmgt/telemetry/protocols/bmp/parser/proto/bmp/PeerHeader.java +++ b/features/telemetry/protocols/bmp/parser/src/main/java/org/opennms/netmgt/telemetry/protocols/bmp/parser/proto/bmp/PeerHeader.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2019 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2019 The OpenNMS Group, Inc. + * Copyright (C) 2019-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -73,7 +73,7 @@ public PeerHeader(final ByteBuf buffer) throws InvalidPacketException { this.distinguisher = uint64(buffer); - this.address = this.flags.parsePaddedAddress(buffer); + this.address = this.flags == null? null : this.flags.parsePaddedAddress(buffer); this.as = uint32(buffer); this.id = InetAddressUtils.getInetAddress(bytes(buffer, 4)); diff --git a/features/telemetry/protocols/netflow/parser/src/main/java/org/opennms/netmgt/telemetry/protocols/netflow/parser/session/TcpSession.java b/features/telemetry/protocols/netflow/parser/src/main/java/org/opennms/netmgt/telemetry/protocols/netflow/parser/session/TcpSession.java index 581c6f2111cb..d0c01af2798e 100644 --- a/features/telemetry/protocols/netflow/parser/src/main/java/org/opennms/netmgt/telemetry/protocols/netflow/parser/session/TcpSession.java +++ b/features/telemetry/protocols/netflow/parser/src/main/java/org/opennms/netmgt/telemetry/protocols/netflow/parser/session/TcpSession.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2017 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2017 The OpenNMS Group, Inc. + * Copyright (C) 2017-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -115,6 +115,7 @@ private final static class TemplateKey { @Override public boolean equals(final Object o) { if (this == o) return true; + if (o == null) return false; if (o.getClass() != TemplateKey.class) return false; final TemplateKey that = (TemplateKey) o; diff --git a/features/ticketing/drools-integration/src/main/java/org/opennms/netmgt/ticketd/DroolsTicketerConfigDao.java b/features/ticketing/drools-integration/src/main/java/org/opennms/netmgt/ticketd/DroolsTicketerConfigDao.java index a43108936811..feb00290cc9c 100644 --- a/features/ticketing/drools-integration/src/main/java/org/opennms/netmgt/ticketd/DroolsTicketerConfigDao.java +++ b/features/ticketing/drools-integration/src/main/java/org/opennms/netmgt/ticketd/DroolsTicketerConfigDao.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2012-2016 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2016 The OpenNMS Group, Inc. + * Copyright (C) 2012-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -29,6 +29,7 @@ package org.opennms.netmgt.ticketd; import java.io.File; +import java.util.Objects; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; @@ -48,8 +49,8 @@ public class DroolsTicketerConfigDao { * Retrieves the properties defined in the drools-ticketer.properties file. * */ - private Configuration getProperties() { - String propsFile = new String(System.getProperty("opennms.home") + "/etc/drools-ticketer.properties"); + private static Configuration getProperties() { + String propsFile = System.getProperty("opennms.home") + "/etc/drools-ticketer.properties"; LOG.debug("loading properties from: {}", propsFile); Configuration config = null; @@ -63,6 +64,7 @@ private Configuration getProperties() { } public File getRulesFile() { - return new File(getProperties().getString("drools-ticketer.rules-file")); + final var properties = Objects.requireNonNull(getProperties()); + return new File(properties.getString("drools-ticketer.rules-file")); } } diff --git a/features/topology-map/org.opennms.features.topology.api/src/main/java/org/opennms/features/topology/api/browsers/OnmsVaadinContainer.java b/features/topology-map/org.opennms.features.topology.api/src/main/java/org/opennms/features/topology/api/browsers/OnmsVaadinContainer.java index 3c2b5f982c59..b92c26d7b8cf 100644 --- a/features/topology-map/org.opennms.features.topology.api/src/main/java/org/opennms/features/topology/api/browsers/OnmsVaadinContainer.java +++ b/features/topology-map/org.opennms.features.topology.api/src/main/java/org/opennms/features/topology/api/browsers/OnmsVaadinContainer.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2013-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2013-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -612,13 +612,13 @@ private synchronized void loadPropertiesIfNull() { BeanItem item = null; try { item = new BeanItem(m_datasource.createInstance(m_itemClass)); - } catch (InstantiationException e) { - LoggerFactory.getLogger(getClass()).error("Class {} does not have a default constructor. Cannot create an instance.", getItemClass()); - } catch (IllegalAccessException e) { - LoggerFactory.getLogger(getClass()).error("Class {} does not have a public default constructor. Cannot create an instance.", getItemClass()); + } catch (InstantiationException|IllegalAccessException e) { + LoggerFactory.getLogger(getClass()).error("Class {} does not have a valid constructor. Cannot create an instance.", getItemClass()); } - for (Object key : item.getItemPropertyIds()) { - m_properties.put(key, item.getItemProperty(key).getType()); + if (item != null) { + for (Object key : item.getItemPropertyIds()) { + m_properties.put(key, item.getItemProperty(key).getType()); + } } } } diff --git a/features/topology-map/org.opennms.features.topology.api/src/main/java/org/opennms/features/topology/api/support/breadcrumbs/BreadcrumbCriteria.java b/features/topology-map/org.opennms.features.topology.api/src/main/java/org/opennms/features/topology/api/support/breadcrumbs/BreadcrumbCriteria.java index 198c0cd798c2..6d5b452a19d3 100644 --- a/features/topology-map/org.opennms.features.topology.api/src/main/java/org/opennms/features/topology/api/support/breadcrumbs/BreadcrumbCriteria.java +++ b/features/topology-map/org.opennms.features.topology.api/src/main/java/org/opennms/features/topology/api/support/breadcrumbs/BreadcrumbCriteria.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2016 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2016 The OpenNMS Group, Inc. + * Copyright (C) 2016-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -152,7 +152,7 @@ public void handleClick(Breadcrumb breadcrumb, GraphContainer graphContainer) { } } else { Breadcrumb next = getNext(breadcrumb); - handleClick(graphContainer, targetGraphProvider, next.getSourceVertices(), breadcrumb); + handleClick(graphContainer, targetGraphProvider, next == null? Collections.emptyList() : next.getSourceVertices(), breadcrumb); } } diff --git a/features/topology-map/org.opennms.features.topology.app/src/main/java/org/opennms/features/topology/app/internal/AlarmSearchProvider.java b/features/topology-map/org.opennms.features.topology.app/src/main/java/org/opennms/features/topology/app/internal/AlarmSearchProvider.java index d73c5e2941ee..9a9c2f60e053 100644 --- a/features/topology-map/org.opennms.features.topology.app/src/main/java/org/opennms/features/topology/app/internal/AlarmSearchProvider.java +++ b/features/topology-map/org.opennms.features.topology.app/src/main/java/org/opennms/features/topology/app/internal/AlarmSearchProvider.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2014-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -29,6 +29,7 @@ package org.opennms.features.topology.app.internal; import java.util.ArrayList; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Objects; @@ -249,7 +250,11 @@ public boolean supportsPrefix(String searchPrefix) { public Set getVertexRefsBy(SearchResult searchResult, GraphContainer container) { LOG.debug("SearchProvider.getVertexRefsBy: called with search result: '{}'", searchResult); Criteria criterion = findCriterion(searchResult, container); - + + if (criterion == null) { + return Collections.emptySet(); + } + Set vertices = ((AlarmHopCriteria)criterion).getVertices(); LOG.debug("SearchProvider.getVertexRefsBy: found '{}' vertices.", vertices.size()); return vertices; @@ -350,4 +355,4 @@ private static CollapsibleCriteria getMatchingCriteriaById(GraphContainer graphC private AlarmHopCriteria createCriteria(SearchResult searchResult) { return new AlarmHopCriteria(new AlarmSearchResult(searchResult), alarmProvider); } -} \ No newline at end of file +} diff --git a/features/topology-map/org.opennms.features.topology.app/src/main/java/org/opennms/features/topology/app/internal/DefaultMapViewManager.java b/features/topology-map/org.opennms.features.topology.app/src/main/java/org/opennms/features/topology/app/internal/DefaultMapViewManager.java index 0d61025a46b6..e582e9bd00b2 100644 --- a/features/topology-map/org.opennms.features.topology.app/src/main/java/org/opennms/features/topology/app/internal/DefaultMapViewManager.java +++ b/features/topology-map/org.opennms.features.topology.app/src/main/java/org/opennms/features/topology/app/internal/DefaultMapViewManager.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2013-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2013-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -127,9 +127,8 @@ public void zoomToPoint(double scale, Point center) { @Override public BoundingBox getCurrentBoundingBox() { - if(m_viewPortWidth < 0 || m_mapBounds == null) { - //return m_mapBounds; - //throw new IllegalStateException("View port and maps bounds must be set"); + if(m_mapBounds == null) { + throw new IllegalStateException("map boundaries bounds must be set"); } BoundingBox mPrime = m_mapBounds.computeWithAspectRatio(getViewPortAspectRatio()); int width = (int)Math.round(Math.pow((double)mPrime.getWidth(), 1.0 - m_scale) * Math.pow((double)m_viewPortWidth/2.0, m_scale)); @@ -194,4 +193,4 @@ public String toString() { return "Map bounds [ " + m_mapBounds + "] || view [ width: " + getViewPortWidth() + " :: height: " + getViewPortHeight() + " ] || currentBoundingBox: [ " + getCurrentBoundingBox() + " ]" + " scale: " + getScale() + " || centerPoint: [ " + m_center + " ]" ; } -} \ No newline at end of file +} diff --git a/features/topology-map/org.opennms.features.topology.app/src/main/java/org/opennms/features/topology/app/internal/IpLikeSearchProvider.java b/features/topology-map/org.opennms.features.topology.app/src/main/java/org/opennms/features/topology/app/internal/IpLikeSearchProvider.java index c8e87f532f9a..a2eedc47525a 100644 --- a/features/topology-map/org.opennms.features.topology.app/src/main/java/org/opennms/features/topology/app/internal/IpLikeSearchProvider.java +++ b/features/topology-map/org.opennms.features.topology.app/src/main/java/org/opennms/features/topology/app/internal/IpLikeSearchProvider.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2014-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -30,6 +30,7 @@ import java.util.ArrayList; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Objects; @@ -217,7 +218,11 @@ public Set getVertexRefsBy(SearchResult searchResult, GraphContainer LOG.debug("SearchProvider->getVertexRefsBy: called with search result: '{}'", searchResult); org.opennms.features.topology.api.topo.Criteria criterion = findCriterion(searchResult.getId(), container); - + + if (criterion == null) { + return Collections.emptySet(); + } + Set vertices = ((IpLikeHopCriteria)criterion).getVertices(); LOG.debug("SearchProvider->getVertexRefsBy: found '{}' vertices.", vertices.size()); diff --git a/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.application/src/main/java/org/opennms/features/topology/plugins/topo/application/LegacyApplicationStatusProvider.java b/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.application/src/main/java/org/opennms/features/topology/plugins/topo/application/LegacyApplicationStatusProvider.java index 8fb2d70cef11..2eae494373d5 100644 --- a/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.application/src/main/java/org/opennms/features/topology/plugins/topo/application/LegacyApplicationStatusProvider.java +++ b/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.application/src/main/java/org/opennms/features/topology/plugins/topo/application/LegacyApplicationStatusProvider.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2015 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2015 The OpenNMS Group, Inc. + * Copyright (C) 2015-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -94,8 +94,11 @@ public Map getStatusForVertices(BackendGraph graph, Collectio Optional childSeverity = Optional.ofNullable(childStatus) .map(Status::computeStatus) .map(this::createSeverity); - if (childSeverity.isPresent() && maxSeverity.isLessThan(childSeverity.get())) { - maxSeverity = createSeverity(childStatus.computeStatus()); + if (childStatus != null && childSeverity.isPresent() && maxSeverity.isLessThan(childSeverity.get())) { + final OnmsSeverity newSeverity = createSeverity(childStatus.computeStatus()); + if (newSeverity != null) { + maxSeverity = newSeverity; + } } else if(!childSeverity.isPresent() || OnmsSeverity.NORMAL.equals(childSeverity.get())) { allChildrenHaveActiveAlarms = false; // at least one child has no active alarm } @@ -105,7 +108,7 @@ public Map getStatusForVertices(BackendGraph graph, Collectio } } - if (allChildrenHaveActiveAlarms && maxSeverity.isLessThan(OnmsSeverity.MAJOR)) { + if (allChildrenHaveActiveAlarms && (maxSeverity == null || maxSeverity.isLessThan(OnmsSeverity.MAJOR))) { maxSeverity = OnmsSeverity.MAJOR; } @@ -159,6 +162,7 @@ private List getVertexRefsForNamespace(Collection vertices } private static DefaultStatus createStatus(OnmsSeverity severity, long count) { + if (severity == null) return null; return new DefaultStatus(severity.getLabel(), count); } } diff --git a/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.graphml/src/main/java/org/opennms/features/topology/plugins/topo/graphml/GraphMLMetaTopologyProvider.java b/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.graphml/src/main/java/org/opennms/features/topology/plugins/topo/graphml/GraphMLMetaTopologyProvider.java index c13f575b607b..0566c91caf9e 100644 --- a/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.graphml/src/main/java/org/opennms/features/topology/plugins/topo/graphml/GraphMLMetaTopologyProvider.java +++ b/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.graphml/src/main/java/org/opennms/features/topology/plugins/topo/graphml/GraphMLMetaTopologyProvider.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2016 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2016 The OpenNMS Group, Inc. + * Copyright (C) 2016-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -115,7 +115,9 @@ public void reload() throws IOException, InvalidGraphException { for (org.opennms.features.graphml.model.GraphMLEdge eachEdge : eachGraph.getEdges()) { final VertexRef sourceVertex = getVertex(eachEdge.getSource()); final VertexRef targetVertex = getVertex(eachEdge.getTarget()); - if (!sourceVertex.getNamespace().equals(targetVertex.getNamespace())) { + final String sourceNamespace = sourceVertex == null? null : sourceVertex.getNamespace(); + final String targetNamespace = targetVertex == null? null : targetVertex.getNamespace(); + if (!Objects.equals(sourceNamespace, targetNamespace)) { List opposites = oppositeVertices.get(sourceVertex); if (opposites == null) { opposites = Lists.newArrayList(); diff --git a/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.graphml/src/main/java/org/opennms/features/topology/plugins/topo/graphml/internal/GraphMLMetaTopologyFactory.java b/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.graphml/src/main/java/org/opennms/features/topology/plugins/topo/graphml/internal/GraphMLMetaTopologyFactory.java index a07aa82121e3..cfac84683be1 100644 --- a/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.graphml/src/main/java/org/opennms/features/topology/plugins/topo/graphml/internal/GraphMLMetaTopologyFactory.java +++ b/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.graphml/src/main/java/org/opennms/features/topology/plugins/topo/graphml/internal/GraphMLMetaTopologyFactory.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2012-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2012-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -187,7 +187,7 @@ private Optional buildStatusProvider(final GraphMLMetaTopologyPr m_bundleContext)); default: - throw null; + throw new IllegalStateException("unhandled VertexStatusProviderType: " + rawTopologyProvider.getVertexStatusProviderType()); } } } diff --git a/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.linkd/src/main/java/org/opennms/features/topology/plugins/topo/linkd/internal/LinkdSearchProvider.java b/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.linkd/src/main/java/org/opennms/features/topology/plugins/topo/linkd/internal/LinkdSearchProvider.java index ab9eec97f905..3625adde978a 100644 --- a/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.linkd/src/main/java/org/opennms/features/topology/plugins/topo/linkd/internal/LinkdSearchProvider.java +++ b/features/topology-map/plugins/org.opennms.features.topology.plugins.topo.linkd/src/main/java/org/opennms/features/topology/plugins/topo/linkd/internal/LinkdSearchProvider.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2013-2018 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2018 The OpenNMS Group, Inc. + * Copyright (C) 2013-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -28,6 +28,7 @@ package org.opennms.features.topology.plugins.topo.linkd.internal; +import java.util.Collections; import java.util.List; import java.util.Set; @@ -104,6 +105,10 @@ public Set getVertexRefsBy(SearchResult searchResult, GraphContainer LOG.debug("SearchProvider->getVertexRefsBy: called with search result: '{}'", searchResult); org.opennms.features.topology.api.topo.Criteria criterion = findCriterion(searchResult.getId(), container); + if (criterion == null) { + return Collections.emptySet(); + } + Set vertices = ((VertexHopCriteria)criterion).getVertices(); LOG.debug("SearchProvider->getVertexRefsBy: found '{}' vertices.", vertices.size()); diff --git a/features/vaadin-components/extender-service/src/main/java/org/opennms/vaadin/extender/internal/extender/PaxVaadinBundleTracker.java b/features/vaadin-components/extender-service/src/main/java/org/opennms/vaadin/extender/internal/extender/PaxVaadinBundleTracker.java index c767fcb3b614..72575c88eb70 100644 --- a/features/vaadin-components/extender-service/src/main/java/org/opennms/vaadin/extender/internal/extender/PaxVaadinBundleTracker.java +++ b/features/vaadin-components/extender-service/src/main/java/org/opennms/vaadin/extender/internal/extender/PaxVaadinBundleTracker.java @@ -92,25 +92,19 @@ public Object addingBundle(Bundle bundle, BundleEvent event) { Constructor ctor = null; for (int i = 0; i < ctors.length; i++) { ctor = ctors[i]; - if (ctor.getGenericParameterTypes().length == 0) + if (ctor.getGenericParameterTypes().length == 0) { break; + } + } + if (ctor == null) { + throw new IllegalStateException("unable to locate a suitable constructor"); } ctor.setAccessible(true); application = (UI) ctor.newInstance(); - } catch (ClassNotFoundException e) { + } catch (final ReflectiveOperationException | SecurityException | IllegalArgumentException | IllegalStateException e) { LOG.error("Could not add bundle: ", e); - } catch (SecurityException e) { - LOG.error("Could not add bundle: ", e); - } catch (IllegalArgumentException e) { - LOG.error("Could not add bundle: ", e); - } catch (InstantiationException e) { - LOG.error("Could not add bundle: ", e); - } catch (IllegalAccessException e) { - LOG.error("Could not add bundle: ", e); - } catch (InvocationTargetException e) { - LOG.error("Could not add bundle: ", e); - } + } final String widgetset = findWidgetset(bundle); if (application != null) { diff --git a/features/vaadin-jmxconfiggenerator/src/main/java/org/opennms/features/vaadin/jmxconfiggenerator/ui/mbeans/AttributesTable.java b/features/vaadin-jmxconfiggenerator/src/main/java/org/opennms/features/vaadin/jmxconfiggenerator/ui/mbeans/AttributesTable.java index bd283b523909..7acc9ce55ec0 100644 --- a/features/vaadin-jmxconfiggenerator/src/main/java/org/opennms/features/vaadin/jmxconfiggenerator/ui/mbeans/AttributesTable.java +++ b/features/vaadin-jmxconfiggenerator/src/main/java/org/opennms/features/vaadin/jmxconfiggenerator/ui/mbeans/AttributesTable.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2013-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2013-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -28,9 +28,30 @@ package org.opennms.features.vaadin.jmxconfiggenerator.ui.mbeans; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +import org.opennms.features.vaadin.jmxconfiggenerator.Config; +import org.opennms.features.vaadin.jmxconfiggenerator.data.MetaAttribItem; +import org.opennms.features.vaadin.jmxconfiggenerator.data.MetaAttribItem.AttribType; +import org.opennms.features.vaadin.jmxconfiggenerator.data.SelectableBeanItemContainer; +import org.opennms.features.vaadin.jmxconfiggenerator.data.SelectionValueChangedListener; +import org.opennms.features.vaadin.jmxconfiggenerator.ui.mbeans.validation.AttributeNameValidator; +import org.opennms.features.vaadin.jmxconfiggenerator.ui.mbeans.validation.UniqueAttributeNameValidator; +import org.opennms.netmgt.vaadin.core.UIHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.google.common.base.Predicate; import com.google.common.collect.Collections2; import com.google.common.collect.Maps; +import com.vaadin.ui.AbstractComponent; +import com.vaadin.ui.Component; import com.vaadin.v7.data.Container; import com.vaadin.v7.data.Item; import com.vaadin.v7.data.Property; @@ -38,38 +59,21 @@ import com.vaadin.v7.data.Validator.InvalidValueException; import com.vaadin.v7.data.validator.StringLengthValidator; import com.vaadin.v7.event.FieldEvents; -import com.vaadin.ui.AbstractComponent; import com.vaadin.v7.ui.CheckBox; import com.vaadin.v7.ui.ComboBox; -import com.vaadin.ui.Component; import com.vaadin.v7.ui.Field; import com.vaadin.v7.ui.Table; import com.vaadin.v7.ui.TableFieldFactory; import com.vaadin.v7.ui.TextField; -import org.opennms.features.vaadin.jmxconfiggenerator.Config; -import org.opennms.features.vaadin.jmxconfiggenerator.data.MetaAttribItem; -import org.opennms.features.vaadin.jmxconfiggenerator.data.MetaAttribItem.AttribType; -import org.opennms.features.vaadin.jmxconfiggenerator.data.SelectableBeanItemContainer; -import org.opennms.features.vaadin.jmxconfiggenerator.data.SelectionValueChangedListener; -import org.opennms.netmgt.vaadin.core.UIHelper; -import org.opennms.features.vaadin.jmxconfiggenerator.ui.mbeans.validation.AttributeNameValidator; -import org.opennms.features.vaadin.jmxconfiggenerator.ui.mbeans.validation.UniqueAttributeNameValidator; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; /** * * @author Markus von RĂ¼den */ public class AttributesTable extends Table implements SelectionValueChangedListener { + private static final Logger LOG = LoggerFactory.getLogger(AttributesTable.class); - private static Object[] computeKey(Object... input) { + private static Object[] computeKey(Object... input) { return input; } @@ -317,6 +321,10 @@ private void updateCheckBoxes() { } private void updateCheckBox(CheckBox checkBox, Object rowId, boolean enabled) { + if (checkBox == null) { + LOG.warn("unhandled checkbox at row {}", rowId); + return; + } checkBox.setValue(enabled); Collection> columns = getFieldsForItemId(rowId); columns.remove(checkBox); @@ -403,4 +411,4 @@ private Object getParentData() { private void setParentData(Object parentData) { this.parentData = parentData; } -} \ No newline at end of file +} diff --git a/features/vaadin-surveillance-views/src/main/java/org/opennms/features/vaadin/surveillanceviews/ui/SurveillanceViewConfigurationCategoryWindow.java b/features/vaadin-surveillance-views/src/main/java/org/opennms/features/vaadin/surveillanceviews/ui/SurveillanceViewConfigurationCategoryWindow.java index a308df360aaa..2335496f986c 100644 --- a/features/vaadin-surveillance-views/src/main/java/org/opennms/features/vaadin/surveillanceviews/ui/SurveillanceViewConfigurationCategoryWindow.java +++ b/features/vaadin-surveillance-views/src/main/java/org/opennms/features/vaadin/surveillanceviews/ui/SurveillanceViewConfigurationCategoryWindow.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2013-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2013-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -219,6 +219,11 @@ public void buttonClick(Button.ClickEvent event) { finalDef = new ColumnDef(); } + if (finalDef == null) { + LOG.warn("unhandled def type: {}", def); + return; + } + Set categories = (Set) categoriesTable.getValue(); if (!labelField.isValid()) { diff --git a/integrations/opennms-vmware/src/main/java/org/opennms/netmgt/poller/monitors/VmwareMonitor.java b/integrations/opennms-vmware/src/main/java/org/opennms/netmgt/poller/monitors/VmwareMonitor.java index 7fcfe14e1a2c..618703fa58d6 100644 --- a/integrations/opennms-vmware/src/main/java/org/opennms/netmgt/poller/monitors/VmwareMonitor.java +++ b/integrations/opennms-vmware/src/main/java/org/opennms/netmgt/poller/monitors/VmwareMonitor.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2013-2017 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2017 The OpenNMS Group, Inc. + * Copyright (C) 2013-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -180,6 +180,10 @@ private Map getUnacknowledgedAlarmCountForEntity(final ManagedEnti } private String getMessageForAlarmCountMap(final Map alarmCountMap) { + if (alarmCountMap == null || alarmCountMap.isEmpty()) { + return "Alarms: no alarms found"; + } + StringBuilder alarmCountString = new StringBuilder(); for (final String alarmSeverity : VALID_VSPHERE_ALARM_STATES) { if (alarmCountMap.containsKey(alarmSeverity)) { diff --git a/integrations/opennms-vmware/src/main/java/org/opennms/protocols/vmware/VmwareConfigBuilder.java b/integrations/opennms-vmware/src/main/java/org/opennms/protocols/vmware/VmwareConfigBuilder.java index 1718b49ba2b1..438c45db7e78 100644 --- a/integrations/opennms-vmware/src/main/java/org/opennms/protocols/vmware/VmwareConfigBuilder.java +++ b/integrations/opennms-vmware/src/main/java/org/opennms/protocols/vmware/VmwareConfigBuilder.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2013-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2013-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -507,15 +507,13 @@ public static void main(String[] args) throws ParseException { TrustManager[] trustAllCerts = new TrustManager[] { new AnyServerX509TrustManager() }; - SSLContext sc = null; + SSLContext sc; try { sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, null); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (KeyManagementException e) { - e.printStackTrace(); - } + } catch (NoSuchAlgorithmException | KeyManagementException e) { + throw new IllegalStateException("unable to initialize SSL"); + } HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); diff --git a/opennms-alarms/snmptrap-northbounder/src/main/java/org/opennms/netmgt/alarmd/northbounder/snmptrap/VarbindMapping.java b/opennms-alarms/snmptrap-northbounder/src/main/java/org/opennms/netmgt/alarmd/northbounder/snmptrap/VarbindMapping.java index ef25a4718c20..606044a1493d 100644 --- a/opennms-alarms/snmptrap-northbounder/src/main/java/org/opennms/netmgt/alarmd/northbounder/snmptrap/VarbindMapping.java +++ b/opennms-alarms/snmptrap-northbounder/src/main/java/org/opennms/netmgt/alarmd/northbounder/snmptrap/VarbindMapping.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2013-2015 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2015 The OpenNMS Group, Inc. + * Copyright (C) 2013-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -196,10 +196,10 @@ public Parm getParameter(NorthboundAlarm alarm) { String oid = getOid(); String instance = evaluate(getInstance(), alarm); if (instance != null) { - oid += isNumber(instance) ? "." + instance : encode(instance); + oid += isNumber(instance) ? ("." + instance) : encode(instance); } String value = evaluate(getValue(), alarm); - if (getType().equals(VarbindType.TYPE_SNMP_OCTET_STRING) && getMax() > 0 && getType().value().length() > getMax()) { + if (value != null && getType() == VarbindType.TYPE_SNMP_OCTET_STRING && getMax() > 0 && getType().value().length() > getMax()) { value = value.substring(0, getMax()); } final Parm parm = new Parm(oid, value); diff --git a/opennms-config-model/src/main/java/org/opennms/netmgt/config/groups/Groupinfo.java b/opennms-config-model/src/main/java/org/opennms/netmgt/config/groups/Groupinfo.java index 11dae8168452..fdeb774f832d 100644 --- a/opennms-config-model/src/main/java/org/opennms/netmgt/config/groups/Groupinfo.java +++ b/opennms-config-model/src/main/java/org/opennms/netmgt/config/groups/Groupinfo.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2017 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2017 The OpenNMS Group, Inc. + * Copyright (C) 2017-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -80,10 +80,12 @@ public void setGroups(final List groups) { } public void addGroup(final Group group) { - if (m_groups == null && group != null) { - m_groups = new ArrayList<>(); + if (group != null) { + if (m_groups == null) { + m_groups = new ArrayList<>(); + } + m_groups.add(group); } - m_groups.add(group); } public List getRoles() { diff --git a/opennms-config/src/main/java/org/opennms/netmgt/config/BasicScheduleUtils.java b/opennms-config/src/main/java/org/opennms/netmgt/config/BasicScheduleUtils.java index aeb6c0215129..fabe76caab70 100644 --- a/opennms-config/src/main/java/org/opennms/netmgt/config/BasicScheduleUtils.java +++ b/opennms-config/src/main/java/org/opennms/netmgt/config/BasicScheduleUtils.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2005-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2005-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -390,7 +390,7 @@ public static Date getMonthlyTime(final Date referenceTime, final String day, fi public static Date getWeeklyTime(final Date referenceTime, final String day, final String timeString) { final Calendar ref = Calendar.getInstance(); ref.setTime(referenceTime); - ref.set(Calendar.DAY_OF_WEEK, getDayOfWeekIndex(day).intValue()); + ref.set(Calendar.DAY_OF_WEEK, getDayOfWeekIndex(day)); setOutCalTime(ref, timeString); return ref.getTime(); } diff --git a/opennms-config/src/main/java/org/opennms/netmgt/config/DatabaseSchemaConfigFactory.java b/opennms-config/src/main/java/org/opennms/netmgt/config/DatabaseSchemaConfigFactory.java index 291de34cface..422d48123a4c 100644 --- a/opennms-config/src/main/java/org/opennms/netmgt/config/DatabaseSchemaConfigFactory.java +++ b/opennms-config/src/main/java/org/opennms/netmgt/config/DatabaseSchemaConfigFactory.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2002-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2002-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -49,6 +49,8 @@ import org.opennms.netmgt.config.filter.Join; import org.opennms.netmgt.config.filter.Table; import org.opennms.netmgt.filter.api.FilterParseException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * This is the singleton class used to load the configuration for the OpenNMS @@ -61,6 +63,8 @@ * @author Sowmya Nataraj */ public final class DatabaseSchemaConfigFactory implements DatabaseSchemaConfig { + private static final Logger LOG = LoggerFactory.getLogger(DatabaseSchemaConfigFactory.class); + private final ReadWriteLock m_globalLock = new ReentrantReadWriteLock(); private final Lock m_readLock = m_globalLock.readLock(); private final Lock m_writeLock = m_globalLock.writeLock(); @@ -218,8 +222,12 @@ public Table getPrimaryTable() { */ private void finishConstruction() { Set joinableSet = new HashSet<>(); - final Map primaryJoins = new ConcurrentHashMap(); - joinableSet.add(getPrimaryTable().getName()); + final Map primaryJoins = new ConcurrentHashMap<>(); + final var primaryTable = getPrimaryTable(); + if (primaryTable == null) { + LOG.warn("no primary table!"); + } + joinableSet.add(primaryTable.getName()); // loop until we stop adding entries to the set int joinableCount = 0; while (joinableCount < joinableSet.size()) { diff --git a/opennms-config/src/main/java/org/opennms/netmgt/config/EventTranslatorConfigFactory.java b/opennms-config/src/main/java/org/opennms/netmgt/config/EventTranslatorConfigFactory.java index c3497587f0f6..b56f183d2e44 100644 --- a/opennms-config/src/main/java/org/opennms/netmgt/config/EventTranslatorConfigFactory.java +++ b/opennms-config/src/main/java/org/opennms/netmgt/config/EventTranslatorConfigFactory.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2002-2017 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2017 The OpenNMS Group, Inc. + * Copyright (C) 2002-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -384,6 +384,9 @@ public Event translate(Event srcEvent) { private Event cloneEvent(Event srcEvent) { Event clonedEvent = EventTranslatorConfigFactory.cloneEvent(srcEvent); + if (clonedEvent == null) { + throw new IllegalStateException("unable to clone event: " + srcEvent); + } /* since alarmData and severity are computed based on translated information in * eventd using the data from eventconf, we unset it here to eventd * can reset to the proper new settings. diff --git a/opennms-config/src/main/java/org/opennms/netmgt/config/NotifdConfigManager.java b/opennms-config/src/main/java/org/opennms/netmgt/config/NotifdConfigManager.java index ad47d444f27e..5a9cbef34ac6 100644 --- a/opennms-config/src/main/java/org/opennms/netmgt/config/NotifdConfigManager.java +++ b/opennms-config/src/main/java/org/opennms/netmgt/config/NotifdConfigManager.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2004-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2004-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -178,18 +178,22 @@ public boolean matchNotificationParameters(Event event, Notification notificatio boolean parmmatch = false; if (notification.getVarbind() != null && notification.getVarbind().getVbname() != null) { - String notfValue = null; - String notfName = notification.getVarbind().getVbname(); + final var notfValue = notification.getVarbind().getVbvalue(); - if (notification.getVarbind().getVbvalue() != null) { - notfValue = notification.getVarbind().getVbvalue(); - } else { + if (notfValue == null) { LOG.debug("BroadcastEventProcessor:matchNotificationParameters: Null value for varbind, assuming true."); - parmmatch = true; + return true; } + final var notfName = notification.getVarbind().getVbname(); for (final Parm parm : event.getParmCollection()) { + if (parmmatch) break; // we've already matched, skip processing all this + final String parmName = parm.getParmName(); + if (!parmName.equals(notfName)) { + continue; + } + final Value parmValue = parm.getValue(); final String parmContent; if (parmValue == null) { @@ -198,18 +202,16 @@ public boolean matchNotificationParameters(Event event, Notification notificatio parmContent = parmValue.getContent(); } - if (parmName.equals(notfName)) { - // regular expression should start with a '~' - if (notfValue.charAt(0) == '~') { - if (parmContent.matches(notfValue.substring(1))) { - parmmatch = true; - } - } else { - if (parmContent.startsWith(notfValue)) { - parmmatch = true; - } + // regular expression should start with a '~' + if (notfValue.charAt(0) == '~') { + if (parmContent.matches(notfValue.substring(1))) { + parmmatch = true; + } + } else { + if (parmContent.startsWith(notfValue)) { + parmmatch = true; } - } + } } } else if (notification.getVarbind() == null || notification.getVarbind().getVbname() == null) { parmmatch = true; diff --git a/opennms-provision/opennms-detector-dhcp/src/main/java/org/opennms/netmgt/provision/detector/dhcp/client/DhcpClient.java b/opennms-provision/opennms-detector-dhcp/src/main/java/org/opennms/netmgt/provision/detector/dhcp/client/DhcpClient.java index 7634f0a39ed7..27f2555f0227 100644 --- a/opennms-provision/opennms-detector-dhcp/src/main/java/org/opennms/netmgt/provision/detector/dhcp/client/DhcpClient.java +++ b/opennms-provision/opennms-detector-dhcp/src/main/java/org/opennms/netmgt/provision/detector/dhcp/client/DhcpClient.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2008-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2008-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -95,6 +95,9 @@ public DhcpResponse receiveBanner() { tracker.nextAttempt(); } + if (transaction == null) { + return new DhcpResponse(-1); + } return new DhcpResponse(transaction.getResponseTime()); } diff --git a/opennms-provision/opennms-provision-persistence/src/main/java/org/opennms/netmgt/provision/persist/requisition/RequisitionMonitoredService.java b/opennms-provision/opennms-provision-persistence/src/main/java/org/opennms/netmgt/provision/persist/requisition/RequisitionMonitoredService.java index ecdff5048b03..76b1f7bb97f3 100644 --- a/opennms-provision/opennms-provision-persistence/src/main/java/org/opennms/netmgt/provision/persist/requisition/RequisitionMonitoredService.java +++ b/opennms-provision/opennms-provision-persistence/src/main/java/org/opennms/netmgt/provision/persist/requisition/RequisitionMonitoredService.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2009-2017 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2017 The OpenNMS Group, Inc. + * Copyright (C) 2009-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -39,6 +39,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Objects; import javax.xml.bind.ValidationException; import javax.xml.bind.annotation.XmlAccessType; @@ -220,12 +221,7 @@ public void validate() throws ValidationException { @Override public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((m_categories == null) ? 0 : m_categories.hashCode()); - result = prime * result + ((m_metaData == null) ? 0 : m_categories.hashCode()); - result = prime * result + ((m_serviceName == null) ? 0 : m_serviceName.hashCode()); - return result; + return Objects.hash(m_categories, m_metaData, m_serviceName); } @Override @@ -233,23 +229,10 @@ public boolean equals(final Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof RequisitionMonitoredService)) return false; - final RequisitionMonitoredService other = (RequisitionMonitoredService) obj; - if (m_categories == null) { - if (other.m_categories != null) return false; - } else if (!m_categories.equals(other.m_categories)) { - return false; - } - if (m_metaData == null) { - if (other.m_metaData != null) return false; - } else if (!m_metaData.equals(other.m_metaData)) { - return false; - } - if (m_serviceName == null) { - if (other.m_serviceName != null) return false; - } else if (!m_serviceName.equals(other.m_serviceName)) { - return false; - } - return true; + final RequisitionMonitoredService that = (RequisitionMonitoredService) obj; + return Objects.deepEquals(this.m_categories, that.m_categories) + && Objects.deepEquals(this.m_metaData, that.m_metaData) + && Objects.equals(this.m_serviceName, that.m_serviceName); } @Override diff --git a/opennms-provision/opennms-provisiond/src/main/java/org/opennms/netmgt/provision/service/DefaultProvisionService.java b/opennms-provision/opennms-provisiond/src/main/java/org/opennms/netmgt/provision/service/DefaultProvisionService.java index 5061ff517cd7..c82fd75be34b 100644 --- a/opennms-provision/opennms-provisiond/src/main/java/org/opennms/netmgt/provision/service/DefaultProvisionService.java +++ b/opennms-provision/opennms-provisiond/src/main/java/org/opennms/netmgt/provision/service/DefaultProvisionService.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2008-2018 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2018 The OpenNMS Group, Inc. + * Copyright (C) 2008-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -280,6 +280,11 @@ private void updateNodeHostname(final OnmsNode node) { primary = node.getIpInterfaces().iterator().next(); } + if (primary == null) { + LOG.debug("Unable to determine interface for node {}, skipping hostname update", node.getId()); + return; + } + final InetAddress primaryAddr = primary.getIpAddress(); final String primaryHostname = getHostnameResolver().getHostname(primaryAddr, node.getLocation().getLocationName()); @@ -1362,6 +1367,11 @@ private boolean createUpdateRequistion(final String addrString, final OnmsNode n } } + if (r == null) { + LOG.error("Unable to determine requisition for foreign source {}", m_foreignSource); + return false; + } + r.updateDateStamp(); RequisitionNode rn = new RequisitionNode(); diff --git a/opennms-provision/opennms-requisition-dns/src/main/java/org/opennms/netmgt/provision/service/dns/DnsRequisitionUrlConnection.java b/opennms-provision/opennms-requisition-dns/src/main/java/org/opennms/netmgt/provision/service/dns/DnsRequisitionUrlConnection.java index c06b7439ea6d..38c7850f5f24 100644 --- a/opennms-provision/opennms-requisition-dns/src/main/java/org/opennms/netmgt/provision/service/dns/DnsRequisitionUrlConnection.java +++ b/opennms-provision/opennms-requisition-dns/src/main/java/org/opennms/netmgt/provision/service/dns/DnsRequisitionUrlConnection.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2009-2017 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2017 The OpenNMS Group, Inc. + * Copyright (C) 2009-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -214,19 +214,21 @@ private String jaxBMarshal(Requisition r) throws JAXBException { */ protected static String determineExpressionFromUrl(URL url) { LOG.info("determineExpressionFromUrl: finding regex as parameter in query string of URL: {}", url); - if(getUrlArgs(url) == null) { + final var urlArgs = getUrlArgs(url); + if(urlArgs == null) { return null; } else { - return getUrlArgs(url).get(EXPRESSION_ARG); + return urlArgs.get(EXPRESSION_ARG); } } protected static String determineLocationFromUrl(URL url) { LOG.info("determineLocationFromUrl: finding regex as parameter in query string of URL: {}", url); - if(getUrlArgs(url) == null) { + final var urlArgs = getUrlArgs(url); + if(urlArgs == null) { return null; } else { - return getUrlArgs(url).get(LOCATION_ARG); + return urlArgs.get(LOCATION_ARG); } } diff --git a/opennms-services/src/main/java/org/opennms/netmgt/collectd/Collectd.java b/opennms-services/src/main/java/org/opennms/netmgt/collectd/Collectd.java index 50b030c105ed..1bf31bdf3bb5 100644 --- a/opennms-services/src/main/java/org/opennms/netmgt/collectd/Collectd.java +++ b/opennms-services/src/main/java/org/opennms/netmgt/collectd/Collectd.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2002-2020 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2020 The OpenNMS Group, Inc. + * Copyright (C) 2002-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -545,7 +545,8 @@ public Collection getSpecificationsForInterface(OnmsIpI } LOG.debug("getSpecificationsForInterface: address/service: {}/{} scheduled, interface does belong to package: {}", iface, svcName, wpkg.getName()); - String className = m_collectdConfigFactory.getCollectors().stream().filter(c->c.getService().equals(svcName)).findFirst().orElse(null).getClassName(); + final var collector = m_collectdConfigFactory.getCollectors().stream().filter(c->c.getService().equals(svcName)).findFirst().orElse(null); + String className = collector == null? null : collector.getClassName(); if(className != null) { matchingPkgs.add(new CollectionSpecification(wpkg, svcName, getServiceCollector(svcName), instrumentation(), m_locationAwareCollectorClient, pollOutagesDao, className)); } else { diff --git a/opennms-services/src/main/java/org/opennms/netmgt/notifd/BroadcastEventProcessor.java b/opennms-services/src/main/java/org/opennms/netmgt/notifd/BroadcastEventProcessor.java index ceb9acfee016..325e55c6f169 100644 --- a/opennms-services/src/main/java/org/opennms/netmgt/notifd/BroadcastEventProcessor.java +++ b/opennms-services/src/main/java/org/opennms/netmgt/notifd/BroadcastEventProcessor.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2002-2020 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2020 The OpenNMS Group, Inc. + * Copyright (C) 2002-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -471,6 +471,12 @@ protected void sendResolvedNotificationsToUser(String queueID, String targetName noticeQueue = m_noticeQueues.get(queueID); } } + + if (noticeQueue == null) { + LOG.warn("unable to retrieve notification queue for id {}", queueID); + return; + } + long now = System.currentTimeMillis(); if (getUserManager().hasUser(targetName)) { @@ -482,10 +488,8 @@ protected void sendResolvedNotificationsToUser(String queueID, String targetName } else if (targetName.indexOf('@') > -1) { NotificationTask newTask = makeEmailTask(now, params, noticeId, targetName, commands, null, null); - if (newTask != null) { - synchronized (noticeQueue) { - noticeQueue.putItem(now, newTask); - } + synchronized (noticeQueue) { + noticeQueue.putItem(now, newTask); } } else { LOG.warn("Unrecognized target '{}' contained in destinationPaths.xml. Please check the configuration.", targetName); diff --git a/opennms-services/src/main/java/org/opennms/netmgt/notifd/XMPPNotificationManager.java b/opennms-services/src/main/java/org/opennms/netmgt/notifd/XMPPNotificationManager.java index 6658dea64fcc..94cd42906939 100644 --- a/opennms-services/src/main/java/org/opennms/netmgt/notifd/XMPPNotificationManager.java +++ b/opennms-services/src/main/java/org/opennms/netmgt/notifd/XMPPNotificationManager.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2005-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2005-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -157,7 +157,7 @@ protected XMPPNotificationManager() { } catch (IOException e) { LOG.warn("{} not readable", ConfigFileConstants.XMPP_CONFIG_FILE_NAME, e); } - if (Boolean.getBoolean("useSystemXMPPConfig") || !config.canRead()) { + if (Boolean.getBoolean("useSystemXMPPConfig") || config == null || !config.canRead()) { this.props.putAll(System.getProperties()); } else { FileInputStream fis = null; diff --git a/opennms-services/src/main/java/org/opennms/netmgt/provisiond/jmx/Provisiond.java b/opennms-services/src/main/java/org/opennms/netmgt/provisiond/jmx/Provisiond.java index 8e0cb7a84bff..269f580791aa 100644 --- a/opennms-services/src/main/java/org/opennms/netmgt/provisiond/jmx/Provisiond.java +++ b/opennms-services/src/main/java/org/opennms/netmgt/provisiond/jmx/Provisiond.java @@ -288,7 +288,7 @@ private ThreadPoolExecutor getExecutor(ExecutorType type) { case Write: return (ThreadPoolExecutor) (getDaemon().getTaskCoordinatorExecutorService(Write.name)); default: - return null; + throw new IllegalArgumentException("unable to get executor for type: " + type); } } diff --git a/opennms-services/src/main/java/org/opennms/netmgt/snmpinterfacepoller/pollable/PollableNetwork.java b/opennms-services/src/main/java/org/opennms/netmgt/snmpinterfacepoller/pollable/PollableNetwork.java index c8ccb7f90c88..2ad5cae98cd2 100644 --- a/opennms-services/src/main/java/org/opennms/netmgt/snmpinterfacepoller/pollable/PollableNetwork.java +++ b/opennms-services/src/main/java/org/opennms/netmgt/snmpinterfacepoller/pollable/PollableNetwork.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2009-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2009-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -140,10 +140,13 @@ public void delete(int nodeid) { * * @param nodeid a int. */ - public void refresh(int nodeid) { + public void refresh(final int nodeid) { String ipaddress = getIp(nodeid); - if (ipaddress != null ) { - getInterface(ipaddress).refresh(); + if (ipaddress != null) { + final var iface = getInterface(ipaddress); + if (iface != null) { + iface.refresh(); + } } } diff --git a/opennms-services/src/main/java/org/opennms/netmgt/tl1d/Tl1ClientImpl.java b/opennms-services/src/main/java/org/opennms/netmgt/tl1d/Tl1ClientImpl.java index a2983e1ab4a7..89bee07531fb 100644 --- a/opennms-services/src/main/java/org/opennms/netmgt/tl1d/Tl1ClientImpl.java +++ b/opennms-services/src/main/java/org/opennms/netmgt/tl1d/Tl1ClientImpl.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2008-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2008-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -226,8 +226,8 @@ private void readMessages() { rawMessageBuilder.setLength(0); } } - rawMessageBuilder = null; - + rawMessageBuilder.setLength(0); + LOG.warn("readMessages: resetting socket reader to client: {}:{}", m_host, m_port); resetReader(null); } diff --git a/opennms-web-api/src/main/java/org/opennms/web/charts/ChartUtils.java b/opennms-web-api/src/main/java/org/opennms/web/charts/ChartUtils.java index cf8ee520fb25..52ae30171bf6 100644 --- a/opennms-web-api/src/main/java/org/opennms/web/charts/ChartUtils.java +++ b/opennms-web-api/src/main/java/org/opennms/web/charts/ChartUtils.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2005-2017 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2017 The OpenNMS Group, Inc. + * Copyright (C) 2005-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -293,7 +293,7 @@ private static DefaultCategoryDataset buildCategoryDataSet(BarChart chartConfig) public static void getBarChart(String chartName, OutputStream out) throws IOException, SQLException { BarChart chartConfig = getBarChartConfigByName(chartName); JFreeChart chart = getBarChart(chartName); - ImageSize imageSize = chartConfig.getImageSize(); + ImageSize imageSize = chartConfig == null? null : chartConfig.getImageSize(); int hzPixels; int vtPixels; @@ -321,14 +321,14 @@ public static void getBarChartPNG(String chartName, OutputStream out) throws IOE ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme()); BarChart chartConfig = getBarChartConfigByName(chartName); JFreeChart chart = getBarChart(chartName); - if(chartConfig.getChartBackgroundColor().isPresent()) { + if(chartConfig != null && chartConfig.getChartBackgroundColor().isPresent()) { setChartBackgroundColor(chartConfig, chart); } - if(chartConfig.getPlotBackgroundColor().isPresent()) { + if(chartConfig != null && chartConfig.getPlotBackgroundColor().isPresent()) { setPlotBackgroundColor(chartConfig, chart); } - ImageSize imageSize = chartConfig.getImageSize(); + ImageSize imageSize = chartConfig == null? null : chartConfig.getImageSize(); int hzPixels; int vtPixels; @@ -381,7 +381,7 @@ private static void setChartBackgroundColor(BarChart chartConfig, public static byte[] getBarChartAsPNGByteArray(String chartName) throws IOException, SQLException { BarChart chartConfig = getBarChartConfigByName(chartName); JFreeChart chart = getBarChart(chartName); - ImageSize imageSize = chartConfig.getImageSize(); + ImageSize imageSize = chartConfig == null? null : chartConfig.getImageSize(); int hzPixels; int vtPixels; @@ -406,7 +406,7 @@ public static byte[] getBarChartAsPNGByteArray(String chartName) throws IOExcept public static BufferedImage getChartAsBufferedImage(String chartName) throws IOException, SQLException { BarChart chartConfig = getBarChartConfigByName(chartName); JFreeChart chart = getBarChart(chartName); - ImageSize imageSize = chartConfig.getImageSize(); + ImageSize imageSize = chartConfig == null? null : chartConfig.getImageSize(); int hzPixels; int vtPixels; diff --git a/opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/NodeMonitoredServiceRestService.java b/opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/NodeMonitoredServiceRestService.java index 800b48eb4728..a9057f0b54af 100644 --- a/opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/NodeMonitoredServiceRestService.java +++ b/opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/NodeMonitoredServiceRestService.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2008-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2008-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -234,7 +234,8 @@ private OnmsIpInterface getInterface(final UriInfo uriInfo) { } protected OnmsMonitoredService getService(final UriInfo uriInfo, final String serviceName) { - return getInterface(uriInfo).getMonitoredServiceByServiceType(serviceName); + final var iface = getInterface(uriInfo); + return iface == null? null : iface.getMonitoredServiceByServiceType(serviceName); } @GET diff --git a/opennms-webapp/src/main/java/org/opennms/web/admin/discovery/ActionDiscoveryServlet.java b/opennms-webapp/src/main/java/org/opennms/web/admin/discovery/ActionDiscoveryServlet.java index e67336c676bf..8d51a476bc43 100644 --- a/opennms-webapp/src/main/java/org/opennms/web/admin/discovery/ActionDiscoveryServlet.java +++ b/opennms-webapp/src/main/java/org/opennms/web/admin/discovery/ActionDiscoveryServlet.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2007-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2007-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -326,6 +326,10 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) thr LOG.error(me.getMessage()); } + if (proxy == null) { + throw new IllegalStateException("unable to get event proxy"); + } + EventBuilder bldr = new EventBuilder(EventConstants.DISCOVERYCONFIG_CHANGED_EVENT_UEI, "ActionDiscoveryServlet"); bldr.setHost("host"); diff --git a/opennms-webapp/src/main/java/org/opennms/web/admin/nodeManagement/DeleteGetNodesServlet.java b/opennms-webapp/src/main/java/org/opennms/web/admin/nodeManagement/DeleteGetNodesServlet.java index 4693ff662c30..d99396eea317 100644 --- a/opennms-webapp/src/main/java/org/opennms/web/admin/nodeManagement/DeleteGetNodesServlet.java +++ b/opennms-webapp/src/main/java/org/opennms/web/admin/nodeManagement/DeleteGetNodesServlet.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2002-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2002-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -86,35 +86,22 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) thr /** */ private List getAllNodes(HttpSession userSession) throws SQLException { - Connection connection = null; List allNodes = new ArrayList<>(); int lineCount = 0; - try { - connection = DataSourceFactory.getInstance().getConnection(); - - Statement stmt = connection.createStatement(); - ResultSet nodeSet = stmt.executeQuery(NODE_QUERY); - - if (nodeSet != null) { - while (nodeSet.next()) { - ManagedNode newNode = new ManagedNode(); - newNode.setNodeID(nodeSet.getInt(1)); - newNode.setNodeLabel(nodeSet.getString(2)); - allNodes.add(newNode); - lineCount++; - } + try ( + final Connection connection = DataSourceFactory.getInstance().getConnection(); + final Statement stmt = connection.createStatement(); + final ResultSet nodeSet = stmt.executeQuery(NODE_QUERY); + ) { + while (nodeSet.next()) { + ManagedNode newNode = new ManagedNode(); + newNode.setNodeID(nodeSet.getInt(1)); + newNode.setNodeLabel(nodeSet.getString(2)); + allNodes.add(newNode); + lineCount++; } userSession.setAttribute("lineItems.delete.jsp", Integer.valueOf(lineCount)); - - nodeSet.close(); - } finally { - if (connection != null) { - try { - connection.close(); - } catch (SQLException e) { - } - } } return allNodes; diff --git a/opennms-webapp/src/main/java/org/opennms/web/event/filter/AcknowledgedByFilter.java b/opennms-webapp/src/main/java/org/opennms/web/event/filter/AcknowledgedByFilter.java index 4ca9f40978d6..7eab0d60d881 100644 --- a/opennms-webapp/src/main/java/org/opennms/web/event/filter/AcknowledgedByFilter.java +++ b/opennms-webapp/src/main/java/org/opennms/web/event/filter/AcknowledgedByFilter.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2002-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2002-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -73,6 +73,7 @@ public String getAcknowledgedByFilter() { /** {@inheritDoc} */ @Override public boolean equals(Object obj) { + if (obj == null) return false; return (this.toString().equals(obj.toString())); } } diff --git a/opennms-wmi/src/main/java/org/opennms/protocols/wmi/TestingNewStructure.java b/opennms-wmi/src/main/java/org/opennms/protocols/wmi/TestingNewStructure.java index 55eeb9a1daa4..464c40400a36 100644 --- a/opennms-wmi/src/main/java/org/opennms/protocols/wmi/TestingNewStructure.java +++ b/opennms-wmi/src/main/java/org/opennms/protocols/wmi/TestingNewStructure.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2009-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2009-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -58,8 +58,10 @@ public static void main(final String[] args) { System.out.println("The number of objects retrieved: " + wos.count()); for(int i=0; i parameters) { attrs.add(new Attr_UserName(innerUser)); attrs.add(new Attr_Password(password)); ttlsAuth.setTunneledAttributes(attrs); - } else if (authType.equalsIgnoreCase("peap")){ - String reason = "Support for eap peap is not ready yet"; + } else { + String reason = "Unhandled authenticator type " + authType; LOG.debug(reason); return PollStatus.unavailable(reason); } diff --git a/protocols/xml/src/main/java/org/opennms/protocols/http/collector/HttpCollectionHandler.java b/protocols/xml/src/main/java/org/opennms/protocols/http/collector/HttpCollectionHandler.java index b2659f71f98a..c266001a1dfd 100644 --- a/protocols/xml/src/main/java/org/opennms/protocols/http/collector/HttpCollectionHandler.java +++ b/protocols/xml/src/main/java/org/opennms/protocols/http/collector/HttpCollectionHandler.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2013-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2013-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -82,6 +82,7 @@ protected void fillCollectionSet(String urlString, Request request, CollectionAg Elements el = elements.select(object.getXpath()); if (el == null) { LOG.info("No value found for object named '{}'. Skipping.", object.getName()); + continue; } builder.withAttribute(collectionResource, group.getName(), object.getName(), el.html(), object.getDataType()); } diff --git a/smoke-test/src/main/java/org/opennms/smoketest/selenium/AbstractOpenNMSSeleniumHelper.java b/smoke-test/src/main/java/org/opennms/smoketest/selenium/AbstractOpenNMSSeleniumHelper.java index eb4ddaf418bd..c11fd44dc569 100644 --- a/smoke-test/src/main/java/org/opennms/smoketest/selenium/AbstractOpenNMSSeleniumHelper.java +++ b/smoke-test/src/main/java/org/opennms/smoketest/selenium/AbstractOpenNMSSeleniumHelper.java @@ -1050,6 +1050,9 @@ protected void clickId(final String id, final boolean refresh) throws Interrupte LOG.warn("Failed to locate id={}", id, t); } } + if (element == null) { + throw new IllegalArgumentException("unable to find element to click for id: " + id); + } sleepQuietly(50); element.click(); } finally { diff --git a/smoke-test/src/main/java/org/opennms/smoketest/ui/framework/TextInput.java b/smoke-test/src/main/java/org/opennms/smoketest/ui/framework/TextInput.java index f859963211bb..ab363ce8962f 100644 --- a/smoke-test/src/main/java/org/opennms/smoketest/ui/framework/TextInput.java +++ b/smoke-test/src/main/java/org/opennms/smoketest/ui/framework/TextInput.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2019-2019 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2019 The OpenNMS Group, Inc. + * Copyright (C) 2019-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -44,16 +44,15 @@ public void setInput(String newInput) { final WebElement element = execute(() -> driver.findElement(By.id(elementId))); if (!Objects.equals(element.getText(), newInput)) { element.clear(); - if (newInput != null && !newInput.equals("")) { + if (newInput != null && !newInput.isEmpty()) { element.sendKeys(newInput); } } } public void setInput(Integer newInput) { - if (newInput == null) { - setInput(""); + if (newInput != null) { + setInput(newInput.toString()); } - setInput(newInput.toString()); } } diff --git a/smoke-test/src/main/java/org/opennms/smoketest/utils/TestContainerUtils.java b/smoke-test/src/main/java/org/opennms/smoketest/utils/TestContainerUtils.java index 632af78a8eae..4fcd5c722c2c 100644 --- a/smoke-test/src/main/java/org/opennms/smoketest/utils/TestContainerUtils.java +++ b/smoke-test/src/main/java/org/opennms/smoketest/utils/TestContainerUtils.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2019 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2019 The OpenNMS Group, Inc. + * Copyright (C) 2019-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -139,12 +139,15 @@ public static void exposePortsAsUdp(CreateContainerCmd cmd, int... ports) { cmd.withExposedPorts(exposedPorts); // Add previous port bindings - Ports portBindings = cmd.getHostConfig().getPortBindings(); - // Add port bindings for our UDP ports - for (int port : ports) { - portBindings.bind(ExposedPort.udp(port), Ports.Binding.empty()); + final var hostConfig = cmd.getHostConfig(); + if (hostConfig != null) { + Ports portBindings = hostConfig.getPortBindings(); + // Add port bindings for our UDP ports + for (int port : ports) { + portBindings.bind(ExposedPort.udp(port), Ports.Binding.empty()); + } + hostConfig.withPortBindings(portBindings); } - cmd.getHostConfig().withPortBindings(portBindings); } /** diff --git a/tests/mock-snmp-agent/src/main/java/org/opennms/mock/snmp/PropertiesBackedManagedObject.java b/tests/mock-snmp-agent/src/main/java/org/opennms/mock/snmp/PropertiesBackedManagedObject.java index eacc739e8167..e7f595211e1e 100644 --- a/tests/mock-snmp-agent/src/main/java/org/opennms/mock/snmp/PropertiesBackedManagedObject.java +++ b/tests/mock-snmp-agent/src/main/java/org/opennms/mock/snmp/PropertiesBackedManagedObject.java @@ -1,8 +1,8 @@ /******************************************************************************* * This file is part of OpenNMS(R). * - * Copyright (C) 2007-2014 The OpenNMS Group, Inc. - * OpenNMS(R) is Copyright (C) 1999-2014 The OpenNMS Group, Inc. + * Copyright (C) 2007-2023 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2023 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * @@ -95,7 +95,7 @@ public List loadMOs(URL moFile) { // Clear cache on reload m_dynamicVariableCache.clear(); - if (props.isEmpty()) { + if (props == null || props.isEmpty()) { m_scope = new DefaultMOScope(new OID(".1"), false, new OID(".1"), false); return Collections.singletonList((ManagedObject)this); }