Skip to content
This repository was archived by the owner on Feb 15, 2024. It is now read-only.

Commit b4c0a60

Browse files
committed
Merge branch 'feature/i4aas_deserialize' into feature/i4aas
2 parents 112ab28 + 8ca3008 commit b4c0a60

61 files changed

Lines changed: 2952 additions & 46 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/*
2+
* Copyright (c) 2021 Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e. V.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package io.adminshell.aas.v3.dataformat.i4aas;
17+
18+
import java.util.List;
19+
20+
import javax.xml.bind.JAXBException;
21+
22+
import org.opcfoundation.ua._2011._03.uanodeset.UANode;
23+
import org.opcfoundation.ua._2011._03.uanodeset.UANodeSet;
24+
25+
import io.adminshell.aas.v3.dataformat.DeserializationException;
26+
import io.adminshell.aas.v3.dataformat.Deserializer;
27+
import io.adminshell.aas.v3.dataformat.i4aas.parsers.EnvironmentParser;
28+
import io.adminshell.aas.v3.dataformat.i4aas.parsers.ParserContext;
29+
import io.adminshell.aas.v3.dataformat.i4aas.parsers.UANodeWrapper;
30+
import io.adminshell.aas.v3.model.AssetAdministrationShellEnvironment;
31+
32+
public class I4AASDeserializer implements Deserializer {
33+
34+
@Override
35+
public AssetAdministrationShellEnvironment read(String value) throws DeserializationException {
36+
try {
37+
UANodeSet uaNodeSet = new UANodeSetUnmarshaller().unmarshall(value);
38+
ParserContext parserContext = new ParserContext(uaNodeSet);
39+
UANodeWrapper environment = parserContext.getPreparsedEnvironment();
40+
return new EnvironmentParser(environment, new ParserContext(uaNodeSet)).parse();
41+
} catch (JAXBException e) {
42+
throw new DeserializationException("Deserialization failed due to a JAXBException.", e);
43+
}
44+
}
45+
46+
protected UANode findAASEnvironment(UANodeSet nodeSet) throws DeserializationException {
47+
List<UANode> uaObjectOrUAVariableOrUAMethod = nodeSet.getUAObjectOrUAVariableOrUAMethod();
48+
for (UANode uaNode : uaObjectOrUAVariableOrUAMethod) {
49+
if (uaNode.getBrowseName().contains("AASEnvironment")) {
50+
return uaNode;
51+
}
52+
}
53+
throw new DeserializationException("No AASEnvironment found.");
54+
}
55+
56+
@Override
57+
public <T> void useImplementation(Class<T> aasInterface, Class<? extends T> implementation) {
58+
}
59+
60+
}

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/I4AASSerializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import io.adminshell.aas.v3.dataformat.SerializationException;
2323
import io.adminshell.aas.v3.dataformat.Serializer;
2424
import io.adminshell.aas.v3.dataformat.i4aas.mappers.EnvironmentMapper;
25-
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.MappingContext;
25+
import io.adminshell.aas.v3.dataformat.i4aas.mappers.MappingContext;
2626
import io.adminshell.aas.v3.model.AssetAdministrationShellEnvironment;
2727

2828
public class I4AASSerializer implements Serializer {
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*
2+
* Copyright (c) 2021 Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e. V.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package io.adminshell.aas.v3.dataformat.i4aas;
17+
18+
import java.io.InputStream;
19+
import java.io.StringReader;
20+
import java.io.StringWriter;
21+
22+
import javax.xml.bind.JAXBContext;
23+
import javax.xml.bind.JAXBException;
24+
import javax.xml.bind.Marshaller;
25+
import javax.xml.bind.Unmarshaller;
26+
27+
import org.opcfoundation.ua._2008._02.types.ListOfExtensionObject;
28+
import org.opcfoundation.ua._2011._03.uanodeset.UANodeSet;
29+
import org.opcfoundation.ua.i4aas.types.AASKeyDataType;
30+
31+
public class UANodeSetUnmarshaller {
32+
33+
private JAXBContext jaxbCtx;
34+
private Unmarshaller unmarshaller;
35+
36+
public UANodeSetUnmarshaller() throws JAXBException {
37+
jaxbCtx = org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(
38+
new Class[] { UANodeSet.class, ListOfExtensionObject.class, AASKeyDataType.class }, null);
39+
unmarshaller = jaxbCtx.createUnmarshaller();
40+
}
41+
42+
public UANodeSet unmarshall(String input) throws JAXBException {
43+
return (UANodeSet) unmarshaller.unmarshal(new StringReader(input));
44+
}
45+
46+
public UANodeSet unmarshall(InputStream input) throws JAXBException {
47+
return (UANodeSet) unmarshaller.unmarshal(input);
48+
}
49+
}

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/AdministrationMapper.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.I4AASUtils;
2222
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.I4AASIdentifier;
23-
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.MappingContext;
2423
import io.adminshell.aas.v3.model.AdministrativeInformation;
2524

2625
public class AdministrationMapper extends I4AASMapper<AdministrativeInformation, UAObject>

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/AssetAdministrationShellMapper.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import org.opcfoundation.ua._2011._03.uanodeset.UAObject;
2121
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.I4AASIdentifier;
22-
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.MappingContext;
2322
import io.adminshell.aas.v3.model.AssetAdministrationShell;
2423
import io.adminshell.aas.v3.model.AssetInformation;
2524
import io.adminshell.aas.v3.model.DataTypeIEC61360;

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/AssetInformationMapper.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import io.adminshell.aas.v3.dataformat.i4aas.mappers.sme.FileMapper;
2222
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.I4AASUtils;
2323
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.I4AASIdentifier;
24-
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.MappingContext;
2524
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.UaIdentifier;
2625
import io.adminshell.aas.v3.model.AssetInformation;
2726
import io.adminshell.aas.v3.model.AssetKind;

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/BooleanPropertyMapper.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import org.opcfoundation.ua._2011._03.uanodeset.UAVariable;
2222

2323
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.I4AASUtils;
24-
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.MappingContext;
2524
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.UaIdentifier;
2625

2726
public class BooleanPropertyMapper extends I4AASMapper<Boolean, UAVariable> {

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/ByteStringPropertyMapper.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import org.opcfoundation.ua._2008._02.types.ObjectFactory;
2121
import org.opcfoundation.ua._2011._03.uanodeset.UAVariable;
2222

23-
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.MappingContext;
2423
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.UaIdentifier;
2524

2625
public class ByteStringPropertyMapper extends I4AASMapper<byte[], UAVariable> {

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/ConceptDescriptionMapper.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import org.opcfoundation.ua._2011._03.uanodeset.UAObject;
1919

2020
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.I4AASIdentifier;
21-
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.MappingContext;
2221
import io.adminshell.aas.v3.model.ConceptDescription;
2322
import io.adminshell.aas.v3.model.IdentifierType;
2423
import io.adminshell.aas.v3.model.Reference;

dataformat-uanodeset/src/main/java/io/adminshell/aas/v3/dataformat/i4aas/mappers/DataSpecificationIEC61360Mapper.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.I4AASUtils;
2222
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.I4AASIdentifier;
23-
import io.adminshell.aas.v3.dataformat.i4aas.mappers.utils.MappingContext;
2423
import io.adminshell.aas.v3.model.DataSpecificationIEC61360;
2524
import io.adminshell.aas.v3.model.DataTypeIEC61360;
2625
import io.adminshell.aas.v3.model.Reference;

0 commit comments

Comments
 (0)