Prosys OPC UA Java SDK 2.0.2
This is a new service release of the SDK, which fixes several issues in the implementation.
OPC Foundation Java Stack changes
- Build 1.02.335.7
- Fixed: Possible NPE in Objectutils.appendObjectAsString()
- Fixed: XmlElement.toString() in case the value is not XML
- Fixed: StatusCode.getName() to return value also for BAD (used to return an empty string)
- Fixed: CloseSecureChannel was never called when connections were closed - and incidentally caused an extra 1 second delay in channel disconnection.
Changes to both SDK Client and Server
- INTERFACE ADDITION!: UaNodeFactory added public Class extends UaNode> getClassType(NodeClass nodeClass, NodeId typeDefinition) method
- Fixed: SubscriptionBase, priority (higher number means higher priority)
- Changed: LocalizedTextMap: use LocalizedText.Null instead of throwing an exception for null values
- Updated: Tutorial to use MonitoredDataItem.setDataChangeListener instead of addDataChangeListener
Changes to SDK Client
- New: readSizeValue method in FileTypeImpl
- Added: timeoutDetectionFactor option to Subscription, can be used to give servers more time to send keep-alive in Subscriptions before they timeout
- Fixed: Do not register UaFolder type (which is now deprecated) - it will inhibit the generated FolderType to be used in AddressSpace.getNode()
- Fixed: AddressSpace.getNode removed obsolete StatusException throw
- Fixed: UaClientNodeFactory could not use protected constructors in generated classes: using the generated classes failed
- Fixed: Optional nodes in generated classes threw exceptions if not initialized. Changed to retun null instead
- Fixed: HttpSettings in UaClient are stored in internal field, avoid initializing the client too early (certificate could be missing)
- Fixed: UaClient.get/setTimeout() default value changed from 0 to null/-1. Timeout of 0 means no timeout, i.e. should wait indefinitely, whereas null/-1 instructs to use the stack default.
Changes to SDK Server
- New: NodeManagerAdapter, provides adapter pattern to NodeManagerListener
- New: protected field 'started' in NodeManager (set to true after start() method finishes)
- New: ServerNode.set/getAddNotifierReferencesToServerObject()
- New: FileNodeManager.set/isAllowWrite() (default=false)
- New: MonitoredEventItem, send EventQueueOverflowEventType if the event queue overflows, SourceName of EventQueueOverflowEventType is "Internal/EventQueueOverflow"; RefreshEvents are no longer filtered
- Updated javadoc: ReflectiveVariable
- Changed: NodeManagerRoot: the internal standard UA model loading will stop on first failure instead of continuing
- Changed: FileTypeNode, has now NodeVersion property
- Changed: NodeBuilder should not add HasNotifier references from type nodes to Server, or copy GeneratesEvent references from types to instances
- Fixed: Details in subscriptions
- Fixed: Details in FileNodeManager and FileFolderType
- Fixed: Details in event triggering
- Fixed: Possible deadlock when a value was updating at the same time a monitored item was created for it
- Fixed: UaVariableNode, setting DataType when creating the node handles correctly
- Fixed: NodeManagerUaNode, creates NodeDeleted model change events
- Added: FileNodeManager, support for client-side uploads
- Fixed: Subscription, keepalive should trigger more correctly; subscription is re-added to publish queue if its parameters (e.g. priority) changes
- Fixed: BaseEventTypeNode, always send an event just once and always send to source and server, do not trigger events for null nodes
- Fixed: ServerTypeNode, ServiceLevel initialized to 255, Auditing to false (both were null), AccessLevel is now read only
- Fixed: GeneralModelChangeEvent, has changes instead of null, should not receive duplicate events
- Fixed: SemanticsChangeEvent, has changes instead of null
- Fixed: AlarmConditionTypeNode & AcknowledgeableConditionTypeNode: initialize Optional node values only if they are present
- Fixed: AcknowledgeableConditionTypeNode: Usage of optional ConfirmedState made conditional in setAcked and setConfirmed
- Fixed: AlarmConditionTypeNode: Optional ShelvingState guarded
- Fixed: Initialization of State fields in generated ConditionType nodes
- Fixed: possible NPE in MonitoredDataItem, when queue is null
- Fixed: Sampling enabled in MonitoredDataItem when publishing is disabled
- Fixed: EventId added to RefreshStartEvent and RefreshEndEvent
- Fixed: Package path in ReadmeSample.md codegen documentation
- Updated: Generated interfaces have method names as constants
Changes to the Sample applications
- Fixed: Possible NPE in SampleConsoleServer if invalid action is selected from the menu
17.09.14