# Release History

The SBLIM CIM Client for Java was originally written in 2005, then upgraded to the standardized JSR48 API and released to the public for the first time in February of 2007. It continues to ship on a quarterly basis, as close as possible to the middle (15th) of the last month of each quarter (March, June, September, December).

Code Stream | Versions | Java Version | State
--- | --- | --- | ---
2.0.x | 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.0.6, 2.0.7, 2.0.8, 2.0.9 | 1.4 | Sunset December 2010
2.1.x | 2.1.0, 2.1.1, 2.1.2, 2.1.3, 2.1.4, 2.1.5, 2.1.6, 2.1.7, 2.1.8, 2.1.9, 2.1.10, 2.1.11, 2.1.12 | 1.5 | Maintenance mode September 2012
2.2.x | 2.2.0, 2.2.1 | 1.5 | Active

## Version 2.2.1

Version 2.2.1 was released on December 14, 2012. It contains two new features:

- A new internal API - WBEMConfiguation.getActiveConfigFullURL - can be used to obtain the FQDN of the active conguration file (#3576396)
- A new Java property - sblim.wbem.verifyJavaLangDoubleStrings - can be used to make the client verify that strings representing a Double will not hang the JRE when parsed (#3572993)

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
3567433 | Add links to top of detailed release history HTML
3572993 | parseDouble("2.2250738585072012e-308") DoS vulnerability
3576396 | Improve logging of config file name
3557283 | Print full response when get EOF from CIMOM
3588558 | An enhancement on Java CIM Client logging
3592502 | Enhance CIMDataType unit test
3584119 | Update detailed release history HTML for 2.2.1

## Version 2.2.0

Version 2.2.0 was released on September 14, 2012. It is fully compliant with the final JSR48 1.0.0 specification. In order to comply, several APIs were removed while several others changed their behavior. The changes made along with their workarounds are described in the following table:

Change | Workaround
--- | ---
Constructor CIMObjectPath(pObjectName, pNamespace) removed | Use CIMObjectPath(null, null, null, pNamespace, pObjectName, null) instead
Constructor CIMObjectPath(pObjectName, pNamespace, pKeys) removed | Use CIMObjectPath(null, null, null, pNamespace, pObjectName, pKeys) instead
Constructor CIMObjectPath(pHost, pNamespace, pObjectName, pKeys) removed | Use CIMObjectPath(null, pHost, null, pNamespace, pObjectName, pKeys) instead
Method WBEMClient.associators(pObjectName, pAssociationClass, pResultClass, pRole, pResultRole, pIncludeQualifiers, pIncludeClassOrigin, pPropertyList) removed | For classes, use WBEMClient.associatorClasses(pObjectName, pAssociationClass, pResultClass, pRole, pResultRole, pIncludeQualifiers, pIncludeClassOrigin, pPropertyList) instead; for instances, use WBEMClient.associatorInstances(pObjectName, pAssociationClass, pResultClass, pRole, pResultRole, pIncludeClassOrigin, pPropertyList) instead
Method WBEMClient.references(pObjectName, pResultClass, pRole, pIncludeQualifiers, pIncludeClassOrigin, pPropertyList) removed | For classes, use WBEMClient.referenceClasses(pObjectName, pResultClass, pRole, pIncludeQualifiers, pIncludeClassOrigin, pPropertyList) instead; for instances, use WBEMClient.referenceInstances(pObjectName, pResultClass, pRole, pIncludeClassOrigin, pPropertyList) instead
Constructor CIMDataType(pType, 0) no longer supported, will result in IllegalArgumentException | Use corresponding CIMDataType.x_ARRAY_T constant instead
Constructor CIMDataType(null) no longer supported, will result in IllegalArgumentException | Use CIMDataType("") instead
Constructor CIMDataType(null, pSize) no longer supported, will result in IllegalArgumentException | Use CIMDataType("", pSize) instead
Constructor CIMObjectPath("") no longer supported, will result in IllegalArgumentException | Use valid ObjectPath instead
Method WBEMClient.execQueryInstance() pReturnQueryResultClass and pContinueOnError parameters changed from Boolean to boolean | Use boolean instead of Boolean
Constructor CIMObjectPath(pScheme, pHost, pPort, pNamespace, pObjectName, pKeys) throws IllegalArgumentException if pKeys contains CIMProperty with pKey=false | Use pKey=true when constructing key properties instead
Constructor CIMObjectPath(pScheme, pHost, pPort, pNamespace, pObjectName, pKeys, pXmlSchemaName) throws IllegalArgumentException if pKeys contains CIMProperty with pKey=false | Use pKey=true when constructing key properties instead

In addition, the behavior of CIMInstance is changing significantly to comply with the final JSR48 1.0.0 specification. Up until now, the keys from the CIMObjectPath (first constructor parameter) were merged with the properties from the CIMProperty[] (second constructor parameter) such that getProperty() would return a key that was not in CIMProperty[]. From now on, the getProperties(), getProperty(), getPropertyCount() and getPropertyValue() methods will only act upon properties from the CIMProperty[]. To achieve the corresponding functionality with keys from the CIMObjectPath, use getKeys(), getObjectPath().getKey(), getObjectPath().length and getObjectPath().getKeyValue() instead.

Version 2.2.0 also contains several new features:

- One new internal API - WBEMClientSBLIM.enumerateNamespaces - can be used to obtain a CloseableIterator of namespaces (#3516848)
- One new internal API - WBEMClientSBLIM.isActive - can be used to determine if the client is active (initialized and not closed) or inactive (#3522904)
- A new Java property - sblim.wbem.httpWwwAuthenticateInfo - can be used to specify the WWW-Authenticate info to use when sending the first HTTP request to a server (#3524050)M/li>
- A new sample - Jsr48IndicationTester - demonstrates a general purpose indication test program with a command line interface (#3529066)
- Four new internal APIs - LogAndTraceManager.addCIMXMLTraceListener, removeCIMXMLTraceListener, clearCIMXMLTraceListeners, and getCIMXMLTraceListeners - can be used to trace CIM-XML requests and responses (#3554738)

Version 2.2.0 also contains several changes that might affect existing applications:

- The JSR48 API CIMObjectPath.toString() has been enhanced to produce consistent output - this may result in different output from previous releases, but the API documentation already states "This method is intended to be used only for debugging purposes. The format of the value returned may vary between implementations." (#3510090)
- The internal classes WBEMAuthenticationException and WBEMTransportException have been deleted after being deprecated in version 2.1.0.(#3525128)
- The internal API CIMResponse.isSuccessul has been deleted after being deprecated in version 2.1.1.(#3525135)
- The internal constant WBEMConstants.PROTOCOL_CIMXML has been deleted after being deprecated in version 2.1.3.(#3525138)
- The internal constant WBEMConstants.PROTOCOL_CIMXML has been deleted after being deprecated in version 2.1.3.(#3525138)
- The internal API CIMDeleteNameSpaceOp.getNamespace has been deleted after being deprecated in version 2.1.5.(#3525145)
- The internal API CIMGetClassOp.getPropertyLis has been deleted after being deprecated in version 2.1.0.(#3525150)
- The JSR48 properties PROP_ENABLE_CONSOLE_LOGGING and PROP_ENABLE_FILE_LOGGING are now levels ("OFF", "ALL", etc.) instead of "0" and "1" (#3521157)
- The internal API WBEMListenerSBLIM.getInstance has been deleted, use "new WBEMListenerSBLIM" instead (#3529062)
- Two new Java properties - sblim.wbem.sslClientPeerVerification and sblim.wbem.sslListenerPeerVerification - can be used to control SSL peer authentication for client/listener; users who had previously enabled client/listener peer verification by setting the value of javax.net.ssl.trustStore will additionally have to set one or both of these new properties to a non-default value in order to enable peer verification (see Getting started with secure connections and Getting started with secure indications for details) (#3536399)

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
3500619 | JSR48 1.0.0: CIMClass association/key clean up
3505681 | Add detailed release history HTML
3510321 | Handle CDATA in CimXmlSerializer
3510090 | Fix CIMObjectPath.toString() inconsistencies
3511454 | SAX nodes not reinitialized properly
3513353 | TCK: CIMDataType arrays must have length >= 1
3513349 | TCK: CIMDataType must not accept null string
3513343 | TCK: CIMObjectPath must validate XML schema name
3513347 | TCK: CIMObjectPath allows empty string
3513357 | Handle multiple CDATAs in CimXmlSerializer
3514537 | TCK: execQueryInstances requires boolean, not Boolean
3514685 | TCK: getProperty must return default values
3515180 | JSR48 log dir/file should handle UNIX/Win separators
3516848 | enumerateNamespaces() method to WBEMClient
3517503 | Missing parm in CIMDataType ctor javadoc
3513228 | Reliable Indications support can create lots of threads
3466280 | get instance failure for CIM_IndicationSubscription
3521131 | Sync up javax.* javadoc with JSR48 1.0.0 Final II
3521119 | JSR48 1.0.0: remove CIMObjectPath 2/3/4-parm ctors
3521328 | JSR48 1.0.0: remove WBEMClient associators and references
3522904 | Add new API WBEMClientSBLIM.isActive()
3523918 | "java.io.IOException: Unexpected EOF" returned as HTTP 401
3525128 | Remove WBEMTransportException/WBEMAuthenticationException
3525135 | Remove CIMResponse.isSuccessul
3525138 | Remove WBEMConstants.PROTOCOL_CIMXML
3525145 | Remove CIMDeleteNameSpaceOp.getNamespace
3525150 | Remove CIMGetClassOp.getPropertyLis
3525657 | Sync up javax.* javadoc with JSR48 1.0.0 Final III
3521157 | JSR48 1.0.0: PROP_ENABLE_*_LOGGING is Level, not 0/1
3525914 | TCK: SetPropertyTest.testSetProperty failing
3526675 | Unit test fails on Java 7
3526679 | DOM parser ignores ERROR node CODE
3526681 | CIMError valid status codes out-of-date
3527580 | WBEMClient should not throw IllegalArgumentException
3529062 | WBEMListenerFactory should return new instance
3529065 | Enable WBEMListener get/setProperty
3524050 | Improve WWW-Authenticate in HTTPClient.java
3529066 | Add Jsr48IndicationTester
3545797 | Support new error code of SFCB
3535383 | HashDoS fix 3498482
3553858 | Append duplicate HTTP header fields instead of replace
3554738 | dump CIM xml by LogAndTraceBroker.trace()
3536398 | Update HTML to reflect secure indication support
3529151 | TCK: CIMInstance property APIs include keys from COP
3536399 | Add client/listener peer authentication properties
3562235 | LogAndTraceBrokerTest breaks unit test tracing
3565581 | TCK: remove unnecessary overriding methods
3555752 | Sync up javax.* javadoc with JSR48 1.0.0 Final IV
3567429 | Update detailed release history HTML for 2.2.0

## Version 2.1.12

Version 2.1.12 was released on March 15, 2012. It contains several new features:

- A new sample - Jsr48SfcbIndicationSample - demonstrates how to generate test indications in and receive indications from the sfcb CIMOM (#3480115)
- Two new internal APIs - LogAndTraceBroker.isLoggableTrace and isLoggableMessage - can be used to determine if the specified Level will be logged by a call to the trace and message APIs (#3484014)
- A new internal interface - IndicationListenerSBLIM - along with its indicationOccured API and corresponding three new internal WBEMListenerSBLIM.addListener APIs, can be used to pass the InetAddress of the indication sender to the listener (#3477087)
- A new Java property - sblim.wbem.listenerIndicationTraceFilter - can be used to trace properties of incoming indications at the FINE Level (#3485074)
- A new Java property - sblim.wbem.listenerAddSenderIPAddress - can be used to add the SBLIMJCC_SenderIPAddress property, which contains the IP address of the indication sender, to all indications (#3492214)
- A new Java property - sblim.wbem.socketConnectTimeout - can be used to set the timeout for socket connect requests made when sblim.wbem.socketConnectWithTimeout=true (#3492224)
- Three new JSR48 APIs - CIMObjectPath.getKeyValue, WBEMListener.getProperty and WBEMListener.setProperty - have been added to support JSR48 1.0.0 (#3496349 and #3496385)

Version 2.1.12 also contains several changes that might affect existing applications:

- The internal WBEMListenerSBLIM.WBEMListenerImpl and CIMEventDispatcher constructors now accept EventListener instead of IndicationListener (#3477087)
- Reliable indication support now allows for the SequenceContext and SequenceNumber properties to be present/absent as the CIMOM enables/disables reliable indications on the fly (#3484022)
- The JSR48 API WBEMListenerFactory.getPROTOCOLS has been deleted after being deprecated in version 2.1.1 (#3490009)
- The four JSR48 WBEMException constructors that accept an integer error ID now throw an IllegalArgumentException for an invalid ID; valid IDs are 0-12, 14-17 and 19-28 (#3490032)
- The Java property sblim.wbem.httpTimeout no longer specifies the timeout for socket connect requests, use sblim.wbem.socketConnectTimeout instead (#3492224)
- The two JSR48 APIs WBEMClient.associators and references which return a CloseableIterator have been deprecated, use associatorClasses/Instances and referenceClasses/Instances instead (#3496343)

Version 2.1.12 also contains a critical fix (#3498482) to counteract a possible Denial of Service attack against products that use hashing to parse XML, The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
3469018 | Properties not passed to CIMIndicationHandler
3469210 | Include reliable indications in HTML
3469427 | Fix broken HTML links
3480115 | Add Jsr48SfcbIndicationSample
3484014 | Add LogAndTraceBroker.isLoggable for message/trace
3477087 | Need Access to an Indication Sender's IP Address
3485074 | An Indication trace request
3484022 | Turn reliable indication mode on and off based on SC/SN
3490009 | TCK: Too many WBEMListenerFactory class methods
3490032 | TCK: WBEMException must validate error ID
3490355 | TCK: Cannot instantiate WBEMClientFactory
3492246 | Rename new indication trace property
3492214 | Add a SenderIPAddress property indications
3492224 | Need two different timeouts for Socket connections
3489638 | PERF: Bottleneck in LogAndTraceBroker.java - getCaller()
3477298 | Error compiling JSR48
3495662 | Invalid HTML from HttpConnectionHandler.writeError
3496301 | Sync up javax.* javadoc with JSR48 1.0.0 Final
3496343 | JSR48 1.0.0: deprecate WBEMClient associators and references
3496349 | JSR48 1.0.0: add CIMObjectPath getKeyValue
3496380 | JSR48 1.0.0: add new WBEMListenerConstants
3496385 | JSR48 1.0.0: add WBEMListener get/setProperty
3496355 | JSR48 1.0.0: add new WBEMClientConstants
3498482 | Red Hat: Possible XML Hash DoS in sblim
3504304 | Rename socket timeout variables
3504344 | Sync Experimental/HEAD branches

## Version 2.1.11

Version 2.1.11 was released on December 15, 2011. It contains one new feature:

- A new Java property - sblim.wbem.listenerReliableIndicationHashtableCapacity - can be used to store SenderIP/DestinationURL pairs in a hash table instead of a linked list while processing reliable indications (#3459036)

Version 2.1.11 also contains a couple changes that might affect existing applications:

- The JSR48 CIM element constructors now throw an IllegalArgumentException if the name is null (#3410126)
- The JSR48 CIM valued element constructors now throw an IllegalArgumentException if the type does not match the value's data type (#3411879)

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
3410126 | TCK: CIM element name cannot be null
3411879 | TCK: CIM element value must match type
3411944 | createJavaObject exception with hex uint
3423064 | Add UpdateExpiredPassword Header for Reqs from Java Client
3444912 | Client delay during SSL handshake
3459036 | Linked list for RI queue not efficient for many LDs

## Version 2.1.10

Version 2.1.10 was released on September 15, 2011. It contains one new feature:

- A new internal class - CIMOctetString - along with its two constructors and seven APIs can be used to store and manage octet (length-prefixed) strings (#3397922)

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
3323310 | Need the ability to override certain Global Properties
3374206 | NullPointerException caused by Indication
3376657 | Get reliable indication properties once
3374012 | Sblim client CIMObjectPath class defect for LLA format URL
3390724 | Problem with Reliable Indication support in the Listener
3397922 | support OctetString
3400209 | Highlighted Static Analysis (PMD) issues
3409691 | 2.1.10 packaging issues: rpmbuild broken on Red Hat

## Version 2.1.9

Version 2.1.9 was released on June 15, 2011. It contains a couple new features:

- A new Java property - sblim.wbem.cimxmlTraceStream - can be used to specify the output stream (System.out, System.err or file name) where CIM-XML tracing will be logged (#3277928)
- Reliable indications are now reordered such that they are delivered to the listener in order of increasing SequenceNumber property; this may introduce delays in delivery while waiting for missing indications (#3288721)

Version 2.1.9 also contains a couple changes that might affect existing applications:

- CIMInstance objects generated by the DOM parser now contain CIMProperty objects instead of CIMClassProperty (#3297028)
- The first parameter - pIndicationURL - passed to the JSR48 API IndicationHandler.indicationOccured now has its case preserved instead of being lower cased (#3304953)

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
3235440 | NullPointerException when socket factory returns null
3252669 | setXmlTraceStream blindly closes previous stream
3267429 | Samples should close client
3277928 | CIM-XML tracing cannot be enabled in the field
3281781 | fail to parse Embedded Instance parameter
3293248 | Support for CIM_ERROR instances within ERROR
3297028 | Instances contain CIMClassProperty with DOM parser
3206904 | Indication listener deadlock causes JVM to run out sockets
3288721 | Need the function of indication reordering
3304058 | Use same date format in change history
3304953 | Indication URL mapped to lower case
3311279 | Repeated Instantiation of SAXParserFactory

## Version 2.1.8

Version 2.1.8 was released on March 15, 2011. It contains a few new features:

- A new sample - Jsr48PegasusIndicationSample - demonstrates how to generate test indications in and receive indications from the OpenPegasus CIMOM (#3182121)
- A new Java property - sblim.wbem.listenerEnableReliableIndications - can be used to enable reliable indication support according to DSP 1054 v1.1 while two new related Java properties - sblim.wbem.listenerDeliveryRetryAttempts and sblim.wbem.listenerDeliveryRetryInterval - can be used to match the DeliveryRetryAttempts and DeliveryRetryInterval properties in the IndicationService instance on the CIMOM sending the reliable indications (#3185763)
- A new Java Property - sblim.wbem.performSslHandshake - can be used to enable or disable SSL handshakes when connecting via HTTPS (#3195069)

Version 2.1.8 also contains one change that might affect existing applications:

- The internal APIs HttpContentHandler.handleContent and CIMIndicationHandler.handleContent now accept an additional parameter, String pLocalAddress (#3185818)

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
3154232 | EmbeddedObject misspelled in javadoc
3182121 | Add Jsr48PegasusIndicationSample
3185818 | indicationOccured URL incorrect
3185824 | Char16 definition includes whitespace
3185833 | missing newline when logging request/response
3186176 | XML response for indication not traced
3190335 | Erroneous use of SystemName property in samples
3185763 | Reliable indication support - Phase 1
3195069 | Need support to disable SSL Handshake
3194680 | Error in numeric keys
3194700 | Exception thrown on extrinsic methods
3197627 | testBasicConnect unit test fails on Windows
3197423 | Server authentication with PegasusLocalAuthInfo failing

## Version 2.1.7

Version 2.1.7 was released on December 15, 2010. It contains one change that might affect existing applications:

- The Java properties ssl.SocketFactory.provider and ssl.ServerSocketFactory.provider have been replaced by sblim.wbem.sslSocketProvider and sblim.wbem.sslServerSocketProvider, respectively (#3111718)

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
3062747 | SblimCIMClient does not log all CIM-XML responces.
3078280 | Fix for a null pointer exception in 1.3.9.1
3109824 | Move Java link from Sun to Oracle
3111718 | org.sblim.cimclient SSL Code is using the wrong SSL Property

## Version 2.1.6

Version 2.1.6 was released on September 15, 2010. It contains a couple changes that might affect existing applications:

- The JSR48 API CIMDataType.getDataType now throws IllegalArgumentException for invalid data type instead of returning INVALID_T (#3004779)
- The internal API ServiceLocationAttribute.equals now returns false if attribute value arrays are different instead of always returning true (#3022519)

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
3004762 | HTTPClient infinite loop for HTTP 407
3004779 | TCK: CIMDataType not throwing IllegalArgumentException
3018178 | CIMDateTimeInterval clean up
3019214 | SLP equals methods assume too much
3019252 | Methods concatenate strings using + in a loop
3022501 | Possible integer overflow in getTotalUSec
3022519 | ServiceLocationAttribute.equals() compares same array
3022524 | iSortedValueEntries not serializable in Serializable class
3022541 | File descriptor leak in sample/unittest
3022554 | Flushing socket ignores skip() return code
3023095 | CIMQualifiedElementInterfaceImpl equals/hashCode issue
3023120 | RequestDescriptor equals/compareTo issue
3023135 | DADescriptor equals/compareTo issue
3023141 | CIMObjectPath uses # constructor instead of valueOf
3023143 | CIMXMLParserImpl uses # constructor instead of valueOf
3023145 | CharValue uses # constructor instead of valueOf
3023340 | CIMObjectFactory uses # constructor instead of valueOf
3023348 | Listener uses # constructor instead of valueOf
3023349 | SLP uses # constructor instead of valueOf
3026302 | CIMDateTimeInterval uses # constructor instead of valueOf
3026311 | Vacuous comparison of integer value
3026316 | XMLPullParser unused fields
3026360 | Handle unwritten fields
3026417 | XMLAttributeValue does not use iHash field
3027392 | Nullcheck of value previously dereferenced
3027479 | Dead store to local variable
3027615 | Use CLASS_ARRAY_T instead of new CIMDataType(CLASS,0)
3027618 | Close files/readers in finally blocks
3028518 | Additional StringBuilder use
3048749 | Hex digit parsing logic error in XMLPullParser
3046073 | Performance hit due to socket conn. creation with timeout

## Version 2.1.5

Version 2.1.5 was released on June 15, 2010. It contains a couple changes that might affect existing applications:

- The internal API CIMDeleteNameSpaceOp.getNamespace has been deprecated, use CIMOperation.getNameSpace instead (#3001357)
- The JSR48 API CIMMethod.isPropagated now returns the true state of method's propagated attribute instead of always returning false (#3001333)

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
2972697 | Fix spelling errors in HTML files
2973233 | TCK: UnsignedIntegerNN.hashCode() not working
2973230 | TCK: UnsignedInteger64.equals() does not handle null
2973300 | TCK: CIMDateTimeXXX.compareTo() does not handle null
2975885 | TCK: CIMXXX.hasQualifierValue(null,null) returns true
2975917 | TCK: CIMClass.getProperty() does not handle null property
2975975 | TCK: CIMObjectPath(String) does not handle null
2975989 | TCK: CIMQualifierType constructor does not handle null
2978722 | PasswordCredential(char[]) constructor is wrong
2974884 | Exception when attaching 2 CDRoms with invoke method
2990370 | Development/unittest HTML out of date
2989367 | CIMDateTimeInterval(long) constructor range wrong
2989424 | TCK: CIMDateTimeInterval constructor
2992349 | CIMDateTimeInterval hr/min/sec max is 23/59/59, not 24/60/60
2994249 | CIMDateTimeInterval(long) calculates milliseconds
2994252 | CIMDateTimeInterval.getTotalMilliseconds() not unit tested
2994776 | http 401 gives CIM_ERR_FAILED instead of CIM_ERR_ACCESS_DENIED
2997865 | Infinite loop in HttpClient
3001243 | Overview HTML out of date
3001345 | File handle leaks in HttpSocketFactory and LogAndTraceBroker
3001353 | HttpHeaderParser ignores return value of toLowerCase()
3001357 | CIMDeleteNameSpaceOp name clash
3001359 | XMLPullParser.CharString equals() method broken
3001680 | CIMQualifierElementInterfaceImpl changes qualifiers
3001333 | CIMMethod class ignores propagated parameter

## Version 2.1.4

Version 2.1.4 was released on March 15, 2010. It contains a couple new features:

- A new JSR48 API - CIMObjectPath.getXmlSchemaName - has been added to support JSR48 1.0.0 (#2944824)
- A new Java Property - sblim.wbem.cimxmlBuilder.upperCaseEmbObjEntities - can be used to control whether the embedded object entity in requests is upper-case (EMBEDDEDOBJECT) or mixed-case (EmbeddedObject) (#2970881)

Version 2.1.4 also contains a couple changes that might affect existing applications:

- The JSR48 API CIMDateTimeInterval.checkGranurality has been deprecated, use checkGranularity instead (#2944830)
- The JSR48 constant WBEMException.CIM_ERR_TYPE_MISMATCH (13) has been deleted (#2958990)

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
2912490 | NullPointerException when invoking getInstance
2909941 | RequestStateChange gives wrong exception/error id
2927029 | Unit test fails on Java 6
2930341 | Sync up WBEMClientConstants with JSR48 1.0.0
2935258 | Sync up javax.cim.* javadoc with JSR48 1.0.0
2944219 | Problem with pull operations using client against EMC CIMOM
2944824 | Missing getXmlSchemaName() in CIMObjectPath
2944826 | getUTCOffset() incorrect if not significant field
2944833 | Need private setValue in UnsignedInteger8
2944839 | Remove redundant toString() methods
2944842 | Missing thrown ArrayIndexOutOfBoundsException
2944830 | Fix spelling of checkGranurality()
2946113 | First steps code snippet has compile errors
2913938 | Duplicate CIM requests with identical message ID
2958941 | Sync up javax.wbem.* javadoc with JSR48 1.0.0
2958990 | Remove WBEMException.CIM_ERR_TYPE_MISMATCH
2959039 | Fix WBEMException.toString() logic
2959235 | Update build.xml copyright year
2959240 | Sync up javax.listener.* javadoc with JSR48 1.0.0
2959264 | Sync up javax.client.* javadoc with JSR48 1.0.0
2959586 | Sync up WBEMClient javadoc with JSR48 1.0.0
2961592 | Remove WBEMClient.setLocales() UnsupportedOperationException
2956716 | Jsr48IndicationSample hardcoded namespace
2957387 | EmbededObject XML attribute must not be all uppercases
2963502 | Add XML tracing to sample code
2964463 | WBEMClient.initialize() throws wrong exception
2942520 | IPv6 link local address with scope_id including a dot not supported
2970881 | Add property to control EmbeddedObject case

## Version 2.1.3

Version 2.1.3 was released on December 15, 2009. It contains several new features:

- The several new JSR48 APIs in WBEMClient used to exploit pull and open operations now work with the DOM and PULL parsers (#2860081 and #2878054)
- A new JSR48 constant - CIMDataType.CLASS_ARRAY_T - can be used for unbounded CIMClass arrays (#2870455)
- Two new JSR48 APIs in WBEMClient - associatorClasses and associatorInstances - can be used to get a CloseableIterator of classes and instances, respectively (#2858933)
- Several new JSR48 APIs have been added to support JSR48 1.0.0:
  - RoleCredential(char[] credential)
  - RoleCredential(String credential, String hostname)
  - String RoleCredential.getHostName()
  - RolePrincipal(String role, String host)
  - String RolePrincipal.getHostName()
  - UserPrincipal(String userName, String hostName)
  - String UserPrincipal.getHostName()
- Two new JSR48 APIs in WBEMClient - referenceClasses and referenceInstances - can be used to get a CloseableIterator of classes and instances, respectively (#2886829)

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
2860081 | Pulled Enumeration Support (DOM Parser)
2846231 | Connection failure on CIMOM w/o user/pw
2845128 | CIMObjectPath.toString() misses host
2865222 | enumerateQualifierTypes shouldn't require a class name
2839595 | SLP discovery fails on Unix IPv6 systems
2870455 | Missing CLASS_ARRAY_T in CIMDataType
2858933 | new JSR48 APIs : associatorClasses and associatorInstances
2882448 | Add WBEMClientConstants from JSR48
2884718 | Merge JSR48 and SBLIM client properties
2878054 | Pulled Enumeration Support (PULL Parser)
2888774 | support POST retry on HTTP error 505
2899389 | Password maximum length of 16?
2899859 | javax.wbem.client missing JSR48 credential/principal APIs
2886829 | new JSR48 APIs : referenceClasses and referenceInstances
2900875 | Javadoc should link to external Java5 Objects / APIs
2903373 | Java doc incorrect
2901216 | lost IndicationURL for IndcationListener.indicationOccured
2907527 | Fix SLP properties issues
2912104 | Sync up javax.wbem.* with JSR48 1.0.0

## Version 2.1.2

Version 2.1.2 was released on September 15, 2009. It contains a couple new features:

- A new internal class - CIMVersion - along with its six APIs can be used to retrieve version information of the SBLIM CIM Client for Java (#2834838)
- Several new JSR48 APIs in WBEMClient can be used to exploit pull and open operations with the SAX parser:
  - enumerateInstancePaths
  - enumerateInstances
  - associators
  - associatorPaths
  - references
  - referencePaths
  - getInstances
  - getInstancePaths
  - getInstancesWithPath
  - closeEnumeration
  - enumerationCount
  support for DOM and PULL parsers will be included in the next release (#2845211)

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
2823494 | Change Boolean constructor to static factory
2817962 | socket creation connects w/o a timeout
2834838 | Add interface to retrieve version number and product name
2845211 | Pulled Enumeration Support (SAX Parser)
2849970 | createVALUEARRAY fails to create reference array

## Version 2.1.1

Version 2.1.1 was released on June 15, 2009. It contains a couple new features:

- A new JSR48 API - CIMDateTimeAbsolute.getUTCOffset - has been added to support JSR48 1.0.0 (#2798931)
- Java 5 generics and Comparable types have been added to support JSR48 1.0.0 (#2797550 and #2795671)

Version 2.1.1 also contains a couple changes that might affect existing applications:

- The JSR48 API WBEMListenerFactory.getPROTOCOLS has been deprecated, use getProtocols instead (#2798931)
- Java 5 generics and Comparable types have been added to support JSR48 1.0.0, so recoding is required if an application uses any of the changed JSR48 or internal APIs (#2797550 and #2795671)

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
2714989 | Code cleanup from redundant null check et al
2750520 | Code cleanup from empty statement et al
2763216 | Code cleanup: visible spelling/grammar errors
2784078 | Code cleanup: messages_XX.properties
2787464 | lang exception in Chinese env with Java client 2.0.7
2791860 | Export instance to mof, wrong syntax
2795671 | Add Type to Comparable
2797696 | Input files use unchecked or unsafe operations
2798931 | Fix spelling of WBEMListenerFactory.getPROTOCOLS()
2799260 | Fix left over @author tag from Java5 upgrade
2797550 | Make code compatible with JSR48 / Java Generics
2806362 | Missing new CIMDateTimeAbsolute.getUTCOffset() method

## Version 2.1.0

Version 2.1.0 was released on March 12, 2009. It contains one change that might affect existing applications:

- The SBLIM CIM Client for Java is now compiled with Java 5 so it will longer run on 1.4 JREs (#2524131 and #2531371)

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
2680372 | Eliminate duplicate entries in javadoc allclasses-frame.html
2641758 | CIM Client does not recognize HTTP extension headers
2620505 | EmbeddedObject qualifier is missing from CIMClass
2433593 | isArray returns true for method parameters of type reference
2531371 | Upgrade client to JDK 1.5 (Phase 2)
2573575 | Fix build.xml to allow file names >100 chars
2524131 | Upgrade client to JDK 1.5 (Phase 1)

## Version 2.0.9

Version 2.0.9 was released on December 12, 2008.

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
2414503 | SLPConfig : parseList not returning populated list
2412389 | Test case failure: Java5 Complier : CIMDateTimeAbsoluteTest
2382763 | HTTP header field Accept-Language does not include *
2372030 | Add property to control synchronized SSL handshaking
2315151 | Jsr48IndicationSample does not work
2227442 | Add missing serialVersionUID
2210455 | Enhance javadoc, fix potential null pointers
2204488 | Fix / clean code to remove compiler warnings

## Version 2.0.8

Version 2.0.8 was released on September 12, 2008.

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
2093708 | HTTP 400 - Bad Request, CIMError: request-not-valid
2087969 | VALUE.ARRAY used in request for array of references
2087975 | can't set the pPropagated in WBEMClient.enumerateClasses()
2038305 | SAXException SBLIM Java Client V2.0.7
2034342 | HttpClient not closed on cimclient close
2013628 | SAXException when listing classes
2002599 | M-POST not supported in java-client

## Version 2.0.7

Version 2.0.7 was released on June 30, 2008.

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
2003590 | Change licensing from CPL to EPL
1963102 | NullPointerException when getting qualifiers

## Version 2.0.6

Version 2.0.6 was released on June 12, 2008.

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
1992337 | 2.0.6 packaging issues
1944875 | Indications with embedded objects are not accepted
1917321 | CIMObjectPath("CIM_Memory","/root/ibmsd") broken
1963762 | connection leak in WBEMClientCIMXML
1949000 | setLocales() is empty
1950819 | SLP error: "java.io.IOException" on Linux and IPv6
1949918 | malformed service URL crashes SLP discovery
1931621 | CIMDateTimeAbsolute(Calendar) does not respect DST
1931216 | In HTTPClient need to get status before closing connection
1917309 | "/root:__NAMESPACE" not valid CIMObjectPath

## Version 2.0.5

Version 2.0.5 was released on March 17, 2008.

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
1911400 | Source RPM file on SourceForge is broken

## Version 2.0.4

Version 2.0.4 was released on February 26, 2008.

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
1892046 | Basic/digest authentication problem for Japanese users
1849235 | DTStringWriter.writeSigned parameter pDigits is not used
1855726 | CIMInstance.deriveInstance is setting wrong CIMObjectPath
1892103 | SLP improvements
1804402 | IPv6 ready SLP
1832635 | less strict parsing for IPv6 hostnames
1848607 | Strict EmbeddedObject types
1827728 | embeddedInstances: attribute EmbeddedObject not set
1820763 | Supporting the EmbeddedInstance qualifier
1815707 | TLS support
1796339 | Serializable interface missing from internal componentry
1783288 | CIMClass.isAssociation() not working for retrieved classes.
1776114 | Cannot derive instance of class CIM_IndicationSubscription
1741654 | Header mismatch error on ModifyInstance
1769504 | Type identification for VALUETYPE="numeric"

## Version 2.0.3

Version 2.0.3 was not officially released.

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
1745282 | Uniform time stamps for log files
1742873 | IPv6 ready cim-client
1729361 | Multicast discovery is broken in DiscovererSLP
1737141 | Sync up with JSR48 evolution
1737123 | Differences to JSR48 public review draft
1736318 | Wrong object path in HTTP header
1735693 | Empty VALUE.ARRAY elements are parsed as nulls
1735614 | Wrong ARRAYSIZE attribute handling in SAX/PULL
1734936 | DiscovererSLPTest fails in some environments
1734888 | Wrong reference building in METHODCALL request
1723607 | IPv6 support in WBEM-URI strings

## Version 2.0.2

Version 2.0.2 was released on May 25, 2007.

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
1720707 | Conventional Node factory for CIM-XML SAX parser
1719991 | FVT: regression ClassCastException in EmbObjHandler
1712656 | Correct type identification for SVC CIMOM
1715612 | FVT: Status 0 in trailer is parsed as error
1715511 | FVT: Wrong HTTP header values
1715027 | FVT: Make message id random
1714902 | FVT: Threading related weak spots
1714853 | FVT: Inexplicit error when operation is invoked on closed client
1714878 | FVT: Empty string property values are parsed as nulls
1715053 | FVT: No forced retry on HTTP 501/510
1714184 | FVT: NPE on WBEMClientCIMXML.init()
1711092 | Some fixes/additions of log&trace messages
1710066 | LocalAuth fails for z/OS Pegasus
1669961 | CIMTypedElement.getType() =>getDataType()
1669225 | Ctor CIMDataType(int) shall be private
1689085 | Embedded object enhancements for Pegasus
1678915 | Integrated WBEM service discovery via SLP
1698278 | Unit tests fail on Hungarian locale
1678807 | Minor CIMDateTime suggestions
1686977 | Change package structure
1679620 | Ant build fails with javadoc error
1679534 | wrong ValueObjectNode.testChild()
1660756 | Embedded object support
1671502 | Remove dependency from Xerces
1663270 | Minor performance problems
1660743 | SSLContext is static
1660575 | Chunking broken on SUN JRE
1656285 | IndicationHandler does not accept non-Integer message ID

## Version 2.0.1

Version 2.0.1 was released on February 12, 2007.

The complete list of changes follows:

Bug ID | Bug Summary
--- | ---
1565892 | Make SBLIM client JSR48 compliant