Bug 576223 - Fixed custom property reference migrations.
Signed-off-by: Raphael Weber <raphael.weber@vector.com>
diff --git a/plugins/org.eclipse.app4mc.amalthea.converters.090/src/org/eclipse/app4mc/amalthea/converters090/utils/UpdateCustomPropsPostProcessor.java b/plugins/org.eclipse.app4mc.amalthea.converters.090/src/org/eclipse/app4mc/amalthea/converters090/utils/UpdateCustomPropsPostProcessor.java
index 58bf547..7af964c 100644
--- a/plugins/org.eclipse.app4mc.amalthea.converters.090/src/org/eclipse/app4mc/amalthea/converters090/utils/UpdateCustomPropsPostProcessor.java
+++ b/plugins/org.eclipse.app4mc.amalthea.converters.090/src/org/eclipse/app4mc/amalthea/converters090/utils/UpdateCustomPropsPostProcessor.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2018-2020 Robert Bosch GmbH and others.
+ * Copyright (c) 2018-2021 Robert Bosch GmbH and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -163,9 +163,9 @@
value="Memory";
}
}
- else if (value.equals("CoreType")) {
+ else if (value.equals("Core")) {
value = "ProcessingUnit";
- } else if (value.equals("NetworkType")) {
+ } else if (value.equals("Network")) {
value = "ConnectionHandler";
} else if (value.equals("HwSystem")) {
value = "HwStructure";
@@ -173,9 +173,9 @@
value = "HwStructure";
} else if (value.equals("Microcontroller")) {
value = "HwStructure";
- } else if (value.equals("Core")) {
+ } else if (value.equals("CoreType")) {
value = "ProcessingUnitDefinition";
- } else if (value.equals("Network")) {
+ } else if (value.equals("NetworkType")) {
value = "ConnectionHandlerDefinition";
} else if (value.equals("Quartz")) {
value = "FrequencyDomain";
diff --git a/tests/org.eclipse.app4mc.amalthea.converters.090.tests/TestModels/input/hw_references/refsModel.amxmi b/tests/org.eclipse.app4mc.amalthea.converters.090.tests/TestModels/input/hw_references/refsModel.amxmi
index 7e2cee7..db9c8d6 100644
--- a/tests/org.eclipse.app4mc.amalthea.converters.090.tests/TestModels/input/hw_references/refsModel.amxmi
+++ b/tests/org.eclipse.app4mc.amalthea.converters.090.tests/TestModels/input/hw_references/refsModel.amxmi
@@ -49,7 +49,116 @@
<sections name="section1"/>
</swModel>
<hwModel>
- <coreTypes bitWidth="0" instructionsPerCycle="0.0"/>
+ <mcTypes name="DualCore_SM" />
+ <coreTypes name="P_1_Core0_type" bitWidth="0" instructionsPerCycle="1.0" />
+ <coreTypes name="P_1_Core1_type" bitWidth="0" instructionsPerCycle="1.0" />
+ <networkTypes xsi:type="am:Bus" name="BusType" bitWidth="16" />
+ <accessPaths xsi:type="am:HwAccessPath" name="P_1_Core0_to_P_1_SM" source="P_1_Core0?type=Core" target="P_1_SM?type=Memory">
+ <hwElements xsi:type="am:HwElementRef" port="P_1_Core0/P_1_Core0.port?type=ComplexPort" />
+ <hwElements xsi:type="am:HwElementRef" port="P_1_SM/P_1_SM.port?type=ComplexPort" />
+ </accessPaths>
+ <accessPaths xsi:type="am:HwAccessPath" name="P_1_Core1_to_P_1_SM" source="P_1_Core1?type=Core" target="P_1_SM?type=Memory">
+ <hwElements xsi:type="am:HwElementRef" port="P_1_Core1/P_1_Core1.port?type=ComplexPort" />
+ <hwElements xsi:type="am:HwElementRef" port="P_1_SM/P_1_SM.port?type=ComplexPort" />
+ </accessPaths>
+ <system>
+ <ecus name="ECU">
+ <microcontrollers name="P_1" microcontrollerType="DualCore_SM?type=MicrocontrollerType">
+ <memories name="P_1_DualCore_SM__memory">
+ <customProperties key="attribute#MemoryType">
+ <value xsi:type="am:StringObject" value="MulticoreMemorySystem" />
+ </customProperties>
+ <customProperties key="attribute#addressBased">
+ <value xsi:type="am:BooleanObject" value="false" />
+ </customProperties>
+ <memories name="P_1_SM">
+ <customProperties key="attribute#addCycleCount">
+ <value xsi:type="am:LongObject" value="1" />
+ </customProperties>
+ <customProperties key="attribute#readCycleCount">
+ <value xsi:type="am:LongObject" value="1" />
+ </customProperties>
+ <customProperties key="attribute#removeCycleCount">
+ <value xsi:type="am:LongObject" value="1" />
+ </customProperties>
+ <customProperties key="attribute#writeCycleCount">
+ <value xsi:type="am:LongObject" value="1" />
+ </customProperties>
+ <customProperties key="attribute#id">
+ <value xsi:type="am:StringObject" value="SM" />
+ </customProperties>
+ <customProperties key="attribute#dataWidth">
+ <value xsi:type="am:StringObject" value="16.0 bit" />
+ </customProperties>
+ <customProperties key="attribute#MemoryType">
+ <value xsi:type="am:StringObject" value="MemoryModule" />
+ </customProperties>
+ <customProperties key="attribute#maxConcurrentAccess">
+ <value xsi:type="am:LongObject" value="1" />
+ </customProperties>
+ <prescaler name="P_1_SM.prescaler" clockRatio="0.0" quartz="Quartz?type=Quartz" />
+ <ports xsi:type="am:ComplexPort" name="P_1_SM.port" network="P_1_Bus_1?type=Network" master="false" bitWidth="16" baseAddress="0" addressRange="0" direction="RW" writeCycles="1" readCycles="1" schedValue="0" />
+ </memories>
+ <networks name="P_1_Bus_1" type="BusType?type=Bus">
+ <customProperties key="attribute#addCycleCount">
+ <value xsi:type="am:LongObject" value="1" />
+ </customProperties>
+ <customProperties key="attribute#readCycleCount">
+ <value xsi:type="am:LongObject" value="1" />
+ </customProperties>
+ <customProperties key="attribute#removeCycleCount">
+ <value xsi:type="am:LongObject" value="1" />
+ </customProperties>
+ <customProperties key="attribute#writeCycleCount">
+ <value xsi:type="am:LongObject" value="1" />
+ </customProperties>
+ <customProperties key="attribute#dataWidth">
+ <value xsi:type="am:StringObject" value="16.0 bit" />
+ </customProperties>
+ <customProperties key="attribute#maxConcurrentAccess">
+ <value xsi:type="am:LongObject" value="1" />
+ </customProperties>
+ <customProperties key="Connection Whitelist">
+ <value xsi:type="am:ListObject">
+ <values xsi:type="am:ListObject">
+ <values xsi:type="am:ReferenceObject" value="P_1_Core0?type=Core" />
+ <values xsi:type="am:ReferenceObject" value="P_1_SM?type=Memory" />
+ </values>
+ <values xsi:type="am:ListObject">
+ <values xsi:type="am:ReferenceObject" value="P_1_Core1?type=Core" />
+ <values xsi:type="am:ReferenceObject" value="P_1_SM?type=Memory" />
+ </values>
+ </value>
+ </customProperties>
+ <prescaler name="P_1_Bus_1.prescaler" clockRatio="0.0" quartz="Quartz?type=Quartz" />
+ </networks>
+ </memories>
+ <cores name="P_1_Core0" coreType="P_1_Core0_type?type=CoreType" lockstepGroup="0">
+ <customProperties key="attribute#id">
+ <value xsi:type="am:StringObject" value="Core0" />
+ </customProperties>
+ <customProperties key="attribute#memoryArbiterPriority">
+ <value xsi:type="am:LongObject" value="0" />
+ </customProperties>
+ <prescaler name="P_1_Core0_prescaler" clockRatio="0.0" quartz="Quartz?type=Quartz" />
+ <ports xsi:type="am:ComplexPort" name="P_1_Core0.port" network="P_1_Bus_1?type=Network" master="false" bitWidth="16" baseAddress="0" addressRange="0" direction="RW" writeCycles="1" readCycles="1" schedValue="0" />
+ </cores>
+ <cores name="P_1_Core1" coreType="P_1_Core1_type?type=CoreType" lockstepGroup="0">
+ <customProperties key="attribute#id">
+ <value xsi:type="am:StringObject" value="Core1" />
+ </customProperties>
+ <customProperties key="attribute#memoryArbiterPriority">
+ <value xsi:type="am:LongObject" value="0" />
+ </customProperties>
+ <prescaler name="P_1_Core1_prescaler" clockRatio="0.0" quartz="Quartz?type=Quartz" />
+ <ports xsi:type="am:ComplexPort" name="P_1_Core1.port" network="P_1_Bus_1?type=Network" master="false" bitWidth="16" baseAddress="0" addressRange="0" direction="RW" writeCycles="1" readCycles="1" schedValue="0" />
+ </cores>
+ </microcontrollers>
+ </ecus>
+ <quartzes name="Quartz" type="STATIC">
+ <frequency unit="MHz" value="600.0" />
+ </quartzes>
+ </system>
</hwModel>
<osModel>
<operatingSystems>
diff --git a/tests/org.eclipse.app4mc.amalthea.converters.090.tests/src/org/eclipse/app4mc/amalthea/converters090/tests/HWReferencesConverterTest.java b/tests/org.eclipse.app4mc.amalthea.converters.090.tests/src/org/eclipse/app4mc/amalthea/converters090/tests/HWReferencesConverterTest.java
index 9f4ee65..a6c0ec7 100644
--- a/tests/org.eclipse.app4mc.amalthea.converters.090.tests/src/org/eclipse/app4mc/amalthea/converters090/tests/HWReferencesConverterTest.java
+++ b/tests/org.eclipse.app4mc.amalthea.converters.090.tests/src/org/eclipse/app4mc/amalthea/converters090/tests/HWReferencesConverterTest.java
@@ -14,17 +14,21 @@
package org.eclipse.app4mc.amalthea.converters090.tests;
+import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import org.eclipse.app4mc.amalthea.converters.common.base.ICache;
+import org.eclipse.app4mc.amalthea.converters.common.base.IPostProcessor;
import org.eclipse.app4mc.amalthea.converters.common.converter.NamespaceConverter;
import org.eclipse.app4mc.amalthea.converters090.impl.HwConverter;
import org.eclipse.app4mc.amalthea.converters090.impl.HwReferencesConverter;
import org.eclipse.app4mc.amalthea.converters090.impl.RootElementConverter;
import org.eclipse.app4mc.amalthea.converters090.utils.HWCacheBuilder;
+import org.eclipse.app4mc.amalthea.converters090.utils.UpdateCustomPropsPostProcessor;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -39,7 +43,7 @@
@Parameterized.Parameters(name = "{index}: Test file: {0}")
public static Collection<Object[]> getTestData() {
- return Arrays.asList(new Object[][] { { "/hw_references/refsModel.amxmi", true } });
+ return Arrays.asList(new Object[][] {{ "/hw_references/refsModel.amxmi", true }});
}
public HWReferencesConverterTest(final String xmlFileRelativeLocation, final boolean canExecuteTestCase) {
@@ -48,16 +52,18 @@
@Test
public void testConversion() {
- super.testConversion(NamespaceConverter.class, RootElementConverter.class, HwConverter.class, HwReferencesConverter.class);
+ super.testConversion(RootElementConverter.class, HwConverter.class, HwReferencesConverter.class, NamespaceConverter.class);
}
+
+ private HWCacheBuilder cacheBuilder;
@Override
protected List<ICache> buildCaches() {
final List<ICache> caches = new ArrayList<>();
- HWCacheBuilder cacheBuilder=new HWCacheBuilder();
- caches.add(cacheBuilder);
+ this.cacheBuilder = new HWCacheBuilder();
+ caches.add(this.cacheBuilder);
for (final ICache iCache : caches) {
iCache.buildCache(this.fileDocumentMapping);
@@ -65,6 +71,25 @@
return caches;
}
+
+ @Override
+ protected List<IPostProcessor> buildPostProcessors() {
+ final List<IPostProcessor> processors = super.buildPostProcessors();
+ SessionLogger logger = new SessionLogger();
+ UpdateCustomPropsPostProcessor cppp = new UpdateCustomPropsPostProcessor();
+ try {
+ Field loggerField = UpdateCustomPropsPostProcessor.class.getDeclaredField("logger");
+ loggerField.setAccessible(true);
+ loggerField.set(cppp, logger);
+ Field cacheField = UpdateCustomPropsPostProcessor.class.getDeclaredField("cache");
+ cacheField.setAccessible(true);
+ cacheField.set(cppp, this.cacheBuilder);
+ } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ processors.add(cppp);
+ return processors;
+ }
@Override
@Test