Skip to content

Commit

Permalink
~ WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinherron committed Mar 18, 2024
1 parent edceb2d commit afab846
Show file tree
Hide file tree
Showing 3 changed files with 140 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,27 +18,17 @@
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import org.eclipse.milo.opcua.sdk.core.typetree.DataType;
import org.eclipse.milo.opcua.sdk.core.typetree.DataTypeTree;
import org.eclipse.milo.opcua.stack.core.BuiltinDataType;
import org.eclipse.milo.opcua.stack.core.NamespaceTable;
import org.eclipse.milo.opcua.stack.core.NodeIds;
import org.eclipse.milo.opcua.stack.core.ServerTable;
import org.eclipse.milo.opcua.stack.core.channel.EncodingLimits;
import org.eclipse.milo.opcua.stack.core.encoding.DataTypeCodec;
import org.eclipse.milo.opcua.stack.core.encoding.DefaultEncodingContext;
import org.eclipse.milo.opcua.stack.core.encoding.DefaultEncodingManager;
import org.eclipse.milo.opcua.stack.core.encoding.EncodingContext;
import org.eclipse.milo.opcua.stack.core.encoding.EncodingManager;
import org.eclipse.milo.opcua.stack.core.types.DataTypeManager;
import org.eclipse.milo.opcua.stack.core.types.DefaultDataTypeManager;
import org.eclipse.milo.opcua.stack.core.types.builtin.ExtensionObject;
import org.eclipse.milo.opcua.stack.core.types.builtin.Matrix;
import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
import org.eclipse.milo.opcua.stack.core.types.builtin.QualifiedName;
import org.eclipse.milo.opcua.stack.core.types.structured.DataTypeDefinition;
import org.eclipse.milo.opcua.stack.core.types.structured.XVType;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;

import static org.junit.jupiter.api.Assertions.assertEquals;

Expand Down Expand Up @@ -243,7 +233,7 @@ void decodeStructMatrix() {
}
}

private static final DataType XV_DATA_TYPE = new DataType() {
static final DataType XV_DATA_TYPE = new DataType() {
@Override
public QualifiedName getBrowseName() {
return new QualifiedName(0, "XVType");
Expand Down Expand Up @@ -288,50 +278,4 @@ public String toString() {
}
};

private static class TestEncodingContext implements EncodingContext {

DataTypeTree dataTypeTree = Mockito.mock(DataTypeTree.class);
DataTypeManager dataTypeManager = new DefaultDataTypeManager();

public TestEncodingContext() {
DataTypeCodec xvDataTypeCodec =
JsonCodecFactory.create(XV_DATA_TYPE, dataTypeTree);

dataTypeManager.registerType(
XV_DATA_TYPE.getNodeId(),
xvDataTypeCodec,
XV_DATA_TYPE.getBinaryEncodingId(),
XV_DATA_TYPE.getXmlEncodingId(),
XV_DATA_TYPE.getJsonEncodingId()
);

Mockito.when(dataTypeTree.getDataType(XV_DATA_TYPE.getNodeId())).thenReturn(XV_DATA_TYPE);
}

@Override
public DataTypeManager getDataTypeManager() {
return dataTypeManager;
}

@Override
public EncodingManager getEncodingManager() {
return DefaultEncodingManager.createAndInitialize();
}

@Override
public EncodingLimits getEncodingLimits() {
return EncodingLimits.DEFAULT;
}

@Override
public NamespaceTable getNamespaceTable() {
return new NamespaceTable();
}

@Override
public ServerTable getServerTable() {
return new ServerTable();
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/*
* Copyright (c) 2024 the Eclipse Milo Authors
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*/

package org.eclipse.milo.sdk.core.types.json;

import org.eclipse.milo.opcua.sdk.core.typetree.DataType;
import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
import org.eclipse.milo.opcua.stack.core.types.builtin.QualifiedName;
import org.eclipse.milo.opcua.stack.core.types.structured.DataTypeDefinition;
import org.jetbrains.annotations.Nullable;

public class TestDataType implements DataType {

final NodeId nodeId;
final QualifiedName browseName;
final DataTypeDefinition definition;
final boolean isAbstract;

public TestDataType(NodeId nodeId, QualifiedName browseName, DataTypeDefinition definition, boolean isAbstract) {
this.nodeId = nodeId;
this.browseName = browseName;
this.definition = definition;
this.isAbstract = isAbstract;
}

@Override
public NodeId getNodeId() {
return nodeId;
}

@Override
public QualifiedName getBrowseName() {
return browseName;
}

@Override
public @Nullable NodeId getBinaryEncodingId() {
return null;
}

@Override
public @Nullable NodeId getXmlEncodingId() {
return null;
}

@Override
public @Nullable NodeId getJsonEncodingId() {
return null;
}

@Override
public @Nullable DataTypeDefinition getDataTypeDefinition() {
return definition;
}

@Override
public Boolean isAbstract() {
return isAbstract;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/*
* Copyright (c) 2024 the Eclipse Milo Authors
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*/

package org.eclipse.milo.sdk.core.types.json;

import org.eclipse.milo.opcua.sdk.core.typetree.DataTypeTree;
import org.eclipse.milo.opcua.stack.core.NamespaceTable;
import org.eclipse.milo.opcua.stack.core.ServerTable;
import org.eclipse.milo.opcua.stack.core.channel.EncodingLimits;
import org.eclipse.milo.opcua.stack.core.encoding.DataTypeCodec;
import org.eclipse.milo.opcua.stack.core.encoding.DefaultEncodingManager;
import org.eclipse.milo.opcua.stack.core.encoding.EncodingContext;
import org.eclipse.milo.opcua.stack.core.encoding.EncodingManager;
import org.eclipse.milo.opcua.stack.core.types.DataTypeManager;
import org.eclipse.milo.opcua.stack.core.types.DefaultDataTypeManager;
import org.mockito.Mockito;

class TestEncodingContext implements EncodingContext {

DataTypeTree dataTypeTree = Mockito.mock(DataTypeTree.class);
DataTypeManager dataTypeManager = new DefaultDataTypeManager();

public TestEncodingContext() {
DataTypeCodec xvDataTypeCodec =
JsonCodecFactory.create(JsonStructCodecTest.XV_DATA_TYPE, dataTypeTree);

dataTypeManager.registerType(
JsonStructCodecTest.XV_DATA_TYPE.getNodeId(),
xvDataTypeCodec,
JsonStructCodecTest.XV_DATA_TYPE.getBinaryEncodingId(),
JsonStructCodecTest.XV_DATA_TYPE.getXmlEncodingId(),
JsonStructCodecTest.XV_DATA_TYPE.getJsonEncodingId()
);

Mockito.when(dataTypeTree.getDataType(JsonStructCodecTest.XV_DATA_TYPE.getNodeId()))
.thenReturn(JsonStructCodecTest.XV_DATA_TYPE);
}

@Override
public DataTypeManager getDataTypeManager() {
return dataTypeManager;
}

@Override
public EncodingManager getEncodingManager() {
return DefaultEncodingManager.createAndInitialize();
}

@Override
public EncodingLimits getEncodingLimits() {
return EncodingLimits.DEFAULT;
}

@Override
public NamespaceTable getNamespaceTable() {
return new NamespaceTable();
}

@Override
public ServerTable getServerTable() {
return new ServerTable();
}

}

0 comments on commit afab846

Please sign in to comment.