SNMP4J-SMI-PRO CHANGES
======================

[2025-02-04] Version 1.12.0 (Requires SNMP4J 3.9.0 or later)

* Added: SmiManager.useCompression(boolean) to activate storing of compiled MIB modules with GZIP compressed files.
  This speeds up MIB module loading and safes disk space. By default, this option is now activated.
* Added: SmiManager.loadModules(String[] moduleNames, int maxThreads, boolean overwriteExistingObjects) to load
  MIB modules concurrently with many optimisations for fast MIB module loading.
* Added: SmiManager.resetModules() to unload any loaded modules completely.
* Improved: MIB loading speed has been optimised by several factors.
* Updated: Dependencies, for example SNMP4J 3.9.0 is required to use the new SmiManager.loadModules method.

[2023-10-09] Version 1.11.0 (Requires SNMP4J 3.7.7 or later)

* Refactored: Renamed internal package com.agentpp.snmp to com.agentpp.snmpvalue
  to fix a code signing issue.

[2023-08-07] Version 1.10.0 (Requires SNMP4J 3.7.7 or later)

* Fixed: SmiManager will prefer newer modules according to the LAST-UPDATED clause of
  the MODULE-INFO statement if for the same MIB module name there are several MIB files
  in the compilation list/path. OverwriteIfNewer now will prefer SMIv2 modules as newer
  over SMIv1 modules (without LAST-UPDATED clause) and SMIv1 modules will always be
  overwritten by newly compiled MIB modules.
* Updated: The directory "mibrepository" now contains a completely updated set of compiled
  RFC MIB modules. If you have modified (i.e., added compiled MIB modules to a previous copy
  of this directory), then you will need to redo this operation(s) with the new directory, because
  MIB module IDs of the compiled modules might otherwise not be unique.
* Updated: Dependency to SNMP4J 3.7.7.

[2023-03-20] Version 1.9.17 (Requires SNMP4J 3.7.7 or later)

* Updated: Dependency to SNMP4J 3.7.7.

[2023-01-16] Version 1.9.16 (Requires SNMP4J 3.7.4 or later)

* Updated: Dependency to SNMP4J 3.7.4.
* Improved: Full release compatibility with Java 8 (e.g. when using this API with SNMP4J 2.8.14)

[2022-05-16] Version 1.9.15 (Requires SNMP4J 3.7.0 or later)

* Updated: Dependency to SNMP4J 3.7.0.
* Updated: SnmpWalk example.

[2021-11-20] Version 1.9.14 (Requires SNMP4J 3.6.1 or later)

* Added: SmiManager.findSmiObjectType to find an OBJECT-TYPE definition for a specified instance OID
  like "ifAdminStatus.65000".
* Fixed: Possible NPE when creating SmiManager with empty repository directory.
* Improved: JavaDoc.
* Updated SNMP4J dependency to 3.6.1 (or later).

[2020-11-30] Version 1.9.13 (Requires SNMP4J 3.4.4 or later)

* Updated SNMP4J dependency to 3.4.4.

[2020-10-12] Version 1.9.12 (Requires SNMP4J 3.4.3 or later)

* Updated SNMP4J dependency to 3.4.3.

[2020-06-28] Version 1.9.11 (Requires SNMP4J 3.4.2 or later)

* Updated SNMP4J dependency to 3.4.2.

[2020-01-10] Version 1.9.10 (Requires SNMP4J 3.1.0 or later)

* Fixed [SFJ-215]: NullPointerException is thrown by SmiManager$SmiNotificationTypeImpl.getObjectNames()
  if NOTIFICATION-TYPE (or TRAP-TYPE) has no objects.

[2019-05-14] Version 1.9.9 (Requires SNMP4J 3.1.0 or later)

* Fixed [SFJ-203]: SNMP4J-SMI-PRO does not correctly load MIB modules with compliance modules correctly
  when the MIB module was saved with SNMP4J-SMI-PRO 1.9.6 or earlier and if the Java runtime differs
  (version and/or platform). In the failing case, exception and conditional group clauses are 'null' or
  empty and do not provided the saved content.
* Improved: Small performance improvements to SMI output.

[2019-04-20] Version 1.9.8 (Requires SNMP4J 3.1.0 or later)

* Bumped SNMP4J dependency to 3.0.1.
* Changed: Compiled for Java 9.
* Improved: JavaDoc

[2018-09-24] Version 1.9.7 (Requires SNMP4J 3.0.1 or later)

* Updated SNMP4J dependency to 3.0.1.

[2018-01-22] Version 1.9.6 (Requires SNMP4J 2.5.11 or later)

* Internal refactoring.

[2018-01-19] Version 1.9.5 (Requires SNMP4J 2.5.11 or later)

* Fixed [SFJ-163]: SmiManager.findSmiObject(String moduleName, SmiObjectFilter<S> filter)
  does not use specified moduleName.
* Added: SmiManager.SmiModule.getObjectIdentifiers(OIDOrder) returns all object identifiers
  of a loaded MIB module.
* Added: OIDComparator class to compare OIDs in depth-first-or breadth-first-order.
* Improved: SmiModule extends SmiObject interface.

[2017-12-11] Version 1.9.4 (Requires SNMP4J 2.5.8 or later)

* Added: SmiModule.getSmiModuleDefinition() returns the complete SMIv1/v2 specification
  text as a string.

[2017-10-20] Version 1.9.3 (Requires SNMP4J 2.5.8 or later)

* Improved: Simplified Maven dependencies.

[2017-09-14] Version 1.9.2 (Requires SNMP4J 2.5.8 or later)

* Fixed: Changed classifier of JAR with dependencies from 'jar-with-dep' to the standard
  classifier 'jar-with-dependencies'.

[2017-08-12] Version 1.9.1 (Requires SNMP4J 2.5.6 or later)

* Fixed [SFJ-144]: MIB compiler does not check if an object is accessible in
  NOTIFICATION-TYPE's OBJECTS clause.
* Fixed [SFJ-146]: SNMP4J-SMI allows empty BITS construct in SYNTAX clauses although
  this is not allowed by RFC 2578.

[2017-04-12] Version 1.9.0 (Requires SNMP4J 2.5.6 or later)

* Added [SFJ-142]: Unloading MIB module including its dependencies otherwise unused with
  SmiManager.unloadModuleWithDependencies(..).
* Added: SmiManager.getExplicitlyLoadedModules() to return a list of modules that
  have been loaded directly (and not indicrectly by resolving import dependencies.
* Updated: SNMP4J to 2.5.6.

[2016-05-07] Version 1.8.0 (Requires SNMP4J 2.5.0 or later)

* Changed: Replaced SmiMaxAccess by MaxAccess from SNMP4J 2.5.0.
* Added: SubIndexInfo dependency from SNMP4J 2.5.0.
* Added: SmiErrorInfo interface to allow more flexible error reporting.
* Added: Support for NameAndNumber OID format.
* Added: Error checking for negative ranges for unsigned numeric values.
* Fixed: Possible in rare cases: NPE when checking sequence constructs
  in the SMI parser (strict checking only).
* Fixed: Possible in rare cases: NPE when checking import constructs
  in the SMI parser (strict checking only).

[2015-07-07] Version 1.7.0 (Requires SNMP4J 2.3.3 or later)

* Fixed [SFJ-111]: For trap and notification types the VARIABLES and OBJECTS clauses
  cannot be evaluated. A new interface SmiNotificationType has been added for that.
* Added: SmiManager.findSmiObject by module and object name with (optionally)
  including imported MIB modules of the specified module in the search.
* Added: Interfaces and implementations in SmiManager to access attributes
  of MODULE-COMPLIANCE and AGENT-CAPABILITIES statements.

[2015-03-12] Version 1.6.0 (Requires SNMP4J 2.3.3 or later)

* Fixed [SFJ-102]: BITS syntax cannot be used in SMIv1 as textual convention.
* Added [SFJ-101]: SmiManager.findSmiObject by OID and provide filename
  of the MIB module an object belongs too.

[2014-10-18] Version 1.5.2 (Requires SNMP4J 2.3.0 or later)

* Fixed: Index object parsing from String of IpAddress values.
* Added: Added SNMP-TLS-TM-MIB to mib repository.
* Added: SmiManager.getIndexStringFromVariables(..) method.
* Fixed: SmiObject.getParent did not return correct object type.
* Fixed: SmiManager.getIndexVariables did not take the entry object
  (instead a column object).
* Fixed: SmiTextualConvention.getDisplayHint returned display hint
  text enclosed in double quotes.
* Improved: System.lineSeparator dependency (Java 6 SE is now
  supported too).

[2014-08-05] Version 1.5.1 (Requires SNMP4J 2.3.0 or later)

* Fixed: File handle leak when using the SmiManager.compile(File[]...)
  method.
* Fixed: NPE in PIB module parsing.
* Added: SmiCompiler.dryModeWithoutErrorLimit to get all errors of a
  MIB module regardless of any globally set limit.
* Fixed: Duplicate module names in SmiManager.listModules if repository
  listener were not added/removed properly.

[2014-07-26] Version 1.5.0 (Requires SNMP4J 2.3.0 or later)

* Fixed: False error messages about missing imports or unresolved syntaxes
  could have been generated by the MIB compiler if a MIB file had several
  errors affecting the MIB structure.
* Improved: Error location of DEFVAL and other unresolved references.
* Added: Full SPPI PIB module checking now available with additional error
  messages 6001-6007.

[2014-06-30] Version 1.4.2 (Requires SNMP4J 2.3.0 or later)

* Fixed: If a MIB module had exactly one syntax error, an empty
  error list could have been returned to the caller of SmiManager.compile(..).

[2014-06-23] Version 1.4.1 (Requires SNMP4J 2.3.0 or later)

* Improved: Lenient mode parsing of SMIv2 MIB modules without mandatory
  MODULE-IDENTITY construct.

[2014-06-19] Version 1.4.0 (Requires SNMP4J 2.3.0 or later)

* Fixed: Lexical errors are reported with line, column and position (not only in
  line and column in message).
* Added: End position and end row & column of an SmiError.
* Fixed: Lenient compiler mode accepted too much errors in MIB files resulting
  in compiled MIB modules with missing MIB information (e.g., empty SYNTAX), causing
  NullPointerExceptions if accessed unchecked.
* Added: Short error message support which does not include error number and location.
* Improved: ZIP-File support for CompilationResult.
* Added: New interface SmiCompiler and extended control about the compilation process
  and overwriting of MIB modules in the MIB repository.
* Added: SmiObjectFilter.java and SmiManager.findSmiObject by filter method.

[2014-05-18] Version 1.3.2 (Requires SNMP4J 2.3.0 or later)

* Improved: Moved SmiSyntaxElementImpl and SmiSyntaxImpl outside SmiManager in order
  to be able to use SmiSyntax within JSF front end-code.
* Fixed: Possible NPE in getMinValueLength and getMaxValueLength.
* Added: SmiSyntaxType.java and resolved syntax support to seamlessly get syntax information
  from textual convention or SMIv1 type definitions.
* Added: Method SmiObjectType.createNewVariable to create a new variable value for an object type.
* Added: SmiObjectType.getDefaultValue and SmiObjectType.getDefaultVariable.

[2014-03-27] Version 1.3.1 (Requires SNMP4J 2.2.5 or later)

* Added: SmiObjectType.getMaxValueLength() and SmiObjectType.getMinValueLength() to
  determine the minimum and maximum length of a formatted value.
* Fixed [SFJ-91]: Fixed SmiObjectType.getSmiSyntax() implementation returned wrong
  BER syntax identifier values.

[2014-03-17] Version 1.3.0 (Requires SNMP4J 2.2.5 or later)

* Added: Easy multi-language support for SmiError messages through ResourceBundles.
  See the sample ResourceBundle SampleSmiErrorResourceBundle.java in the examples
  directory of the
* Added: SmiManager.setIncludeUnknownErrorsCause method to be able to forward
  exceptions in a custom RepositoryDriver to the caller of the compile methods
  as "unknown" SmiErrors.

[2014-03-03] Version 1.2.4 (Requires SNMP4J 2.2.5)

* Fixed: Race condition in SmiManager when accessing many different MIB modules
  concurrently from multiple threads.

[2014-02-18] Version 1.2.3 (Requires SNMP4J 2.2.5)

* Fixed: Regression in SmiManager.listModules which did not return a value if called
  on a SmiManager without a RepositoryDriver.
* Improved: SmiObject.getChildren now returns a list of SmiObjects or its subclasses.
  This allows API users to wrap the SmiObject class in their own subclasses.

[2014-02-14] Version 1.2.2 (Requires SNMP4J 2.2.5)

* Fixed: NullPointerException when calling SmiManger.listModules with the MemRepositoryDriver.
* Improved: The compile method now uses the lenient SMI compiler mode to determine module
  dependencies which improves sorting for MIB modules with syntax errors.

[2014-02-11] Version 1.2.1 (Requires SNMP4J 2.2.5)

* Initial SNMP4J-SMI-PRO release with four new (additional) SmiManager.find* methods
  which provide direct access to any SMIv1/v2 information (except compliance modules and
  agent-capabilities statements). The SNMP4J-SMI-PRO license is a site license in contrast
  to the user license SNMP4J-SMI.

CHANGES since SNMP4J-SMI 1.1.2:
* Fixed: NullPointerException in SmiManager.compile with some special syntax errors, for example
  if  a lowercase name exceeds 64 characters.
* Improved: Lenient parser mode now also accepts inconsistent syntax (i.e. between table entry and
  column definition) and the underscore ("_") character in lowercase names.

