Substitute of packages com.inductiveautomation.opcua

I try to adapt a module driver based on 7.9 AbstractTagDriver
Package com.inductiveautomation.opcua has gone in Ignition 8.0.
What are the substitute for :

com.inductiveautomation.opcua.types.NodeId
com.inductiveautomation.opcua.types.StatusCode
com.inductiveautomation.opcua.UAException
com.inductiveautomation.opcua.types.*

com.inductiveautomation.xopc.driver.api.tags
and com.inductiveautomation.xopc.driver.api.configuration.DeviceSettingsRecord

Everything under com.inductiveautomation.opcua has a counterpart somewhere in org.eclipse.milo.opcua except the old DataType, which is BuiltinDataType in Milo.

com.inductiveautomation.xopc.driver.api.tags still exists.

DeviceSettingsRecord is at com.inductiveautomation.ignition.gateway.opcua.server.api

Delete the unresolved imports and then place your cursor on a class that’s missing an import and hit option/alt+Enter in IntelliJ and it will usually find and suggest the new import.

3 Likes

Thanks @Kevin.Herron, it’s indeed simpler when we delete the unused import !

How to get BuiltinDataType from DataValue ???

public VariantDriverTag(String address, Object localValue, StatusCode statusCode) {
    this.localAddress = address;
    try {
        if (localValue == null){
            // crée un dataValue de type variant avec valeur null
            this.dataValue = new DataValue(statusCode);
            this.dataType = BuiltinDataType.Int64;
        }else {
            this.dataValue = new DataValue(new Variant(localValue),
                    statusCode,
                    new DateTime(),
                    new DateTime());
            this.dataType = dataValue.getValue().getType();   <=== 
            this.typeIndetermine = false;
            logger.info("construtor VariantDriverTag : address={},dataType={}",address,this.dataType);
        }
    } catch (UAException e) {
        logger.error(e.getMessage());
    }
}

As long as the DataValue isn’t holding a null value you can get the class of the underlying value and try BuiltinDataType.fromBackingClass().

1 Like

Eclipse is similar. But I find it convenient to use ctrl-shift-O to “Organize Imports” for the whole file at once. It rarely gets it wrong. (-:

Can you please give me a hint how to replace the NodeBuilders (com.inductiveautomation.opcua.nodes.builders.NodeBuilder, ObjectNodeBuilder, VariableNodeBuilder)?
I found the VariableTypeManager.VariableNodeConstructor interface but have no idea how to get an actual instance of it.
Is there a javadoc for milo somewhere? The source on github seems to have verly limited comments.

The ExampleNamespace from Milo is also worth looking at if you’re playing with the new Device API, since it’s basically just an extension of a Milo Namespace.

There’s also some node builder usages in there.

Thank you, those examples are very helpful!